Files
cours/.obsidian/plugins/obsidian-task-progress-bar/main.js
2026-01-13 14:27:09 +01:00

1615 lines
3.9 MiB
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var G3=Object.create;var Tp=Object.defineProperty;var K3=Object.getOwnPropertyDescriptor;var Q3=Object.getOwnPropertyNames;var X3=Object.getPrototypeOf,J3=Object.prototype.hasOwnProperty;var Z3=(n,a,e)=>a in n?Tp(n,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[a]=e;var wi=(n,a)=>()=>(n&&(a=n(n=0)),a);var Se=(n,a)=>()=>(a||n((a={exports:{}}).exports,a),a.exports),_a=(n,a)=>{for(var e in a)Tp(n,e,{get:a[e],enumerable:!0})},SP=(n,a,e,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of Q3(a))!J3.call(n,r)&&r!==e&&Tp(n,r,{get:()=>a[r],enumerable:!(t=K3(a,r))||t.enumerable});return n};var xp=(n,a,e)=>(e=n!=null?G3(X3(n)):{},SP(a||!n||!n.__esModule?Tp(e,"default",{value:n,enumerable:!0}):e,n)),eB=n=>SP(Tp({},"__esModule",{value:!0}),n);var W=(n,a,e)=>Z3(n,typeof a!="symbol"?a+"":a,e);var $x=Se((AX,DP)=>{"use strict";var tB={mode:"lazy"};DP.exports=tB});var Pk=Se((FX,EP)=>{"use strict";var aB=RegExp.prototype.exec;EP.exports=aB});var PP=Se((RX,MP)=>{"use strict";MP.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 AP=Se((OX,IP)=>{"use strict";IP.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 RP=Se((NX,FP)=>{"use strict";FP.exports={RegExp:function(a){var e=a.node;e.flags.includes("x")&&(e.flags=e.flags.replace("x",""))}}});var NP=Se((LX,OP)=>{"use strict";OP.exports={dotAll:PP(),namedCapturingGroups:AP(),xFlag:RP()}});var Yx=Se((jX,LP)=>{"use strict";function Ti(n){return n?rB[n.type](n):""}var rB={RegExp:function(a){return"/"+Ti(a.body)+"/"+a.flags},Alternative:function(a){return(a.expressions||[]).map(Ti).join("")},Disjunction:function(a){return Ti(a.left)+"|"+Ti(a.right)},Group:function(a){var e=Ti(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=Ti(a.assertion);return a.negative?"(?!"+e+")":"(?="+e+")"}case"Lookbehind":{var t=Ti(a.assertion);return a.negative?"(?<!"+t+")":"(?<="+t+")"}default:throw new TypeError("Unknown Assertion kind: "+a.kind)}},CharacterClass:function(a){var e=a.expressions.map(Ti).join("");return a.negative?"[^"+e+"]":"["+e+"]"},ClassRange:function(a){return Ti(a.from)+"-"+Ti(a.to)},Repetition:function(a){return""+Ti(a.expression)+Ti(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+"}"}};LP.exports={generate:Ti}});var VP=Se((HX,BP)=>{"use strict";var qx={General_Category:"gc",Script:"sc",Script_Extensions:"scx"},Cp=Rk(qx),Fk={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"},Vo=Rk(Fk),Gx={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"},Ik=Rk(Gx),Kx={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"},Ak=Rk(Kx);function Rk(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 iB(n){return qx.hasOwnProperty(n)||Cp.hasOwnProperty(n)||Fk.hasOwnProperty(n)||Vo.hasOwnProperty(n)}function nB(n,a){return oB(n)?jP(a):lB(n)?HP(a):!1}function sB(n){return Cp.hasOwnProperty(n)||Vo.hasOwnProperty(n)}function oB(n){return n==="General_Category"||n=="gc"}function lB(n){return n==="Script"||n==="Script_Extensions"||n==="sc"||n==="scx"}function jP(n){return Gx.hasOwnProperty(n)||Ik.hasOwnProperty(n)}function HP(n){return Kx.hasOwnProperty(n)||Ak.hasOwnProperty(n)}function cB(n){return Fk.hasOwnProperty(n)||Vo.hasOwnProperty(n)}function dB(n){return Cp.hasOwnProperty(n)?Cp[n]:Vo.hasOwnProperty(n)?Vo[n]:null}function uB(n){return Ik.hasOwnProperty(n)?Ik[n]:Ak.hasOwnProperty(n)?Ak[n]:Vo.hasOwnProperty(n)?Vo[n]:null}BP.exports={isAlias:sB,isValidName:iB,isValidValue:nB,isGeneralCategoryValue:jP,isScriptCategoryValue:HP,isBinaryPropertyName:cB,getCanonicalName:dB,getCanonicalValue:uB,NON_BINARY_PROP_NAMES_TO_ALIASES:qx,NON_BINARY_ALIASES_TO_PROP_NAMES:Cp,BINARY_PROP_NAMES_TO_ALIASES:Fk,BINARY_ALIASES_TO_PROP_NAMES:Vo,GENERAL_CATEGORY_VALUE_TO_ALIASES:Gx,GENERAL_CATEGORY_VALUE_ALIASES_TO_VALUES:Ik,SCRIPT_VALUE_TO_ALIASES:Kx,SCRIPT_VALUE_ALIASES_TO_VALUE:Ak}});var ZP=Se((BX,JP)=>{"use strict";var pB=(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(d){i=!0,s=d}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 YP(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 es=void 0,qP=void 0,Ea={},de=void 0,ae=void 0;function ge(n,a){return Ea.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 GP="$",mB=[[-1,1,function(n,a){ae=ge(a,a),de=n}],[0,4,function(n,a,e,t,r,i,s,o){ae=ge(r,o),de=sa({type:"RegExp",body:a,flags:vB(t)},Ok(r,o||s))}],[1,1,function(n,a){ae=ge(a,a),de=n}],[1,0,function(){ae=null,de=""}],[2,1,function(n,a){ae=ge(a,a),de=n}],[2,2,function(n,a,e,t){ae=ge(e,t),de=n+a}],[3,1,function(n,a){ae=ge(a,a),de=n}],[4,1,function(n,a){ae=ge(a,a),de=n}],[4,3,function(n,a,e,t,r,i){ae=ge(t,i);var s=null;r&&(s=Ok(t||r,i||r)),de=sa({type:"Disjunction",left:n,right:e},s)}],[5,1,function(n,a){if(ae=ge(a,a),n.length===0){de=null;return}n.length===1?de=sa(n[0],ae):de=sa({type:"Alternative",expressions:n},ae)}],[6,0,function(){ae=null,de=[]}],[6,2,function(n,a,e,t){ae=ge(e,t),de=n.concat(a)}],[7,1,function(n,a){ae=ge(a,a),de=sa(Object.assign({type:"Assertion"},n),ae)}],[7,2,function(n,a,e,t){ae=ge(e,t),de=n,a&&(de=sa({type:"Repetition",expression:n,quantifier:a},ae))}],[8,1,function(n,a){ae=ge(a,a),de={kind:"^"}}],[8,1,function(n,a){ae=ge(a,a),de={kind:"$"}}],[8,1,function(n,a){ae=ge(a,a),de={kind:"\\b"}}],[8,1,function(n,a){ae=ge(a,a),de={kind:"\\B"}}],[8,3,function(n,a,e,t,r,i){ae=ge(t,i),de={kind:"Lookahead",assertion:a}}],[8,3,function(n,a,e,t,r,i){ae=ge(t,i),de={kind:"Lookahead",negative:!0,assertion:a}}],[8,3,function(n,a,e,t,r,i){ae=ge(t,i),de={kind:"Lookbehind",assertion:a}}],[8,3,function(n,a,e,t,r,i){ae=ge(t,i),de={kind:"Lookbehind",negative:!0,assertion:a}}],[9,1,function(n,a){ae=ge(a,a),de=n}],[9,1,function(n,a){ae=ge(a,a),de=n}],[9,1,function(n,a){ae=ge(a,a),de=n}],[10,1,function(n,a){ae=ge(a,a),de=Lr(n,"simple",ae)}],[10,1,function(n,a){ae=ge(a,a),de=Lr(n.slice(1),"simple",ae),de.escaped=!0}],[10,1,function(n,a){ae=ge(a,a),de=Lr(n,"unicode",ae),de.isSurrogatePair=!0}],[10,1,function(n,a){ae=ge(a,a),de=Lr(n,"unicode",ae)}],[10,1,function(n,a){ae=ge(a,a),de=fB(n,ae)}],[10,1,function(n,a){ae=ge(a,a),de=Lr(n,"control",ae)}],[10,1,function(n,a){ae=ge(a,a),de=Lr(n,"hex",ae)}],[10,1,function(n,a){ae=ge(a,a),de=Lr(n,"oct",ae)}],[10,1,function(n,a){ae=ge(a,a),de=yB(n,ae)}],[10,1,function(n,a){ae=ge(a,a),de=Lr(n,"meta",ae)}],[10,1,function(n,a){ae=ge(a,a),de=Lr(n,"meta",ae)}],[10,1,function(n,a){ae=ge(a,a),de=CB(n,a)}],[11,1,function(n,a){ae=ge(a,a),de=n}],[11,0],[12,1,function(n,a){ae=ge(a,a),de=n}],[12,2,function(n,a,e,t){ae=ge(e,t),n.greedy=!1,de=n}],[13,1,function(n,a){ae=ge(a,a),de=sa({type:"Quantifier",kind:n,greedy:!0},ae)}],[13,1,function(n,a){ae=ge(a,a),de=sa({type:"Quantifier",kind:n,greedy:!0},ae)}],[13,1,function(n,a){ae=ge(a,a),de=sa({type:"Quantifier",kind:n,greedy:!0},ae)}],[13,1,function(n,a){ae=ge(a,a);var e=Xx(n);de=sa({type:"Quantifier",kind:"Range",from:e[0],to:e[0],greedy:!0},ae)}],[13,1,function(n,a){ae=ge(a,a),de=sa({type:"Quantifier",kind:"Range",from:Xx(n)[0],greedy:!0},ae)}],[13,1,function(n,a){ae=ge(a,a);var e=Xx(n);de=sa({type:"Quantifier",kind:"Range",from:e[0],to:e[1],greedy:!0},ae)}],[14,1,function(n,a){ae=ge(a,a),de=n}],[14,1,function(n,a){ae=ge(a,a),de=n}],[15,3,function(n,a,e,t,r,i){ae=ge(t,i);var s=String(n),o=QP(s);if(!Ea.options.allowGroupNameDuplicates&&Sp.hasOwnProperty(o))throw new SyntaxError('Duplicate of the named group "'+o+'".');Sp[o]=n.groupNumber,de=sa({type:"Group",capturing:!0,name:o,nameRaw:s,number:n.groupNumber,expression:a},ae)}],[15,3,function(n,a,e,t,r,i){ae=ge(t,i),de=sa({type:"Group",capturing:!0,number:n.groupNumber,expression:a},ae)}],[16,3,function(n,a,e,t,r,i){ae=ge(t,i),de=sa({type:"Group",capturing:!1,expression:a},ae)}],[17,3,function(n,a,e,t,r,i){ae=ge(t,i),de=sa({type:"CharacterClass",negative:!0,expressions:a},ae)}],[17,3,function(n,a,e,t,r,i){ae=ge(t,i),de=sa({type:"CharacterClass",expressions:a},ae)}],[18,0,function(){ae=null,de=[]}],[18,1,function(n,a){ae=ge(a,a),de=n}],[19,1,function(n,a){ae=ge(a,a),de=[n]}],[19,2,function(n,a,e,t){ae=ge(e,t),de=[n].concat(a)}],[19,4,function(n,a,e,t,r,i,s,o){ae=ge(r,o),_P(n,e),de=[sa({type:"ClassRange",from:n,to:e},Ok(r,s))],t&&(de=de.concat(t))}],[20,1,function(n,a){ae=ge(a,a),de=n}],[20,2,function(n,a,e,t){ae=ge(e,t),de=[n].concat(a)}],[20,4,function(n,a,e,t,r,i,s,o){ae=ge(r,o),_P(n,e),de=[sa({type:"ClassRange",from:n,to:e},Ok(r,s))],t&&(de=de.concat(t))}],[21,1,function(n,a){ae=ge(a,a),de=Lr(n,"simple",ae)}],[21,1,function(n,a){ae=ge(a,a),de=n}],[22,1,function(n,a){ae=ge(a,a),de=n}],[22,1,function(n,a){ae=ge(a,a),de=Lr(n,"meta",ae)}]],WP={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"},Qx=[{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"}],Nr=[],xi=void 0,hB=[[/^#[^\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=es.slice(3,-1);return UP(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"&&es==="\\-")return"ESC_CHAR";if(n==="u"||n==="xu"||n==="u_class")throw new SyntaxError("invalid Unicode escape "+es);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 es=es.slice(3,-1),UP(es,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"}]],gB={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]},zP={type:GP,value:""};xi={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(zP);for(var a=this._string.slice(this._cursor),e=gB[this.getCurrentState()],t=0;t<e.length;t++){var r=e[t],i=hB[r],s=this._match(a,i[0]);if(a===""&&s===""&&this._cursor++,s!==null){es=s,qP=es.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 d;(d=this._tokensQueue).unshift.apply(d,YP(l))}}return this.onToken(this._toToken(o,es))}}if(this.isEOF())return this._cursor++,zP;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}};Ea.lexer=xi;Ea.tokenizer=xi;Ea.options={captureLocations:!0};var Ll={setOptions:function(a){return Ea.options=a,this},getOptions:function(){return Ea.options},parse:function(a,e){if(!xi)throw new Error("Tokenizer instance wasn't specified.");xi.initString(a);var t=Ea.options;e&&(Ea.options=Object.assign({},Ea.options,e)),Ll.onParseBegin(a,xi,Ea.options),Nr.length=0,Nr.push(0);var r=xi.getNextToken(),i=null;do{r||(Ea.options=t,XP());var s=Nr[Nr.length-1],o=WP[r.type];Qx[s].hasOwnProperty(o)||(Ea.options=t,$P(r));var l=Qx[s][o];if(l[0]==="s"){var d=null;Ea.options.captureLocations&&(d={startOffset:r.startOffset,endOffset:r.endOffset,startLine:r.startLine,endLine:r.endLine,startColumn:r.startColumn,endColumn:r.endColumn}),i=this.onShift(r),Nr.push({symbol:WP[i.type],semanticValue:i.value,loc:d},Number(l.slice(1))),r=xi.getNextToken()}else if(l[0]==="r"){var u=l.slice(1),p=mB[u],m=typeof p[2]=="function",h=m?[]:null,g=m&&Ea.options.captureLocations?[]:null;if(p[1]!==0)for(var f=p[1];f-- >0;){Nr.pop();var k=Nr.pop();m&&(h.unshift(k.semanticValue),g&&g.unshift(k.loc))}var v={symbol:p[0]};if(m){es=i?i.value:null,qP=i?i.value.length:null;var y=g!==null?h.concat(g):h;p[2].apply(p,YP(y)),v.semanticValue=de,g&&(v.loc=ae)}var b=Nr[Nr.length-1],w=p[0];Nr.push(v,Qx[b][w])}else if(l==="acc"){Nr.pop();var T=Nr.pop();return(Nr.length!==1||Nr[0]!==0||xi.hasMoreTokens())&&(Ea.options=t,$P(r)),T.hasOwnProperty("semanticValue")?(Ea.options=t,Ll.onParseEnd(T.semanticValue),T.semanticValue):(Ll.onParseEnd(),Ea.options=t,!0)}}while(xi.hasMoreTokens()||Nr.length>1)},setTokenizer:function(a){return xi=a,Ll},getTokenizer:function(){return xi},onParseBegin:function(a,e,t){},onParseEnd:function(a){},onShift:function(a){return a}},Jx=0,Sp={},KP="";Ll.onParseBegin=function(n,a){KP=n,Jx=0,Sp={};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"))};Ll.onShift=function(n){return(n.type==="L_PAREN"||n.type==="NAMED_CAPTURE_GROUP")&&(n.value=new String(n.value),n.value.groupNumber=++Jx),n};function Xx(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 _P(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 rd=VP();function fB(n,a){var e=n[1]==="P",t=n.indexOf("="),r=n.slice(3,t!==-1?t:-1),i=void 0,s=t===-1&&rd.isGeneralCategoryValue(r),o=t===-1&&rd.isBinaryPropertyName(r);if(s)i=r,r="General_Category";else if(o)i=r;else{if(!rd.isValidName(r))throw new SyntaxError("Invalid unicode property name: "+r+".");if(i=n.slice(t+1,-1),!rd.isValidValue(r,i))throw new SyntaxError("Invalid "+r+" unicode property value: "+i+".")}return sa({type:"UnicodeProperty",name:r,value:i,negative:e,shorthand:s,binary:o,canonicalName:rd.getCanonicalName(r)||r,canonicalValue:rd.getCanonicalValue(i)||i},a)}function Lr(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=pB(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 d=n.slice(2).replace("{","");if(r=parseInt(d,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 sa({type:"Char",value:n,kind:a,symbol:t,codePoint:r},e)}var kB="gimsuxy";function vB(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)||!kB.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 yB(n,a){var e=Number(n.slice(1));return e>0&&e<=Jx?sa({type:"Backreference",kind:"number",number:e,reference:e},a):Lr(n,"decimal",a)}var bB=/^\\u[0-9a-fA-F]{4}/,wB=/^\\u\{[0-9a-fA-F]{1,}\}/,TB=/\\u\{[0-9a-fA-F]{1,}\}/;function UP(n,a){var e=TB.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 xB=/\\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 QP(n){return n.replace(new RegExp(xB,"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 CB(n,a){var e=n.slice(3,-1),t=QP(e);if(Sp.hasOwnProperty(t))return sa({type:"Backreference",kind:"name",number:Sp[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$<>]/,d=void 0,u=[Lr(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(bB))||(p=n.match(wB))?(r&&(d={startLine:i,endLine:s,startColumn:o,startOffset:r,endOffset:r+=p[0].length,endColumn:o+=p[0].length}),u.push(Lr(p[0],"unicode",d)),n=n.slice(p[0].length)):(p=n.match(l))&&(r&&(d={startLine:i,endLine:s,startColumn:o,startOffset:r,endOffset:++r,endColumn:++o}),u.push(Lr(p[0],"simple",d)),n=n.slice(1))}return u}function sa(n,a){return Ea.options.captureLocations&&(n.loc={source:KP.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 Ok(n,a){return Ea.options.captureLocations?{startOffset:n.startOffset,endOffset:a.endOffset,startLine:n.startLine,endLine:a.endLine,startColumn:n.startColumn,endColumn:a.endColumn}:null}function $P(n){n.type===GP&&XP(),xi.throwUnexpectedToken(n.value,n.startLine,n.startColumn)}function XP(){SB("Unexpected end of input.")}function SB(n){throw new SyntaxError(n)}JP.exports=Ll});var Ep=Se((VX,e1)=>{"use strict";var Dp=ZP(),DB=Dp.parse.bind(Dp);Dp.parse=function(n,a){return DB(""+n,a)};Dp.setOptions({captureLocations:!1});e1.exports=Dp});var Lk=Se((WX,a1)=>{"use strict";var EB=(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 MB(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}var Nk="expressions",t1="expression",eC=(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;MB(this,n),this.node=a,this.parentPath=e,this.parent=e?e.node:null,this.property=t,this.index=r}return EB(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=Nk),this._enforceProp(r),this.node[r][t]=e,i=n.getForNode(e,this,r,t)):(r||(r=t1),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=Nk),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]:Nk;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,Nk,e):this.node.expression&&e==0?n.getForNode(this.node.expression,this,t1):null}},{key:"hasEqualSource",value:function(e){return JSON.stringify(this.node,Zx)===JSON.stringify(e.node,Zx)}},{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:Zx,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})();eC.initRegistry();eC.traversingIndexStack=[];function Zx(n,a){if(n!=="loc")return a}a1.exports=eC});var tC=Se((zX,r1)=>{"use strict";var id=Lk();function PB(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,d){if(!(!s||typeof s.type!="string")){var u=void 0;if(e&&(u=e(s,o,l,d)),u!==!1){o&&o[l]&&(isNaN(d)?s=o[l]:s=o[l][d]);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 h=0;for(id.traversingIndexStack.push(h);h<m.length;)i(m[h],s,p,h),h=id.updateTraversingIndex(1);id.traversingIndexStack.pop()}else i(m,s,p)}}t&&t(s,o,l,d)}}i(n,null)}r1.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)}),id.initRegistry(),e.forEach(function(i){typeof i.init=="function"&&i.init(a)});function r(i,s,o,l){var d=id.getForNode(s),u=id.getForNode(i,d,o,l);return u}PB(a,{pre:function(s,o,l,d){var u=void 0;t.asNodes||(u=r(s,o,l,d));var p=!0,m=!1,h=void 0;try{for(var g=e[Symbol.iterator](),f;!(p=(f=g.next()).done);p=!0){var k=f.value;if(typeof k["*"]=="function")if(u){if(!u.isRemoved()){var v=k["*"](u);if(v===!1)return!1}}else k["*"](s,o,l,d);var y=void 0;if(typeof k[s.type]=="function"?y=k[s.type]:typeof k[s.type]=="object"&&typeof k[s.type].pre=="function"&&(y=k[s.type].pre),y)if(u){if(!u.isRemoved()){var b=y.call(k,u);if(b===!1)return!1}}else y.call(k,s,o,l,d)}}catch(w){m=!0,h=w}finally{try{!p&&g.return&&g.return()}finally{if(m)throw h}}},post:function(s,o,l,d){if(s){var u=void 0;t.asNodes||(u=r(s,o,l,d));var p=!0,m=!1,h=void 0;try{for(var g=e[Symbol.iterator](),f;!(p=(f=g.next()).done);p=!0){var k=f.value,v=void 0;if(typeof k[s.type]=="object"&&typeof k[s.type].post=="function"&&(v=k[s.type].post),v)if(u){if(!u.isRemoved()){var y=v.call(k,u);if(y===!1)return!1}}else v.call(k,s,o,l,d)}}catch(b){m=!0,h=b}finally{try{!p&&g.return&&g.return()}finally{if(m)throw h}}}},skipProperty:function(s){return s==="loc"}})}}});var jk=Se((_X,s1)=>{"use strict";var IB=(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 AB(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}var i1=Yx(),FB=Ep(),RB=tC(),n1=(function(){function n(a){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;AB(this,n),this._ast=a,this._source=null,this._string=null,this._regexp=null,this._extra=e}return IB(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=i1.generate(this._ast.body)),this._source}},{key:"getFlags",value:function(){return this._ast.flags}},{key:"toString",value:function(){return this._string||(this._string=i1.generate(this._ast)),this._string}}]),n})();s1.exports={TransformResult:n1,transform:function(a,e){var t=a;return a instanceof RegExp&&(a=""+a),typeof a=="string"&&(t=FB.parse(a,{captureLocations:!0})),RB.traverse(t,e),new n1(t)}}});var l1=Se((UX,o1)=>{"use strict";var Hk=NP(),OB=jk();o1.exports={transform:function(a){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],t=e.length>0?e:Object.keys(Hk),r=void 0,i={};return t.forEach(function(s){if(!Hk.hasOwnProperty(s))throw new Error("Unknown compat-transform: "+s+". Available transforms are: "+Object.keys(Hk).join(", "));var o=Hk[s];r=OB.transform(a,o),a=r.getAST(),typeof o.getExtra=="function"&&(i[s]=o.getExtra())}),r.setExtra(i),r}}});var d1=Se(($X,c1)=>{"use strict";c1.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 p1=Se((YX,u1)=>{"use strict";u1.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 b1=Se((qX,y1)=>{"use strict";var m1="A".codePointAt(0),h1="Z".codePointAt(0),g1="a".codePointAt(0),f1="z".codePointAt(0),k1="0".codePointAt(0),v1="9".codePointAt(0);y1.exports={Char:function(a){var e=a.node,t=a.parent;if(!(isNaN(e.codePoint)||e.kind==="simple")&&!(t.type==="ClassRange"&&!NB(t))&&LB(e.codePoint)){var r=String.fromCodePoint(e.codePoint),i={type:"Char",kind:"simple",value:r,symbol:r,codePoint:e.codePoint};jB(r,t.type)&&(i.escaped=!0),a.replace(i)}}};function NB(n){var a=n.from,e=n.to;return a.codePoint>=k1&&a.codePoint<=v1&&e.codePoint>=k1&&e.codePoint<=v1||a.codePoint>=m1&&a.codePoint<=h1&&e.codePoint>=m1&&e.codePoint<=h1||a.codePoint>=g1&&a.codePoint<=f1&&e.codePoint>=g1&&e.codePoint<=f1}function LB(n){return n>=32&&n<=126}function jB(n,a){return a==="ClassRange"||a==="CharacterClass"?/[\]\\^-]/.test(n):/[*[()+?^$./\\|{}]/.test(n)}});var C1=Se((GX,x1)=>{"use strict";var w1="A".codePointAt(0),T1="Z".codePointAt(0);x1.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)&&!HB(t))return;this._AZClassRanges.add(t)}var r=e.symbol.toLowerCase();r!==e.symbol&&(e.value=BB(r,e),e.symbol=r,e.codePoint=r.codePointAt(0))}}};function HB(n){var a=n.from,e=n.to;return a.codePoint>=w1&&a.codePoint<=T1&&e.codePoint>=w1&&e.codePoint<=T1}function BB(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=VB(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 VB(n){var a=Math.floor((n-65536)/1024)+55296,e=(n-65536)%1024+56320;return{lead:a.toString(16),trail:e.toString(16)}}});var D1=Se((KX,S1)=>{"use strict";S1.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 Bk=Se((QX,M1)=>{"use strict";function WB(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 E1(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,WB(E1(n.left)).concat([n.right])):a.push(n.left,n.right),a}function zB(n){return n.reduce(function(a,e){return{type:"Disjunction",left:a,right:e}})}function _B(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))}M1.exports={disjunctionToList:E1,listToDisjunction:zB,increaseQuantifierByOne:_B}});var A1=Se((XX,I1)=>{"use strict";var UB=Bk(),$B=UB.increaseQuantifierByOne;I1.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=P1(r.node.quantifier),s=i.from,o=i.to,l=P1(e.quantifier),d=l.from,u=l.to;if(r.node.quantifier.greedy!==e.quantifier.greedy&&!Vk(r.node.quantifier)&&!Vk(e.quantifier))return;e.quantifier.kind="Range",e.quantifier.from=s+d,o&&u?e.quantifier.to=o+u:delete e.quantifier.to,(Vk(r.node.quantifier)||Vk(e.quantifier))&&(e.quantifier.greedy=!0),r.remove()}else{if(!r.hasEqualSource(a.getChild()))return;$B(e.quantifier),r.remove()}}}};function Vk(n){return n.greedy&&(n.kind==="+"||n.kind==="*"||n.kind==="Range"&&!n.to)}function P1(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 R1=Se((JX,F1)=>{"use strict";F1.exports={Quantifier:function(a){var e=a.node;e.kind==="Range"&&(YB(a),qB(a),GB(a))}};function YB(n){var a=n.node;a.from!==0||a.to||(a.kind="*",delete a.from)}function qB(n){var a=n.node;a.from!==1||a.to||(a.kind="+",delete a.from)}function GB(n){var a=n.node;a.from!==1||a.to!==1||n.parentPath.replace(n.parentPath.node.expression)}});var N1=Se((ZX,O1)=>{"use strict";O1.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 B1=Se((eJ,H1)=>{"use strict";function L1(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)}H1.exports={_hasIFlag:!1,_hasUFlag:!1,init:function(a){this._hasIFlag=a.flags.includes("i"),this._hasUFlag=a.flags.includes("u")},CharacterClass:function(a){KB(a),QB(a,this._hasIFlag,this._hasUFlag),XB(a)}};function KB(n){var a=n.node;a.expressions.forEach(function(e,t){JB(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,d=null;t.expressions.forEach(function(u,p){rC(u,"\\d")?r=n.getChild(p):ZB(u)?i=n.getChild(p):e4(u)?s=n.getChild(p):t4(u)?o=n.getChild(p):a&&e&&Mp(u,383)?l=n.getChild(p):a&&e&&Mp(u,8490)&&(d=n.getChild(p))}),r&&(i&&s||a&&(i||s))&&o&&(!e||!a||l&&d)&&(r.replace({type:"Char",value:"\\w",kind:"meta"}),i&&i.remove(),s&&s.remove(),o.remove(),l&&l.remove(),d&&d.remove())}var aC=[function(n){return j1(n," ")}].concat(L1(["\\f","\\n","\\r","\\t","\\v"].map(function(n){return function(a){return rC(a,n)}})),L1([160,5760,8232,8233,8239,8287,12288,65279].map(function(n){return function(a){return Mp(a,n)}})),[function(n){return n.type==="ClassRange"&&Mp(n.from,8192)&&Mp(n.to,8202)}]);function XB(n){var a=n.node;if(!(a.expressions.length<aC.length||!aC.every(function(t){return a.expressions.some(function(r){return t(r)})}))){var e=a.expressions.find(function(t){return rC(t,"\\n")});e.value="\\s",e.symbol=void 0,e.codePoint=NaN,a.expressions.map(function(t,r){return aC.some(function(i){return i(t)})?n.getChild(r):void 0}).filter(Boolean).forEach(function(t){return t.remove()})}}function JB(n){return n.type==="ClassRange"&&n.from.value==="0"&&n.to.value==="9"}function j1(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 rC(n,a){return j1(n,a,"meta")}function ZB(n){return n.type==="ClassRange"&&n.from.value==="a"&&n.to.value==="z"}function e4(n){return n.type==="ClassRange"&&n.from.value==="A"&&n.to.value==="Z"}function t4(n){return n.type==="Char"&&n.value==="_"&&n.kind==="simple"}function Mp(n,a){return n.type==="Char"&&n.kind==="unicode"&&n.codePoint===a}});var W1=Se((tJ,V1)=>{"use strict";V1.exports={CharacterClass:function(a){var e=a.node;if(!(e.expressions.length!==1||!n4(a)||!a4(e.expressions[0]))){var t=e.expressions[0],r=t.value,i=t.kind,s=t.escaped;if(e.negative){if(!r4(r))return;r=i4(r)}a.replace({type:"Char",value:r,kind:i,escaped:s||s4(r)})}}};function a4(n){return n.type==="Char"&&n.value!=="\\b"}function r4(n){return/^\\[dwsDWS]$/.test(n)}function i4(n){return/[dws]/.test(n)?n.toUpperCase():n.toLowerCase()}function n4(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 s4(n){return/[*[()+?$./{}|]/.test(n)}});var _1=Se((aJ,z1)=>{"use strict";z1.exports={_hasXFlag:!1,init:function(a){this._hasXFlag=a.flags.includes("x")},Char:function(a){var e=a.node;e.escaped&&o4(a,this._hasXFlag)&&delete e.escaped}};function o4(n,a){var e=n.node.value,t=n.index,r=n.parent;return r.type!=="CharacterClass"&&r.type!=="ClassRange"?!c4(e,t,r,a):!l4(e,t,r)}function l4(n,a,e){return n==="^"?a===0&&!e.negative:n==="-"?!0:/[\]\\]/.test(n)}function c4(n,a,e,t){return n==="{"?d4(a,e):n==="}"?u4(a,e):t&&/[ #]/.test(n)?!0:/[*[()+?^$./\\|]/.test(n)}function Wk(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 nd(n,a){return n&&n.type==="Char"&&n.kind==="simple"&&!n.escaped&&n.value===a}function d4(n,a){if(n==null)return!1;var e=Wk(n+1,a),t=n+e+1,r=t<a.expressions.length&&a.expressions[t];if(e){if(nd(r,"}"))return!0;if(nd(r,","))return e=Wk(t+1,a),t=t+e+1,r=t<a.expressions.length&&a.expressions[t],nd(r,"}")}return!1}function u4(n,a){if(n==null)return!1;var e=Wk(n-1,a,!0),t=n-e-1,r=t>=0&&a.expressions[t];return e&&nd(r,"{")?!0:nd(r,",")?(e=Wk(t-1,a,!0),t=t-e-1,r=t<a.expressions.length&&a.expressions[t],e&&nd(r,"{")):!1}});var q1=Se((rJ,Y1)=>{"use strict";Y1.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){Ws(l)&&r.push(l.value)}),t.sort(p4);for(var i=0;i<t.length;i++){var s=t[i];if(m4(s,r,this._hasIUFlags)||h4(s,t[i-1])||g4(s,t[i+1]))t.splice(i,1),i--;else{var o=f4(s,i,t);t.splice(i-o+1,o),i-=o}}}};function p4(n,a){var e=zk(n),t=zk(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 zk(n.to)-zk(a.to);if(Ws(n)&&Ws(a)||U1(n)&&U1(a))return n.value<a.value?-1:1}return e-t}function zk(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 Ws(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 U1(n){return n.type==="Char"&&n.kind==="control"}function m4(n,a,e){for(var t=0;t<a.length;t++)if(iC(n,a[t],e))return!0;return!1}function iC(n,a,e){return n.type==="ClassRange"?iC(n.from,a,e)&&iC(n.to,a,e):a==="\\S"&&(Ws(n,"\\w")||Ws(n,"\\d"))||a==="\\D"&&(Ws(n,"\\W")||Ws(n,"\\s"))||a==="\\w"&&Ws(n,"\\d")||a==="\\W"&&Ws(n,"\\s")?!0:n.type!=="Char"||isNaN(n.codePoint)?!1:a==="\\s"?$1(n):a==="\\S"?!$1(n):a==="\\d"?nC(n):a==="\\D"?!nC(n):a==="\\w"?sC(n,e):a==="\\W"?!sC(n,e):!1}function $1(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 nC(n){return n.codePoint>=48&&n.codePoint<=57}function sC(n,a){return nC(n)||n.codePoint>=65&&n.codePoint<=90||n.codePoint>=97&&n.codePoint<=122||n.value==="_"||a&&(n.codePoint===383||n.codePoint===8490)}function h4(n,a){if(a&&a.type==="ClassRange"){if(oC(n,a))return!0;if(_k(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 g4(n,a){return a&&a.type==="ClassRange"&&_k(n)&&a.from.codePoint===n.codePoint+1?(a.from=n,!0):!1}function oC(n,a){return n.type==="Char"&&isNaN(n.codePoint)?!1:n.type==="ClassRange"?oC(n.from,a)&&oC(n.to,a):n.codePoint>=a.from.codePoint&&n.codePoint<=a.to.codePoint}function f4(n,a,e){if(!_k(n))return 0;for(var t=0;a>0;){var r=e[a],i=e[a-1];if(_k(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 _k(n){return n&&n.type==="Char"&&!isNaN(n.codePoint)&&(sC(n,!1)||n.kind==="unicode"||n.kind==="hex"||n.kind==="oct"||n.kind==="decimal")}});var Q1=Se((iJ,K1)=>{"use strict";var k4=Lk(),G1=Bk(),v4=G1.disjunctionToList,y4=G1.listToDisjunction;K1.exports={Disjunction:function(a){var e=a.node,t={},r=v4(e).filter(function(i){var s=i?k4.getForNode(i).jsonEncode():"null";return t.hasOwnProperty(s)?!1:(t[s]=i,!0)});a.replace(y4(r))}}});var Z1=Se((nJ,J1)=>{"use strict";J1.exports={Disjunction:function(a){var e=a.node,t=a.parent;if(X1[t.type]){var r=new Map;if(!(!Uk(e,r)||!r.size)){var i={type:"CharacterClass",expressions:Array.from(r.keys()).sort().map(function(s){return r.get(s)})};X1[t.type](a.getParent(),i)}}}};var X1={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 Uk(n,a){if(!n)return!1;var e=n.type;if(e==="Disjunction"){var t=n.left,r=n.right;return Uk(t,a)&&Uk(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 Uk(s,a)});return!1}});var tI=Se((sJ,eI)=>{"use strict";eI.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 rI=Se((oJ,aI)=>{"use strict";function lC(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)}aI.exports={Group:function(a){var e=a.node,t=a.parent,r=a.getChild();if(!(e.capturing||!r)&&b4(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(lC(t.expressions.slice(0,a.index)),lC(r.node.expressions),lC(t.expressions.slice(a.index+1)))})}else a.replace(r.node)}};function b4(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 sI=Se((lJ,nI)=>{"use strict";function $k(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 Yk=Lk(),w4=Bk(),iI=w4.increaseQuantifierByOne;nI.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,T4(a,r,t)),t>=e.expressions.length||(r=a.getChild(t),t=Math.max(1,x4(a,r,t)),t>=e.expressions.length))break;r=a.getChild(t),t=Math.max(1,C4(a,r,t)),t++}}};function T4(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=Yk.getForNode({type:"Alternative",expressions:[].concat($k(t.expressions.slice(e-i,e)),[a.node])}),l=Yk.getForNode({type:"Alternative",expressions:[].concat($k(t.expressions.slice(s,e-i)))})),o.hasEqualSource(l)){for(var d=0;d<2*i+1;d++)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 x4(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=Yk.getForNode({type:"Alternative",expressions:[].concat($k(t.expressions.slice(r+1,e+1)))}),s.hasEqualSource(o)){for(var l=r;l<e;l++)n.getChild(r+1).remove();return iI(i.node.quantifier),r}}r++}return e}function C4(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=Yk.getForNode({type:"Alternative",expressions:[].concat($k(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 iI(a.node.quantifier),e-s}}return e}});var lI=Se((cJ,oI)=>{"use strict";oI.exports=new Map([["charSurrogatePairToSingleUnicode",p1()],["charCodeToSimpleChar",b1()],["charCaseInsensitiveLowerCaseTransform",C1()],["charClassRemoveDuplicates",D1()],["quantifiersMerge",A1()],["quantifierRangeToSymbol",R1()],["charClassClassrangesToChars",N1()],["charClassToMeta",B1()],["charClassToSingleChar",W1()],["charEscapeUnescape",_1()],["charClassClassrangesMerge",q1()],["disjunctionRemoveDuplicates",Q1()],["groupSingleCharsToCharClass",Z1()],["removeEmptyGroup",tI()],["ungroup",rI()],["combineRepeatingPatterns",sI()]])});var pI=Se((dJ,uI)=>{"use strict";var cI=d1(),S4=Ep(),dI=jk(),qk=lI();uI.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(qk.keys()),l=o.filter(function(m){return!s.includes(m)}),d=a;a instanceof RegExp&&(a=""+a),typeof a=="string"&&(d=S4.parse(a));var u=new dI.TransformResult(d),p=void 0;do p=u.toString(),d=cI(u.getAST()),l.forEach(function(m){if(!qk.has(m))throw new Error("Unknown optimization-transform: "+m+". Available transforms are: "+Array.from(qk.keys()).join(", "));var h=qk.get(m),g=dI.transform(d,h);g.toString()!==u.toString()&&(g.toString().length<=u.toString().length?u=g:d=cI(u.getAST()))});while(u.toString()!==p);return u}}});var Pp=Se((uJ,hI)=>{"use strict";var mI="\u03B5",D4=mI+"*";hI.exports={EPSILON:mI,EPSILON_CLOSURE:D4}});var cC=Se((pJ,kI)=>{"use strict";var E4=(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(d){i=!0,s=d}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")}})(),M4=(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 P4(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 I4(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}var fI=Pp(),A4=fI.EPSILON,gI=fI.EPSILON_CLOSURE,F4=(function(){function n(a,e){I4(this,n),this.in=a,this.out=e}return M4(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!==gI&&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(),d=!0,u=!1,p=void 0;try{for(var m=l[Symbol.iterator](),h;!(d=(h=m.next()).done);d=!0){var g=h.value,f=E4(g,2),k=f[0],v=f[1],y=[];r.add(k);var b=!0,w=!1,T=void 0;try{for(var x=v[Symbol.iterator](),C;!(b=(C=x.next()).done);b=!0){var S=C.value;s(S),y.push(S.number)}}catch(D){w=!0,T=D}finally{try{!b&&x.return&&x.return()}finally{if(w)throw T}}e._transitionTable[o.number][k]=y}}catch(D){u=!0,p=D}finally{try{!d&&m.return&&m.return()}finally{if(u)throw p}}}};i(this.in),t.forEach(function(s){delete e._transitionTable[s.number][A4],e._transitionTable[s.number][gI]=[].concat(P4(s.getEpsilonClosure())).map(function(o){return o.number})})}return this._transitionTable}}]),n})();kI.exports=F4});var yI=Se((mJ,vI)=>{"use strict";var R4=(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(d){i=!0,s=d}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 O4(n){return Array.isArray(n)?n:Array.from(n)}function dC(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 zs=null;function N4(n){var a=n.getTransitionTable(),e=Object.keys(a),t=n.getAlphabet(),r=n.getAcceptingStateNumbers();zs={};var i=new Set;e.forEach(function(ce){ce=Number(ce);var pe=r.has(ce);pe?zs[ce]=r:(i.add(ce),zs[ce]=i)});var s=[[i,r].filter(function(ce){return ce.size>0})],o=void 0,l=void 0;o=s[s.length-1],l=s[s.length-2];for(var d=function(){var pe={},Ne=!0,He=!1,Be=void 0;try{for(var We=o[Symbol.iterator](),lt;!(Ne=(lt=We.next()).done);Ne=!0){var _t=lt.value,ke={},mt=O4(_t),J=mt[0],ue=mt.slice(1);ke[J]=new Set([J]);var Ae=!0,Fe=!1,Xe=void 0;try{e:for(var De=ue[Symbol.iterator](),ht;!(Ae=(ht=De.next()).done);Ae=!0){var yt=ht.value,Ut=!0,Et=!1,it=void 0;try{for(var ia=Object.keys(ke)[Symbol.iterator](),na;!(Ut=(na=ia.next()).done);Ut=!0){var Ee=na.value;if(j4(yt,Ee,a,t)){ke[Ee].add(yt),ke[yt]=ke[Ee];continue e}}}catch($t){Et=!0,it=$t}finally{try{!Ut&&ia.return&&ia.return()}finally{if(Et)throw it}}ke[yt]=new Set([yt])}}catch($t){Fe=!0,Xe=$t}finally{try{!Ae&&De.return&&De.return()}finally{if(Fe)throw Xe}}Object.assign(pe,ke)}}catch($t){He=!0,Be=$t}finally{try{!Ne&&We.return&&We.return()}finally{if(He)throw Be}}zs=pe;var bi=new Set(Object.keys(pe).map(function($t){return pe[$t]}));s.push([].concat(dC(bi))),o=s[s.length-1],l=s[s.length-2]};!L4(o,l);)d();var u=new Map,p=1;o.forEach(function(ce){return u.set(ce,p++)});var m={},h=new Set,g=function(pe,Ne){var He=!0,Be=!1,We=void 0;try{for(var lt=pe[Symbol.iterator](),_t;!(He=(_t=lt.next()).done);He=!0){var ke=_t.value;r.has(ke)&&h.add(Ne)}}catch(mt){Be=!0,We=mt}finally{try{!He&&lt.return&&lt.return()}finally{if(Be)throw We}}},f=!0,k=!1,v=void 0;try{for(var y=u.entries()[Symbol.iterator](),b;!(f=(b=y.next()).done);f=!0){var w=b.value,T=R4(w,2),x=T[0],C=T[1];m[C]={};var S=!0,D=!1,E=void 0;try{for(var R=t[Symbol.iterator](),I;!(S=(I=R.next()).done);S=!0){var H=I.value;g(x,C);var U=void 0,q=!0,L=!1,_=void 0;try{for(var V=x[Symbol.iterator](),K;!(q=(K=V.next()).done);q=!0){var te=K.value;if(U=a[te][H],U)break}}catch(ce){L=!0,_=ce}finally{try{!q&&V.return&&V.return()}finally{if(L)throw _}}U&&(m[C][H]=u.get(zs[U]))}}catch(ce){D=!0,E=ce}finally{try{!S&&R.return&&R.return()}finally{if(D)throw E}}}}catch(ce){k=!0,v=ce}finally{try{!f&&y.return&&y.return()}finally{if(k)throw v}}return n.setTransitionTable(m),n.setAcceptingStateNumbers(h),n}function L4(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(dC(t)).sort().join(",")!==[].concat(dC(r)).sort().join(","))return!1}return!0}function j4(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 d=l.value;if(!H4(n,a,e,d))return!1}}catch(u){i=!0,s=u}finally{try{!r&&o.return&&o.return()}finally{if(i)throw s}}return!0}function H4(n,a,e,t){if(!zs[n]||!zs[a])return!1;var r=e[n][t],i=e[a][t];return!r&&!i?!0:zs[n].has(r)&&zs[a].has(i)}vI.exports={minimize:N4}});var xI=Se((hJ,TI)=>{"use strict";var B4=(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 bI(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 V4(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}var W4=yI(),z4=Pp(),wI=z4.EPSILON_CLOSURE,_4=(function(){function n(a){V4(this,n),this._nfa=a}return B4(n,[{key:"minimize",value:function(){this.getTransitionTable(),this._originalAcceptingStateNumbers=this._acceptingStateNumbers,this._originalTransitionTable=this._transitionTable,W4.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]][wI],s=[i],o=this.getAlphabet(),l=this._nfa.getAcceptingStateNumbers(),d={},u=function(ce){var pe=!0,Ne=!1,He=void 0;try{for(var Be=l[Symbol.iterator](),We;!(pe=(We=Be.next()).done);pe=!0){var lt=We.value;if(ce.indexOf(lt)!==-1){e._acceptingStateNumbers.add(ce.join(","));break}}}catch(_t){Ne=!0,He=_t}finally{try{!pe&&Be.return&&Be.return()}finally{if(Ne)throw He}}};s.length>0;){var p=s.shift(),m=p.join(",");d[m]={};var h=!0,g=!1,f=void 0;try{for(var k=o[Symbol.iterator](),v;!(h=(v=k.next()).done);h=!0){var y=v.value,b=[];u(p);var w=!0,T=!1,x=void 0;try{for(var C=p[Symbol.iterator](),S;!(w=(S=C.next()).done);w=!0){var D=S.value,E=t[D][y];if(E){var R=!0,I=!1,H=void 0;try{for(var U=E[Symbol.iterator](),q;!(R=(q=U.next()).done);R=!0){var L=q.value;t[L]&&b.push.apply(b,bI(t[L][wI]))}}catch(te){I=!0,H=te}finally{try{!R&&U.return&&U.return()}finally{if(I)throw H}}}}}catch(te){T=!0,x=te}finally{try{!w&&C.return&&C.return()}finally{if(T)throw x}}var _=new Set(b),V=[].concat(bI(_));if(V.length>0){var K=V.join(",");d[m][y]=K,d.hasOwnProperty(K)||s.unshift(V)}}}catch(te){g=!0,f=te}finally{try{!h&&k.return&&k.return()}finally{if(g)throw f}}}return this._transitionTable=this._remapStateNumbers(d)}},{key:"_remapStateNumbers",value:function(e){var t={};this._originalTransitionTable=e;var r={};Object.keys(e).forEach(function(f,k){t[f]=k+1});for(var i in e){var s=e[i],o={};for(var l in s)o[l]=t[s[l]];r[t[i]]=o}this._originalAcceptingStateNumbers=this._acceptingStateNumbers,this._acceptingStateNumbers=new Set;var d=!0,u=!1,p=void 0;try{for(var m=this._originalAcceptingStateNumbers[Symbol.iterator](),h;!(d=(h=m.next()).done);d=!0){var g=h.value;this._acceptingStateNumbers.add(t[g])}}catch(f){u=!0,p=f}finally{try{!d&&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})();TI.exports=_4});var SI=Se((gJ,CI)=>{"use strict";var U4=(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 $4(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}var Y4=(function(){function n(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=a.accepting,t=e===void 0?!1:e;$4(this,n),this._transitions=new Map,this.accepting=t}return U4(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})();CI.exports=Y4});var EI=Se((fJ,DI)=>{"use strict";var q4=(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 G4(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}function K4(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 X4=SI(),J4=Pp(),uC=J4.EPSILON,Z4=(function(n){Q4(a,n);function a(){return G4(this,a),K4(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return q4(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(uC)[Symbol.iterator](),d;!(i=(d=l.next()).done);i=!0){var u=d.value;if(u.matches("",r))return!0}}catch(E){s=!0,o=E}finally{try{!i&&l.return&&l.return()}finally{if(s)throw o}}return!1}var p=t[0],m=t.slice(1),h=this.getTransitionsOnSymbol(p),g=!0,f=!1,k=void 0;try{for(var v=h[Symbol.iterator](),y;!(g=(y=v.next()).done);g=!0){var b=y.value;if(b.matches(m))return!0}}catch(E){f=!0,k=E}finally{try{!g&&v.return&&v.return()}finally{if(f)throw k}}var w=!0,T=!1,x=void 0;try{for(var C=this.getTransitionsOnSymbol(uC)[Symbol.iterator](),S;!(w=(S=C.next()).done);w=!0){var D=S.value;if(D.matches(t,r))return!0}}catch(E){T=!0,x=E}finally{try{!w&&C.return&&C.return()}finally{if(T)throw x}}return!1}},{key:"getEpsilonClosure",value:function(){var t=this;return this._epsilonClosure||(function(){var r=t.getTransitionsOnSymbol(uC),i=t._epsilonClosure=new Set;i.add(t);var s=!0,o=!1,l=void 0;try{for(var d=r[Symbol.iterator](),u;!(s=(u=d.next()).done);s=!0){var p=u.value;if(!i.has(p)){i.add(p);var m=p.getEpsilonClosure();m.forEach(function(h){return i.add(h)})}}}catch(h){o=!0,l=h}finally{try{!s&&d.return&&d.return()}finally{if(o)throw l}}})(),this._epsilonClosure}}]),a})(X4);DI.exports=Z4});var pC=Se((kJ,PI)=>{"use strict";var Gk=cC(),sd=EI(),eV=Pp(),Xr=eV.EPSILON;function MI(n){var a=new sd,e=new sd({accepting:!0});return new Gk(a.addTransition(n,e),e)}function tV(){return MI(Xr)}function aV(n,a){return n.out.accepting=!1,a.out.accepting=!0,n.out.addTransition(Xr,a.in),new Gk(n.in,a.out)}function rV(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 d=l.value;n=aV(n,d)}}catch(u){i=!0,s=u}finally{try{!r&&o.return&&o.return()}finally{if(i)throw s}}return n}function iV(n,a){var e=new sd,t=new sd;return e.addTransition(Xr,n.in),e.addTransition(Xr,a.in),t.accepting=!0,n.out.accepting=!1,a.out.accepting=!1,n.out.addTransition(Xr,t),a.out.addTransition(Xr,t),new Gk(e,t)}function nV(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 d=l.value;n=iV(n,d)}}catch(u){i=!0,s=u}finally{try{!r&&o.return&&o.return()}finally{if(i)throw s}}return n}function sV(n){var a=new sd,e=new sd({accepting:!0});return a.addTransition(Xr,n.in),a.addTransition(Xr,e),n.out.accepting=!1,n.out.addTransition(Xr,e),e.addTransition(Xr,n.in),new Gk(a,e)}function oV(n){return n.in.addTransition(Xr,n.out),n.out.addTransition(Xr,n.in),n}function lV(n){return n.out.addTransition(Xr,n.in),n}function cV(n){return n.in.addTransition(Xr,n.out),n}PI.exports={alt:rV,char:MI,e:tV,or:nV,rep:oV,repExplicit:sV,plusRep:lV,questionRep:cV}});var FI=Se((vJ,AI)=>{"use strict";function dV(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 uV=Ep(),od=pC(),pV=od.alt,mV=od.char,hV=od.or,gV=od.rep,fV=od.plusRep,kV=od.questionRep;function _s(n){if(n&&!II[n.type])throw new Error(n.type+" is not supported in NFA/DFA interpreter.");return n?II[n.type](n):""}var II={RegExp:function(a){if(a.flags!=="")throw new Error("NFA/DFA: Flags are not supported yet.");return _s(a.body)},Alternative:function(a){var e=(a.expressions||[]).map(_s);return pV.apply(void 0,dV(e))},Disjunction:function(a){return hV(_s(a.left),_s(a.right))},Repetition:function(a){switch(a.quantifier.kind){case"*":return gV(_s(a.expression));case"+":return fV(_s(a.expression));case"?":return kV(_s(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 mV(a.value)},Group:function(a){return _s(a.expression)}};AI.exports={build:function(a){var e=a;return a instanceof RegExp&&(a=""+a),typeof a=="string"&&(e=uV.parse(a,{captureLocations:!0})),_s(e)}}});var NI=Se((yJ,OI)=>{"use strict";var vV=cC(),RI=xI(),yV=FI(),bV=pC();OI.exports={NFA:vV,DFA:RI,builders:bV,toNFA:function(a){return yV.build(a)},toDFA:function(a){return new RI(this.toNFA(a))},test:function(a,e){return this.toDFA(a).matches(e)}}});var jI=Se((bJ,LI)=>{"use strict";var wV=(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 TV(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}var xV=(function(){function n(a,e){var t=e.flags,r=e.groups,i=e.source;TV(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 wV(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})();LI.exports={RegExpTree:xV}});var WI=Se((wJ,VI)=>{"use strict";var CV=l1(),SV=Yx(),DV=pI(),HI=Ep(),BI=jk(),EV=tC(),MV=NI(),PV=jI(),IV=PV.RegExpTree,AV={parser:HI,fa:MV,TransformResult:BI.TransformResult,parse:function(a,e){return HI.parse(""+a,e)},traverse:function(a,e,t){return EV.traverse(a,e,t)},transform:function(a,e){return BI.transform(a,e)},generate:function(a){return SV.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 DV.optimize(a,{whitelist:e,blacklist:r})},compatTranspile:function(a,e){return CV.transform(a,e)},exec:function(a,e){if(typeof a=="string"){var t=this.compatTranspile(a),r=t.getExtra();r.namedCapturingGroups?a=new IV(t.toRegExp(),{flags:t.getFlags(),source:t.getSource(),groups:r.namedCapturingGroups}):a=t.toRegExp()}return a.exec(e)}};VI.exports=AV});var _I=Se((TJ,zI)=>{"use strict";zI.exports=WI()});var vC=Se((xJ,KI)=>{"use strict";var FV=$x(),mC=Pk(),Wo=_I(),UI=new WeakMap;function RV(n){return FV.mode==="spec-compliant"?NV(this,n):OV(this,n)}function OV(n,a){let e=n.lastIndex,t=mC.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}=$I(n);i.lastIndex=e;let o=mC.call(i,a);if(o===null)throw new TypeError;ji(t,"indices",r=YI(o,s))}return r},set(i){ji(t,"indices",i)}}),t}function NV(n,a){let{measurementRegExp:e,groupInfos:t}=$I(n);e.lastIndex=n.lastIndex;let r=mC.call(e,a);if(r===null)return null;n.lastIndex=e.lastIndex;let i=[];ji(i,0,r[0]);for(let s of t)ji(i,s.oldGroupNumber,r[s.newGroupNumber]);return ji(i,"index",r.index),ji(i,"input",r.input),ji(i,"groups",r.groups),ji(i,"indices",YI(r,t)),i}function $I(n){let a=UI.get(n);a||(a=WV(Wo.parse(`/${n.source}/${n.flags}`)),UI.set(n,a));let e=a.getExtra();return{measurementRegExp:a.toRegExp(),groupInfos:e}}function YI(n,a){let e=n.index,t=e+n[0].length,r=!!n.groups,i=[],s=r?Object.create(null):void 0;ji(i,0,[e,t]);for(let o of a){let l;if(n[o.newGroupNumber]!==void 0){let d=e;if(o.measurementGroups)for(let p of o.measurementGroups)d+=n[p].length;let u=d+n[o.newGroupNumber].length;l=[d,u]}ji(i,o.oldGroupNumber,l),s&&o.groupName!==void 0&&ji(s,o.groupName,l)}return ji(i,"groups",s),i}function ji(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 Kk,hC=!1,Ap=new Set,gC=[],ld=!1,qI=1,Qk=[],fC=new Map,kC=new Map,LV={init(){hC=!1,Ap.clear(),gC.length=0,ld=!1,qI=1,Qk.length=0,fC.clear(),kC.clear(),Kk=[]},RegExp(n){return Wo.traverse(n.node,jV),Ap.size>0&&(Wo.transform(n.node,GI),Wo.transform(n.node,HV),hC&&Wo.transform(n.node,BV)),!1}},Ip={pre(n){gC.push(ld),ld=n.node.type==="Group"&&n.node.capturing},post(n){ld&&Ap.add(n.node),ld=gC.pop()||ld}},jV={Alternative:Ip,Disjunction:Ip,Assertion:Ip,Group:Ip,Repetition:Ip,Backreference(n){hC=!0}},GI={Alternative(n){if(Ap.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(Ap.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=[]}Qk.push(t),Wo.transform(s,GI),Qk.pop(),e.push(s);continue}e.push(s)}n.update({expressions:r.concat(e)})}return!1},Group(n){n.node.capturing&&fC.set(n.node,VV())}},HV={Group(n){if(!Kk)throw new Error("Not initialized.");if(!n.node.capturing)return;let a=n.node.number,e=qI++,t=fC.get(n.node);a!==-1&&(Kk.push({oldGroupNumber:a,newGroupNumber:e,measurementGroups:t&&t.map(r=>r.number),groupName:n.node.name}),kC.set(a,e)),n.update({number:e})}},BV={Backreference(n){let a=kC.get(n.node.number);a&&(n.node.kind==="number"?n.update({number:a,reference:a}):n.update({number:a}))}};function VV(){let n=[];for(let a of Qk)for(let e of a)n.push(e);return n}function WV(n){let a=Wo.transform(n,LV);return new Wo.TransformResult(a.getAST(),Kk)}KI.exports=RV});var yC=Se((CJ,XI)=>{"use strict";var QI=Pk(),zV=vC();function _V(){let n=new RegExp("a");return QI.call(n,"a").indices?QI:zV}XI.exports=_V});var ZI=Se((SJ,JI)=>{"use strict";var UV=yC();function $V(){let n=UV();RegExp.prototype.exec!==n&&(RegExp.prototype.exec=n)}JI.exports=$V});var aA=Se((DJ,tA)=>{"use strict";var YV=vC(),qV=Pk(),eA=yC(),GV=ZI(),KV=$x(),QV=eA();function zo(n,a){return QV.call(n,a)}zo.implementation=YV;zo.native=qV;zo.getPolyfill=eA;zo.shim=GV;zo.config=KV;zo||(zo={});tA.exports=zo});var aW,xC,sA=wi(()=>{aW={"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","Next to Introduction":"Next to Introduction","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","Include time":"Include time","Toggle between date-only and date+time input":"Toggle between date-only and date+time input","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","Open Task Genius changelog":"Open Task Genius changelog","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","Quick Name Templates":"Quick Name Templates","Quick Name Templates:":"Quick Name Templates:","Manage file name templates for quick selection in File mode":"Manage file name templates for quick selection in File mode","Enter template...":"Enter template...","Add Template":"Add Template","Select a template...":"Select a template...","Enter file name...":"Enter file name...","File Name":"File Name","kanban.cycleSelector":"Select Status Cycle","kanban.allCycles":"All Cycles","kanban.otherColumn":"Other","kanban.noCyclesAvailable":"No cycles available","Hide this column":"Hide this column","Hidden Columns":"Hidden Columns","Columns that are currently hidden from view. Click the eye icon to show them again.":"Columns that are currently hidden from view. Click the eye icon to show them again.","Unhide column":"Unhide column","Timer Statistics":"Timer Statistics","Active Timers":"Active Timers","Active timers":"Active timers","No active timers":"No active timers","Tasks in Current View":"Tasks in Current View","No tasks with active timers in this view":"No tasks with active timers in this view","Total Time":"Total Time","Total Timers":"Total Timers",Paused:"Paused","Completed Timers":"Completed Timers","No completed timers":"No completed timers","Completed at":"Completed at",Pause:"Pause",Resume:"Resume",Stop:"Stop",Untitled:"Untitled","Start Timer":"Start Timer","Pause Timer":"Pause Timer","Resume Timer":"Resume Timer","Stop Timer":"Stop Timer","Timer started":"Timer started","Timer paused":"Timer paused","Timer resumed":"Timer resumed","Timer stopped":"Timer stopped","Failed to start timer":"Failed to start timer","Block ID added":"Block ID added","Task status updated":"Task status updated","Working On":"Working On","Timer Integration":"Timer Integration","Auto-start timer":"Auto-start timer","Automatically start the timer when creating a new task via quick capture (checkbox mode only)":"Automatically start the timer when creating a new task via quick capture (checkbox mode only)","Timer started for new task":"Timer started for new task"},xC=aW});var rW,oA,lA=wi(()=>{rW={"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"},oA=rW});var iW,cA,dA=wi(()=>{iW={"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","Include time":"\u6642\u523B\u3092\u542B\u3081\u308B","Toggle between date-only and date+time input":"\u65E5\u4ED8\u306E\u307F\u3068\u65E5\u4ED8+\u6642\u523B\u5165\u529B\u3092\u5207\u308A\u66FF\u3048","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"},cA=iW});var nW,uA,pA=wi(()=>{nW={"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"},uA=nW});var sW,mA,hA=wi(()=>{sW={"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"},mA=sW});var oW,gA,fA=wi(()=>{oW={"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"},gA=oW});var lW,kA,vA=wi(()=>{lW={"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","Include time":"\u5305\u542B\u65F6\u95F4","Toggle between date-only and date+time input":"\u5207\u6362\u4EC5\u65E5\u671F\u6216\u65E5\u671F+\u65F6\u95F4\u8F93\u5165","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","Open Task Genius changelog":"\u6253\u5F00 Task Genius \u66F4\u65B0\u65E5\u5FD7","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","Quick Name Templates":"\u5FEB\u901F\u540D\u79F0\u6A21\u677F","Quick Name Templates:":"\u5FEB\u901F\u540D\u79F0\u6A21\u677F\uFF1A","Manage file name templates for quick selection in File mode":"\u7BA1\u7406\u6587\u4EF6\u6A21\u5F0F\u4E2D\u5FEB\u901F\u9009\u62E9\u7684\u6587\u4EF6\u540D\u6A21\u677F","Enter template...":"\u8F93\u5165\u6A21\u677F...","Add Template":"\u6DFB\u52A0\u6A21\u677F","Select a template...":"\u9009\u62E9\u6A21\u677F...","Enter file name...":"\u8F93\u5165\u6587\u4EF6\u540D...","File Name":"\u6587\u4EF6\u540D","kanban.cycleSelector":"\u9009\u62E9\u72B6\u6001\u5468\u671F","kanban.allCycles":"\u6240\u6709\u5468\u671F","kanban.otherColumn":"\u5176\u4ED6","kanban.noCyclesAvailable":"\u65E0\u53EF\u7528\u5468\u671F","Hide this column":"\u9690\u85CF\u6B64\u5217","Hidden Columns":"\u5DF2\u9690\u85CF\u7684\u5217","Columns that are currently hidden from view. Click the eye icon to show them again.":"\u5F53\u524D\u9690\u85CF\u7684\u5217\u3002\u70B9\u51FB\u773C\u775B\u56FE\u6807\u53EF\u91CD\u65B0\u663E\u793A\u3002","Unhide column":"\u663E\u793A\u5217","Timer Statistics":"\u8BA1\u65F6\u7EDF\u8BA1","Active Timers":"\u6D3B\u8DC3\u8BA1\u65F6\u5668","Active timers":"\u6D3B\u8DC3\u8BA1\u65F6\u5668","No active timers":"\u6682\u65E0\u6D3B\u8DC3\u8BA1\u65F6\u5668","Tasks in Current View":"\u5F53\u524D\u89C6\u56FE\u4E2D\u7684\u4EFB\u52A1","No tasks with active timers in this view":"\u6B64\u89C6\u56FE\u4E2D\u6CA1\u6709\u6B63\u5728\u8BA1\u65F6\u7684\u4EFB\u52A1","Total Time":"\u603B\u8BA1\u65F6","Total Timers":"\u8BA1\u65F6\u5668\u603B\u6570",Paused:"\u5DF2\u6682\u505C","Completed Timers":"\u5DF2\u5B8C\u6210\u7684\u8BA1\u65F6","No completed timers":"\u6682\u65E0\u5DF2\u5B8C\u6210\u7684\u8BA1\u65F6","Completed at":"\u5B8C\u6210\u4E8E",Pause:"\u6682\u505C",Resume:"\u7EE7\u7EED",Stop:"\u505C\u6B62",Untitled:"\u672A\u547D\u540D","Start Timer":"\u5F00\u59CB\u8BA1\u65F6","Pause Timer":"\u6682\u505C\u8BA1\u65F6","Resume Timer":"\u7EE7\u7EED\u8BA1\u65F6","Stop Timer":"\u505C\u6B62\u8BA1\u65F6","Timer started":"\u8BA1\u65F6\u5DF2\u5F00\u59CB","Timer paused":"\u8BA1\u65F6\u5DF2\u6682\u505C","Timer resumed":"\u8BA1\u65F6\u5DF2\u7EE7\u7EED","Timer stopped":"\u8BA1\u65F6\u5DF2\u505C\u6B62","Failed to start timer":"\u542F\u52A8\u8BA1\u65F6\u5668\u5931\u8D25","Block ID added":"\u5757 ID \u5DF2\u6DFB\u52A0","Task status updated":"\u4EFB\u52A1\u72B6\u6001\u5DF2\u66F4\u65B0","Working On":"\u8FDB\u884C\u4E2D","Timer Integration":"\u8BA1\u65F6\u5668\u96C6\u6210","Auto-start timer":"\u81EA\u52A8\u542F\u52A8\u8BA1\u65F6\u5668","Automatically start the timer when creating a new task via quick capture (checkbox mode only)":"\u901A\u8FC7\u5FEB\u901F\u6355\u83B7\u521B\u5EFA\u65B0\u4EFB\u52A1\u65F6\u81EA\u52A8\u542F\u52A8\u8BA1\u65F6\u5668\uFF08\u4EC5\u9650\u590D\u9009\u6846\u6A21\u5F0F\uFF09","Timer started for new task":"\u5DF2\u4E3A\u65B0\u4EFB\u52A1\u542F\u52A8\u8BA1\u65F6\u5668"},kA=lW});var cW,yA,bA=wi(()=>{cW={"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","Include time":"\u5305\u542B\u6642\u9593","Toggle between date-only and date+time input":"\u5207\u63DB\u50C5\u65E5\u671F\u6216\u65E5\u671F+\u6642\u9593\u8F38\u5165","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","Open Task Genius changelog":"\u6253\u958B Task Genius \u66F4\u65B0\u65E5\u8A8C","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"},yA=cW});var wA,CC,SC,av,wt,DC=wi(()=>{wA=require("obsidian");sA();lA();dA();pA();hA();fA();vA();bA();CC={en:xC,"en-gb":oA,ja:cA,"pt-br":uA,ru:mA,uk:gA,"zh-cn":kA,"zh-tw":yA},SC=class n{constructor(){this.currentLocale="en";this.translations=new Map;this.fallbackTranslation=xC;this.lowercaseKeyMap=new Map;try{this.currentLocale=wA.moment.locale()}catch(a){this.currentLocale="en"}Object.entries(CC).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 CC?this.currentLocale=a:this.currentLocale="en"}getSupportedLocales(){return Object.keys(CC)}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}}}`})}},av=SC.getInstance(),wt=(n,a)=>av.t(n,a)});var dW,c,z=wi(()=>{dW=require("obsidian");DC();c=av.t.bind(av)});var TA=wi(()=>{});var as,$s,Rp=wi(()=>{as=require("obsidian");z();TA();$s=class extends as.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,as.moment)(r):(0,as.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:c("Today")},{amount:1,unit:"days",label:c("Tomorrow")},{amount:2,unit:"days",label:c("In 2 days")},{amount:3,unit:"days",label:c("In 3 days")},{amount:5,unit:"days",label:c("In 5 days")},{amount:1,unit:"weeks",label:c("In 1 week")},{amount:10,unit:"days",label:c("In 10 days")},{amount:2,unit:"weeks",label:c("In 2 weeks")},{amount:1,unit:"months",label:c("In 1 month")},{amount:2,unit:"months",label:c("In 2 months")},{amount:3,unit:"months",label:c("In 3 months")},{amount:6,unit:"months",label:c("In 6 months")},{amount:1,unit:"years",label:c("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,as.moment)().add(i.amount,i.unit).format("YYYY-MM-DD");s.createSpan({text:l,cls:"quick-option-date"}),this.registerDomEvent(s,"click",d=>{d.preventDefault(),d.stopPropagation(),this.setSelectedDate(l)}),this.state.selectedDate===l&&s.addClass("selected")});let r=a.createDiv({cls:"quick-option-item clear-option"});r.createSpan({text:c("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,as.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,as.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"),d=o.clone();for(;d.isSameOrBefore(l);){let u=t.createDiv({cls:"calendar-day",text:d.format("D")}),p=d.format("YYYY-MM-DD");u.setAttribute("data-date",p),d.isSame(i,"month")||u.addClass("other-month"),d.isSame((0,as.moment)(),"day")&&u.addClass("today"),this.state.selectedDate===p&&u.addClass("selected"),this.registerDomEvent(u,"click",m=>{m.preventDefault(),m.stopPropagation(),this.setSelectedDate(p)}),d.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 CA={};_a(CA,{DatePickerModal:()=>rs});var xA,rs,pd=wi(()=>{xA=require("obsidian");Rp();rs=class extends xA.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 $s(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()}}});var ZL=Se((JL,AM)=>{(function(n){if(typeof JL=="object"&&typeof AM!="undefined")AM.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 h=new Error("Cannot find module '"+u+"'");throw h.code="MODULE_NOT_FOUND",h}var g=i[u]={exports:{}};r[u][0].call(g.exports,function(f){var k=r[u][1][f];return o(k||f)},g,g.exports,t,r,i,s)}return i[u].exports}for(var l=typeof require=="function"&&require,d=0;d<s.length;d++)o(s[d]);return o})({1:[function(t,r,i){(function(s){"use strict";var o=s.MutationObserver||s.WebKitMutationObserver,l;if(o){var d=0,u=new o(f),p=s.document.createTextNode("");u.observe(p,{characterData:!0}),l=function(){p.data=d=++d%2}}else if(!s.setImmediate&&typeof s.MessageChannel!="undefined"){var m=new s.MessageChannel;m.port1.onmessage=f,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(){f(),v.onreadystatechange=null,v.parentNode.removeChild(v),v=null},s.document.documentElement.appendChild(v)}:l=function(){setTimeout(f,0)};var h,g=[];function f(){h=!0;for(var v,y,b=g.length;b;){for(y=g,g=[],v=-1;++v<b;)y[v]();b=g.length}h=!1}r.exports=k;function k(v){g.push(v)===1&&!h&&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={},d=["REJECTED"],u=["FULFILLED"],p=["PENDING"];r.exports=m;function m(x){if(typeof x!="function")throw new TypeError("resolver must be a function");this.state=p,this.queue=[],this.outcome=void 0,x!==o&&k(this,x)}m.prototype.catch=function(x){return this.then(null,x)},m.prototype.then=function(x,C){if(typeof x!="function"&&this.state===u||typeof C!="function"&&this.state===d)return this;var S=new this.constructor(o);if(this.state!==p){var D=this.state===u?x:C;g(S,D,this.outcome)}else this.queue.push(new h(S,x,C));return S};function h(x,C,S){this.promise=x,typeof C=="function"&&(this.onFulfilled=C,this.callFulfilled=this.otherCallFulfilled),typeof S=="function"&&(this.onRejected=S,this.callRejected=this.otherCallRejected)}h.prototype.callFulfilled=function(x){l.resolve(this.promise,x)},h.prototype.otherCallFulfilled=function(x){g(this.promise,this.onFulfilled,x)},h.prototype.callRejected=function(x){l.reject(this.promise,x)},h.prototype.otherCallRejected=function(x){g(this.promise,this.onRejected,x)};function g(x,C,S){s(function(){var D;try{D=C(S)}catch(E){return l.reject(x,E)}D===x?l.reject(x,new TypeError("Cannot resolve promise with itself")):l.resolve(x,D)})}l.resolve=function(x,C){var S=v(f,C);if(S.status==="error")return l.reject(x,S.value);var D=S.value;if(D)k(x,D);else{x.state=u,x.outcome=C;for(var E=-1,R=x.queue.length;++E<R;)x.queue[E].callFulfilled(C)}return x},l.reject=function(x,C){x.state=d,x.outcome=C;for(var S=-1,D=x.queue.length;++S<D;)x.queue[S].callRejected(C);return x};function f(x){var C=x&&x.then;if(x&&(typeof x=="object"||typeof x=="function")&&typeof C=="function")return function(){C.apply(x,arguments)}}function k(x,C){var S=!1;function D(H){S||(S=!0,l.reject(x,H))}function E(H){S||(S=!0,l.resolve(x,H))}function R(){C(E,D)}var I=v(R);I.status==="error"&&D(I.value)}function v(x,C){var S={};try{S.value=x(C),S.status="success"}catch(D){S.status="error",S.value=D}return S}m.resolve=y;function y(x){return x instanceof this?x:l.resolve(new this(o),x)}m.reject=b;function b(x){var C=new this(o);return l.reject(C,x)}m.all=w;function w(x){var C=this;if(Object.prototype.toString.call(x)!=="[object Array]")return this.reject(new TypeError("must be an array"));var S=x.length,D=!1;if(!S)return this.resolve([]);for(var E=new Array(S),R=0,I=-1,H=new this(o);++I<S;)U(x[I],I);return H;function U(q,L){C.resolve(q).then(_,function(V){D||(D=!0,l.reject(H,V))});function _(V){E[L]=V,++R===S&&!D&&(D=!0,l.resolve(H,E))}}}m.race=T;function T(x){var C=this;if(Object.prototype.toString.call(x)!=="[object Array]")return this.reject(new TypeError("must be an array"));var S=x.length,D=!1;if(!S)return this.resolve([]);for(var E=-1,R=new this(o);++E<S;)I(x[E]);return R;function I(H){C.resolve(H).then(function(U){D||(D=!0,l.resolve(R,U))},function(U){D||(D=!0,l.reject(R,U))})}}},{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(M){return typeof M}:function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M};function o(M,F){if(!(M 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(M){return}}var d=l();function u(){try{if(!d||!d.open)return!1;var M=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(!M||F)&&typeof indexedDB!="undefined"&&typeof IDBKeyRange!="undefined"}catch(P){return!1}}function p(M,F){M=M||[],F=F||{};try{return new Blob(M,F)}catch(O){if(O.name!=="TypeError")throw O;for(var P=typeof BlobBuilder!="undefined"?BlobBuilder:typeof MSBlobBuilder!="undefined"?MSBlobBuilder:typeof MozBlobBuilder!="undefined"?MozBlobBuilder:WebKitBlobBuilder,N=new P,j=0;j<M.length;j+=1)N.append(M[j]);return N.getBlob(F.type)}}typeof Promise=="undefined"&&t(3);var m=Promise;function h(M,F){F&&M.then(function(P){F(null,P)},function(P){F(P)})}function g(M,F,P){typeof F=="function"&&M.then(F),typeof P=="function"&&M.catch(P)}function f(M){return typeof M!="string"&&(console.warn(M+" used as a key, but it is not a string."),M=String(M)),M}function k(){if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}var v="local-forage-detect-blob-support",y=void 0,b={},w=Object.prototype.toString,T="readonly",x="readwrite";function C(M){for(var F=M.length,P=new ArrayBuffer(F),N=new Uint8Array(P),j=0;j<F;j++)N[j]=M.charCodeAt(j);return P}function S(M){return new m(function(F){var P=M.transaction(v,x),N=p([""]);P.objectStore(v).put(N,"key"),P.onabort=function(j){j.preventDefault(),j.stopPropagation(),F(!1)},P.oncomplete=function(){var j=navigator.userAgent.match(/Chrome\/(\d+)/),O=navigator.userAgent.match(/Edge\//);F(O||!j||parseInt(j[1],10)>=43)}}).catch(function(){return!1})}function D(M){return typeof y=="boolean"?m.resolve(y):S(M).then(function(F){return y=F,y})}function E(M){var F=b[M.name],P={};P.promise=new m(function(N,j){P.resolve=N,P.reject=j}),F.deferredOperations.push(P),F.dbReady?F.dbReady=F.dbReady.then(function(){return P.promise}):F.dbReady=P.promise}function R(M){var F=b[M.name],P=F.deferredOperations.pop();if(P)return P.resolve(),P.promise}function I(M,F){var P=b[M.name],N=P.deferredOperations.pop();if(N)return N.reject(F),N.promise}function H(M,F){return new m(function(P,N){if(b[M.name]=b[M.name]||Ne(),M.db)if(F)E(M),M.db.close();else return P(M.db);var j=[M.name];F&&j.push(M.version);var O=d.open.apply(d,j);F&&(O.onupgradeneeded=function(G){var ee=O.result;try{ee.createObjectStore(M.storeName),G.oldVersion<=1&&ee.createObjectStore(v)}catch(re){if(re.name==="ConstraintError")console.warn('The database "'+M.name+'" has been upgraded from version '+G.oldVersion+" to version "+G.newVersion+', but the storage "'+M.storeName+'" already exists.');else throw re}}),O.onerror=function(G){G.preventDefault(),N(O.error)},O.onsuccess=function(){var G=O.result;G.onversionchange=function(ee){ee.target.close()},P(G),R(M)}})}function U(M){return H(M,!1)}function q(M){return H(M,!0)}function L(M,F){if(!M.db)return!0;var P=!M.db.objectStoreNames.contains(M.storeName),N=M.version<M.db.version,j=M.version>M.db.version;if(N&&(M.version!==F&&console.warn('The database "'+M.name+`" can't be downgraded from version `+M.db.version+" to version "+M.version+"."),M.version=M.db.version),j||P){if(P){var O=M.db.version+1;O>M.version&&(M.version=O)}return!0}return!1}function _(M){return new m(function(F,P){var N=new FileReader;N.onerror=P,N.onloadend=function(j){var O=btoa(j.target.result||"");F({__local_forage_encoded_blob:!0,data:O,type:M.type})},N.readAsBinaryString(M)})}function V(M){var F=C(atob(M.data));return p([F],{type:M.type})}function K(M){return M&&M.__local_forage_encoded_blob}function te(M){var F=this,P=F._initReady().then(function(){var N=b[F._dbInfo.name];if(N&&N.dbReady)return N.dbReady});return g(P,M,M),P}function ce(M){E(M);for(var F=b[M.name],P=F.forages,N=0;N<P.length;N++){var j=P[N];j._dbInfo.db&&(j._dbInfo.db.close(),j._dbInfo.db=null)}return M.db=null,U(M).then(function(O){return M.db=O,L(M)?q(M):O}).then(function(O){M.db=F.db=O;for(var G=0;G<P.length;G++)P[G]._dbInfo.db=O}).catch(function(O){throw I(M,O),O})}function pe(M,F,P,N){N===void 0&&(N=1);try{var j=M.db.transaction(M.storeName,F);P(null,j)}catch(O){if(N>0&&(!M.db||O.name==="InvalidStateError"||O.name==="NotFoundError"))return m.resolve().then(function(){if(!M.db||O.name==="NotFoundError"&&!M.db.objectStoreNames.contains(M.storeName)&&M.version<=M.db.version)return M.db&&(M.version=M.db.version+1),q(M)}).then(function(){return ce(M).then(function(){pe(M,F,P,N-1)})}).catch(P);P(O)}}function Ne(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function He(M){var F=this,P={db:null};if(M)for(var N in M)P[N]=M[N];var j=b[P.name];j||(j=Ne(),b[P.name]=j),j.forages.push(F),F._initReady||(F._initReady=F.ready,F.ready=te);var O=[];function G(){return m.resolve()}for(var ee=0;ee<j.forages.length;ee++){var re=j.forages[ee];re!==F&&O.push(re._initReady().catch(G))}var ie=j.forages.slice(0);return m.all(O).then(function(){return P.db=j.db,U(P)}).then(function(ne){return P.db=ne,L(P,F._defaultConfig.version)?q(P):ne}).then(function(ne){P.db=j.db=ne,F._dbInfo=P;for(var ve=0;ve<ie.length;ve++){var qe=ie[ve];qe!==F&&(qe._dbInfo.db=P.db,qe._dbInfo.version=P.version)}})}function Be(M,F){var P=this;M=f(M);var N=new m(function(j,O){P.ready().then(function(){pe(P._dbInfo,T,function(G,ee){if(G)return O(G);try{var re=ee.objectStore(P._dbInfo.storeName),ie=re.get(M);ie.onsuccess=function(){var ne=ie.result;ne===void 0&&(ne=null),K(ne)&&(ne=V(ne)),j(ne)},ie.onerror=function(){O(ie.error)}}catch(ne){O(ne)}})}).catch(O)});return h(N,F),N}function We(M,F){var P=this,N=new m(function(j,O){P.ready().then(function(){pe(P._dbInfo,T,function(G,ee){if(G)return O(G);try{var re=ee.objectStore(P._dbInfo.storeName),ie=re.openCursor(),ne=1;ie.onsuccess=function(){var ve=ie.result;if(ve){var qe=ve.value;K(qe)&&(qe=V(qe));var bt=M(qe,ve.key,ne++);bt!==void 0?j(bt):ve.continue()}else j()},ie.onerror=function(){O(ie.error)}}catch(ve){O(ve)}})}).catch(O)});return h(N,F),N}function lt(M,F,P){var N=this;M=f(M);var j=new m(function(O,G){var ee;N.ready().then(function(){return ee=N._dbInfo,w.call(F)==="[object Blob]"?D(ee.db).then(function(re){return re?F:_(F)}):F}).then(function(re){pe(N._dbInfo,x,function(ie,ne){if(ie)return G(ie);try{var ve=ne.objectStore(N._dbInfo.storeName);re===null&&(re=void 0);var qe=ve.put(re,M);ne.oncomplete=function(){re===void 0&&(re=null),O(re)},ne.onabort=ne.onerror=function(){var bt=qe.error?qe.error:qe.transaction.error;G(bt)}}catch(bt){G(bt)}})}).catch(G)});return h(j,P),j}function _t(M,F){var P=this;M=f(M);var N=new m(function(j,O){P.ready().then(function(){pe(P._dbInfo,x,function(G,ee){if(G)return O(G);try{var re=ee.objectStore(P._dbInfo.storeName),ie=re.delete(M);ee.oncomplete=function(){j()},ee.onerror=function(){O(ie.error)},ee.onabort=function(){var ne=ie.error?ie.error:ie.transaction.error;O(ne)}}catch(ne){O(ne)}})}).catch(O)});return h(N,F),N}function ke(M){var F=this,P=new m(function(N,j){F.ready().then(function(){pe(F._dbInfo,x,function(O,G){if(O)return j(O);try{var ee=G.objectStore(F._dbInfo.storeName),re=ee.clear();G.oncomplete=function(){N()},G.onabort=G.onerror=function(){var ie=re.error?re.error:re.transaction.error;j(ie)}}catch(ie){j(ie)}})}).catch(j)});return h(P,M),P}function mt(M){var F=this,P=new m(function(N,j){F.ready().then(function(){pe(F._dbInfo,T,function(O,G){if(O)return j(O);try{var ee=G.objectStore(F._dbInfo.storeName),re=ee.count();re.onsuccess=function(){N(re.result)},re.onerror=function(){j(re.error)}}catch(ie){j(ie)}})}).catch(j)});return h(P,M),P}function J(M,F){var P=this,N=new m(function(j,O){if(M<0){j(null);return}P.ready().then(function(){pe(P._dbInfo,T,function(G,ee){if(G)return O(G);try{var re=ee.objectStore(P._dbInfo.storeName),ie=!1,ne=re.openKeyCursor();ne.onsuccess=function(){var ve=ne.result;if(!ve){j(null);return}M===0||ie?j(ve.key):(ie=!0,ve.advance(M))},ne.onerror=function(){O(ne.error)}}catch(ve){O(ve)}})}).catch(O)});return h(N,F),N}function ue(M){var F=this,P=new m(function(N,j){F.ready().then(function(){pe(F._dbInfo,T,function(O,G){if(O)return j(O);try{var ee=G.objectStore(F._dbInfo.storeName),re=ee.openKeyCursor(),ie=[];re.onsuccess=function(){var ne=re.result;if(!ne){N(ie);return}ie.push(ne.key),ne.continue()},re.onerror=function(){j(re.error)}}catch(ne){j(ne)}})}).catch(j)});return h(P,M),P}function Ae(M,F){F=k.apply(this,arguments);var P=this.config();M=typeof M!="function"&&M||{},M.name||(M.name=M.name||P.name,M.storeName=M.storeName||P.storeName);var N=this,j;if(!M.name)j=m.reject("Invalid arguments");else{var O=M.name===P.name&&N._dbInfo.db,G=O?m.resolve(N._dbInfo.db):U(M).then(function(ee){var re=b[M.name],ie=re.forages;re.db=ee;for(var ne=0;ne<ie.length;ne++)ie[ne]._dbInfo.db=ee;return ee});M.storeName?j=G.then(function(ee){if(ee.objectStoreNames.contains(M.storeName)){var re=ee.version+1;E(M);var ie=b[M.name],ne=ie.forages;ee.close();for(var ve=0;ve<ne.length;ve++){var qe=ne[ve];qe._dbInfo.db=null,qe._dbInfo.version=re}var bt=new m(function(Mt,Da){var wa=d.open(M.name,re);wa.onerror=function(Li){var wp=wa.result;wp.close(),Da(Li)},wa.onupgradeneeded=function(){var Li=wa.result;Li.deleteObjectStore(M.storeName)},wa.onsuccess=function(){var Li=wa.result;Li.close(),Mt(Li)}});return bt.then(function(Mt){ie.db=Mt;for(var Da=0;Da<ne.length;Da++){var wa=ne[Da];wa._dbInfo.db=Mt,R(wa._dbInfo)}}).catch(function(Mt){throw(I(M,Mt)||m.resolve()).catch(function(){}),Mt})}}):j=G.then(function(ee){E(M);var re=b[M.name],ie=re.forages;ee.close();for(var ne=0;ne<ie.length;ne++){var ve=ie[ne];ve._dbInfo.db=null}var qe=new m(function(bt,Mt){var Da=d.deleteDatabase(M.name);Da.onerror=function(){var wa=Da.result;wa&&wa.close(),Mt(Da.error)},Da.onblocked=function(){console.warn('dropInstance blocked for database "'+M.name+'" until all open connections are closed')},Da.onsuccess=function(){var wa=Da.result;wa&&wa.close(),bt(wa)}});return qe.then(function(bt){re.db=bt;for(var Mt=0;Mt<ie.length;Mt++){var Da=ie[Mt];R(Da._dbInfo)}}).catch(function(bt){throw(I(M,bt)||m.resolve()).catch(function(){}),bt})})}return h(j,F),j}var Fe={_driver:"asyncStorage",_initStorage:He,_support:u(),iterate:We,getItem:Be,setItem:lt,removeItem:_t,clear:ke,length:mt,key:J,keys:ue,dropInstance:Ae};function Xe(){return typeof openDatabase=="function"}var De="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ht="~~local_forage_type~",yt=/^~~local_forage_type~([^~]+)~/,Ut="__lfsc__:",Et=Ut.length,it="arbf",ia="blob",na="si08",Ee="ui08",bi="uic8",$t="si16",ba="si32",Zn="ur16",Tn="ui32",Nl="fl32",Ho="fl64",Ek=Et+it.length,kP=Object.prototype.toString;function vP(M){var F=M.length*.75,P=M.length,N,j=0,O,G,ee,re;M[M.length-1]==="="&&(F--,M[M.length-2]==="="&&F--);var ie=new ArrayBuffer(F),ne=new Uint8Array(ie);for(N=0;N<P;N+=4)O=De.indexOf(M[N]),G=De.indexOf(M[N+1]),ee=De.indexOf(M[N+2]),re=De.indexOf(M[N+3]),ne[j++]=O<<2|G>>4,ne[j++]=(G&15)<<4|ee>>2,ne[j++]=(ee&3)<<6|re&63;return ie}function Bx(M){var F=new Uint8Array(M),P="",N;for(N=0;N<F.length;N+=3)P+=De[F[N]>>2],P+=De[(F[N]&3)<<4|F[N+1]>>4],P+=De[(F[N+1]&15)<<2|F[N+2]>>6],P+=De[F[N+2]&63];return F.length%3===2?P=P.substring(0,P.length-1)+"=":F.length%3===1&&(P=P.substring(0,P.length-2)+"=="),P}function d3(M,F){var P="";if(M&&(P=kP.call(M)),M&&(P==="[object ArrayBuffer]"||M.buffer&&kP.call(M.buffer)==="[object ArrayBuffer]")){var N,j=Ut;M instanceof ArrayBuffer?(N=M,j+=it):(N=M.buffer,P==="[object Int8Array]"?j+=na:P==="[object Uint8Array]"?j+=Ee:P==="[object Uint8ClampedArray]"?j+=bi:P==="[object Int16Array]"?j+=$t:P==="[object Uint16Array]"?j+=Zn:P==="[object Int32Array]"?j+=ba:P==="[object Uint32Array]"?j+=Tn:P==="[object Float32Array]"?j+=Nl:P==="[object Float64Array]"?j+=Ho:F(new Error("Failed to get type for BinaryArray"))),F(j+Bx(N))}else if(P==="[object Blob]"){var O=new FileReader;O.onload=function(){var G=ht+M.type+"~"+Bx(this.result);F(Ut+ia+G)},O.readAsArrayBuffer(M)}else try{F(JSON.stringify(M))}catch(G){console.error("Couldn't convert value into a JSON string: ",M),F(null,G)}}function u3(M){if(M.substring(0,Et)!==Ut)return JSON.parse(M);var F=M.substring(Ek),P=M.substring(Et,Ek),N;if(P===ia&&yt.test(F)){var j=F.match(yt);N=j[1],F=F.substring(j[0].length)}var O=vP(F);switch(P){case it:return O;case ia:return p([O],{type:N});case na:return new Int8Array(O);case Ee:return new Uint8Array(O);case bi:return new Uint8ClampedArray(O);case $t:return new Int16Array(O);case Zn:return new Uint16Array(O);case ba:return new Int32Array(O);case Tn:return new Uint32Array(O);case Nl:return new Float32Array(O);case Ho:return new Float64Array(O);default:throw new Error("Unkown type: "+P)}}var Vx={serialize:d3,deserialize:u3,stringToBuffer:vP,bufferToString:Bx};function yP(M,F,P,N){M.executeSql("CREATE TABLE IF NOT EXISTS "+F.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],P,N)}function p3(M){var F=this,P={db:null};if(M)for(var N in M)P[N]=typeof M[N]!="string"?M[N].toString():M[N];var j=new m(function(O,G){try{P.db=openDatabase(P.name,String(P.version),P.description,P.size)}catch(ee){return G(ee)}P.db.transaction(function(ee){yP(ee,P,function(){F._dbInfo=P,O()},function(re,ie){G(ie)})},G)});return P.serializer=Vx,j}function Bo(M,F,P,N,j,O){M.executeSql(P,N,j,function(G,ee){ee.code===ee.SYNTAX_ERR?G.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[F.storeName],function(re,ie){ie.rows.length?O(re,ee):yP(re,F,function(){re.executeSql(P,N,j,O)},O)},O):O(G,ee)},O)}function m3(M,F){var P=this;M=f(M);var N=new m(function(j,O){P.ready().then(function(){var G=P._dbInfo;G.db.transaction(function(ee){Bo(ee,G,"SELECT * FROM "+G.storeName+" WHERE key = ? LIMIT 1",[M],function(re,ie){var ne=ie.rows.length?ie.rows.item(0).value:null;ne&&(ne=G.serializer.deserialize(ne)),j(ne)},function(re,ie){O(ie)})})}).catch(O)});return h(N,F),N}function h3(M,F){var P=this,N=new m(function(j,O){P.ready().then(function(){var G=P._dbInfo;G.db.transaction(function(ee){Bo(ee,G,"SELECT * FROM "+G.storeName,[],function(re,ie){for(var ne=ie.rows,ve=ne.length,qe=0;qe<ve;qe++){var bt=ne.item(qe),Mt=bt.value;if(Mt&&(Mt=G.serializer.deserialize(Mt)),Mt=M(Mt,bt.key,qe+1),Mt!==void 0){j(Mt);return}}j()},function(re,ie){O(ie)})})}).catch(O)});return h(N,F),N}function bP(M,F,P,N){var j=this;M=f(M);var O=new m(function(G,ee){j.ready().then(function(){F===void 0&&(F=null);var re=F,ie=j._dbInfo;ie.serializer.serialize(F,function(ne,ve){ve?ee(ve):ie.db.transaction(function(qe){Bo(qe,ie,"INSERT OR REPLACE INTO "+ie.storeName+" (key, value) VALUES (?, ?)",[M,ne],function(){G(re)},function(bt,Mt){ee(Mt)})},function(qe){if(qe.code===qe.QUOTA_ERR){if(N>0){G(bP.apply(j,[M,re,P,N-1]));return}ee(qe)}})})}).catch(ee)});return h(O,P),O}function g3(M,F,P){return bP.apply(this,[M,F,P,1])}function f3(M,F){var P=this;M=f(M);var N=new m(function(j,O){P.ready().then(function(){var G=P._dbInfo;G.db.transaction(function(ee){Bo(ee,G,"DELETE FROM "+G.storeName+" WHERE key = ?",[M],function(){j()},function(re,ie){O(ie)})})}).catch(O)});return h(N,F),N}function k3(M){var F=this,P=new m(function(N,j){F.ready().then(function(){var O=F._dbInfo;O.db.transaction(function(G){Bo(G,O,"DELETE FROM "+O.storeName,[],function(){N()},function(ee,re){j(re)})})}).catch(j)});return h(P,M),P}function v3(M){var F=this,P=new m(function(N,j){F.ready().then(function(){var O=F._dbInfo;O.db.transaction(function(G){Bo(G,O,"SELECT COUNT(key) as c FROM "+O.storeName,[],function(ee,re){var ie=re.rows.item(0).c;N(ie)},function(ee,re){j(re)})})}).catch(j)});return h(P,M),P}function y3(M,F){var P=this,N=new m(function(j,O){P.ready().then(function(){var G=P._dbInfo;G.db.transaction(function(ee){Bo(ee,G,"SELECT key FROM "+G.storeName+" WHERE id = ? LIMIT 1",[M+1],function(re,ie){var ne=ie.rows.length?ie.rows.item(0).key:null;j(ne)},function(re,ie){O(ie)})})}).catch(O)});return h(N,F),N}function b3(M){var F=this,P=new m(function(N,j){F.ready().then(function(){var O=F._dbInfo;O.db.transaction(function(G){Bo(G,O,"SELECT key FROM "+O.storeName,[],function(ee,re){for(var ie=[],ne=0;ne<re.rows.length;ne++)ie.push(re.rows.item(ne).key);N(ie)},function(ee,re){j(re)})})}).catch(j)});return h(P,M),P}function w3(M){return new m(function(F,P){M.transaction(function(N){N.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],function(j,O){for(var G=[],ee=0;ee<O.rows.length;ee++)G.push(O.rows.item(ee).name);F({db:M,storeNames:G})},function(j,O){P(O)})},function(N){P(N)})})}function T3(M,F){F=k.apply(this,arguments);var P=this.config();M=typeof M!="function"&&M||{},M.name||(M.name=M.name||P.name,M.storeName=M.storeName||P.storeName);var N=this,j;return M.name?j=new m(function(O){var G;M.name===P.name?G=N._dbInfo.db:G=openDatabase(M.name,"","",0),M.storeName?O({db:G,storeNames:[M.storeName]}):O(w3(G))}).then(function(O){return new m(function(G,ee){O.db.transaction(function(re){function ie(bt){return new m(function(Mt,Da){re.executeSql("DROP TABLE IF EXISTS "+bt,[],function(){Mt()},function(wa,Li){Da(Li)})})}for(var ne=[],ve=0,qe=O.storeNames.length;ve<qe;ve++)ne.push(ie(O.storeNames[ve]));m.all(ne).then(function(){G()}).catch(function(bt){ee(bt)})},function(re){ee(re)})})}):j=m.reject("Invalid arguments"),h(j,F),j}var x3={_driver:"webSQLStorage",_initStorage:p3,_support:Xe(),iterate:h3,getItem:m3,setItem:g3,removeItem:f3,clear:k3,length:v3,key:y3,keys:b3,dropInstance:T3};function C3(){try{return typeof localStorage!="undefined"&&"setItem"in localStorage&&!!localStorage.setItem}catch(M){return!1}}function wP(M,F){var P=M.name+"/";return M.storeName!==F.storeName&&(P+=M.storeName+"/"),P}function S3(){var M="_localforage_support_test";try{return localStorage.setItem(M,!0),localStorage.removeItem(M),!1}catch(F){return!0}}function D3(){return!S3()||localStorage.length>0}function E3(M){var F=this,P={};if(M)for(var N in M)P[N]=M[N];return P.keyPrefix=wP(M,F._defaultConfig),D3()?(F._dbInfo=P,P.serializer=Vx,m.resolve()):m.reject()}function M3(M){var F=this,P=F.ready().then(function(){for(var N=F._dbInfo.keyPrefix,j=localStorage.length-1;j>=0;j--){var O=localStorage.key(j);O.indexOf(N)===0&&localStorage.removeItem(O)}});return h(P,M),P}function P3(M,F){var P=this;M=f(M);var N=P.ready().then(function(){var j=P._dbInfo,O=localStorage.getItem(j.keyPrefix+M);return O&&(O=j.serializer.deserialize(O)),O});return h(N,F),N}function I3(M,F){var P=this,N=P.ready().then(function(){for(var j=P._dbInfo,O=j.keyPrefix,G=O.length,ee=localStorage.length,re=1,ie=0;ie<ee;ie++){var ne=localStorage.key(ie);if(ne.indexOf(O)===0){var ve=localStorage.getItem(ne);if(ve&&(ve=j.serializer.deserialize(ve)),ve=M(ve,ne.substring(G),re++),ve!==void 0)return ve}}});return h(N,F),N}function A3(M,F){var P=this,N=P.ready().then(function(){var j=P._dbInfo,O;try{O=localStorage.key(M)}catch(G){O=null}return O&&(O=O.substring(j.keyPrefix.length)),O});return h(N,F),N}function F3(M){var F=this,P=F.ready().then(function(){for(var N=F._dbInfo,j=localStorage.length,O=[],G=0;G<j;G++){var ee=localStorage.key(G);ee.indexOf(N.keyPrefix)===0&&O.push(ee.substring(N.keyPrefix.length))}return O});return h(P,M),P}function R3(M){var F=this,P=F.keys().then(function(N){return N.length});return h(P,M),P}function O3(M,F){var P=this;M=f(M);var N=P.ready().then(function(){var j=P._dbInfo;localStorage.removeItem(j.keyPrefix+M)});return h(N,F),N}function N3(M,F,P){var N=this;M=f(M);var j=N.ready().then(function(){F===void 0&&(F=null);var O=F;return new m(function(G,ee){var re=N._dbInfo;re.serializer.serialize(F,function(ie,ne){if(ne)ee(ne);else try{localStorage.setItem(re.keyPrefix+M,ie),G(O)}catch(ve){(ve.name==="QuotaExceededError"||ve.name==="NS_ERROR_DOM_QUOTA_REACHED")&&ee(ve),ee(ve)}})})});return h(j,P),j}function L3(M,F){if(F=k.apply(this,arguments),M=typeof M!="function"&&M||{},!M.name){var P=this.config();M.name=M.name||P.name,M.storeName=M.storeName||P.storeName}var N=this,j;return M.name?j=new m(function(O){M.storeName?O(wP(M,N._defaultConfig)):O(M.name+"/")}).then(function(O){for(var G=localStorage.length-1;G>=0;G--){var ee=localStorage.key(G);ee.indexOf(O)===0&&localStorage.removeItem(ee)}}):j=m.reject("Invalid arguments"),h(j,F),j}var j3={_driver:"localStorageWrapper",_initStorage:E3,_support:C3(),iterate:I3,getItem:P3,setItem:N3,removeItem:O3,clear:M3,length:R3,key:A3,keys:F3,dropInstance:L3},H3=function(F,P){return F===P||typeof F=="number"&&typeof P=="number"&&isNaN(F)&&isNaN(P)},B3=function(F,P){for(var N=F.length,j=0;j<N;){if(H3(F[j],P))return!0;j++}return!1},TP=Array.isArray||function(M){return Object.prototype.toString.call(M)==="[object Array]"},bp={},xP={},ad={INDEXEDDB:Fe,WEBSQL:x3,LOCALSTORAGE:j3},V3=[ad.INDEXEDDB._driver,ad.WEBSQL._driver,ad.LOCALSTORAGE._driver],Mk=["dropInstance"],Wx=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(Mk),W3={description:"",driver:V3.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function z3(M,F){M[F]=function(){var P=arguments;return M.ready().then(function(){return M[F].apply(M,P)})}}function zx(){for(var M=1;M<arguments.length;M++){var F=arguments[M];if(F)for(var P in F)F.hasOwnProperty(P)&&(TP(F[P])?arguments[0][P]=F[P].slice():arguments[0][P]=F[P])}return arguments[0]}var _3=(function(){function M(F){o(this,M);for(var P in ad)if(ad.hasOwnProperty(P)){var N=ad[P],j=N._driver;this[P]=j,bp[j]||this.defineDriver(N)}this._defaultConfig=zx({},W3),this._config=zx({},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 M.prototype.config=function(P){if((typeof P=="undefined"?"undefined":s(P))==="object"){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var N in P){if(N==="storeName"&&(P[N]=P[N].replace(/\W/g,"_")),N==="version"&&typeof P[N]!="number")return new Error("Database version must be a number.");this._config[N]=P[N]}return"driver"in P&&P.driver?this.setDriver(this._config.driver):!0}else return typeof P=="string"?this._config[P]:this._config},M.prototype.defineDriver=function(P,N,j){var O=new m(function(G,ee){try{var re=P._driver,ie=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!P._driver){ee(ie);return}for(var ne=Wx.concat("_initStorage"),ve=0,qe=ne.length;ve<qe;ve++){var bt=ne[ve],Mt=!B3(Mk,bt);if((Mt||P[bt])&&typeof P[bt]!="function"){ee(ie);return}}var Da=function(){for(var wp=function(Y3){return function(){var q3=new Error("Method "+Y3+" is not implemented by the current driver"),CP=m.reject(q3);return h(CP,arguments[arguments.length-1]),CP}},_x=0,$3=Mk.length;_x<$3;_x++){var Ux=Mk[_x];P[Ux]||(P[Ux]=wp(Ux))}};Da();var wa=function(wp){bp[re]&&""+re,bp[re]=P,xP[re]=wp,G()};"_support"in P?P._support&&typeof P._support=="function"?P._support().then(wa,ee):wa(!!P._support):wa(!0)}catch(Li){ee(Li)}});return g(O,N,j),O},M.prototype.driver=function(){return this._driver||null},M.prototype.getDriver=function(P,N,j){var O=bp[P]?m.resolve(bp[P]):m.reject(new Error("Driver not found."));return g(O,N,j),O},M.prototype.getSerializer=function(P){var N=m.resolve(Vx);return g(N,P),N},M.prototype.ready=function(P){var N=this,j=N._driverSet.then(function(){return N._ready===null&&(N._ready=N._initDriver()),N._ready});return g(j,P,P),j},M.prototype.setDriver=function(P,N,j){var O=this;TP(P)||(P=[P]);var G=this._getSupportedDrivers(P);function ee(){O._config.driver=O.driver()}function re(ve){return O._extend(ve),ee(),O._ready=O._initStorage(O._config),O._ready}function ie(ve){return function(){var qe=0;function bt(){for(;qe<ve.length;){var Mt=ve[qe];return qe++,O._dbInfo=null,O._ready=null,O.getDriver(Mt).then(re).catch(bt)}ee();var Da=new Error("No available storage method found.");return O._driverSet=m.reject(Da),O._driverSet}return bt()}}var ne=this._driverSet!==null?this._driverSet.catch(function(){return m.resolve()}):m.resolve();return this._driverSet=ne.then(function(){var ve=G[0];return O._dbInfo=null,O._ready=null,O.getDriver(ve).then(function(qe){O._driver=qe._driver,ee(),O._wrapLibraryMethodsWithReady(),O._initDriver=ie(G)})}).catch(function(){ee();var ve=new Error("No available storage method found.");return O._driverSet=m.reject(ve),O._driverSet}),g(this._driverSet,N,j),this._driverSet},M.prototype.supports=function(P){return!!xP[P]},M.prototype._extend=function(P){zx(this,P)},M.prototype._getSupportedDrivers=function(P){for(var N=[],j=0,O=P.length;j<O;j++){var G=P[j];this.supports(G)&&N.push(G)}return N},M.prototype._wrapLibraryMethodsWithReady=function(){for(var P=0,N=Wx.length;P<N;P++)z3(this,Wx[P])},M.prototype.createInstance=function(P){return new M(P)},M})(),U3=new _3;r.exports=U3},{3:3}]},{},[4])(4)})});var lj=Se(oj=>{var OM=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}contains(a){for(let e=this._offset;e<this._elements.length;e+=1)if(typeof a=="function"){if(a(this._elements[e]))return!0}else if(this._elements[e]===a)return!0;return!1}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)}};oj.Queue=OM});var dj=Se(cj=>{var{Queue:OK}=lj();cj.Queue=OK});var UM=Se(Ke=>{"use strict";Object.defineProperty(Ke,"__esModule",{value:!0});var ma=require("obsidian"),jM="YYYY-MM-DD",HM="gggg-[W]ww",kj="YYYY-MM",vj="YYYY-[Q]Q",yj="YYYY";function Xf(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 Jf(){var n,a,e,t;try{let{internalPlugins:r,plugins:i}=window.app;if(Xf("daily")){let{format:d,folder:u,template:p}=((a=(n=i.getPlugin("periodic-notes"))==null?void 0:n.settings)==null?void 0:a.daily)||{};return{format:d||jM,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||jM,folder:(s==null?void 0:s.trim())||"",template:(l==null?void 0:l.trim())||""}}catch(r){}}function Zf(){var n,a,e,t,r,i,s;try{let o=window.app.plugins,l=(n=o.getPlugin("calendar"))==null?void 0:n.options,d=(e=(a=o.getPlugin("periodic-notes"))==null?void 0:a.settings)==null?void 0:e.weekly;if(Xf("weekly"))return{format:d.format||HM,folder:((t=d.folder)==null?void 0:t.trim())||"",template:((r=d.template)==null?void 0:r.trim())||""};let u=l||{};return{format:u.weeklyNoteFormat||HM,folder:((i=u.weeklyNoteFolder)==null?void 0:i.trim())||"",template:((s=u.weeklyNoteTemplate)==null?void 0:s.trim())||""}}catch(o){}}function ek(){var a,e,t,r;let n=window.app.plugins;try{let i=Xf("monthly")&&((e=(a=n.getPlugin("periodic-notes"))==null?void 0:a.settings)==null?void 0:e.monthly)||{};return{format:i.format||kj,folder:((t=i.folder)==null?void 0:t.trim())||"",template:((r=i.template)==null?void 0:r.trim())||""}}catch(i){}}function tk(){var a,e,t,r;let n=window.app.plugins;try{let i=Xf("quarterly")&&((e=(a=n.getPlugin("periodic-notes"))==null?void 0:a.settings)==null?void 0:e.quarterly)||{};return{format:i.format||vj,folder:((t=i.folder)==null?void 0:t.trim())||"",template:((r=i.template)==null?void 0:r.trim())||""}}catch(i){}}function ak(){var a,e,t,r;let n=window.app.plugins;try{let i=Xf("yearly")&&((e=(a=n.getPlugin("periodic-notes"))==null?void 0:a.settings)==null?void 0:e.yearly)||{};return{format:i.format||yj,folder:((t=i.folder)==null?void 0:t.trim())||"",template:((r=i.template)==null?void 0:r.trim())||""}}catch(i){}}function bj(...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 jK(n){let a=n.substring(n.lastIndexOf("/")+1);return a.lastIndexOf(".")!=-1&&(a=a.substring(0,a.lastIndexOf("."))),a}async function HK(n){let a=n.replace(/\\/g,"/").split("/");if(a.pop(),a.length){let e=bj(...a);window.app.vault.getAbstractFileByPath(e)||await window.app.vault.createFolder(e)}}async function rk(n,a){a.endsWith(".md")||(a+=".md");let e=ma.normalizePath(bj(n,a));return await HK(e),e}async function sp(n){let{metadataCache:a,vault:e}=window.app,t=ma.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 ma.Notice("Failed to read the daily note template"),["",null]}}function Kn(n,a="day"){let e=n.clone().startOf(a).format();return`${a}-${e}`}function wj(n){return n.replace(/\[[^\]]*\]/g,"")}function BK(n,a){if(a==="week"){let e=wj(n);return/w{1,2}/i.test(e)&&(/M{1,4}/.test(e)||/D{1,4}/.test(e))}return!1}function op(n,a){return Tj(n.basename,a)}function VK(n,a){return Tj(jK(n),a)}function Tj(n,a){let t={day:Jf,week:Zf,month:ek,quarter:tk,year:ak}[a]().format.split("/").pop(),r=window.moment(n,t,!0);if(!r.isValid())return null;if(BK(t,a)&&a==="week"){let i=wj(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 BM=class extends Error{};async function xj(n){let a=window.app,{vault:e}=a,t=window.moment,{template:r,format:i,folder:s}=Jf(),[o,l]=await sp(r),d=n.format(i),u=await rk(s,d);try{let p=await e.create(u,o.replace(/{{\s*date\s*}}/gi,d).replace(/{{\s*time\s*}}/gi,t().format("HH:mm")).replace(/{{\s*title\s*}}/gi,d).replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(m,h,g,f,k,v)=>{let y=t(),b=n.clone().set({hour:y.get("hour"),minute:y.get("minute"),second:y.get("second")});return g&&b.add(parseInt(f,10),k),v?b.format(v.substring(1).trim()):b.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 ma.Notice("Unable to create new file.")}}function WK(n,a){var e;return(e=a[Kn(n,"day")])!=null?e:null}function zK(){let{vault:n}=window.app,{folder:a}=Jf(),e=n.getAbstractFileByPath(ma.normalizePath(a));if(!e)throw new BM("Failed to find daily notes folder");let t={};return ma.Vault.recurseChildren(e,r=>{if(r instanceof ma.TFile){let i=op(r,"day");if(i){let s=Kn(i,"day");t[s]=r}}}),t}var VM=class extends Error{};function _K(){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 UK(n){return _K().indexOf(n.toLowerCase())}async function Cj(n){let{vault:a}=window.app,{template:e,format:t,folder:r}=Zf(),[i,s]=await sp(e),o=n.format(t),l=await rk(r,o);try{let d=await a.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,h,g,f)=>{let k=window.moment(),v=n.clone().set({hour:k.get("hour"),minute:k.get("minute"),second:k.get("second")});return m&&v.add(parseInt(h,10),g),f?v.format(f.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 h=UK(p);return n.weekday(h).format(m.trim())}));return window.app.foldManager.save(d,s),d}catch(d){console.error(`Failed to create file: '${l}'`,d),new ma.Notice("Unable to create new file.")}}function $K(n,a){var e;return(e=a[Kn(n,"week")])!=null?e:null}function YK(){let n={};if(!Dj())return n;let{vault:a}=window.app,{folder:e}=Zf(),t=a.getAbstractFileByPath(ma.normalizePath(e));if(!t)throw new VM("Failed to find weekly notes folder");return ma.Vault.recurseChildren(t,r=>{if(r instanceof ma.TFile){let i=op(r,"week");if(i){let s=Kn(i,"week");n[s]=r}}}),n}var WM=class extends Error{};async function Sj(n){let{vault:a}=window.app,{template:e,format:t,folder:r}=ek(),[i,s]=await sp(e),o=n.format(t),l=await rk(r,o);try{let d=await a.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,h,g,f)=>{let k=window.moment(),v=n.clone().set({hour:k.get("hour"),minute:k.get("minute"),second:k.get("second")});return m&&v.add(parseInt(h,10),g),f?v.format(f.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(d,s),d}catch(d){console.error(`Failed to create file: '${l}'`,d),new ma.Notice("Unable to create new file.")}}function qK(n,a){var e;return(e=a[Kn(n,"month")])!=null?e:null}function GK(){let n={};if(!Ej())return n;let{vault:a}=window.app,{folder:e}=ek(),t=a.getAbstractFileByPath(ma.normalizePath(e));if(!t)throw new WM("Failed to find monthly notes folder");return ma.Vault.recurseChildren(t,r=>{if(r instanceof ma.TFile){let i=op(r,"month");if(i){let s=Kn(i,"month");n[s]=r}}}),n}var zM=class extends Error{};async function KK(n){let{vault:a}=window.app,{template:e,format:t,folder:r}=tk(),[i,s]=await sp(e),o=n.format(t),l=await rk(r,o);try{let d=await a.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,h,g,f)=>{let k=window.moment(),v=n.clone().set({hour:k.get("hour"),minute:k.get("minute"),second:k.get("second")});return m&&v.add(parseInt(h,10),g),f?v.format(f.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(d,s),d}catch(d){console.error(`Failed to create file: '${l}'`,d),new ma.Notice("Unable to create new file.")}}function QK(n,a){var e;return(e=a[Kn(n,"quarter")])!=null?e:null}function XK(){let n={};if(!Mj())return n;let{vault:a}=window.app,{folder:e}=tk(),t=a.getAbstractFileByPath(ma.normalizePath(e));if(!t)throw new zM("Failed to find quarterly notes folder");return ma.Vault.recurseChildren(t,r=>{if(r instanceof ma.TFile){let i=op(r,"quarter");if(i){let s=Kn(i,"quarter");n[s]=r}}}),n}var _M=class extends Error{};async function JK(n){let{vault:a}=window.app,{template:e,format:t,folder:r}=ak(),[i,s]=await sp(e),o=n.format(t),l=await rk(r,o);try{let d=await a.create(l,i.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(u,p,m,h,g,f)=>{let k=window.moment(),v=n.clone().set({hour:k.get("hour"),minute:k.get("minute"),second:k.get("second")});return m&&v.add(parseInt(h,10),g),f?v.format(f.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(d,s),d}catch(d){console.error(`Failed to create file: '${l}'`,d),new ma.Notice("Unable to create new file.")}}function ZK(n,a){var e;return(e=a[Kn(n,"year")])!=null?e:null}function eQ(){let n={};if(!Pj())return n;let{vault:a}=window.app,{folder:e}=ak(),t=a.getAbstractFileByPath(ma.normalizePath(e));if(!t)throw new _M("Failed to find yearly notes folder");return ma.Vault.recurseChildren(t,r=>{if(r instanceof ma.TFile){let i=op(r,"year");if(i){let s=Kn(i,"year");n[s]=r}}}),n}function tQ(){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 Dj(){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 Ej(){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 Mj(){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 Pj(){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 aQ(n){let a={day:Jf,week:Zf,month:ek,quarter:tk,year:ak}[n];return a()}function rQ(n,a){return{day:xj,month:Sj,week:Cj}[n](a)}Ke.DEFAULT_DAILY_NOTE_FORMAT=jM;Ke.DEFAULT_MONTHLY_NOTE_FORMAT=kj;Ke.DEFAULT_QUARTERLY_NOTE_FORMAT=vj;Ke.DEFAULT_WEEKLY_NOTE_FORMAT=HM;Ke.DEFAULT_YEARLY_NOTE_FORMAT=yj;Ke.appHasDailyNotesPluginLoaded=tQ;Ke.appHasMonthlyNotesPluginLoaded=Ej;Ke.appHasQuarterlyNotesPluginLoaded=Mj;Ke.appHasWeeklyNotesPluginLoaded=Dj;Ke.appHasYearlyNotesPluginLoaded=Pj;Ke.createDailyNote=xj;Ke.createMonthlyNote=Sj;Ke.createPeriodicNote=rQ;Ke.createQuarterlyNote=KK;Ke.createWeeklyNote=Cj;Ke.createYearlyNote=JK;Ke.getAllDailyNotes=zK;Ke.getAllMonthlyNotes=GK;Ke.getAllQuarterlyNotes=XK;Ke.getAllWeeklyNotes=YK;Ke.getAllYearlyNotes=eQ;Ke.getDailyNote=WK;Ke.getDailyNoteSettings=Jf;Ke.getDateFromFile=op;Ke.getDateFromPath=VK;Ke.getDateUID=Kn;Ke.getMonthlyNote=qK;Ke.getMonthlyNoteSettings=ek;Ke.getPeriodicNoteSettings=aQ;Ke.getQuarterlyNote=QK;Ke.getQuarterlyNoteSettings=tk;Ke.getTemplateInfo=sp;Ke.getWeeklyNote=$K;Ke.getWeeklyNoteSettings=Zf;Ke.getYearlyNote=ZK;Ke.getYearlyNoteSettings=ak});var MX={};_a(MX,{default:()=>Hx});module.exports=eB(MX);var _e=require("obsidian");var mi=require("@codemirror/view"),ho=require("@codemirror/language");var rA=xp(aA()),XV={from:-1,to:-1,match:/.*/.exec("")},JV="gm"+(/x/.unicode==null?"":"u");Symbol.iterator;var cd=class{constructor(a,e,t,r=0,i=a.length){this.to=i;this.curLine="";this.done=!1;this.value=XV;this.re=new RegExp(e,JV+(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,rA.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 Xk=require("obsidian");function iA(n,a){if(!n.settings.hideProgressBarBasedOnConditions)return!1;let e=a.sourcePath?n.app.vault.getFileByPath(a.sourcePath):null;if(!e||!(e instanceof Xk.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 nA(n,a){if(n.settings.progressBarDisplayMode==="none")return!0;if(!n.settings.hideProgressBarBasedOnConditions)return!1;let e=a.state.field(Xk.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 _o(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 Qa(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=_o(n);return r?" ":" ".repeat(i)}catch(t){return console.error("Error building indent string:",t),""}}function Uo(n){var t,r,i;let a=((i=(r=(t=n.app)==null?void 0:t.plugins)==null?void 0:r.plugins)!=null?i:{})["obsidian-tasks-plugin"];if(!a||!a._loaded)return null;let e=a.apiV1;return!e||typeof e.executeToggleTaskDoneCommand!="function"?null:e}var dd=/\b(g|goal)::\s{0,1}(\d+)\b/i;function ZV(n){if(!n)return null;let a=n.match(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]\s*(.*?)$/);return a&&a[3]?a[3].trim():null}function eW(n){if(!n)return null;let a=n.match(dd);return a?Number(a[2]):null}function bC(n){if(!n)return null;let a=ZV(n);return a?eW(a):null}var jl=require("obsidian");var oa=class extends jl.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 jl.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 jl.ButtonComponent(e).setButtonText(this.params.cancelText).onClick(()=>{this.params.onConfirm(!1),this.close()}),new jl.ButtonComponent(e).setButtonText(this.params.confirmText).setCta().onClick(()=>{this.params.onConfirm(!0),this.close()})}onClose(){this.contentEl.empty()}};var Zk=require("obsidian"),Jk=class extends Zk.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,Zk.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 Us=require("obsidian"),$o=(n,a)=>{let e=null,t=n.buttonEl,r=a.containerEl.win,i=[];try{typeof Us.getIconIds=="function"?i=(0,Us.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 Us.Notice("Icon list unavailable.");return}e=a.containerEl.createDiv("tg-icon-menu bm-menu");let o=t.closest(".vertical-tab-content")||a.containerEl,l={},d=e.createEl("input",{attr:{type:"text",placeholder:"Search icons..."},cls:"tg-menu-search"});r.setTimeout(()=>d.focus(),50);let u=()=>{setTimeout(()=>{d.focus()},400)},p=()=>{d.focus()},m=e.createDiv("tg-menu-icons"),h=100,g=0,f=!1,k=(C,S=!0)=>{if(S&&(m.empty(),l={},g=0),!C.length&&g===0){m.empty(),m.createEl("p",{text:"No matching icons found."});return}let D=f?0:g*h,E=f?C.length:Math.min((g+1)*h,C.length);if(D>=E&&!f)return;C.slice(D,E).forEach(I=>{let H=m.createDiv({cls:"clickable-icon",attr:{"data-icon":I,"aria-label":I}});l[I]=H,(0,Us.setIcon)(H,I),H.addEventListener("click",()=>{a.onIconSelected(I),y()})}),f||g++,r.setTimeout(T,0)},v=()=>{let{scrollTop:C,scrollHeight:S,clientHeight:D}=m;f||S-C-D<50&&g*h<i.length&&k(i,!1)},y=()=>{e&&(e.remove(),e=null),r.removeEventListener("click",b),o==null||o.removeEventListener("scroll",x),m.removeEventListener("scroll",v),d.removeEventListener("click",u),d.removeEventListener("blur",p)},b=C=>{e&&!e.contains(C.target)&&y()},w=(0,Us.debounce)(()=>{let C=d.value.toLowerCase().trim();if(!C)f=!1,k(i);else{f=!0;let S=i.filter(D=>D.toLowerCase().includes(C));k(S)}},250,!0),T=()=>{if(!e)return;let C=t.getBoundingClientRect(),S=e.offsetHeight,D=e.offsetWidth,E=r.innerWidth,R=r.innerHeight,I=C.bottom+2,H=C.left;I+S>R-20&&(I=C.top-S-2),I<0&&(I=5),H+D>E-20&&(H=C.right-D,H<0&&(H=5)),H<0&&(H=5),e.style.position="fixed",e.style.top=`${I}px`,e.style.left=`${H}px`},x=()=>{y()};d.addEventListener("click",u),d.addEventListener("blur",p),m.addEventListener("scroll",v),k(i),d.addEventListener("input",w),document.body.appendChild(e),T(),r.setTimeout(()=>{r.addEventListener("click",b),o==null||o.addEventListener("scroll",x)},10)};n.onClick(()=>{e||s()})};var Hi=require("obsidian"),Fp=null,tW=3e4;async function ud(n,a=!1){var t;let e=Date.now();if(a&&(Fp=null),!Fp||e-Fp.lastUpdate>tW){let r=Object.keys(n.app.metadataCache.getTags()||{}).map(l=>l.substring(1)),i=[],s=[];if(n.dataflowOrchestrator)try{let d=await n.dataflowOrchestrator.getQueryAPI().getAvailableContextsAndProjects();i=d.projects,s=d.contexts}catch(l){console.warn("Failed to get projects/contexts from dataflow:",l)}try{let l=(t=n.settings)==null?void 0:t.projectConfig;if(l){let d=(l.customProjects||[]).map(p=>p.name).filter(Boolean);i.push(...d);let u=(l.pathMappings||[]).filter(p=>p.enabled!==!1).map(p=>p.projectName).filter(Boolean);i.push(...u)}}catch(l){console.warn("Failed to merge settings-defined projects:",l)}let o=l=>Array.from(new Set(l.filter(Boolean)));i=o(i).sort(),s=o(s).sort(),Fp={tags:r,projects:i,contexts:s,lastUpdate:e}}return Fp}var wC=class extends Hi.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()}},Yo=class extends wC{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,Hi.prepareFuzzySearch)(e.toLowerCase());return this.availableChoices.filter(r=>t(r.toLowerCase())).slice(0,100)}getSuggestionText(e){return e}getSuggestionValue(e){return e}},xr=class extends Yo{constructor(a,e,t){super(a,e,[]),ud(t,!0).then(r=>{this.availableChoices=r.projects}),e.addEventListener("focus",async()=>{try{let r=await ud(t,!0);this.availableChoices=r.projects}catch(r){console.warn("ProjectSuggest: failed to refresh projects on focus",r)}})}},Jr=class extends Yo{constructor(a,e,t){super(a,e,[]),ud(t).then(r=>{this.availableChoices=r.contexts})}},TC="task-progress-bar:tag-commit",Zr=class extends Yo{constructor(e,t,r,i=!1){super(e,t,[]);this.isDetailed=i;this.detailedKeydownHandler=e=>{e.key==="Enter"&&(e.preventDefault(),e.stopPropagation(),this.commitDetailedTag())};ud(r).then(s=>{this.availableChoices=s.tags}),this.isDetailed&&t.addEventListener("keydown",this.detailedKeydownHandler)}getSuggestions(e){if(this.isDetailed){let s=e.trim().replace(/^#+/,"").toLowerCase();if(!s)return this.availableChoices.slice(0,100);let o=(0,Hi.prepareFuzzySearch)(s);return this.availableChoices.filter(l=>o(l.toLowerCase())).slice(0,100)}let t=e.split(","),r=t[t.length-1].trim();if(!r)return this.availableChoices.slice(0,100);let i=(0,Hi.prepareFuzzySearch)(r.toLowerCase());return this.availableChoices.filter(s=>i(s.toLowerCase())).slice(0,100)}getSuggestionValue(e){if(this.isDetailed)return`#${e}`;let r=this.inputEl.value.split(",");return r[r.length-1]=`#${e}`,`${r.join(",")},`}getSuggestionText(e){return`#${e}`}selectSuggestion(e,t){super.selectSuggestion(e,t),this.isDetailed&&this.commitDetailedTag()}commitDetailedTag(){if(!this.isDetailed)return;let e=this.inputEl.value.trim();if(!e){this.resetDetailedInput();return}let t=e.replace(/^#+/,"").replace(/[,\s]+$/g,"").trim();if(!t){this.resetDetailedInput();return}this.inputEl.dispatchEvent(new CustomEvent(TC,{detail:{tag:t},bubbles:!0})),this.resetDetailedInput()}resetDetailedInput(){this.inputEl.value="",this.inputEl.trigger("input"),this.close()}},ev=class extends Yo{constructor(a,e,t){let i=a.vault.getAllFolders().map(s=>s.path);super(a,e,["/",...i])}},ts=class extends Yo{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,Hi.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,Hi.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}},tv=class extends Yo{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)}},qo=class extends Hi.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,Hi.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()}},Go=class extends Hi.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,Hi.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()}};Rp();pd();var YA=require("obsidian");var ha="top",Ua="bottom",Ma="right",Ta="left",rv="auto",Ko=[ha,Ua,Ma,Ta],Ys="start",Hl="end",SA="clippingParents",iv="viewport",md="popper",DA="reference",EC=Ko.reduce(function(n,a){return n.concat([a+"-"+Ys,a+"-"+Hl])},[]),nv=[].concat(Ko,[rv]).reduce(function(n,a){return n.concat([a,a+"-"+Ys,a+"-"+Hl])},[]),uW="beforeRead",pW="read",mW="afterRead",hW="beforeMain",gW="main",fW="afterMain",kW="beforeWrite",vW="write",yW="afterWrite",EA=[uW,pW,mW,hW,gW,fW,kW,vW,yW];function Xa(n){return n?(n.nodeName||"").toLowerCase():null}function Jt(n){if(n==null)return window;if(n.toString()!=="[object Window]"){var a=n.ownerDocument;return a&&a.defaultView||window}return n}function Bi(n){var a=Jt(n).Element;return n instanceof a||n instanceof Element}function $a(n){var a=Jt(n).HTMLElement;return n instanceof a||n instanceof HTMLElement}function hd(n){if(typeof ShadowRoot=="undefined")return!1;var a=Jt(n).ShadowRoot;return n instanceof a||n instanceof ShadowRoot}function bW(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];!$a(i)||!Xa(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 wW(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,d){return l[d]="",l},{});!$a(r)||!Xa(r)||(Object.assign(r.style,o),Object.keys(i).forEach(function(l){r.removeAttribute(l)}))})}}var MA={name:"applyStyles",enabled:!0,phase:"write",fn:bW,effect:wW,requires:["computeStyles"]};function Ja(n){return n.split("-")[0]}var xn=Math.max,Bl=Math.min,qs=Math.round;function gd(){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 Op(){return!/^((?!chrome|android).)*safari/i.test(gd())}function Vi(n,a,e){a===void 0&&(a=!1),e===void 0&&(e=!1);var t=n.getBoundingClientRect(),r=1,i=1;a&&$a(n)&&(r=n.offsetWidth>0&&qs(t.width)/n.offsetWidth||1,i=n.offsetHeight>0&&qs(t.height)/n.offsetHeight||1);var s=Bi(n)?Jt(n):window,o=s.visualViewport,l=!Op()&&e,d=(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:d+p,bottom:u+m,left:d,x:d,y:u}}function Vl(n){var a=Vi(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 Np(n,a){var e=a.getRootNode&&a.getRootNode();if(n.contains(a))return!0;if(e&&hd(e)){var t=a;do{if(t&&n.isSameNode(t))return!0;t=t.parentNode||t.host}while(t)}return!1}function jr(n){return Jt(n).getComputedStyle(n)}function MC(n){return["table","td","th"].indexOf(Xa(n))>=0}function hr(n){return((Bi(n)?n.ownerDocument:n.document)||window.document).documentElement}function Gs(n){return Xa(n)==="html"?n:n.assignedSlot||n.parentNode||(hd(n)?n.host:null)||hr(n)}function PA(n){return!$a(n)||jr(n).position==="fixed"?null:n.offsetParent}function TW(n){var a=/firefox/i.test(gd()),e=/Trident/i.test(gd());if(e&&$a(n)){var t=jr(n);if(t.position==="fixed")return null}var r=Gs(n);for(hd(r)&&(r=r.host);$a(r)&&["html","body"].indexOf(Xa(r))<0;){var i=jr(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 Cn(n){for(var a=Jt(n),e=PA(n);e&&MC(e)&&jr(e).position==="static";)e=PA(e);return e&&(Xa(e)==="html"||Xa(e)==="body"&&jr(e).position==="static")?a:e||TW(n)||a}function Wl(n){return["top","bottom"].indexOf(n)>=0?"x":"y"}function zl(n,a,e){return xn(n,Bl(a,e))}function IA(n,a,e){var t=zl(n,a,e);return t>e?e:t}function Lp(){return{top:0,right:0,bottom:0,left:0}}function jp(n){return Object.assign({},Lp(),n)}function Hp(n,a){return a.reduce(function(e,t){return e[t]=n,e},{})}var xW=function(a,e){return a=typeof a=="function"?a(Object.assign({},e.rects,{placement:e.placement})):a,jp(typeof a!="number"?a:Hp(a,Ko))};function CW(n){var a,e=n.state,t=n.name,r=n.options,i=e.elements.arrow,s=e.modifiersData.popperOffsets,o=Ja(e.placement),l=Wl(o),d=[Ta,Ma].indexOf(o)>=0,u=d?"height":"width";if(!(!i||!s)){var p=xW(r.padding,e),m=Vl(i),h=l==="y"?ha:Ta,g=l==="y"?Ua:Ma,f=e.rects.reference[u]+e.rects.reference[l]-s[l]-e.rects.popper[u],k=s[l]-e.rects.reference[l],v=Cn(i),y=v?l==="y"?v.clientHeight||0:v.clientWidth||0:0,b=f/2-k/2,w=p[h],T=y-m[u]-p[g],x=y/2-m[u]/2+b,C=zl(w,x,T),S=l;e.modifiersData[t]=(a={},a[S]=C,a.centerOffset=C-x,a)}}function SW(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)||Np(a.elements.popper,r)&&(a.elements.arrow=r))}var AA={name:"arrow",enabled:!0,phase:"main",fn:CW,effect:SW,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Wi(n){return n.split("-")[1]}var DW={top:"auto",right:"auto",bottom:"auto",left:"auto"};function EW(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 FA(n){var a,e=n.popper,t=n.popperRect,r=n.placement,i=n.variation,s=n.offsets,o=n.position,l=n.gpuAcceleration,d=n.adaptive,u=n.roundOffsets,p=n.isFixed,m=s.x,h=m===void 0?0:m,g=s.y,f=g===void 0?0:g,k=typeof u=="function"?u({x:h,y:f}):{x:h,y:f};h=k.x,f=k.y;var v=s.hasOwnProperty("x"),y=s.hasOwnProperty("y"),b=Ta,w=ha,T=window;if(d){var x=Cn(e),C="clientHeight",S="clientWidth";if(x===Jt(e)&&(x=hr(e),jr(x).position!=="static"&&o==="absolute"&&(C="scrollHeight",S="scrollWidth")),x=x,r===ha||(r===Ta||r===Ma)&&i===Hl){w=Ua;var D=p&&x===T&&T.visualViewport?T.visualViewport.height:x[C];f-=D-t.height,f*=l?1:-1}if(r===Ta||(r===ha||r===Ua)&&i===Hl){b=Ma;var E=p&&x===T&&T.visualViewport?T.visualViewport.width:x[S];h-=E-t.width,h*=l?1:-1}}var R=Object.assign({position:o},d&&DW),I=u===!0?EW({x:h,y:f},Jt(e)):{x:h,y:f};if(h=I.x,f=I.y,l){var H;return Object.assign({},R,(H={},H[w]=y?"0":"",H[b]=v?"0":"",H.transform=(T.devicePixelRatio||1)<=1?"translate("+h+"px, "+f+"px)":"translate3d("+h+"px, "+f+"px, 0)",H))}return Object.assign({},R,(a={},a[w]=y?f+"px":"",a[b]=v?h+"px":"",a.transform="",a))}function MW(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,d={placement:Ja(a.placement),variation:Wi(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,FA(Object.assign({},d,{offsets:a.modifiersData.popperOffsets,position:a.options.strategy,adaptive:s,roundOffsets:l})))),a.modifiersData.arrow!=null&&(a.styles.arrow=Object.assign({},a.styles.arrow,FA(Object.assign({},d,{offsets:a.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-placement":a.placement})}var RA={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:MW,data:{}};var sv={passive:!0};function PW(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=Jt(a.elements.popper),d=[].concat(a.scrollParents.reference,a.scrollParents.popper);return i&&d.forEach(function(u){u.addEventListener("scroll",e.update,sv)}),o&&l.addEventListener("resize",e.update,sv),function(){i&&d.forEach(function(u){u.removeEventListener("scroll",e.update,sv)}),o&&l.removeEventListener("resize",e.update,sv)}}var OA={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:PW,data:{}};var IW={left:"right",right:"left",bottom:"top",top:"bottom"};function fd(n){return n.replace(/left|right|bottom|top/g,function(a){return IW[a]})}var AW={start:"end",end:"start"};function ov(n){return n.replace(/start|end/g,function(a){return AW[a]})}function _l(n){var a=Jt(n),e=a.pageXOffset,t=a.pageYOffset;return{scrollLeft:e,scrollTop:t}}function Ul(n){return Vi(hr(n)).left+_l(n).scrollLeft}function PC(n,a){var e=Jt(n),t=hr(n),r=e.visualViewport,i=t.clientWidth,s=t.clientHeight,o=0,l=0;if(r){i=r.width,s=r.height;var d=Op();(d||!d&&a==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:i,height:s,x:o+Ul(n),y:l}}function IC(n){var a,e=hr(n),t=_l(n),r=(a=n.ownerDocument)==null?void 0:a.body,i=xn(e.scrollWidth,e.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=xn(e.scrollHeight,e.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-t.scrollLeft+Ul(n),l=-t.scrollTop;return jr(r||e).direction==="rtl"&&(o+=xn(e.clientWidth,r?r.clientWidth:0)-i),{width:i,height:s,x:o,y:l}}function $l(n){var a=jr(n),e=a.overflow,t=a.overflowX,r=a.overflowY;return/auto|scroll|overlay|hidden/.test(e+r+t)}function lv(n){return["html","body","#document"].indexOf(Xa(n))>=0?n.ownerDocument.body:$a(n)&&$l(n)?n:lv(Gs(n))}function Qo(n,a){var e;a===void 0&&(a=[]);var t=lv(n),r=t===((e=n.ownerDocument)==null?void 0:e.body),i=Jt(t),s=r?[i].concat(i.visualViewport||[],$l(t)?t:[]):t,o=a.concat(s);return r?o:o.concat(Qo(Gs(s)))}function kd(n){return Object.assign({},n,{left:n.x,top:n.y,right:n.x+n.width,bottom:n.y+n.height})}function FW(n,a){var e=Vi(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 NA(n,a,e){return a===iv?kd(PC(n,e)):Bi(a)?FW(a,e):kd(IC(hr(n)))}function RW(n){var a=Qo(Gs(n)),e=["absolute","fixed"].indexOf(jr(n).position)>=0,t=e&&$a(n)?Cn(n):n;return Bi(t)?a.filter(function(r){return Bi(r)&&Np(r,t)&&Xa(r)!=="body"}):[]}function AC(n,a,e,t){var r=a==="clippingParents"?RW(n):[].concat(a),i=[].concat(r,[e]),s=i[0],o=i.reduce(function(l,d){var u=NA(n,d,t);return l.top=xn(u.top,l.top),l.right=Bl(u.right,l.right),l.bottom=Bl(u.bottom,l.bottom),l.left=xn(u.left,l.left),l},NA(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 Bp(n){var a=n.reference,e=n.element,t=n.placement,r=t?Ja(t):null,i=t?Wi(t):null,s=a.x+a.width/2-e.width/2,o=a.y+a.height/2-e.height/2,l;switch(r){case ha:l={x:s,y:a.y-e.height};break;case Ua:l={x:s,y:a.y+a.height};break;case Ma:l={x:a.x+a.width,y:o};break;case Ta:l={x:a.x-e.width,y:o};break;default:l={x:a.x,y:a.y}}var d=r?Wl(r):null;if(d!=null){var u=d==="y"?"height":"width";switch(i){case Ys:l[d]=l[d]-(a[u]/2-e[u]/2);break;case Hl:l[d]=l[d]+(a[u]/2-e[u]/2);break;default:}}return l}function Sn(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?SA:o,d=e.rootBoundary,u=d===void 0?iv:d,p=e.elementContext,m=p===void 0?md:p,h=e.altBoundary,g=h===void 0?!1:h,f=e.padding,k=f===void 0?0:f,v=jp(typeof k!="number"?k:Hp(k,Ko)),y=m===md?DA:md,b=n.rects.popper,w=n.elements[g?y:m],T=AC(Bi(w)?w:w.contextElement||hr(n.elements.popper),l,u,s),x=Vi(n.elements.reference),C=Bp({reference:x,element:b,strategy:"absolute",placement:r}),S=kd(Object.assign({},b,C)),D=m===md?S:x,E={top:T.top-D.top+v.top,bottom:D.bottom-T.bottom+v.bottom,left:T.left-D.left+v.left,right:D.right-T.right+v.right},R=n.modifiersData.offset;if(m===md&&R){var I=R[r];Object.keys(E).forEach(function(H){var U=[Ma,Ua].indexOf(H)>=0?1:-1,q=[ha,Ua].indexOf(H)>=0?"y":"x";E[H]+=I[q]*U})}return E}function FC(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,d=l===void 0?nv:l,u=Wi(t),p=u?o?EC:EC.filter(function(g){return Wi(g)===u}):Ko,m=p.filter(function(g){return d.indexOf(g)>=0});m.length===0&&(m=p);var h=m.reduce(function(g,f){return g[f]=Sn(n,{placement:f,boundary:r,rootBoundary:i,padding:s})[Ja(f)],g},{});return Object.keys(h).sort(function(g,f){return h[g]-h[f]})}function OW(n){if(Ja(n)===rv)return[];var a=fd(n);return[ov(n),a,ov(a)]}function NW(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,d=e.padding,u=e.boundary,p=e.rootBoundary,m=e.altBoundary,h=e.flipVariations,g=h===void 0?!0:h,f=e.allowedAutoPlacements,k=a.options.placement,v=Ja(k),y=v===k,b=l||(y||!g?[fd(k)]:OW(k)),w=[k].concat(b).reduce(function(He,Be){return He.concat(Ja(Be)===rv?FC(a,{placement:Be,boundary:u,rootBoundary:p,padding:d,flipVariations:g,allowedAutoPlacements:f}):Be)},[]),T=a.rects.reference,x=a.rects.popper,C=new Map,S=!0,D=w[0],E=0;E<w.length;E++){var R=w[E],I=Ja(R),H=Wi(R)===Ys,U=[ha,Ua].indexOf(I)>=0,q=U?"width":"height",L=Sn(a,{placement:R,boundary:u,rootBoundary:p,altBoundary:m,padding:d}),_=U?H?Ma:Ta:H?Ua:ha;T[q]>x[q]&&(_=fd(_));var V=fd(_),K=[];if(i&&K.push(L[I]<=0),o&&K.push(L[_]<=0,L[V]<=0),K.every(function(He){return He})){D=R,S=!1;break}C.set(R,K)}if(S)for(var te=g?3:1,ce=function(Be){var We=w.find(function(lt){var _t=C.get(lt);if(_t)return _t.slice(0,Be).every(function(ke){return ke})});if(We)return D=We,"break"},pe=te;pe>0;pe--){var Ne=ce(pe);if(Ne==="break")break}a.placement!==D&&(a.modifiersData[t]._skip=!0,a.placement=D,a.reset=!0)}}var LA={name:"flip",enabled:!0,phase:"main",fn:NW,requiresIfExists:["offset"],data:{_skip:!1}};function jA(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 HA(n){return[ha,Ma,Ua,Ta].some(function(a){return n[a]>=0})}function LW(n){var a=n.state,e=n.name,t=a.rects.reference,r=a.rects.popper,i=a.modifiersData.preventOverflow,s=Sn(a,{elementContext:"reference"}),o=Sn(a,{altBoundary:!0}),l=jA(s,t),d=jA(o,r,i),u=HA(l),p=HA(d);a.modifiersData[e]={referenceClippingOffsets:l,popperEscapeOffsets:d,isReferenceHidden:u,hasPopperEscaped:p},a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":p})}var BA={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:LW};function jW(n,a,e){var t=Ja(n),r=[Ta,ha].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,[Ta,Ma].indexOf(t)>=0?{x:o,y:s}:{x:s,y:o}}function HW(n){var a=n.state,e=n.options,t=n.name,r=e.offset,i=r===void 0?[0,0]:r,s=nv.reduce(function(u,p){return u[p]=jW(p,a.rects,i),u},{}),o=s[a.placement],l=o.x,d=o.y;a.modifiersData.popperOffsets!=null&&(a.modifiersData.popperOffsets.x+=l,a.modifiersData.popperOffsets.y+=d),a.modifiersData[t]=s}var VA={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:HW};function BW(n){var a=n.state,e=n.name;a.modifiersData[e]=Bp({reference:a.rects.reference,element:a.rects.popper,strategy:"absolute",placement:a.placement})}var WA={name:"popperOffsets",enabled:!0,phase:"read",fn:BW,data:{}};function RC(n){return n==="x"?"y":"x"}function VW(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,d=e.rootBoundary,u=e.altBoundary,p=e.padding,m=e.tether,h=m===void 0?!0:m,g=e.tetherOffset,f=g===void 0?0:g,k=Sn(a,{boundary:l,rootBoundary:d,padding:p,altBoundary:u}),v=Ja(a.placement),y=Wi(a.placement),b=!y,w=Wl(v),T=RC(w),x=a.modifiersData.popperOffsets,C=a.rects.reference,S=a.rects.popper,D=typeof f=="function"?f(Object.assign({},a.rects,{placement:a.placement})):f,E=typeof D=="number"?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),R=a.modifiersData.offset?a.modifiersData.offset[a.placement]:null,I={x:0,y:0};if(x){if(i){var H,U=w==="y"?ha:Ta,q=w==="y"?Ua:Ma,L=w==="y"?"height":"width",_=x[w],V=_+k[U],K=_-k[q],te=h?-S[L]/2:0,ce=y===Ys?C[L]:S[L],pe=y===Ys?-S[L]:-C[L],Ne=a.elements.arrow,He=h&&Ne?Vl(Ne):{width:0,height:0},Be=a.modifiersData["arrow#persistent"]?a.modifiersData["arrow#persistent"].padding:Lp(),We=Be[U],lt=Be[q],_t=zl(0,C[L],He[L]),ke=b?C[L]/2-te-_t-We-E.mainAxis:ce-_t-We-E.mainAxis,mt=b?-C[L]/2+te+_t+lt+E.mainAxis:pe+_t+lt+E.mainAxis,J=a.elements.arrow&&Cn(a.elements.arrow),ue=J?w==="y"?J.clientTop||0:J.clientLeft||0:0,Ae=(H=R==null?void 0:R[w])!=null?H:0,Fe=_+ke-Ae-ue,Xe=_+mt-Ae,De=zl(h?Bl(V,Fe):V,_,h?xn(K,Xe):K);x[w]=De,I[w]=De-_}if(o){var ht,yt=w==="x"?ha:Ta,Ut=w==="x"?Ua:Ma,Et=x[T],it=T==="y"?"height":"width",ia=Et+k[yt],na=Et-k[Ut],Ee=[ha,Ta].indexOf(v)!==-1,bi=(ht=R==null?void 0:R[T])!=null?ht:0,$t=Ee?ia:Et-C[it]-S[it]-bi+E.altAxis,ba=Ee?Et+C[it]+S[it]-bi-E.altAxis:na,Zn=h&&Ee?IA($t,Et,ba):zl(h?$t:ia,Et,h?ba:na);x[T]=Zn,I[T]=Zn-Et}a.modifiersData[t]=I}}var zA={name:"preventOverflow",enabled:!0,phase:"main",fn:VW,requiresIfExists:["offset"]};function OC(n){return{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}}function NC(n){return n===Jt(n)||!$a(n)?_l(n):OC(n)}function WW(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 LC(n,a,e){e===void 0&&(e=!1);var t=$a(a),r=$a(a)&&WW(a),i=hr(a),s=Vi(n,r,e),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(t||!t&&!e)&&((Xa(a)!=="body"||$l(i))&&(o=NC(a)),$a(a)?(l=Vi(a,!0),l.x+=a.clientLeft,l.y+=a.clientTop):i&&(l.x=Ul(i))),{x:s.left+o.scrollLeft-l.x,y:s.top+o.scrollTop-l.y,width:s.width,height:s.height}}function zW(n){var a=new Map,e=new Set,t=[];n.forEach(function(i){a.set(i.name,i)});function r(i){e.add(i.name);var s=[].concat(i.requires||[],i.requiresIfExists||[]);s.forEach(function(o){if(!e.has(o)){var l=a.get(o);l&&r(l)}}),t.push(i)}return n.forEach(function(i){e.has(i.name)||r(i)}),t}function jC(n){var a=zW(n);return EA.reduce(function(e,t){return e.concat(a.filter(function(r){return r.phase===t}))},[])}function HC(n){var a;return function(){return a||(a=new Promise(function(e){Promise.resolve().then(function(){a=void 0,e(n())})})),a}}function BC(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 _A={placement:"bottom",modifiers:[],strategy:"absolute"};function UA(){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 $A(n){n===void 0&&(n={});var a=n,e=a.defaultModifiers,t=e===void 0?[]:e,r=a.defaultOptions,i=r===void 0?_A:r;return function(o,l,d){d===void 0&&(d=i);var u={placement:"bottom",orderedModifiers:[],options:Object.assign({},_A,i),modifiersData:{},elements:{reference:o,popper:l},attributes:{},styles:{}},p=[],m=!1,h={state:u,setOptions:function(v){var y=typeof v=="function"?v(u.options):v;f(),u.options=Object.assign({},i,u.options,y),u.scrollParents={reference:Bi(o)?Qo(o):o.contextElement?Qo(o.contextElement):[],popper:Qo(l)};var b=jC(BC([].concat(t,u.options.modifiers)));return u.orderedModifiers=b.filter(function(w){return w.enabled}),g(),h.update()},forceUpdate:function(){if(!m){var v=u.elements,y=v.reference,b=v.popper;if(UA(y,b)){u.rects={reference:LC(y,Cn(b),u.options.strategy==="fixed"),popper:Vl(b)},u.reset=!1,u.placement=u.options.placement,u.orderedModifiers.forEach(function(E){return u.modifiersData[E.name]=Object.assign({},E.data)});for(var w=0;w<u.orderedModifiers.length;w++){if(u.reset===!0){u.reset=!1,w=-1;continue}var T=u.orderedModifiers[w],x=T.fn,C=T.options,S=C===void 0?{}:C,D=T.name;typeof x=="function"&&(u=x({state:u,options:S,name:D,instance:h})||u)}}}},update:HC(function(){return new Promise(function(k){h.forceUpdate(),k(u)})}),destroy:function(){f(),m=!0}};if(!UA(o,l))return h;h.setOptions(d).then(function(k){!m&&d.onFirstUpdate&&d.onFirstUpdate(k)});function g(){u.orderedModifiers.forEach(function(k){var v=k.name,y=k.options,b=y===void 0?{}:y,w=k.effect;if(typeof w=="function"){var T=w({state:u,name:v,instance:h,options:b}),x=function(){};p.push(T||x)}})}function f(){p.forEach(function(k){return k()}),p=[]}return h}}var _W=[OA,WA,RA,MA,VA,LA,zA,AA,BA],Dn=$A({defaultModifiers:_W});Rp();var Ks=class extends YA.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 $s(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=Dn(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()}};var Vp=require("obsidian");var qA=/#[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]+/g;var Xo={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}"},vd={"\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};var GA=new RegExp("^"+qA.source);function UW(n){let a="",e=0;function t(r){let i=0,s=r-1;for(;s>=0&&n[s]==="\\";)i++,s--;return i%2===1}for(;e<n.length;)if(e<n.length-1&&n[e]==="["&&n[e+1]==="["){let r=e+2,i=1;for(;r<n.length-1&&i>0;){if(n[r]==="]"&&n[r+1]==="]"){if(i--,i===0){r+=2;break}}else n[r]==="["&&n[r+1]==="["&&(i++,r++);r++}a+=n.substring(e,r),e=r}else if(n[e]==="#"){if(t(e)){a+=n[e],e++;continue}let r=GA.exec(n.substring(e));if(r){let i=r[0],s=i.slice(1);/^\d+$/.test(s)&&(a+=i),e+=i.length}else a+=n[e],e++}else a+=n[e],e++;return a}function Cr(n){if(!n)return n;let a=n,e=[Xo.startDateSymbol,Xo.createdDateSymbol,Xo.scheduledDateSymbol,Xo.dueDateSymbol,Xo.doneDateSymbol,"\u274C"].filter(Boolean);if(a=a.replace(/\s*~\s*📅\s*/g," "),e.forEach(p=>{if(!p)return;let m=p.replace(/[.*+?^${}()|[\\\]]/g,"\\$&"),h=new RegExp(`${m}\\uFE0F? *\\d{4}-\\d{2}-\\d{2}`,"gu");a=a.replace(h,"")}),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,""),Xo.recurrenceSymbol){let p=Xo.recurrenceSymbol.replace(/[.*+?^${}()|[\\\]]/g,"\\$&"),m=e.map(f=>f.replace(/[.*+?^${}()|[\\\]]/g,"\\$&")).join(""),h=["\u{1F194}","\u26D4","\u{1F3C1}"].map(f=>f.replace(/[.*+?^${}()|[\\\]]/g,"\\$&")).join(""),g=new RegExp(`${p}\\uFE0F? *.*?(?=s(?:[${m}${h}${p}]|@|#)|$)`,"gu");a=a.replace(g,"")}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(g=>Math.max(g.index,p)<Math.min(g.index+g.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(g=>Math.max(g.index,p)<Math.min(g.index+g.length,m))||t.push({text:o[0],index:p,length:o[0].length,id:`md_${l++}`})}let d=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),d=d.substring(0,p.index)+m+d.substring(p.index+p.length)}}d=UW(d),d=d.replace(/@[\w-]+/g,""),d=d.replace(/\btarget:\s*/gi,""),d=d.replace(/\s*📁\s*/g," "),d=(function(m){let h="",g=0;function f(k){let v=0,y=k-1;for(;y>=0&&m[y]==="\\";)v++,y--;return v%2===1}for(;g<m.length;){if(m[g]==="#"){if(f(g)){h+="#",g++;continue}let k=m.substring(g),v=GA.exec(k);if(v){let y=v[0],b=y.slice(1);/^\d+$/.test(b)&&(h+=y),g+=y.length;continue}h+="#",g++;continue}h+=m[g],g++}return h})(d),d=d.replace(/\s+~\s+/g," "),d=d.replace(/\s+~(?=\s|$)/g,""),d=d.replace(/^~\s+/,"");for(let[p,m]of u)d=d.replace(p,m);return d=d.replace(/^([\s>]*)?(-|\d+\.|\*|\+)\s\[([^\[\]]{1})\]\s*/,""),d=d.replace(/^# /,""),d=d.replace(/\s+/g," ").trim(),d}var la=class extends Vp.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=`content-${Date.now()}-${i}`,o=this.container.createEl("div",{cls:["markdown-block","markdown-renderer"]});o.dataset.contentId=s,this.blockElements.set(s,o),this.queueRender(r[i],s)}this.processRenderQueue()}splitIntoBlocks(e){return this.hideMarks?Cr(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,contentId: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,contentId:r}=e;if(r){let i=this.blockElements.get(r);i&&(i.empty(),await Vp.MarkdownRenderer.render(this.app,t,i,this.sourcePath,this))}else await Vp.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=`content-${Date.now()}-${this.blockElements.size}`,r=this.container.createEl("div",{cls:"markdown-block"});return r.dataset.contentId=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 nc=require("obsidian"),bF=require("obsidian");var Pa=require("obsidian");z();var oy={};_a(oy,{add:()=>ql,addBusinessDays:()=>YC,addDays:()=>jt,addHours:()=>qC,addISOWeekYears:()=>KC,addMilliseconds:()=>Gl,addMinutes:()=>Wp,addMonths:()=>Qs,addQuarters:()=>zp,addSeconds:()=>QC,addWeeks:()=>Kl,addYears:()=>XC,areIntervalsOverlapping:()=>YW,clamp:()=>qW,closestIndexTo:()=>e0,closestTo:()=>GW,compareAsc:()=>Hr,compareDesc:()=>KW,constructFrom:()=>Q,constructNow:()=>Je,daysToWeeks:()=>XW,differenceInBusinessDays:()=>JW,differenceInCalendarDays:()=>gr,differenceInCalendarISOWeekYears:()=>a0,differenceInCalendarISOWeeks:()=>ZW,differenceInCalendarMonths:()=>Td,differenceInCalendarQuarters:()=>_p,differenceInCalendarWeeks:()=>xd,differenceInCalendarYears:()=>Ql,differenceInDays:()=>ns,differenceInHours:()=>Cd,differenceInISOWeekYears:()=>e5,differenceInMilliseconds:()=>Up,differenceInMinutes:()=>Sd,differenceInMonths:()=>Xl,differenceInQuarters:()=>t5,differenceInSeconds:()=>Zs,differenceInWeeks:()=>a5,differenceInYears:()=>n0,eachDayOfInterval:()=>s0,eachHourOfInterval:()=>r5,eachMinuteOfInterval:()=>i5,eachMonthOfInterval:()=>n5,eachQuarterOfInterval:()=>s5,eachWeekOfInterval:()=>o5,eachWeekendOfInterval:()=>qp,eachWeekendOfMonth:()=>l5,eachWeekendOfYear:()=>c5,eachYearOfInterval:()=>d5,endOfDay:()=>$p,endOfDecade:()=>u5,endOfHour:()=>p5,endOfISOWeek:()=>m5,endOfISOWeekYear:()=>h5,endOfMinute:()=>g5,endOfMonth:()=>Yp,endOfQuarter:()=>f5,endOfSecond:()=>k5,endOfToday:()=>v5,endOfTomorrow:()=>y5,endOfWeek:()=>l0,endOfYear:()=>o0,endOfYesterday:()=>b5,format:()=>to,formatDate:()=>to,formatDistance:()=>d0,formatDistanceStrict:()=>u0,formatDistanceToNow:()=>iz,formatDistanceToNowStrict:()=>nz,formatDuration:()=>oz,formatISO:()=>lz,formatISO9075:()=>cz,formatISODuration:()=>dz,formatRFC3339:()=>uz,formatRFC7231:()=>hz,formatRelative:()=>gz,formatters:()=>kv,fromUnixTime:()=>fz,getDate:()=>p0,getDay:()=>tc,getDayOfYear:()=>c0,getDaysInMonth:()=>m0,getDaysInYear:()=>kz,getDecade:()=>vz,getDefaultOptions:()=>g0,getHours:()=>yz,getISODay:()=>f0,getISOWeek:()=>Kp,getISOWeekYear:()=>ei,getISOWeeksInYear:()=>bz,getMilliseconds:()=>wz,getMinutes:()=>Tz,getMonth:()=>xz,getOverlappingDaysInIntervals:()=>Cz,getQuarter:()=>gv,getSeconds:()=>Sz,getTime:()=>Dz,getUnixTime:()=>Ez,getWeek:()=>Qp,getWeekOfMonth:()=>Mz,getWeekYear:()=>Zl,getWeeksInMonth:()=>Pz,getYear:()=>Iz,hoursToMilliseconds:()=>Az,hoursToMinutes:()=>Fz,hoursToSeconds:()=>Rz,interval:()=>Oz,intervalToDuration:()=>Nz,intlFormat:()=>Lz,intlFormatDistance:()=>Hz,isAfter:()=>Bz,isBefore:()=>v0,isDate:()=>t0,isEqual:()=>Vz,isExists:()=>Wz,isFirstDayOfMonth:()=>zz,isFriday:()=>_z,isFuture:()=>Uz,isLastDayOfMonth:()=>i0,isLeapYear:()=>h0,isMatch:()=>a_,isMonday:()=>r_,isPast:()=>i_,isSameDay:()=>Js,isSameHour:()=>C0,isSameISOWeek:()=>S0,isSameISOWeekYear:()=>n_,isSameMinute:()=>D0,isSameMonth:()=>E0,isSameQuarter:()=>M0,isSameSecond:()=>P0,isSameWeek:()=>Zp,isSameYear:()=>I0,isSaturday:()=>UC,isSunday:()=>$C,isThisHour:()=>s_,isThisISOWeek:()=>o_,isThisMinute:()=>l_,isThisMonth:()=>c_,isThisQuarter:()=>d_,isThisSecond:()=>u_,isThisWeek:()=>p_,isThisYear:()=>A0,isThursday:()=>m_,isToday:()=>F0,isTomorrow:()=>R0,isTuesday:()=>h_,isValid:()=>qa,isWednesday:()=>g_,isWeekend:()=>Xs,isWithinInterval:()=>f_,isYesterday:()=>k_,lastDayOfDecade:()=>v_,lastDayOfISOWeek:()=>y_,lastDayOfISOWeekYear:()=>b_,lastDayOfMonth:()=>k0,lastDayOfQuarter:()=>w_,lastDayOfWeek:()=>O0,lastDayOfYear:()=>T_,lightFormat:()=>E_,lightFormatters:()=>_i,longFormatters:()=>Id,max:()=>JC,milliseconds:()=>P_,millisecondsToHours:()=>I_,millisecondsToMinutes:()=>A_,millisecondsToSeconds:()=>F_,min:()=>ZC,minutesToHours:()=>R_,minutesToMilliseconds:()=>O_,minutesToSeconds:()=>N_,monthsToQuarters:()=>L_,monthsToYears:()=>j_,nextDay:()=>Vr,nextFriday:()=>H_,nextMonday:()=>B_,nextSaturday:()=>V_,nextSunday:()=>W_,nextThursday:()=>z_,nextTuesday:()=>__,nextWednesday:()=>U_,parse:()=>Jp,parseISO:()=>L0,parseJSON:()=>sU,parsers:()=>x0,previousDay:()=>Wr,previousFriday:()=>oU,previousMonday:()=>lU,previousSaturday:()=>cU,previousSunday:()=>dU,previousThursday:()=>uU,previousTuesday:()=>pU,previousWednesday:()=>mU,quartersToMonths:()=>hU,quartersToYears:()=>gU,roundToNearestHours:()=>fU,roundToNearestMinutes:()=>kU,secondsToHours:()=>vU,secondsToMilliseconds:()=>yU,secondsToMinutes:()=>bU,set:()=>wU,setDate:()=>TU,setDay:()=>ac,setDayOfYear:()=>xU,setDefaultOptions:()=>CU,setHours:()=>SU,setISODay:()=>T0,setISOWeek:()=>w0,setISOWeekYear:()=>GC,setMilliseconds:()=>DU,setMinutes:()=>EU,setMonth:()=>tm,setQuarter:()=>MU,setSeconds:()=>PU,setWeek:()=>b0,setWeekYear:()=>IU,setYear:()=>AU,startOfDay:()=>Ht,startOfDecade:()=>FU,startOfHour:()=>ry,startOfISOWeek:()=>Ya,startOfISOWeekYear:()=>zi,startOfMinute:()=>iy,startOfMonth:()=>Jl,startOfQuarter:()=>eo,startOfSecond:()=>ny,startOfToday:()=>RU,startOfTomorrow:()=>OU,startOfWeek:()=>Yt,startOfWeekYear:()=>Md,startOfYear:()=>Gp,startOfYesterday:()=>NU,sub:()=>LU,subBusinessDays:()=>jU,subDays:()=>rc,subHours:()=>HU,subISOWeekYears:()=>r0,subMilliseconds:()=>BU,subMinutes:()=>VU,subMonths:()=>j0,subQuarters:()=>WU,subSeconds:()=>zU,subWeeks:()=>_U,subYears:()=>UU,toDate:()=>A,transpose:()=>y0,weeksToDays:()=>$U,yearsToDays:()=>YU,yearsToMonths:()=>qU,yearsToQuarters:()=>GU});var $W=Math.pow(10,8)*24*60*60*1e3,Hre=-$W,is=6048e5,cv=864e5,Sr=6e4,Ci=36e5,yd=1e3,VC=525600,Jo=43200,bd=1440,dv=60,uv=3,pv=12,mv=4,Yl=3600,wd=60,hv=Yl*24,KA=hv*7,WC=hv*365.2425,zC=WC/12,QA=zC*3,_C=Symbol.for("constructDateFrom");function Q(n,a){return typeof n=="function"?n(a):n&&typeof n=="object"&&_C in n?n[_C](a):n instanceof Date?new n.constructor(a):new Date(a)}function A(n,a){return Q(a||n,n)}function jt(n,a,e){let t=A(n,e==null?void 0:e.in);return isNaN(a)?Q((e==null?void 0:e.in)||n,NaN):(a&&t.setDate(t.getDate()+a),t)}function Qs(n,a,e){let t=A(n,e==null?void 0:e.in);if(isNaN(a))return Q((e==null?void 0:e.in)||n,NaN);if(!a)return t;let r=t.getDate(),i=Q((e==null?void 0:e.in)||n,t.getTime());i.setMonth(t.getMonth()+a+1,0);let s=i.getDate();return r>=s?i:(t.setFullYear(i.getFullYear(),i.getMonth(),r),t)}function ql(n,a,e){let{years:t=0,months:r=0,weeks:i=0,days:s=0,hours:o=0,minutes:l=0,seconds:d=0}=a,u=A(n,e==null?void 0:e.in),p=r||t?Qs(u,r+t*12):u,m=s||i?jt(p,s+i*7):p,h=l+o*60,f=(d+h*60)*1e3;return Q((e==null?void 0:e.in)||n,+m+f)}function UC(n,a){return A(n,a==null?void 0:a.in).getDay()===6}function $C(n,a){return A(n,a==null?void 0:a.in).getDay()===0}function Xs(n,a){let e=A(n,a==null?void 0:a.in).getDay();return e===0||e===6}function YC(n,a,e){let t=A(n,e==null?void 0:e.in),r=Xs(t,e);if(isNaN(a))return Q(e==null?void 0:e.in,NaN);let i=t.getHours(),s=a<0?-1:1,o=Math.trunc(a/5);t.setDate(t.getDate()+o*7);let l=Math.abs(a%5);for(;l>0;)t.setDate(t.getDate()+s),Xs(t,e)||(l-=1);return r&&Xs(t,e)&&a!==0&&(UC(t,e)&&t.setDate(t.getDate()+(s<0?2:-1)),$C(t,e)&&t.setDate(t.getDate()+(s<0?1:-2))),t.setHours(i),t}function Gl(n,a,e){return Q((e==null?void 0:e.in)||n,+A(n)+a)}function qC(n,a,e){return Gl(n,a*Ci,e)}var XA={};function Tt(){return XA}function JA(n){XA=n}function Yt(n,a){var o,l,d,u,p,m,h,g;let e=Tt(),t=(g=(h=(u=(d=a==null?void 0:a.weekStartsOn)!=null?d:(l=(o=a==null?void 0:a.locale)==null?void 0:o.options)==null?void 0:l.weekStartsOn)!=null?u:e.weekStartsOn)!=null?h:(m=(p=e.locale)==null?void 0:p.options)==null?void 0:m.weekStartsOn)!=null?g:0,r=A(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}function Ya(n,a){return Yt(n,{...a,weekStartsOn:1})}function ei(n,a){let e=A(n,a==null?void 0:a.in),t=e.getFullYear(),r=Q(e,0);r.setFullYear(t+1,0,4),r.setHours(0,0,0,0);let i=Ya(r),s=Q(e,0);s.setFullYear(t,0,4),s.setHours(0,0,0,0);let o=Ya(s);return e.getTime()>=i.getTime()?t+1:e.getTime()>=o.getTime()?t:t-1}function ga(n){let a=A(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}function Te(n,...a){let e=Q.bind(null,n||a.find(t=>typeof t=="object"));return a.map(e)}function Ht(n,a){let e=A(n,a==null?void 0:a.in);return e.setHours(0,0,0,0),e}function gr(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a),i=Ht(t),s=Ht(r),o=+i-ga(i),l=+s-ga(s);return Math.round((o-l)/cv)}function zi(n,a){let e=ei(n,a),t=Q((a==null?void 0:a.in)||n,0);return t.setFullYear(e,0,4),t.setHours(0,0,0,0),Ya(t)}function GC(n,a,e){let t=A(n,e==null?void 0:e.in),r=gr(t,zi(t,e)),i=Q((e==null?void 0:e.in)||n,0);return i.setFullYear(a,0,4),i.setHours(0,0,0,0),t=zi(i),t.setDate(t.getDate()+r),t}function KC(n,a,e){return GC(n,ei(n,e)+a,e)}function Wp(n,a,e){let t=A(n,e==null?void 0:e.in);return t.setTime(t.getTime()+a*Sr),t}function zp(n,a,e){return Qs(n,a*3,e)}function QC(n,a,e){return Gl(n,a*1e3,e)}function Kl(n,a,e){return jt(n,a*7,e)}function XC(n,a,e){return Qs(n,a*12,e)}function YW(n,a,e){let[t,r]=[+A(n.start,e==null?void 0:e.in),+A(n.end,e==null?void 0:e.in)].sort((o,l)=>o-l),[i,s]=[+A(a.start,e==null?void 0:e.in),+A(a.end,e==null?void 0:e.in)].sort((o,l)=>o-l);return e!=null&&e.inclusive?t<=s&&i<=r:t<s&&i<r}function JC(n,a){let e,t=a==null?void 0:a.in;return n.forEach(r=>{!t&&typeof r=="object"&&(t=Q.bind(null,r));let i=A(r,t);(!e||e<i||isNaN(+i))&&(e=i)}),Q(t,e||NaN)}function ZC(n,a){let e,t=a==null?void 0:a.in;return n.forEach(r=>{!t&&typeof r=="object"&&(t=Q.bind(null,r));let i=A(r,t);(!e||e>i||isNaN(+i))&&(e=i)}),Q(t,e||NaN)}function qW(n,a,e){let[t,r,i]=Te(e==null?void 0:e.in,n,a.start,a.end);return ZC([JC([t,r],e),i],e)}function e0(n,a){let e=+A(n);if(isNaN(e))return NaN;let t,r;return a.forEach((i,s)=>{let o=A(i);if(isNaN(+o)){t=NaN,r=NaN;return}let l=Math.abs(e-+o);(t==null||l<r)&&(t=s,r=l)}),t}function GW(n,a,e){let[t,...r]=Te(e==null?void 0:e.in,n,...a),i=e0(t,r);if(typeof i=="number"&&isNaN(i))return Q(t,NaN);if(i!==void 0)return r[i]}function Hr(n,a){let e=+A(n)-+A(a);return e<0?-1:e>0?1:e}function KW(n,a){let e=+A(n)-+A(a);return e>0?-1:e<0?1:e}function Je(n){return Q(n,Date.now())}function XW(n){let a=Math.trunc(n/7);return a===0?0:a}function Js(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a);return+Ht(t)==+Ht(r)}function t0(n){return n instanceof Date||typeof n=="object"&&Object.prototype.toString.call(n)==="[object Date]"}function qa(n){return!(!t0(n)&&typeof n!="number"||isNaN(+A(n)))}function JW(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a);if(!qa(t)||!qa(r))return NaN;let i=gr(t,r),s=i<0?-1:1,o=Math.trunc(i/7),l=o*5,d=jt(r,o*7);for(;!Js(t,d);)l+=Xs(d,e)?0:s,d=jt(d,s);return l===0?0:l}function a0(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a);return ei(t,e)-ei(r,e)}function ZW(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a),i=Ya(t),s=Ya(r),o=+i-ga(i),l=+s-ga(s);return Math.round((o-l)/is)}function Td(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a),i=t.getFullYear()-r.getFullYear(),s=t.getMonth()-r.getMonth();return i*12+s}function gv(n,a){let e=A(n,a==null?void 0:a.in);return Math.trunc(e.getMonth()/3)+1}function _p(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a),i=t.getFullYear()-r.getFullYear(),s=gv(t)-gv(r);return i*4+s}function xd(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a),i=Yt(t,e),s=Yt(r,e),o=+i-ga(i),l=+s-ga(s);return Math.round((o-l)/is)}function Ql(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a);return t.getFullYear()-r.getFullYear()}function ns(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a),i=ZA(t,r),s=Math.abs(gr(t,r));t.setDate(t.getDate()-i*s);let o=+(ZA(t,r)===-i),l=i*(s-o);return l===0?0:l}function ZA(n,a){let e=n.getFullYear()-a.getFullYear()||n.getMonth()-a.getMonth()||n.getDate()-a.getDate()||n.getHours()-a.getHours()||n.getMinutes()-a.getMinutes()||n.getSeconds()-a.getSeconds()||n.getMilliseconds()-a.getMilliseconds();return e<0?-1:e>0?1:e}function Dr(n){return a=>{let t=(n?Math[n]:Math.trunc)(a);return t===0?0:t}}function Cd(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a),i=(+t-+r)/Ci;return Dr(e==null?void 0:e.roundingMethod)(i)}function r0(n,a,e){return KC(n,-a,e)}function e5(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a),i=Hr(t,r),s=Math.abs(a0(t,r,e)),o=r0(t,i*s,e),l=+(Hr(o,r)===-i),d=i*(s-l);return d===0?0:d}function Up(n,a){return+A(n)-+A(a)}function Sd(n,a,e){let t=Up(n,a)/Sr;return Dr(e==null?void 0:e.roundingMethod)(t)}function $p(n,a){let e=A(n,a==null?void 0:a.in);return e.setHours(23,59,59,999),e}function Yp(n,a){let e=A(n,a==null?void 0:a.in),t=e.getMonth();return e.setFullYear(e.getFullYear(),t+1,0),e.setHours(23,59,59,999),e}function i0(n,a){let e=A(n,a==null?void 0:a.in);return+$p(e,a)==+Yp(e,a)}function Xl(n,a,e){let[t,r,i]=Te(e==null?void 0:e.in,n,n,a),s=Hr(r,i),o=Math.abs(Td(r,i));if(o<1)return 0;r.getMonth()===1&&r.getDate()>27&&r.setDate(30),r.setMonth(r.getMonth()-s*o);let l=Hr(r,i)===-s;i0(t)&&o===1&&Hr(t,i)===1&&(l=!1);let d=s*(o-+l);return d===0?0:d}function t5(n,a,e){let t=Xl(n,a,e)/3;return Dr(e==null?void 0:e.roundingMethod)(t)}function Zs(n,a,e){let t=Up(n,a)/1e3;return Dr(e==null?void 0:e.roundingMethod)(t)}function a5(n,a,e){let t=ns(n,a,e)/7;return Dr(e==null?void 0:e.roundingMethod)(t)}function n0(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a),i=Hr(t,r),s=Math.abs(Ql(t,r));t.setFullYear(1584),r.setFullYear(1584);let o=Hr(t,r)===-i,l=i*(s-+o);return l===0?0:l}function Za(n,a){let[e,t]=Te(n,a.start,a.end);return{start:e,end:t}}function s0(n,a){var d;let{start:e,end:t}=Za(a==null?void 0:a.in,n),r=+e>+t,i=r?+e:+t,s=r?t:e;s.setHours(0,0,0,0);let o=(d=a==null?void 0:a.step)!=null?d:1;if(!o)return[];o<0&&(o=-o,r=!r);let l=[];for(;+s<=i;)l.push(Q(e,s)),s.setDate(s.getDate()+o),s.setHours(0,0,0,0);return r?l.reverse():l}function r5(n,a){var d;let{start:e,end:t}=Za(a==null?void 0:a.in,n),r=+e>+t,i=r?+e:+t,s=r?t:e;s.setMinutes(0,0,0);let o=(d=a==null?void 0:a.step)!=null?d:1;if(!o)return[];o<0&&(o=-o,r=!r);let l=[];for(;+s<=i;)l.push(Q(e,s)),s.setHours(s.getHours()+o);return r?l.reverse():l}function i5(n,a){var d;let{start:e,end:t}=Za(a==null?void 0:a.in,n);e.setSeconds(0,0);let r=+e>+t,i=r?+e:+t,s=r?t:e,o=(d=a==null?void 0:a.step)!=null?d:1;if(!o)return[];o<0&&(o=-o,r=!r);let l=[];for(;+s<=i;)l.push(Q(e,s)),s=Wp(s,o);return r?l.reverse():l}function n5(n,a){var d;let{start:e,end:t}=Za(a==null?void 0:a.in,n),r=+e>+t,i=r?+e:+t,s=r?t:e;s.setHours(0,0,0,0),s.setDate(1);let o=(d=a==null?void 0:a.step)!=null?d:1;if(!o)return[];o<0&&(o=-o,r=!r);let l=[];for(;+s<=i;)l.push(Q(e,s)),s.setMonth(s.getMonth()+o);return r?l.reverse():l}function eo(n,a){let e=A(n,a==null?void 0:a.in),t=e.getMonth(),r=t-t%3;return e.setMonth(r,1),e.setHours(0,0,0,0),e}function s5(n,a){var d;let{start:e,end:t}=Za(a==null?void 0:a.in,n),r=+e>+t,i=r?+eo(e):+eo(t),s=r?eo(t):eo(e),o=(d=a==null?void 0:a.step)!=null?d:1;if(!o)return[];o<0&&(o=-o,r=!r);let l=[];for(;+s<=i;)l.push(Q(e,s)),s=zp(s,o);return r?l.reverse():l}function o5(n,a){var p;let{start:e,end:t}=Za(a==null?void 0:a.in,n),r=+e>+t,i=r?Yt(t,a):Yt(e,a),s=r?Yt(e,a):Yt(t,a);i.setHours(15),s.setHours(15);let o=+s.getTime(),l=i,d=(p=a==null?void 0:a.step)!=null?p:1;if(!d)return[];d<0&&(d=-d,r=!r);let u=[];for(;+l<=o;)l.setHours(0),u.push(Q(e,l)),l=Kl(l,d),l.setHours(15);return r?u.reverse():u}function qp(n,a){let{start:e,end:t}=Za(a==null?void 0:a.in,n),r=s0({start:e,end:t},a),i=[],s=0;for(;s<r.length;){let o=r[s++];Xs(o)&&i.push(Q(e,o))}return i}function Jl(n,a){let e=A(n,a==null?void 0:a.in);return e.setDate(1),e.setHours(0,0,0,0),e}function l5(n,a){let e=Jl(n,a),t=Yp(n,a);return qp({start:e,end:t},a)}function o0(n,a){let e=A(n,a==null?void 0:a.in),t=e.getFullYear();return e.setFullYear(t+1,0,0),e.setHours(23,59,59,999),e}function Gp(n,a){let e=A(n,a==null?void 0:a.in);return e.setFullYear(e.getFullYear(),0,1),e.setHours(0,0,0,0),e}function c5(n,a){let e=Gp(n,a),t=o0(n,a);return qp({start:e,end:t},a)}function d5(n,a){var d;let{start:e,end:t}=Za(a==null?void 0:a.in,n),r=+e>+t,i=r?+e:+t,s=r?t:e;s.setHours(0,0,0,0),s.setMonth(0,1);let o=(d=a==null?void 0:a.step)!=null?d:1;if(!o)return[];o<0&&(o=-o,r=!r);let l=[];for(;+s<=i;)l.push(Q(e,s)),s.setFullYear(s.getFullYear()+o);return r?l.reverse():l}function u5(n,a){let e=A(n,a==null?void 0:a.in),t=e.getFullYear(),r=9+Math.floor(t/10)*10;return e.setFullYear(r,11,31),e.setHours(23,59,59,999),e}function p5(n,a){let e=A(n,a==null?void 0:a.in);return e.setMinutes(59,59,999),e}function l0(n,a){var o,l,d,u,p,m,h,g;let e=Tt(),t=(g=(h=(u=(d=a==null?void 0:a.weekStartsOn)!=null?d:(l=(o=a==null?void 0:a.locale)==null?void 0:o.options)==null?void 0:l.weekStartsOn)!=null?u:e.weekStartsOn)!=null?h:(m=(p=e.locale)==null?void 0:p.options)==null?void 0:m.weekStartsOn)!=null?g:0,r=A(n,a==null?void 0:a.in),i=r.getDay(),s=(i<t?-7:0)+6-(i-t);return r.setDate(r.getDate()+s),r.setHours(23,59,59,999),r}function m5(n,a){return l0(n,{...a,weekStartsOn:1})}function h5(n,a){let e=ei(n,a),t=Q((a==null?void 0:a.in)||n,0);t.setFullYear(e+1,0,4),t.setHours(0,0,0,0);let r=Ya(t,a);return r.setMilliseconds(r.getMilliseconds()-1),r}function g5(n,a){let e=A(n,a==null?void 0:a.in);return e.setSeconds(59,999),e}function f5(n,a){let e=A(n,a==null?void 0:a.in),t=e.getMonth(),r=t-t%3+3;return e.setMonth(r,0),e.setHours(23,59,59,999),e}function k5(n,a){let e=A(n,a==null?void 0:a.in);return e.setMilliseconds(999),e}function v5(n){return $p(Date.now(),n)}function y5(n){let a=Je(n==null?void 0:n.in),e=a.getFullYear(),t=a.getMonth(),r=a.getDate(),i=Je(n==null?void 0:n.in);return i.setFullYear(e,t,r+1),i.setHours(23,59,59,999),n!=null&&n.in?n.in(i):i}function b5(n){let a=Je(n==null?void 0:n.in),e=Q(n==null?void 0:n.in,0);return e.setFullYear(a.getFullYear(),a.getMonth(),a.getDate()-1),e.setHours(23,59,59,999),e}var w5={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"}},eF=(n,a,e)=>{let t,r=w5[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 fv(n){return(a={})=>{let e=a.width?String(a.width):n.defaultWidth;return n.formats[e]||n.formats[n.defaultWidth]}}var T5={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},x5={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},C5={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},tF={date:fv({formats:T5,defaultWidth:"full"}),time:fv({formats:x5,defaultWidth:"full"}),dateTime:fv({formats:C5,defaultWidth:"full"})};var S5={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},aF=(n,a,e,t)=>S5[n];function Dd(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 D5={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},E5={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},M5={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"]},P5={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"]},I5={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"}},A5={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"}},F5=(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"},rF={ordinalNumber:F5,era:Dd({values:D5,defaultWidth:"wide"}),quarter:Dd({values:E5,defaultWidth:"wide",argumentCallback:n=>n-1}),month:Dd({values:M5,defaultWidth:"wide"}),day:Dd({values:P5,defaultWidth:"wide"}),dayPeriod:Dd({values:I5,defaultWidth:"wide",formattingValues:A5,defaultFormattingWidth:"wide"})};function Ed(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)?O5(o,p=>p.test(s)):R5(o,p=>p.test(s)),d;d=n.valueCallback?n.valueCallback(l):l,d=e.valueCallback?e.valueCallback(d):d;let u=a.slice(s.length);return{value:d,rest:u}}}function R5(n,a){for(let e in n)if(Object.prototype.hasOwnProperty.call(n,e)&&a(n[e]))return e}function O5(n,a){for(let e=0;e<n.length;e++)if(a(n[e]))return e}function iF(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 N5=/^(\d+)(th|st|nd|rd)?/i,L5=/\d+/i,j5={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},H5={any:[/^b/i,/^(a|c)/i]},B5={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},V5={any:[/1/i,/2/i,/3/i,/4/i]},W5={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},z5={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]},_5={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},U5={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]},$5={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},Y5={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}},nF={ordinalNumber:iF({matchPattern:N5,parsePattern:L5,valueCallback:n=>parseInt(n,10)}),era:Ed({matchPatterns:j5,defaultMatchWidth:"wide",parsePatterns:H5,defaultParseWidth:"any"}),quarter:Ed({matchPatterns:B5,defaultMatchWidth:"wide",parsePatterns:V5,defaultParseWidth:"any",valueCallback:n=>n+1}),month:Ed({matchPatterns:W5,defaultMatchWidth:"wide",parsePatterns:z5,defaultParseWidth:"any"}),day:Ed({matchPatterns:_5,defaultMatchWidth:"wide",parsePatterns:U5,defaultParseWidth:"any"}),dayPeriod:Ed({matchPatterns:$5,defaultMatchWidth:"any",parsePatterns:Y5,defaultParseWidth:"any"})};var Br={code:"en-US",formatDistance:eF,formatLong:tF,formatRelative:aF,localize:rF,match:nF,options:{weekStartsOn:0,firstWeekContainsDate:1}};function c0(n,a){let e=A(n,a==null?void 0:a.in);return gr(e,Gp(e))+1}function Kp(n,a){let e=A(n,a==null?void 0:a.in),t=+Ya(e)-+zi(e);return Math.round(t/is)+1}function Zl(n,a){var u,p,m,h,g,f,k,v;let e=A(n,a==null?void 0:a.in),t=e.getFullYear(),r=Tt(),i=(v=(k=(h=(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?h:r.firstWeekContainsDate)!=null?k:(f=(g=r.locale)==null?void 0:g.options)==null?void 0:f.firstWeekContainsDate)!=null?v:1,s=Q((a==null?void 0:a.in)||n,0);s.setFullYear(t+1,0,i),s.setHours(0,0,0,0);let o=Yt(s,a),l=Q((a==null?void 0:a.in)||n,0);l.setFullYear(t,0,i),l.setHours(0,0,0,0);let d=Yt(l,a);return+e>=+o?t+1:+e>=+d?t:t-1}function Md(n,a){var o,l,d,u,p,m,h,g;let e=Tt(),t=(g=(h=(u=(d=a==null?void 0:a.firstWeekContainsDate)!=null?d:(l=(o=a==null?void 0:a.locale)==null?void 0:o.options)==null?void 0:l.firstWeekContainsDate)!=null?u:e.firstWeekContainsDate)!=null?h:(m=(p=e.locale)==null?void 0:p.options)==null?void 0:m.firstWeekContainsDate)!=null?g:1,r=Zl(n,a),i=Q((a==null?void 0:a.in)||n,0);return i.setFullYear(r,0,t),i.setHours(0,0,0,0),Yt(i,a)}function Qp(n,a){let e=A(n,a==null?void 0:a.in),t=+Yt(e,a)-+Md(e,a);return Math.round(t/is)+1}function fe(n,a){let e=n<0?"-":"",t=Math.abs(n).toString().padStart(a,"0");return e+t}var _i={y(n,a){let e=n.getFullYear(),t=e>0?e:1-e;return fe(a==="yy"?t%100:t,a.length)},M(n,a){let e=n.getMonth();return a==="M"?String(e+1):fe(e+1,2)},d(n,a){return fe(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 fe(n.getHours()%12||12,a.length)},H(n,a){return fe(n.getHours(),a.length)},m(n,a){return fe(n.getMinutes(),a.length)},s(n,a){return fe(n.getSeconds(),a.length)},S(n,a){let e=a.length,t=n.getMilliseconds(),r=Math.trunc(t*Math.pow(10,e-3));return fe(r,a.length)}};var Pd={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},kv={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 _i.y(n,a)},Y:function(n,a,e,t){let r=Zl(n,t),i=r>0?r:1-r;if(a==="YY"){let s=i%100;return fe(s,2)}return a==="Yo"?e.ordinalNumber(i,{unit:"year"}):fe(i,a.length)},R:function(n,a){let e=ei(n);return fe(e,a.length)},u:function(n,a){let e=n.getFullYear();return fe(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 fe(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 fe(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 _i.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 fe(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=Qp(n,t);return a==="wo"?e.ordinalNumber(r,{unit:"week"}):fe(r,a.length)},I:function(n,a,e){let t=Kp(n);return a==="Io"?e.ordinalNumber(t,{unit:"week"}):fe(t,a.length)},d:function(n,a,e){return a==="do"?e.ordinalNumber(n.getDate(),{unit:"date"}):_i.d(n,a)},D:function(n,a,e){let t=c0(n);return a==="Do"?e.ordinalNumber(t,{unit:"dayOfYear"}):fe(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 fe(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 fe(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 fe(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=Pd.noon:t===0?r=Pd.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=Pd.evening:t>=12?r=Pd.afternoon:t>=4?r=Pd.morning:r=Pd.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 _i.h(n,a)},H:function(n,a,e){return a==="Ho"?e.ordinalNumber(n.getHours(),{unit:"hour"}):_i.H(n,a)},K:function(n,a,e){let t=n.getHours()%12;return a==="Ko"?e.ordinalNumber(t,{unit:"hour"}):fe(t,a.length)},k:function(n,a,e){let t=n.getHours();return t===0&&(t=24),a==="ko"?e.ordinalNumber(t,{unit:"hour"}):fe(t,a.length)},m:function(n,a,e){return a==="mo"?e.ordinalNumber(n.getMinutes(),{unit:"minute"}):_i.m(n,a)},s:function(n,a,e){return a==="so"?e.ordinalNumber(n.getSeconds(),{unit:"second"}):_i.s(n,a)},S:function(n,a){return _i.S(n,a)},X:function(n,a,e){let t=n.getTimezoneOffset();if(t===0)return"Z";switch(a){case"X":return oF(t);case"XXXX":case"XX":return ec(t);case"XXXXX":case"XXX":default:return ec(t,":")}},x:function(n,a,e){let t=n.getTimezoneOffset();switch(a){case"x":return oF(t);case"xxxx":case"xx":return ec(t);case"xxxxx":case"xxx":default:return ec(t,":")}},O:function(n,a,e){let t=n.getTimezoneOffset();switch(a){case"O":case"OO":case"OOO":return"GMT"+sF(t,":");case"OOOO":default:return"GMT"+ec(t,":")}},z:function(n,a,e){let t=n.getTimezoneOffset();switch(a){case"z":case"zz":case"zzz":return"GMT"+sF(t,":");case"zzzz":default:return"GMT"+ec(t,":")}},t:function(n,a,e){let t=Math.trunc(+n/1e3);return fe(t,a.length)},T:function(n,a,e){return fe(+n,a.length)}};function sF(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+fe(i,2)}function oF(n,a){return n%60===0?(n>0?"-":"+")+fe(Math.abs(n)/60,2):ec(n,a)}function ec(n,a=""){let e=n>0?"-":"+",t=Math.abs(n),r=fe(Math.trunc(t/60),2),i=fe(t%60,2);return e+r+a+i}var lF=(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"})}},cF=(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"})}},q5=(n,a)=>{let e=n.match(/(P+)(p+)?/)||[],t=e[1],r=e[2];if(!r)return lF(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}}",lF(t,a)).replace("{{time}}",cF(r,a))},Id={p:cF,P:q5};var G5=/^D+$/,K5=/^Y+$/,Q5=["D","DD","YY","YYYY"];function vv(n){return G5.test(n)}function yv(n){return K5.test(n)}function Xp(n,a,e){let t=X5(n,a,e);if(console.warn(t),Q5.includes(n))throw new RangeError(t)}function X5(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 J5=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Z5=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,ez=/^'([^]*?)'?$/,tz=/''/g,az=/[a-zA-Z]/;function to(n,a,e){var u,p,m,h,g,f,k,v,y,b,w,T,x,C,S,D,E,R;let t=Tt(),r=(p=(u=e==null?void 0:e.locale)!=null?u:t.locale)!=null?p:Br,i=(b=(y=(f=(g=e==null?void 0:e.firstWeekContainsDate)!=null?g:(h=(m=e==null?void 0:e.locale)==null?void 0:m.options)==null?void 0:h.firstWeekContainsDate)!=null?f:t.firstWeekContainsDate)!=null?y:(v=(k=t.locale)==null?void 0:k.options)==null?void 0:v.firstWeekContainsDate)!=null?b:1,s=(R=(E=(C=(x=e==null?void 0:e.weekStartsOn)!=null?x:(T=(w=e==null?void 0:e.locale)==null?void 0:w.options)==null?void 0:T.weekStartsOn)!=null?C:t.weekStartsOn)!=null?E:(D=(S=t.locale)==null?void 0:S.options)==null?void 0:D.weekStartsOn)!=null?R:0,o=A(n,e==null?void 0:e.in);if(!qa(o))throw new RangeError("Invalid time value");let l=a.match(Z5).map(I=>{let H=I[0];if(H==="p"||H==="P"){let U=Id[H];return U(I,r.formatLong)}return I}).join("").match(J5).map(I=>{if(I==="''")return{isToken:!1,value:"'"};let H=I[0];if(H==="'")return{isToken:!1,value:rz(I)};if(kv[H])return{isToken:!0,value:I};if(H.match(az))throw new RangeError("Format string contains an unescaped latin alphabet character `"+H+"`");return{isToken:!1,value:I}});r.localize.preprocessor&&(l=r.localize.preprocessor(o,l));let d={firstWeekContainsDate:i,weekStartsOn:s,locale:r};return l.map(I=>{if(!I.isToken)return I.value;let H=I.value;(!(e!=null&&e.useAdditionalWeekYearTokens)&&yv(H)||!(e!=null&&e.useAdditionalDayOfYearTokens)&&vv(H))&&Xp(H,a,String(n));let U=kv[H[0]];return U(o,H,r.localize,d)}).join("")}function rz(n){let a=n.match(ez);return a?a[1].replace(tz,"'"):n}function d0(n,a,e){var g,f;let t=Tt(),r=(f=(g=e==null?void 0:e.locale)!=null?g:t.locale)!=null?f:Br,i=2520,s=Hr(n,a);if(isNaN(s))throw new RangeError("Invalid time value");let o=Object.assign({},e,{addSuffix:e==null?void 0:e.addSuffix,comparison:s}),[l,d]=Te(e==null?void 0:e.in,...s>0?[a,n]:[n,a]),u=Zs(d,l),p=(ga(d)-ga(l))/1e3,m=Math.round((u-p)/60),h;if(m<2)return e!=null&&e.includeSeconds?u<5?r.formatDistance("lessThanXSeconds",5,o):u<10?r.formatDistance("lessThanXSeconds",10,o):u<20?r.formatDistance("lessThanXSeconds",20,o):u<40?r.formatDistance("halfAMinute",0,o):u<60?r.formatDistance("lessThanXMinutes",1,o):r.formatDistance("xMinutes",1,o):m===0?r.formatDistance("lessThanXMinutes",1,o):r.formatDistance("xMinutes",m,o);if(m<45)return r.formatDistance("xMinutes",m,o);if(m<90)return r.formatDistance("aboutXHours",1,o);if(m<bd){let k=Math.round(m/60);return r.formatDistance("aboutXHours",k,o)}else{if(m<i)return r.formatDistance("xDays",1,o);if(m<Jo){let k=Math.round(m/bd);return r.formatDistance("xDays",k,o)}else if(m<Jo*2)return h=Math.round(m/Jo),r.formatDistance("aboutXMonths",h,o)}if(h=Xl(d,l),h<12){let k=Math.round(m/Jo);return r.formatDistance("xMonths",k,o)}else{let k=h%12,v=Math.trunc(h/12);return k<3?r.formatDistance("aboutXYears",v,o):k<9?r.formatDistance("overXYears",v,o):r.formatDistance("almostXYears",v+1,o)}}function u0(n,a,e){var k,v,y;let t=Tt(),r=(v=(k=e==null?void 0:e.locale)!=null?k:t.locale)!=null?v:Br,i=Hr(n,a);if(isNaN(i))throw new RangeError("Invalid time value");let s=Object.assign({},e,{addSuffix:e==null?void 0:e.addSuffix,comparison:i}),[o,l]=Te(e==null?void 0:e.in,...i>0?[a,n]:[n,a]),d=Dr((y=e==null?void 0:e.roundingMethod)!=null?y:"round"),u=l.getTime()-o.getTime(),p=u/Sr,m=ga(l)-ga(o),h=(u-m)/Sr,g=e==null?void 0:e.unit,f;if(g?f=g:p<1?f="second":p<60?f="minute":p<bd?f="hour":h<Jo?f="day":h<VC?f="month":f="year",f==="second"){let b=d(u/1e3);return r.formatDistance("xSeconds",b,s)}else if(f==="minute"){let b=d(p);return r.formatDistance("xMinutes",b,s)}else if(f==="hour"){let b=d(p/60);return r.formatDistance("xHours",b,s)}else if(f==="day"){let b=d(h/bd);return r.formatDistance("xDays",b,s)}else if(f==="month"){let b=d(h/Jo);return b===12&&g!=="month"?r.formatDistance("xYears",1,s):r.formatDistance("xMonths",b,s)}else{let b=d(h/VC);return r.formatDistance("xYears",b,s)}}function iz(n,a){return d0(n,Je(n),a)}function nz(n,a){return u0(n,Je(n),a)}var sz=["years","months","weeks","days","hours","minutes","seconds"];function oz(n,a){var l,d,u,p,m;let e=Tt(),t=(d=(l=a==null?void 0:a.locale)!=null?l:e.locale)!=null?d:Br,r=(u=a==null?void 0:a.format)!=null?u:sz,i=(p=a==null?void 0:a.zero)!=null?p:!1,s=(m=a==null?void 0:a.delimiter)!=null?m:" ";return t.formatDistance?r.reduce((h,g)=>{let f=`x${g.replace(/(^.)/,v=>v.toUpperCase())}`,k=n[g];return k!==void 0&&(i||n[g])?h.concat(t.formatDistance(f,k)):h},[]).join(s):""}function lz(n,a){var d,u;let e=A(n,a==null?void 0:a.in);if(isNaN(+e))throw new RangeError("Invalid time value");let t=(d=a==null?void 0:a.format)!=null?d:"extended",r=(u=a==null?void 0:a.representation)!=null?u:"complete",i="",s="",o=t==="extended"?"-":"",l=t==="extended"?":":"";if(r!=="time"){let p=fe(e.getDate(),2),m=fe(e.getMonth()+1,2);i=`${fe(e.getFullYear(),4)}${o}${m}${o}${p}`}if(r!=="date"){let p=e.getTimezoneOffset();if(p!==0){let v=Math.abs(p),y=fe(Math.trunc(v/60),2),b=fe(v%60,2);s=`${p<0?"+":"-"}${y}:${b}`}else s="Z";let m=fe(e.getHours(),2),h=fe(e.getMinutes(),2),g=fe(e.getSeconds(),2),f=i===""?"":"T",k=[m,h,g].join(l);i=`${i}${f}${k}${s}`}return i}function cz(n,a){var l,d;let e=A(n,a==null?void 0:a.in);if(!qa(e))throw new RangeError("Invalid time value");let t=(l=a==null?void 0:a.format)!=null?l:"extended",r=(d=a==null?void 0:a.representation)!=null?d:"complete",i="",s=t==="extended"?"-":"",o=t==="extended"?":":"";if(r!=="time"){let u=fe(e.getDate(),2),p=fe(e.getMonth()+1,2);i=`${fe(e.getFullYear(),4)}${s}${p}${s}${u}`}if(r!=="date"){let u=fe(e.getHours(),2),p=fe(e.getMinutes(),2),m=fe(e.getSeconds(),2);i=`${i}${i===""?"":" "}${u}${o}${p}${o}${m}`}return i}function dz(n){let{years:a=0,months:e=0,days:t=0,hours:r=0,minutes:i=0,seconds:s=0}=n;return`P${a}Y${e}M${t}DT${r}H${i}M${s}S`}function uz(n,a){var h;let e=A(n,a==null?void 0:a.in);if(!qa(e))throw new RangeError("Invalid time value");let t=(h=a==null?void 0:a.fractionDigits)!=null?h:0,r=fe(e.getDate(),2),i=fe(e.getMonth()+1,2),s=e.getFullYear(),o=fe(e.getHours(),2),l=fe(e.getMinutes(),2),d=fe(e.getSeconds(),2),u="";if(t>0){let g=e.getMilliseconds(),f=Math.trunc(g*Math.pow(10,t-3));u="."+fe(f,t)}let p="",m=e.getTimezoneOffset();if(m!==0){let g=Math.abs(m),f=fe(Math.trunc(g/60),2),k=fe(g%60,2);p=`${m<0?"+":"-"}${f}:${k}`}else p="Z";return`${s}-${i}-${r}T${o}:${l}:${d}${u}${p}`}var pz=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],mz=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function hz(n){let a=A(n);if(!qa(a))throw new RangeError("Invalid time value");let e=pz[a.getUTCDay()],t=fe(a.getUTCDate(),2),r=mz[a.getUTCMonth()],i=a.getUTCFullYear(),s=fe(a.getUTCHours(),2),o=fe(a.getUTCMinutes(),2),l=fe(a.getUTCSeconds(),2);return`${e}, ${t} ${r} ${i} ${s}:${o}:${l} GMT`}function gz(n,a,e){var p,m,h,g,f,k,v,y,b,w;let[t,r]=Te(e==null?void 0:e.in,n,a),i=Tt(),s=(m=(p=e==null?void 0:e.locale)!=null?p:i.locale)!=null?m:Br,o=(w=(b=(k=(f=e==null?void 0:e.weekStartsOn)!=null?f:(g=(h=e==null?void 0:e.locale)==null?void 0:h.options)==null?void 0:g.weekStartsOn)!=null?k:i.weekStartsOn)!=null?b:(y=(v=i.locale)==null?void 0:v.options)==null?void 0:y.weekStartsOn)!=null?w:0,l=gr(t,r);if(isNaN(l))throw new RangeError("Invalid time value");let d;l<-6?d="other":l<-1?d="lastWeek":l<0?d="yesterday":l<1?d="today":l<2?d="tomorrow":l<7?d="nextWeek":d="other";let u=s.formatRelative(d,t,r,{locale:s,weekStartsOn:o});return to(t,u,{locale:s,weekStartsOn:o})}function fz(n,a){return A(n*1e3,a==null?void 0:a.in)}function p0(n,a){return A(n,a==null?void 0:a.in).getDate()}function tc(n,a){return A(n,a==null?void 0:a.in).getDay()}function m0(n,a){let e=A(n,a==null?void 0:a.in),t=e.getFullYear(),r=e.getMonth(),i=Q(e,0);return i.setFullYear(t,r+1,0),i.setHours(0,0,0,0),i.getDate()}function h0(n,a){let t=A(n,a==null?void 0:a.in).getFullYear();return t%400===0||t%4===0&&t%100!==0}function kz(n,a){let e=A(n,a==null?void 0:a.in);return Number.isNaN(+e)?NaN:h0(e)?366:365}function vz(n,a){let t=A(n,a==null?void 0:a.in).getFullYear();return Math.floor(t/10)*10}function g0(){return Object.assign({},Tt())}function yz(n,a){return A(n,a==null?void 0:a.in).getHours()}function f0(n,a){let e=A(n,a==null?void 0:a.in).getDay();return e===0?7:e}function bz(n,a){let e=zi(n,a),r=+zi(Kl(e,60))-+e;return Math.round(r/is)}function wz(n){return A(n).getMilliseconds()}function Tz(n,a){return A(n,a==null?void 0:a.in).getMinutes()}function xz(n,a){return A(n,a==null?void 0:a.in).getMonth()}function Cz(n,a){let[e,t]=[+A(n.start),+A(n.end)].sort((p,m)=>p-m),[r,i]=[+A(a.start),+A(a.end)].sort((p,m)=>p-m);if(!(e<i&&r<t))return 0;let o=r<e?e:r,l=o-ga(o),d=i>t?t:i,u=d-ga(d);return Math.ceil((u-l)/cv)}function Sz(n){return A(n).getSeconds()}function Dz(n){return+A(n)}function Ez(n){return Math.trunc(+A(n)/1e3)}function Mz(n,a){var l,d,u,p,m,h,g,f;let e=Tt(),t=(f=(g=(p=(u=a==null?void 0:a.weekStartsOn)!=null?u:(d=(l=a==null?void 0:a.locale)==null?void 0:l.options)==null?void 0:d.weekStartsOn)!=null?p:e.weekStartsOn)!=null?g:(h=(m=e.locale)==null?void 0:m.options)==null?void 0:h.weekStartsOn)!=null?f:0,r=p0(A(n,a==null?void 0:a.in));if(isNaN(r))return NaN;let i=tc(Jl(n,a)),s=t-i;s<=0&&(s+=7);let o=r-s;return Math.ceil(o/7)+1}function k0(n,a){let e=A(n,a==null?void 0:a.in),t=e.getMonth();return e.setFullYear(e.getFullYear(),t+1,0),e.setHours(0,0,0,0),A(e,a==null?void 0:a.in)}function Pz(n,a){let e=A(n,a==null?void 0:a.in);return xd(k0(e,a),Jl(e,a),a)+1}function Iz(n,a){return A(n,a==null?void 0:a.in).getFullYear()}function Az(n){return Math.trunc(n*Ci)}function Fz(n){return Math.trunc(n*dv)}function Rz(n){return Math.trunc(n*Yl)}function Oz(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a);if(isNaN(+t))throw new TypeError("Start date is invalid");if(isNaN(+r))throw new TypeError("End date is invalid");if(e!=null&&e.assertPositive&&+t>+r)throw new TypeError("End date must be after start date");return{start:t,end:r}}function Nz(n,a){let{start:e,end:t}=Za(a==null?void 0:a.in,n),r={},i=n0(t,e);i&&(r.years=i);let s=ql(e,{years:r.years}),o=Xl(t,s);o&&(r.months=o);let l=ql(s,{months:r.months}),d=ns(t,l);d&&(r.days=d);let u=ql(l,{days:r.days}),p=Cd(t,u);p&&(r.hours=p);let m=ql(u,{hours:r.hours}),h=Sd(t,m);h&&(r.minutes=h);let g=ql(m,{minutes:r.minutes}),f=Zs(t,g);return f&&(r.seconds=f),r}function Lz(n,a,e){let t;return jz(a)?t=a:e=a,new Intl.DateTimeFormat(e==null?void 0:e.locale,t).format(A(n))}function jz(n){return n!==void 0&&!("locale"in n)}function Hz(n,a,e){let t=0,r,[i,s]=Te(e==null?void 0:e.in,n,a);if(e!=null&&e.unit)r=e==null?void 0:e.unit,r==="second"?t=Zs(i,s):r==="minute"?t=Sd(i,s):r==="hour"?t=Cd(i,s):r==="day"?t=gr(i,s):r==="week"?t=xd(i,s):r==="month"?t=Td(i,s):r==="quarter"?t=_p(i,s):r==="year"&&(t=Ql(i,s));else{let l=Zs(i,s);Math.abs(l)<wd?(t=Zs(i,s),r="second"):Math.abs(l)<Yl?(t=Sd(i,s),r="minute"):Math.abs(l)<hv&&Math.abs(gr(i,s))<1?(t=Cd(i,s),r="hour"):Math.abs(l)<KA&&(t=gr(i,s))&&Math.abs(t)<7?r="day":Math.abs(l)<zC?(t=xd(i,s),r="week"):Math.abs(l)<QA?(t=Td(i,s),r="month"):Math.abs(l)<WC?_p(i,s)<4?(t=_p(i,s),r="quarter"):(t=Ql(i,s),r="year"):(t=Ql(i,s),r="year")}return new Intl.RelativeTimeFormat(e==null?void 0:e.locale,{numeric:"auto",...e}).format(t,r)}function Bz(n,a){return+A(n)>+A(a)}function v0(n,a){return+A(n)<+A(a)}function Vz(n,a){return+A(n)==+A(a)}function Wz(n,a,e){let t=new Date(n,a,e);return t.getFullYear()===n&&t.getMonth()===a&&t.getDate()===e}function zz(n,a){return A(n,a==null?void 0:a.in).getDate()===1}function _z(n,a){return A(n,a==null?void 0:a.in).getDay()===5}function Uz(n){return+A(n)>Date.now()}function y0(n,a){let e=$z(a)?new a(0):Q(a,0);return e.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),e.setHours(n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()),e}function $z(n){var a;return typeof n=="function"&&((a=n.prototype)==null?void 0:a.constructor)===n}var Yz=10,bv=class{constructor(){W(this,"subPriority",0)}validate(a,e){return!0}},wv=class extends bv{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)}},Tv=class extends bv{constructor(e,t){super();W(this,"priority",Yz);W(this,"subPriority",-1);this.context=e||(r=>Q(t,r))}set(e,t){return t.timestampIsSet?e:Q(e,y0(e,this.context))}};var me=class{run(a,e,t,r){let i=this.parse(a,e,t,r);return i?{setter:new wv(i.value,this.validate,this.set,this.priority,this.subPriority),rest:i.rest}:null}validate(a,e,t){return!0}};var xv=class extends me{constructor(){super(...arguments);W(this,"priority",140);W(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 ct={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}/},Ui={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 Pt(n,a){return n&&{value:a(n.value),rest:n.rest}}function nt(n,a){let e=a.match(n);return e?{value:parseInt(e[0],10),rest:a.slice(e[0].length)}:null}function $i(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*Ci+i*Sr+s*yd),rest:a.slice(e[0].length)}}function Cv(n){return nt(ct.anyDigitsSigned,n)}function Ve(n,a){switch(n){case 1:return nt(ct.singleDigit,a);case 2:return nt(ct.twoDigits,a);case 3:return nt(ct.threeDigits,a);case 4:return nt(ct.fourDigits,a);default:return nt(new RegExp("^\\d{1,"+n+"}"),a)}}function Ad(n,a){switch(n){case 1:return nt(ct.singleDigitSigned,a);case 2:return nt(ct.twoDigitsSigned,a);case 3:return nt(ct.threeDigitsSigned,a);case 4:return nt(ct.fourDigitsSigned,a);default:return nt(new RegExp("^-?\\d{1,"+n+"}"),a)}}function Fd(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 Sv(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 Dv(n){return n%400===0||n%4===0&&n%100!==0}var Ev=class extends me{constructor(){super(...arguments);W(this,"priority",130);W(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 Pt(Ve(4,e),i);case"yo":return Pt(r.ordinalNumber(e,{unit:"year"}),i);default:return Pt(Ve(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=Sv(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 Mv=class extends me{constructor(){super(...arguments);W(this,"priority",130);W(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 Pt(Ve(4,e),i);case"Yo":return Pt(r.ordinalNumber(e,{unit:"year"}),i);default:return Pt(Ve(t.length,e),i)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,r,i){let s=Zl(e,i);if(r.isTwoDigitYear){let l=Sv(r.year,s);return e.setFullYear(l,0,i.firstWeekContainsDate),e.setHours(0,0,0,0),Yt(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),Yt(e,i)}};var Pv=class extends me{constructor(){super(...arguments);W(this,"priority",130);W(this,"incompatibleTokens",["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"])}parse(e,t){return t==="R"?Ad(4,e):Ad(t.length,e)}set(e,t,r){let i=Q(e,0);return i.setFullYear(r,0,4),i.setHours(0,0,0,0),Ya(i)}};var Iv=class extends me{constructor(){super(...arguments);W(this,"priority",130);W(this,"incompatibleTokens",["G","y","Y","R","w","I","i","e","c","t","T"])}parse(e,t){return t==="u"?Ad(4,e):Ad(t.length,e)}set(e,t,r){return e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}};var Av=class extends me{constructor(){super(...arguments);W(this,"priority",120);W(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 Ve(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 Fv=class extends me{constructor(){super(...arguments);W(this,"priority",120);W(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 Ve(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 Rv=class extends me{constructor(){super(...arguments);W(this,"incompatibleTokens",["Y","R","q","Q","L","w","I","D","i","e","c","t","T"]);W(this,"priority",110)}parse(e,t,r){let i=s=>s-1;switch(t){case"M":return Pt(nt(ct.month,e),i);case"MM":return Pt(Ve(2,e),i);case"Mo":return Pt(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 Ov=class extends me{constructor(){super(...arguments);W(this,"priority",110);W(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 Pt(nt(ct.month,e),i);case"LL":return Pt(Ve(2,e),i);case"Lo":return Pt(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 b0(n,a,e){let t=A(n,e==null?void 0:e.in),r=Qp(t,e)-a;return t.setDate(t.getDate()-r*7),A(t,e==null?void 0:e.in)}var Nv=class extends me{constructor(){super(...arguments);W(this,"priority",100);W(this,"incompatibleTokens",["y","R","u","q","Q","M","L","I","d","D","i","t","T"])}parse(e,t,r){switch(t){case"w":return nt(ct.week,e);case"wo":return r.ordinalNumber(e,{unit:"week"});default:return Ve(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,r,i){return Yt(b0(e,r,i),i)}};function w0(n,a,e){let t=A(n,e==null?void 0:e.in),r=Kp(t,e)-a;return t.setDate(t.getDate()-r*7),t}var Lv=class extends me{constructor(){super(...arguments);W(this,"priority",100);W(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 nt(ct.week,e);case"Io":return r.ordinalNumber(e,{unit:"week"});default:return Ve(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,r){return Ya(w0(e,r))}};var qz=[31,28,31,30,31,30,31,31,30,31,30,31],Gz=[31,29,31,30,31,30,31,31,30,31,30,31],jv=class extends me{constructor(){super(...arguments);W(this,"priority",90);W(this,"subPriority",1);W(this,"incompatibleTokens",["Y","R","q","Q","w","I","D","i","e","c","t","T"])}parse(e,t,r){switch(t){case"d":return nt(ct.date,e);case"do":return r.ordinalNumber(e,{unit:"date"});default:return Ve(t.length,e)}}validate(e,t){let r=e.getFullYear(),i=Dv(r),s=e.getMonth();return i?t>=1&&t<=Gz[s]:t>=1&&t<=qz[s]}set(e,t,r){return e.setDate(r),e.setHours(0,0,0,0),e}};var Hv=class extends me{constructor(){super(...arguments);W(this,"priority",90);W(this,"subpriority",1);W(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 nt(ct.dayOfYear,e);case"Do":return r.ordinalNumber(e,{unit:"date"});default:return Ve(t.length,e)}}validate(e,t){let r=e.getFullYear();return Dv(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 ac(n,a,e){var p,m,h,g,f,k,v,y;let t=Tt(),r=(y=(v=(g=(h=e==null?void 0:e.weekStartsOn)!=null?h:(m=(p=e==null?void 0:e.locale)==null?void 0:p.options)==null?void 0:m.weekStartsOn)!=null?g:t.weekStartsOn)!=null?v:(k=(f=t.locale)==null?void 0:f.options)==null?void 0:k.weekStartsOn)!=null?y:0,i=A(n,e==null?void 0:e.in),s=i.getDay(),l=(a%7+7)%7,d=7-r,u=a<0||a>6?a-(s+d)%7:(l+d)%7-(s+d)%7;return jt(i,u,e)}var Bv=class extends me{constructor(){super(...arguments);W(this,"priority",90);W(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=ac(e,r,i),e.setHours(0,0,0,0),e}};var Vv=class extends me{constructor(){super(...arguments);W(this,"priority",90);W(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 Pt(Ve(t.length,e),s);case"eo":return Pt(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=ac(e,r,i),e.setHours(0,0,0,0),e}};var Wv=class extends me{constructor(){super(...arguments);W(this,"priority",90);W(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 Pt(Ve(t.length,e),s);case"co":return Pt(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=ac(e,r,i),e.setHours(0,0,0,0),e}};function T0(n,a,e){let t=A(n,e==null?void 0:e.in),r=f0(t,e),i=a-r;return jt(t,i,e)}var zv=class extends me{constructor(){super(...arguments);W(this,"priority",90);W(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 Ve(t.length,e);case"io":return r.ordinalNumber(e,{unit:"day"});case"iii":return Pt(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 Pt(r.day(e,{width:"narrow",context:"formatting"}),i);case"iiiiii":return Pt(r.day(e,{width:"short",context:"formatting"})||r.day(e,{width:"narrow",context:"formatting"}),i);case"iiii":default:return Pt(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=T0(e,r),e.setHours(0,0,0,0),e}};var _v=class extends me{constructor(){super(...arguments);W(this,"priority",80);W(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(Fd(r),0,0,0),e}};var Uv=class extends me{constructor(){super(...arguments);W(this,"priority",80);W(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(Fd(r),0,0,0),e}};var $v=class extends me{constructor(){super(...arguments);W(this,"priority",80);W(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(Fd(r),0,0,0),e}};var Yv=class extends me{constructor(){super(...arguments);W(this,"priority",70);W(this,"incompatibleTokens",["H","K","k","t","T"])}parse(e,t,r){switch(t){case"h":return nt(ct.hour12h,e);case"ho":return r.ordinalNumber(e,{unit:"hour"});default:return Ve(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 qv=class extends me{constructor(){super(...arguments);W(this,"priority",70);W(this,"incompatibleTokens",["a","b","h","K","k","t","T"])}parse(e,t,r){switch(t){case"H":return nt(ct.hour23h,e);case"Ho":return r.ordinalNumber(e,{unit:"hour"});default:return Ve(t.length,e)}}validate(e,t){return t>=0&&t<=23}set(e,t,r){return e.setHours(r,0,0,0),e}};var Gv=class extends me{constructor(){super(...arguments);W(this,"priority",70);W(this,"incompatibleTokens",["h","H","k","t","T"])}parse(e,t,r){switch(t){case"K":return nt(ct.hour11h,e);case"Ko":return r.ordinalNumber(e,{unit:"hour"});default:return Ve(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 Kv=class extends me{constructor(){super(...arguments);W(this,"priority",70);W(this,"incompatibleTokens",["a","b","h","H","K","t","T"])}parse(e,t,r){switch(t){case"k":return nt(ct.hour24h,e);case"ko":return r.ordinalNumber(e,{unit:"hour"});default:return Ve(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 Qv=class extends me{constructor(){super(...arguments);W(this,"priority",60);W(this,"incompatibleTokens",["t","T"])}parse(e,t,r){switch(t){case"m":return nt(ct.minute,e);case"mo":return r.ordinalNumber(e,{unit:"minute"});default:return Ve(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,r){return e.setMinutes(r,0,0),e}};var Xv=class extends me{constructor(){super(...arguments);W(this,"priority",50);W(this,"incompatibleTokens",["t","T"])}parse(e,t,r){switch(t){case"s":return nt(ct.second,e);case"so":return r.ordinalNumber(e,{unit:"second"});default:return Ve(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,r){return e.setSeconds(r,0),e}};var Jv=class extends me{constructor(){super(...arguments);W(this,"priority",30);W(this,"incompatibleTokens",["t","T"])}parse(e,t){let r=i=>Math.trunc(i*Math.pow(10,-t.length+3));return Pt(Ve(t.length,e),r)}set(e,t,r){return e.setMilliseconds(r),e}};var Zv=class extends me{constructor(){super(...arguments);W(this,"priority",10);W(this,"incompatibleTokens",["t","T","x"])}parse(e,t){switch(t){case"X":return $i(Ui.basicOptionalMinutes,e);case"XX":return $i(Ui.basic,e);case"XXXX":return $i(Ui.basicOptionalSeconds,e);case"XXXXX":return $i(Ui.extendedOptionalSeconds,e);case"XXX":default:return $i(Ui.extended,e)}}set(e,t,r){return t.timestampIsSet?e:Q(e,e.getTime()-ga(e)-r)}};var ey=class extends me{constructor(){super(...arguments);W(this,"priority",10);W(this,"incompatibleTokens",["t","T","X"])}parse(e,t){switch(t){case"x":return $i(Ui.basicOptionalMinutes,e);case"xx":return $i(Ui.basic,e);case"xxxx":return $i(Ui.basicOptionalSeconds,e);case"xxxxx":return $i(Ui.extendedOptionalSeconds,e);case"xxx":default:return $i(Ui.extended,e)}}set(e,t,r){return t.timestampIsSet?e:Q(e,e.getTime()-ga(e)-r)}};var ty=class extends me{constructor(){super(...arguments);W(this,"priority",40);W(this,"incompatibleTokens","*")}parse(e){return Cv(e)}set(e,t,r){return[Q(e,r*1e3),{timestampIsSet:!0}]}};var ay=class extends me{constructor(){super(...arguments);W(this,"priority",20);W(this,"incompatibleTokens","*")}parse(e){return Cv(e)}set(e,t,r){return[Q(e,r),{timestampIsSet:!0}]}};var x0={G:new xv,y:new Ev,Y:new Mv,R:new Pv,u:new Iv,Q:new Av,q:new Fv,M:new Rv,L:new Ov,w:new Nv,I:new Lv,d:new jv,D:new Hv,E:new Bv,e:new Vv,c:new Wv,i:new zv,a:new _v,b:new Uv,B:new $v,h:new Yv,H:new qv,K:new Gv,k:new Kv,m:new Qv,s:new Xv,S:new Jv,X:new Zv,x:new ey,t:new ty,T:new ay};var Kz=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Qz=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Xz=/^'([^]*?)'?$/,Jz=/''/g,Zz=/\S/,e_=/[a-zA-Z]/;function Jp(n,a,e,t){var k,v,y,b,w,T,x,C,S,D,E,R,I,H,U,q,L,_;let r=()=>Q((t==null?void 0:t.in)||e,NaN),i=g0(),s=(v=(k=t==null?void 0:t.locale)!=null?k:i.locale)!=null?v:Br,o=(D=(S=(T=(w=t==null?void 0:t.firstWeekContainsDate)!=null?w:(b=(y=t==null?void 0:t.locale)==null?void 0:y.options)==null?void 0:b.firstWeekContainsDate)!=null?T:i.firstWeekContainsDate)!=null?S:(C=(x=i.locale)==null?void 0:x.options)==null?void 0:C.firstWeekContainsDate)!=null?D:1,l=(_=(L=(H=(I=t==null?void 0:t.weekStartsOn)!=null?I:(R=(E=t==null?void 0:t.locale)==null?void 0:E.options)==null?void 0:R.weekStartsOn)!=null?H:i.weekStartsOn)!=null?L:(q=(U=i.locale)==null?void 0:U.options)==null?void 0:q.weekStartsOn)!=null?_:0;if(!a)return n?r():A(e,t==null?void 0:t.in);let d={firstWeekContainsDate:o,weekStartsOn:l,locale:s},u=[new Tv(t==null?void 0:t.in,e)],p=a.match(Qz).map(V=>{let K=V[0];if(K in Id){let te=Id[K];return te(V,s.formatLong)}return V}).join("").match(Kz),m=[];for(let V of p){!(t!=null&&t.useAdditionalWeekYearTokens)&&yv(V)&&Xp(V,a,n),!(t!=null&&t.useAdditionalDayOfYearTokens)&&vv(V)&&Xp(V,a,n);let K=V[0],te=x0[K];if(te){let{incompatibleTokens:ce}=te;if(Array.isArray(ce)){let Ne=m.find(He=>ce.includes(He.token)||He.token===K);if(Ne)throw new RangeError(`The format string mustn't contain \`${Ne.fullToken}\` and \`${V}\` at the same time`)}else if(te.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:K,fullToken:V});let pe=te.run(n,V,s.match,d);if(!pe)return r();u.push(pe.setter),n=pe.rest}else{if(K.match(e_))throw new RangeError("Format string contains an unescaped latin alphabet character `"+K+"`");if(V==="''"?V="'":K==="'"&&(V=t_(V)),n.indexOf(V)===0)n=n.slice(V.length);else return r()}}if(n.length>0&&Zz.test(n))return r();let h=u.map(V=>V.priority).sort((V,K)=>K-V).filter((V,K,te)=>te.indexOf(V)===K).map(V=>u.filter(K=>K.priority===V).sort((K,te)=>te.subPriority-K.subPriority)).map(V=>V[0]),g=A(e,t==null?void 0:t.in);if(isNaN(+g))return r();let f={};for(let V of h){if(!V.validate(g,d))return r();let K=V.set(g,f,d);Array.isArray(K)?(g=K[0],Object.assign(f,K[1])):g=K}return g}function t_(n){return n.match(Xz)[1].replace(Jz,"'")}function a_(n,a,e){return qa(Jp(n,a,new Date,e))}function r_(n,a){return A(n,a==null?void 0:a.in).getDay()===1}function i_(n){return+A(n)<Date.now()}function ry(n,a){let e=A(n,a==null?void 0:a.in);return e.setMinutes(0,0,0),e}function C0(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a);return+ry(t)==+ry(r)}function Zp(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a);return+Yt(t,e)==+Yt(r,e)}function S0(n,a,e){return Zp(n,a,{...e,weekStartsOn:1})}function n_(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a);return+zi(t)==+zi(r)}function iy(n,a){let e=A(n,a==null?void 0:a.in);return e.setSeconds(0,0),e}function D0(n,a){return+iy(n)==+iy(a)}function E0(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a);return t.getFullYear()===r.getFullYear()&&t.getMonth()===r.getMonth()}function M0(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a);return+eo(t)==+eo(r)}function ny(n,a){let e=A(n,a==null?void 0:a.in);return e.setMilliseconds(0),e}function P0(n,a){return+ny(n)==+ny(a)}function I0(n,a,e){let[t,r]=Te(e==null?void 0:e.in,n,a);return t.getFullYear()===r.getFullYear()}function s_(n,a){return C0(A(n,a==null?void 0:a.in),Je((a==null?void 0:a.in)||n))}function o_(n,a){return S0(Q((a==null?void 0:a.in)||n,n),Je((a==null?void 0:a.in)||n))}function l_(n){return D0(n,Je(n))}function c_(n,a){return E0(Q((a==null?void 0:a.in)||n,n),Je((a==null?void 0:a.in)||n))}function d_(n,a){return M0(Q((a==null?void 0:a.in)||n,n),Je((a==null?void 0:a.in)||n))}function u_(n){return P0(n,Je(n))}function p_(n,a){return Zp(Q((a==null?void 0:a.in)||n,n),Je((a==null?void 0:a.in)||n),a)}function A0(n,a){return I0(Q((a==null?void 0:a.in)||n,n),Je((a==null?void 0:a.in)||n))}function m_(n,a){return A(n,a==null?void 0:a.in).getDay()===4}function F0(n,a){return Js(Q((a==null?void 0:a.in)||n,n),Je((a==null?void 0:a.in)||n))}function R0(n,a){return Js(n,jt(Je((a==null?void 0:a.in)||n),1),a)}function h_(n,a){return A(n,a==null?void 0:a.in).getDay()===2}function g_(n,a){return A(n,a==null?void 0:a.in).getDay()===3}function f_(n,a,e){let t=+A(n,e==null?void 0:e.in),[r,i]=[+A(a.start,e==null?void 0:e.in),+A(a.end,e==null?void 0:e.in)].sort((s,o)=>s-o);return t>=r&&t<=i}function rc(n,a,e){return jt(n,-a,e)}function k_(n,a){return Js(Q((a==null?void 0:a.in)||n,n),rc(Je((a==null?void 0:a.in)||n),1))}function v_(n,a){let e=A(n,a==null?void 0:a.in),t=e.getFullYear(),r=9+Math.floor(t/10)*10;return e.setFullYear(r+1,0,0),e.setHours(0,0,0,0),A(e,a==null?void 0:a.in)}function O0(n,a){var o,l,d,u,p,m,h,g;let e=Tt(),t=(g=(h=(u=(d=a==null?void 0:a.weekStartsOn)!=null?d:(l=(o=a==null?void 0:a.locale)==null?void 0:o.options)==null?void 0:l.weekStartsOn)!=null?u:e.weekStartsOn)!=null?h:(m=(p=e.locale)==null?void 0:p.options)==null?void 0:m.weekStartsOn)!=null?g:0,r=A(n,a==null?void 0:a.in),i=r.getDay(),s=(i<t?-7:0)+6-(i-t);return r.setHours(0,0,0,0),r.setDate(r.getDate()+s),r}function y_(n,a){return O0(n,{...a,weekStartsOn:1})}function b_(n,a){let e=ei(n,a),t=Q((a==null?void 0:a.in)||n,0);t.setFullYear(e+1,0,4),t.setHours(0,0,0,0);let r=Ya(t,a);return r.setDate(r.getDate()-1),r}function w_(n,a){let e=A(n,a==null?void 0:a.in),t=e.getMonth(),r=t-t%3+3;return e.setMonth(r,0),e.setHours(0,0,0,0),e}function T_(n,a){let e=A(n,a==null?void 0:a.in),t=e.getFullYear();return e.setFullYear(t+1,0,0),e.setHours(0,0,0,0),e}var x_=/(\w)\1*|''|'(''|[^'])+('|$)|./g,C_=/^'([^]*?)'?$/,S_=/''/g,D_=/[a-zA-Z]/;function E_(n,a){let e=A(n);if(!qa(e))throw new RangeError("Invalid time value");let t=a.match(x_);return t?t.map(i=>{if(i==="''")return"'";let s=i[0];if(s==="'")return M_(i);let o=_i[s];if(o)return o(e,i);if(s.match(D_))throw new RangeError("Format string contains an unescaped latin alphabet character `"+s+"`");return i}).join(""):""}function M_(n){let a=n.match(C_);return a?a[1].replace(S_,"'"):n}function P_({years:n,months:a,weeks:e,days:t,hours:r,minutes:i,seconds:s}){let o=0;n&&(o+=n*365.2425),a&&(o+=a*(365.2425/12)),e&&(o+=e*7),t&&(o+=t);let l=o*24*60*60;return r&&(l+=r*60*60),i&&(l+=i*60),s&&(l+=s),Math.trunc(l*1e3)}function I_(n){let a=n/Ci;return Math.trunc(a)}function A_(n){let a=n/Sr;return Math.trunc(a)}function F_(n){let a=n/yd;return Math.trunc(a)}function R_(n){let a=n/dv;return Math.trunc(a)}function O_(n){return Math.trunc(n*Sr)}function N_(n){return Math.trunc(n*wd)}function L_(n){let a=n/uv;return Math.trunc(a)}function j_(n){let a=n/pv;return Math.trunc(a)}function Vr(n,a,e){let t=a-tc(n,e);return t<=0&&(t+=7),jt(n,t,e)}function H_(n,a){return Vr(n,5,a)}function B_(n,a){return Vr(n,1,a)}function V_(n,a){return Vr(n,6,a)}function W_(n,a){return Vr(n,0,a)}function z_(n,a){return Vr(n,4,a)}function __(n,a){return Vr(n,2,a)}function U_(n,a){return Vr(n,3,a)}function L0(n,a){var d;let e=()=>Q(a==null?void 0:a.in,NaN),t=(d=a==null?void 0:a.additionalDigits)!=null?d:2,r=G_(n),i;if(r.date){let u=K_(r.date,t);i=Q_(u.restDateString,u.year)}if(!i||isNaN(+i))return e();let s=+i,o=0,l;if(r.time&&(o=X_(r.time),isNaN(o)))return e();if(r.timezone){if(l=J_(r.timezone),isNaN(l))return e()}else{let u=new Date(s+o),p=A(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 A(s+o+l,a==null?void 0:a.in)}var sy={dateTimeDelimiter:/[T ]/,timeZoneDelimiter:/[Z ]/i,timezone:/([Z+-].*)$/},$_=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,Y_=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,q_=/^([+-])(\d{2})(?::?(\d{2}))?$/;function G_(n){let a={},e=n.split(sy.dateTimeDelimiter),t;if(e.length>2)return a;if(/:/.test(e[0])?t=e[0]:(a.date=e[0],t=e[1],sy.timeZoneDelimiter.test(a.date)&&(a.date=n.split(sy.timeZoneDelimiter)[0],t=n.substr(a.date.length,n.length))),t){let r=sy.timezone.exec(t);r?(a.time=t.replace(r[1],""),a.timezone=r[1]):a.time=t}return a}function K_(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 Q_(n,a){if(a===null)return new Date(NaN);let e=n.match($_);if(!e)return new Date(NaN);let t=!!e[4],r=em(e[1]),i=em(e[2])-1,s=em(e[3]),o=em(e[4]),l=em(e[5])-1;if(t)return rU(a,o,l)?Z_(a,o,l):new Date(NaN);{let d=new Date(0);return!tU(a,i,s)||!aU(a,r)?new Date(NaN):(d.setUTCFullYear(a,i,Math.max(r,s)),d)}}function em(n){return n?parseInt(n):1}function X_(n){let a=n.match(Y_);if(!a)return NaN;let e=N0(a[1]),t=N0(a[2]),r=N0(a[3]);return iU(e,t,r)?e*Ci+t*Sr+r*1e3:NaN}function N0(n){return n&&parseFloat(n.replace(",","."))||0}function J_(n){if(n==="Z")return 0;let a=n.match(q_);if(!a)return 0;let e=a[1]==="+"?-1:1,t=parseInt(a[2]),r=a[3]&&parseInt(a[3])||0;return nU(t,r)?e*(t*Ci+r*Sr):NaN}function Z_(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}var eU=[31,null,31,30,31,30,31,31,30,31,30,31];function uF(n){return n%400===0||n%4===0&&n%100!==0}function tU(n,a,e){return a>=0&&a<=11&&e>=1&&e<=(eU[a]||(uF(n)?29:28))}function aU(n,a){return a>=1&&a<=(uF(n)?366:365)}function rU(n,a,e){return a>=1&&a<=53&&e>=0&&e<=6}function iU(n,a,e){return n===24?a===0&&e===0:e>=0&&e<60&&a>=0&&a<60&&n>=0&&n<25}function nU(n,a){return a>=0&&a<=59}function sU(n,a){let e=n.match(/(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2}):(\d{2})(?:\.(\d{0,7}))?(?:Z|(.)(\d{2}):?(\d{2})?)?/);return e?A(Date.UTC(+e[1],+e[2]-1,+e[3],+e[4]-(+e[9]||0)*(e[8]=="-"?-1:1),+e[5]-(+e[10]||0)*(e[8]=="-"?-1:1),+e[6],+((e[7]||"0")+"00").substring(0,3)),a==null?void 0:a.in):A(NaN,a==null?void 0:a.in)}function Wr(n,a,e){let t=tc(n,e)-a;return t<=0&&(t+=7),rc(n,t,e)}function oU(n,a){return Wr(n,5,a)}function lU(n,a){return Wr(n,1,a)}function cU(n,a){return Wr(n,6,a)}function dU(n,a){return Wr(n,0,a)}function uU(n,a){return Wr(n,4,a)}function pU(n,a){return Wr(n,2,a)}function mU(n,a){return Wr(n,3,a)}function hU(n){return Math.trunc(n*uv)}function gU(n){let a=n/mv;return Math.trunc(a)}function fU(n,a){var p,m;let e=(p=a==null?void 0:a.nearestTo)!=null?p:1;if(e<1||e>12)return Q((a==null?void 0:a.in)||n,NaN);let t=A(n,a==null?void 0:a.in),r=t.getMinutes()/60,i=t.getSeconds()/60/60,s=t.getMilliseconds()/1e3/60/60,o=t.getHours()+r+i+s,l=(m=a==null?void 0:a.roundingMethod)!=null?m:"round",u=Dr(l)(o/e)*e;return t.setHours(u,0,0,0),t}function kU(n,a){var u,p;let e=(u=a==null?void 0:a.nearestTo)!=null?u:1;if(e<1||e>30)return Q(n,NaN);let t=A(n,a==null?void 0:a.in),r=t.getSeconds()/60,i=t.getMilliseconds()/1e3/60,s=t.getMinutes()+r+i,o=(p=a==null?void 0:a.roundingMethod)!=null?p:"round",d=Dr(o)(s/e)*e;return t.setMinutes(d,0,0),t}function vU(n){let a=n/Yl;return Math.trunc(a)}function yU(n){return n*yd}function bU(n){let a=n/wd;return Math.trunc(a)}function tm(n,a,e){let t=A(n,e==null?void 0:e.in),r=t.getFullYear(),i=t.getDate(),s=Q((e==null?void 0:e.in)||n,0);s.setFullYear(r,a,15),s.setHours(0,0,0,0);let o=m0(s);return t.setMonth(a,Math.min(i,o)),t}function wU(n,a,e){let t=A(n,e==null?void 0:e.in);return isNaN(+t)?Q((e==null?void 0:e.in)||n,NaN):(a.year!=null&&t.setFullYear(a.year),a.month!=null&&(t=tm(t,a.month)),a.date!=null&&t.setDate(a.date),a.hours!=null&&t.setHours(a.hours),a.minutes!=null&&t.setMinutes(a.minutes),a.seconds!=null&&t.setSeconds(a.seconds),a.milliseconds!=null&&t.setMilliseconds(a.milliseconds),t)}function TU(n,a,e){let t=A(n,e==null?void 0:e.in);return t.setDate(a),t}function xU(n,a,e){let t=A(n,e==null?void 0:e.in);return t.setMonth(0),t.setDate(a),t}function CU(n){let a={},e=Tt();for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(a[t]=e[t]);for(let t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]===void 0?delete a[t]:a[t]=n[t]);JA(a)}function SU(n,a,e){let t=A(n,e==null?void 0:e.in);return t.setHours(a),t}function DU(n,a,e){let t=A(n,e==null?void 0:e.in);return t.setMilliseconds(a),t}function EU(n,a,e){let t=A(n,e==null?void 0:e.in);return t.setMinutes(a),t}function MU(n,a,e){let t=A(n,e==null?void 0:e.in),r=Math.trunc(t.getMonth()/3)+1,i=a-r;return tm(t,t.getMonth()+i*3)}function PU(n,a,e){let t=A(n,e==null?void 0:e.in);return t.setSeconds(a),t}function IU(n,a,e){var l,d,u,p,m,h,g,f;let t=Tt(),r=(f=(g=(p=(u=e==null?void 0:e.firstWeekContainsDate)!=null?u:(d=(l=e==null?void 0:e.locale)==null?void 0:l.options)==null?void 0:d.firstWeekContainsDate)!=null?p:t.firstWeekContainsDate)!=null?g:(h=(m=t.locale)==null?void 0:m.options)==null?void 0:h.firstWeekContainsDate)!=null?f:1,i=gr(A(n,e==null?void 0:e.in),Md(n,e),e),s=Q((e==null?void 0:e.in)||n,0);s.setFullYear(a,0,r),s.setHours(0,0,0,0);let o=Md(s,e);return o.setDate(o.getDate()+i),o}function AU(n,a,e){let t=A(n,e==null?void 0:e.in);return isNaN(+t)?Q((e==null?void 0:e.in)||n,NaN):(t.setFullYear(a),t)}function FU(n,a){let e=A(n,a==null?void 0:a.in),t=e.getFullYear(),r=Math.floor(t/10)*10;return e.setFullYear(r,0,1),e.setHours(0,0,0,0),e}function RU(n){return Ht(Date.now(),n)}function OU(n){let a=Je(n==null?void 0:n.in),e=a.getFullYear(),t=a.getMonth(),r=a.getDate(),i=Q(n==null?void 0:n.in,0);return i.setFullYear(e,t,r+1),i.setHours(0,0,0,0),i}function NU(n){let a=Je(n==null?void 0:n.in),e=a.getFullYear(),t=a.getMonth(),r=a.getDate(),i=Je(n==null?void 0:n.in);return i.setFullYear(e,t,r-1),i.setHours(0,0,0,0),i}function j0(n,a,e){return Qs(n,-a,e)}function LU(n,a,e){let{years:t=0,months:r=0,weeks:i=0,days:s=0,hours:o=0,minutes:l=0,seconds:d=0}=a,u=j0(n,r+t*12,e),p=rc(u,s+i*7,e),m=l+o*60,g=(d+m*60)*1e3;return Q((e==null?void 0:e.in)||n,+p-g)}function jU(n,a,e){return YC(n,-a,e)}function HU(n,a,e){return qC(n,-a,e)}function BU(n,a,e){return Gl(n,-a,e)}function VU(n,a,e){return Wp(n,-a,e)}function WU(n,a,e){return zp(n,-a,e)}function zU(n,a,e){return QC(n,-a,e)}function _U(n,a,e){return Kl(n,-a,e)}function UU(n,a,e){return XC(n,-a,e)}function $U(n){return Math.trunc(n*7)}function YU(n){return Math.trunc(n*365.2425)}function qU(n){return Math.trunc(n*pv)}function GU(n){return Math.trunc(n*mv)}function pF(n){return F0(n)?"Today":R0(n)?"Tomorrow":A0(n)?to(n,"MMM d"):to(n,"MMM d, yyyy")}function am(n,a){if(!n||(n=n.trim(),n.includes("{{")||n.includes("}}")))return;let e=/\d{1,2}:\d{2}/.test(n),t=["yyyy-MM-dd HH:mm","yyyy-MM-dd H:mm","yyyy/MM/dd HH:mm","yyyy/MM/dd H:mm","dd-MM-yyyy HH:mm","dd/MM/yyyy HH:mm","MM-dd-yyyy HH:mm","MM/dd/yyyy HH:mm","yyyy.MM.dd HH:mm","yyyyMMddHHmmss","yyyyMMdd_HHmmss"],r=["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"],i=e?[...t,...r]:[...r,...t],s=a?[...a,...i]:i;for(let o of s)try{let l=Jp(n,o,new Date,{locale:Br});if(qa(l)){let d=/[Hh]:mm/.test(o);return!e&&!d?Ht(l).getTime():l.getTime()}}catch(l){continue}try{let o=L0(n);if(qa(o))return e?o.getTime():Ht(o).getTime()}catch(o){}console.warn(`Worker: Could not parse date: ${n}`)}function Si(){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 Zo(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 ss(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 H0=/^(([\s>]*)?(-|\d+\.|\*|\+)\s\[([^\[\]]{1})\])\s+(.*)$/m;var rm=/#[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]+/g;var ly=/@[^ \t#@+\[\]]+/u;var cy=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 ti=class ti{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 ti(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,d=!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("~~~")){d=!d,o++;continue}if(d){o++;continue}if(this.config.parseHeadings){let m=this.extractHeading(u);if(m){let[h,g]=m;this.currentHeading=g,this.currentHeadingLevel=h,o++;continue}}let p=this.extractTaskLine(u);if(p){let[m,,h,g]=p,f=`${e}-L${o}`,[k,v]=this.findParentAndLevel(m),[y,b]=this.parseTaskContent(h),w=b.toLowerCase()==="x",T=this.getStatusFromMapping(b),[x,C,S]=this.extractMetadataAndTagsInternal(y),D=k!==void 0,E=this.inheritFileMetadata(C,D),R=this.extractTimeComponents(y,E),I=S;if(E.tags)try{let V=JSON.parse(E.tags);Array.isArray(V)&&(I=this.mergeTags(S,V))}catch(V){I=this.mergeTags(S,[E.tags])}let H=this.determineTgProject(e)||i,[U,q]=this.config.parseComments&&o+1<s.length?this.extractMultilineComment(s,o+1,m):[void 0,0];o+=q;let L=this.extractLegacyPriority(E),_={id:f,content:x,status:T,rawStatus:b,completed:w,indentLevel:v,parentId:k,childrenIds:[],metadata:R,tags:I,comment:U,lineNumber:o+1,actualIndent:m,heading:this.currentHeading,headingLevel:this.currentHeadingLevel,listMarker:g,filePath:e,originalMarkdown:u,tgProject:H,line:o,children:[],priority:L,startDate:this.extractLegacyDate(R,"startDate"),dueDate:this.extractLegacyDate(R,"dueDate"),scheduledDate:this.extractLegacyDate(R,"scheduledDate"),completedDate:this.extractLegacyDate(R,"completedDate"),createdDate:this.extractLegacyDate(R,"createdDate"),recurrence:R.recurrence,project:R.project,context:R.context};if(k&&this.tasks.length>0){let V=this.tasks.find(K=>K.id===k);V&&(V.childrenIds.push(f),V.children.push(f))}this.updateIndentStack(f,v,m),this.tasks.push(_)}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.trimStart(),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 H0.test(a)}parseTaskContent(a){let e=a.match(H0);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 d=this.extractDataviewMetadata(i);if(d){let[u,p,m]=d;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 d=this.extractEmojiMetadata(i);if(d){let[u,p,m,h]=d,[g,f,k]=this.extractTagsOnly(m);for(let v of k)t.push(v);for(let[v,y]of Object.entries(f))e[v]=y;e[u]=p,r+=g,i=h,l=!0;continue}}if(!l&&this.config.parseTags){let d=this.extractContext(i);if(d){let[u,p,m]=d;e.context=u,r+=p,i=m,l=!0;continue}}if(!l&&this.config.parseTags){let d=this.extractTag(i);if(d){let[u,p,m]=d,h=u.startsWith("#")?u.substring(1):u,g=h.indexOf("/");if(g!==-1){let f=h.substring(0,g),k=h.substring(g+1),v=(o=this.config.specialTagPrefixes[f])!=null?o:this.config.specialTagPrefixes[f.toLowerCase()];console.debug("[TG] Tag parse",{tag:u,prefix:f,mappedKey:v,keys:Object.keys(this.config.specialTagPrefixes)}),v&&this.config.metadataParseMode!=="none"?e[v]=k: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}(?:\s+\d{1,2}:\d{2})?$/.test(i))if(i.includes(" "))o=new Date(i);else{let[u,p,m]=i.split("-").map(Number);o=new Date(u,p-1,m)}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.startDate&&!e.startTime&&!a.dueDate&&e.dueTime&&(t.startDateTime=r(a.startDate,e.dueTime)),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(),d={due:"dueDate",start:"startDate",scheduled:"scheduledDate",completion:"completedDate",created:"createdDate",cancelled:"cancelledDate",id:"id",dependsOn:"dependsOn",onCompletion:"onCompletion",repeat:"recurrence"}[s.toLowerCase()];if(d)s=d;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){let u=a.substring(0,e),p=a.substring(t+1);return[s,o,u+p]}return null}extractEmojiMetadata(a){let e=null;for(let[h,g]of Object.entries(this.config.emojiMapping)){let f=a.indexOf(h);f!==-1&&(!e||f<e.pos)&&(e={pos:f,emoji:h,key:g})}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 h=0;h<o.length;h++){let g=o[h];if(Object.keys(this.config.emojiMapping).some(k=>o.substring(h).startsWith(k))||g==="["){l=h;break}let f=this.findFileExtensionEnd(o,h);if(f>h){l=f;break}if(/\s/.test(g)&&h+1<o.length&&(o[h+1]==="#"||o[h+1]==="@")){l=h;break}if(g==="#"||g==="@"){l=h;break}}let d=o.substring(0,l).trim(),u;if(e.key==="dependsOn"&&d?u=d.split(",").map(h=>h.trim()).filter(h=>h.length>0).join(","):e.key==="priority"?u=d||e.emoji:u=d||this.getDefaultEmojiValue(e.emoji),["dueDate","startDate","scheduledDate","completedDate","createdDate","cancelledDate"].includes(e.key)&&typeof u=="string"){let h=u.match(/\d{4}-\d{2}-\d{2}(?:\s+\d{1,2}:\d{2})?/);h&&(u=h[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 cy(a);e.detectAllProtectedRanges();let t=r=>{let i=e.findNextUnprotectedHash(r);if(i===-1)return null;let s=0,o=i-1;for(;o>=0&&a[o]==="\\";)s++,o--;if(s%2===1||!this.isValidTagStart(a,i))return t(i+1);let d=a.substring(i+1),u=0;for(let p=0;p<d.length;p++){let m=d[p],h=m.charCodeAt(0);if(h>=48&&h<=57||h>=65&&h<=90||h>=97&&h<=122||m==="/"||m==="-"||m==="_"||h>127&&m!=="\uFF0C"&&m!=="\u3002"&&m!=="\uFF1B"&&m!=="\uFF1A"&&m!=="\uFF01"&&m!=="\uFF1F"&&m!=="\u300C"&&m!=="\u300D"&&m!=="\u300E"&&m!=="\u300F"&&m!=="\uFF08"&&m!=="\uFF09"&&m!=="\u3010"&&m!=="\u3011"&&m!=='"'&&m!=='"'&&m!=="'"&&m!=="'"&&m!==" ")u=p+1;else break}if(u>0){let p="#"+d.substring(0,u),m=a.substring(0,i),h=a.substring(i+1+u);return[p,m,h]}return t(i+1)};return t(0)}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[d,u,p]=l;e[d]=u,i=p,o=!0;continue}}if(!o&&this.config.parseTags){let l=this.extractContext(i);if(l){let[d,u,p]=l,[m,h,g]=this.extractTagsOnly(u);for(let f of g)t.push(f);for(let[f,k]of Object.entries(h))e[f]=k;e.context=d,r+=m,i=p,o=!0;continue}}if(!o&&this.config.parseTags){let l=this.extractTag(i);if(l){let[d,u,p]=l,m=d.startsWith("#")?d.substring(1):d,h=m.indexOf("/");if(h!==-1){let g=m.substring(0,h),f=m.substring(h+1),k=(s=this.config.specialTagPrefixes[g])!=null?s:this.config.specialTagPrefixes[g.toLowerCase()];k&&this.config.metadataParseMode!=="none"?e[k]=f:t.push(d)}else t.push(d);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=ti.dateCache.get(r);if(i!==void 0)return i;let s=am(t,this.customDateFormats);if(ti.dateCache.size>=ti.MAX_CACHE_SIZE){let o=ti.dateCache.keys().next().value;o&&ti.dateCache.delete(o)}return ti.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(){ti.dateCache.clear()}static getDateCacheStats(){return{size:ti.dateCache.size,maxSize:ti.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),d=(t=this.config.specialTagPrefixes[o])!=null?t:this.config.specialTagPrefixes[o.toLowerCase()];d&&this.config.metadataParseMode!=="none"&&(e[d]=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,d,u,p,m,h;let t=g=>{if(g==null||typeof g=="number")return String(g);let f=String(g),k={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},v=parseInt(f,10);if(!isNaN(v))return String(v);let y=k[f.toLowerCase()]||k[f];return y!==void 0?String(y):f},r={...a};if(r.priority!==void 0&&(r.priority=t(r.priority)),!((s=this.config.fileMetadataInheritance)!=null&&s.enabled)||!((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){let g=!!((d=this.config.projectConfig)!=null&&d.enableEnhancedProject),f=!!((p=(u=this.config.projectConfig)==null?void 0:u.metadataConfig)!=null&&p.enabled);if(!(g&&f))try{let k=(h=(m=this.config.projectConfig)==null?void 0:m.metadataConfig)==null?void 0:h.metadataKey;k&&this.fileMetadata[k]!==void 0&&this.fileMetadata[k]!==null&&String(this.fileMetadata[k]).trim()!==""&&(r.project===void 0||r.project===null||r.project==="")&&(r.project=String(this.fileMetadata[k]).trim())}catch(k){}for(let[k,v]of Object.entries(this.fileMetadata))if(k==="tags"&&Array.isArray(v)){let y=this.parseTagsForMetadata(v);for(let[b,w]of Object.entries(y))!i.has(b)&&(r[b]===void 0||r[b]===null||r[b]==="")&&w!==void 0&&w!==null&&(b==="priority"?r[b]=t(w):r[b]=String(w));if(!i.has("tags")&&(r.tags===void 0||r.tags===null||r.tags==="")){let b=v.map(w=>this.normalizeTag(w));r.tags=JSON.stringify(b)}}else!i.has(k)&&(r[k]===void 0||r[k]===null||r[k]==="")&&v!==void 0&&v!==null&&(k==="priority"?r[k]=t(v):r[k]=String(v))}if(this.projectConfigCache)for(let[g,f]of Object.entries(this.projectConfigCache))!i.has(g)&&(r[g]===void 0||r[g]===null||r[g]==="")&&!(this.fileMetadata&&this.fileMetadata[g]!==void 0)&&f!==void 0&&f!==null&&(g==="priority"?r[g]=t(f):r[g]=String(f));return r}};ti.dateCache=new Map,ti.MAX_CACHE_SIZE=1e4;var os=ti,el=class extends os{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 tl=(n,a)=>{var s,o,l,d,u,p,m,h,g,f,k,v;let e=((o=(s=a==null?void 0:a.settings)==null?void 0:s.projectTagPrefix)==null?void 0:o[n])||"project",t=((d=(l=a==null?void 0:a.settings)==null?void 0:l.contextTagPrefix)==null?void 0:d[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 y={};return e&&(y[e]="project",y[String(e).toLowerCase()]="project"),r&&(y[r]="area",y[String(r).toLowerCase()]="area"),t&&(y[t]="context",y[String(t).toLowerCase()]="context"),y})(),maxParseIterations:4e3,maxMetadataIterations:400,maxTagLength:100,maxEmojiValueLength:200,maxStackOperations:4e3,maxStackSize:1e3,maxIndentSize:8,projectConfig:(h=(m=a==null?void 0:a.settings)==null?void 0:m.projectConfig)!=null&&h.enableEnhancedProject?(g=a==null?void 0:a.settings)==null?void 0:g.projectConfig:void 0,fileMetadataInheritance:(f=a==null?void 0:a.settings)==null?void 0:f.fileMetadataInheritance,customDateFormats:(k=a==null?void 0:a.settings)!=null&&k.enableCustomDateFormats?(v=a==null?void 0:a.settings)==null?void 0:v.customDateFormats:void 0}};var B0=null,hF=null,gF=null;function KU(n,a){return(!B0||gF!==n||hF!==a)&&(B0=new os(tl(n,a)),gF=n,hF=a),B0}function al(n,a,e,t,r){let s=KU(t,r).parseLegacy(a,n);if(s.length>0){let o=s[0];return o.line=e,o}return null}function qt(n){if(n.metadata){if(n.metadata.project&&typeof n.metadata.project=="string"&&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 Yi(n){return!n.metadata||n.metadata.project&&typeof n.metadata.project=="string"&&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 fF(n){return n.metadata?!!(n.metadata.project&&typeof n.metadata.project=="string"&&n.metadata.project.trim()||n.metadata.tgProject&&typeof n.metadata.tgProject=="object"&&n.metadata.tgProject.name&&n.metadata.tgProject.name.trim()):!1}var ai=require("obsidian");z();var uy=require("obsidian"),dy=class extends uy.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()}},Rd=class extends uy.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 rl=class extends ai.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:c("Action Type")}),this.actionTypeDropdown=new ai.DropdownComponent(e),this.actionTypeDropdown.addOption("",c("Select action type...")),this.actionTypeDropdown.addOption("delete",c("Delete task")),this.actionTypeDropdown.addOption("keep",c("Keep task")),this.actionTypeDropdown.addOption("complete",c("Complete related tasks")),this.actionTypeDropdown.addOption("move",c("Move task")),this.actionTypeDropdown.addOption("archive",c("Archive task")),this.actionTypeDropdown.addOption("duplicate",c("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:c("Task IDs")}),this.taskIdsInput=new ai.TextComponent(r),this.taskIdsInput.setPlaceholder(c("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 dy(this.plugin.app,this.taskIdsInput.inputEl,this.plugin,i=>{}),r.createDiv({cls:"oncompletion-description",text:c("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:c("Target File")}),this.targetFileInput=new ai.TextComponent(r),this.targetFileInput.setPlaceholder(c("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 Rd(this.plugin.app,this.targetFileInput.inputEl,s=>{});let i=this.configContainer.createDiv({cls:"oncompletion-field"});i.createDiv({cls:"oncompletion-label",text:c("Target Section (Optional)")}),this.targetSectionInput=new ai.TextComponent(i),this.targetSectionInput.setPlaceholder(c("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:c("Archive File (Optional)")}),this.archiveFileInput=new ai.TextComponent(r),this.archiveFileInput.setPlaceholder(c("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 Rd(this.plugin.app,this.archiveFileInput.inputEl,s=>{});let i=this.configContainer.createDiv({cls:"oncompletion-field"});i.createDiv({cls:"oncompletion-label",text:c("Archive Section (Optional)")}),this.archiveSectionInput=new ai.TextComponent(i),this.archiveSectionInput.setPlaceholder(c("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:c("Target File (Optional)")}),this.targetFileInput=new ai.TextComponent(r),this.targetFileInput.setPlaceholder(c("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 Rd(this.plugin.app,this.targetFileInput.inputEl,o=>{});let i=this.configContainer.createDiv({cls:"oncompletion-field"});i.createDiv({cls:"oncompletion-label",text:c("Target Section (Optional)")}),this.targetSectionInput=new ai.TextComponent(i),this.targetSectionInput.setPlaceholder(c("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:c("Preserve Metadata")}),this.preserveMetadataToggle=new ai.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:c("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 ls(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"),d=String(s.getDate()).padStart(2,"0");return`${o}-${l}-${d}`}else return t=a.getFullYear(),r=a.getMonth(),i=a.getDate(),`${t}-${String(r+1).padStart(2,"0")}-${String(i).padStart(2,"0")}`}function ao(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 QU(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 kF(n,a){return{notStarted:"Not Started",abandoned:"Abandoned",planned:"Planned",completed:"Completed",inProgress:"In Progress"}[n]||"No status"}function XU(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 gt(n,a,e){let t=e.createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"}),r=XU(n);return t.dataset.task=r,t.checked=r!==" ",t}var qi=class extends Pa.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-container"}),this.contentContainerEl=this.containerEl.createDiv({cls:"task-details"}),this.showEmptyState()}showEmptyState(){this.contentContainerEl.empty(),this.contentContainerEl.createDiv({cls:"details-empty"}).setText(c("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.contentContainerEl.empty();let t=this.contentContainerEl.createDiv({cls:"details-header"});t.setText(c("Task Details")),(Pa.Platform.isPhone||this.contentContainerEl.closest(".tg-fluent-container"))&&t.createEl("div",{cls:"details-close-btn"},u=>{new Pa.ExtraButtonComponent(u).setIcon("x").onClick(()=>{this.toggleDetailsVisibility&&this.toggleDetailsVisibility(!1)})}),this.contentEl=this.contentContainerEl.createDiv({cls:"details-content"}),this.contentEl.createEl("h2",{cls:"details-name"}).setText(Cr(e.content)),this.contentEl.createDiv({cls:"details-status-container"},u=>{u.createDiv({cls:"details-status-label"}).setText(c("Status")),u.createDiv({cls:"details-status"}).setText(QU(e,this.plugin.settings))});let i=new il(this.plugin,this.contentEl,e,{onTaskUpdate:this.onTaskUpdate});this.addChild(i);let s=this.contentEl.createDiv({cls:"details-metadata"});this.addMetadataField(s,c("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(c("Edit in File")),this.registerDomEvent(l,"click",()=>{this.onTaskEdit?this.onTaskEdit(e):this.editTask(e)});let d=o.createEl("button",{cls:"details-toggle-btn"});d.setText(e.completed?c("Mark Incomplete"):c("Mark Complete")),this.registerDomEvent(d,"click",()=>{this.onTaskToggleComplete&&this.onTaskToggleComplete(e)})}showEditForm(e){var _t;if(!e)return;this.isEditing=!0,this.editFormEl=this.contentEl.createDiv({cls:"details-edit-form"});let t=()=>{},r=this.createFormField(this.editFormEl,c("Task Title")),i=new Pa.TextComponent(r);e.content,i.setValue(Cr(e.content)),i.inputEl.addClass("details-edit-content");let s=this.createFormField(this.editFormEl,c("Project")),o=qt(e),l=Yi(e),d=new Pa.TextComponent(s);if(d.setValue(o||""),e.metadata.tgProject&&(!e.metadata.project||typeof e.metadata.project!="string"||!e.metadata.project.trim())){let ke=e.metadata.tgProject,mt=s.createDiv({cls:"project-source-indicator"}),J="",ue="";switch(ke.type){case"path":J=c("Auto-assigned from path")+`: ${ke.source}`,ue="\u{1F4C1}";break;case"metadata":J=c("Auto-assigned from file metadata")+`: ${ke.source}`,ue="\u{1F4C4}";break;case"config":J=c("Auto-assigned from config file")+`: ${ke.source}`,ue="\u2699\uFE0F";break;default:J=c("Auto-assigned")+`: ${ke.source}`,ue="\u{1F517}"}mt.createEl("span",{cls:"indicator-icon",text:ue}),mt.createEl("span",{cls:"indicator-text",text:J}),l?(mt.addClass("readonly-indicator"),d.setDisabled(!0),s.createDiv({cls:"field-description readonly-description",text:c("This project is automatically assigned and cannot be changed")})):(mt.addClass("override-indicator"),s.createDiv({cls:"field-description override-description",text:c("You can override the auto-assigned project by entering a different value")}))}new xr(this.app,d.inputEl,this.plugin);let u=((_t=e.metadata.tags)!=null?_t:[]).map(ke=>ke.startsWith("#")?ke.slice(1):ke).filter(ke=>ke),p=this.createFormField(this.editFormEl,c("Tags")),m=p.createDiv({cls:"tags-editor"}),h=m.createDiv({cls:"tags-editor__list"}),g=new Pa.ExtraButtonComponent(m).setIcon("plus"),f=m.createDiv({cls:"tags-editor__input tags-editor__input--hidden"}),k=new Pa.TextComponent(f);k.setPlaceholder(c("Add tag")),new Zr(this.app,k.inputEl,this.plugin,!0);let v=()=>{k.setValue(""),f.addClass("tags-editor__input--hidden")},y=()=>{if(h.empty(),u.length===0){h.createSpan({cls:"tags-editor__empty",text:c("No tags")});return}u.forEach((ke,mt)=>{let J=h.createDiv({cls:"tags-editor__tag"});J.createSpan({cls:"tags-editor__tag-label",text:`#${ke}`}),new Pa.ExtraButtonComponent(J).setIcon("x").setTooltip(c("Remove tag")).onClick(()=>{u.splice(mt,1),y(),t()})})},b=ke=>{let mt=ke.trim();if(!mt){v();return}let J=mt.replace(/^#+/,"").replace(/[,\s]+$/g,"").trim();if(!J){v();return}if(u.some(Ae=>Ae.toLowerCase()===J.toLowerCase())){v();return}u.push(J),y(),v(),t()},w=()=>b(k.getValue());this.registerDomEvent(k.inputEl,TC,ke=>{var J,ue;ke.stopPropagation(),b((ue=(J=ke.detail)==null?void 0:J.tag)!=null?ue:"")}),g.onClick(()=>{f.removeClass("tags-editor__input--hidden"),k.inputEl.focus()}),this.registerDomEvent(k.inputEl,"keydown",ke=>{ke.key==="Escape"&&(ke.preventDefault(),v())}),this.registerDomEvent(k.inputEl,"blur",()=>{w()}),p.createSpan({cls:"field-description"}).setText(c("Click + to add tags. Click \xD7 on a tag to remove it.")),y();let T=this.createFormField(this.editFormEl,c("Context")),x=new Pa.TextComponent(T);x.setValue(e.metadata.context||""),new Jr(this.app,x.inputEl,this.plugin);let C=this.createFormField(this.editFormEl,c("Priority")),S=new Pa.DropdownComponent(C);S.addOption("",c("None")),S.addOption("1","\u23EC\uFE0F "+c("Lowest")),S.addOption("2","\u{1F53D} "+c("Low")),S.addOption("3","\u{1F53C} "+c("Medium")),S.addOption("4","\u23EB "+c("High")),S.addOption("5","\u{1F53A} "+c("Highest")),e.metadata.priority?S.setValue(e.metadata.priority.toString()):S.setValue("");let E=this.createFormField(this.editFormEl,c("Due Date")).createEl("input",{type:"date",cls:"date-input"});e.metadata.dueDate&&(E.value=ls(e.metadata.dueDate));let I=this.createFormField(this.editFormEl,c("Start Date")).createEl("input",{type:"date",cls:"date-input"});e.metadata.startDate&&(I.value=ls(e.metadata.startDate));let U=this.createFormField(this.editFormEl,c("Scheduled Date")).createEl("input",{type:"date",cls:"date-input"});e.metadata.scheduledDate&&(U.value=ls(e.metadata.scheduledDate));let L=this.createFormField(this.editFormEl,c("Cancelled Date")).createEl("input",{type:"date",cls:"date-input"});e.metadata.cancelledDate&&(L.value=ls(e.metadata.cancelledDate));let _=this.createFormField(this.editFormEl,c("On Completion")),V=(0,Pa.debounce)(async()=>{let ke={...e},mt=i.getValue();ke.content=mt;let J={...ke.metadata},ue=d.getValue();l?J.project=e.metadata.project:J.project=ue||void 0,J.tags=u.map(Ee=>Ee.trim()).filter(Ee=>Ee.length>0);let Ae=x.getValue();J.context=Ae||void 0;let Fe=S.getValue();J.priority=Fe?parseInt(Fe):void 0;let Xe=E.value;if(Xe){let Ee=ao(Xe);e.metadata.dueDate!==Ee?J.dueDate=Ee:J.dueDate=e.metadata.dueDate}else!Xe&&e.metadata.dueDate?J.dueDate=void 0:J.dueDate=e.metadata.dueDate;let De=I.value;if(De){let Ee=ao(De);e.metadata.startDate!==Ee?J.startDate=Ee:J.startDate=e.metadata.startDate}else!De&&e.metadata.startDate?J.startDate=void 0:J.startDate=e.metadata.startDate;let ht=U.value;if(ht){let Ee=ao(ht);e.metadata.scheduledDate!==Ee?J.scheduledDate=Ee:J.scheduledDate=e.metadata.scheduledDate}else!ht&&e.metadata.scheduledDate?J.scheduledDate=void 0:J.scheduledDate=e.metadata.scheduledDate;let yt=L.value;if(yt){let Ee=ao(yt);e.metadata.cancelledDate!==Ee?J.cancelledDate=Ee:J.cancelledDate=e.metadata.cancelledDate}else!yt&&e.metadata.cancelledDate?J.cancelledDate=void 0:J.cancelledDate=e.metadata.cancelledDate;let Ut=ce.getValue();J.dependsOn=Ut?Ut.split(",").map(Ee=>Ee.trim()).filter(Ee=>Ee):void 0;let Et=K.getValue();J.onCompletion=Et||void 0;let it=Ne.getValue();J.id=it||void 0;let ia=Be.getValue();J.recurrence=ia||void 0,ke.metadata=J;let na=this.hasTaskChanges(e,ke);if(this.onTaskUpdate&&na)try{await this.onTaskUpdate(e,ke),this.currentTask=ke,this.isEditing=!1,this.showTaskDetails(ke)}catch(Ee){console.error("Failed to update task:",Ee)}},800);t=()=>V();let K=new rl(_,this.plugin,{initialValue:e.metadata.onCompletion||"",onChange:ke=>{let mt=K.getConfig();this.shouldTriggerOnCompletionSave(mt,ke)&&V()},onValidationChange:(ke,mt)=>{let J=_.querySelector(".oncompletion-validation-message");if(J&&J.remove(),mt){let ue=_.createDiv({cls:"oncompletion-validation-message error",text:mt})}else if(ke){let ue=_.createDiv({cls:"oncompletion-validation-message success",text:c("Configuration is valid")})}}});this.addChild(K);let te=this.createFormField(this.editFormEl,c("Depends On")),ce=new Pa.TextComponent(te);ce.setValue(Array.isArray(e.metadata.dependsOn)?e.metadata.dependsOn.join(", "):e.metadata.dependsOn||""),te.createSpan({cls:"field-description"}).setText(c("Comma-separated list of task IDs this task depends on"));let pe=this.createFormField(this.editFormEl,c("Task ID")),Ne=new Pa.TextComponent(pe);Ne.setValue(e.metadata.id||""),pe.createSpan({cls:"field-description"}).setText(c("Unique identifier for this task"));let He=this.createFormField(this.editFormEl,c("Recurrence")),Be=new Pa.TextComponent(He);Be.setValue(e.metadata.recurrence||""),He.createSpan({cls:"field-description"}).setText(c("e.g. every day, every 2 weeks"));let We=ke=>{this.registerDomEvent(ke,"blur",()=>{V()})},lt=ke=>{this.registerDomEvent(ke,"change",()=>{V()})};We(i.inputEl),We(d.inputEl),We(k.inputEl),We(x.inputEl),We(S.selectEl),We(ce.inputEl),We(Ne.inputEl),We(Be.inputEl),lt(E),lt(I),lt(U),lt(L)}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:[],d=Array.isArray(o)?o:[];if(l.length!==d.length)return!0;for(let u=0;u<l.length;u++)if(l[u]!==d[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,d=this.app.vault.getFileByPath(l.sourceEntry.file.path);if(!d)return;await this.app.workspace.getLeaf(!0).openFile(d);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()}};z();function im(n,a){return!a||a.length===0?[]:a.filter(e=>e.enabled).filter(e=>Object.values(e.marks).includes(n)).sort((e,t)=>e.priority-t.priority)}function JU(n,a){let e=null;for(let o of a.cycle)if(a.marks[o]===n){e=o;break}if(!e)return null;let t=a.cycle.indexOf(e);if(t===-1)return null;let r=(t+1)%a.cycle.length,i=a.cycle[r],s=a.marks[i];return{statusName:i,mark:s,cycle:a}}function ZU(n,a){let e=null;for(let o of a.cycle)if(a.marks[o]===n){e=o;break}if(!e)return null;let t=a.cycle.indexOf(e);if(t===-1)return null;let r=(t-1+a.cycle.length)%a.cycle.length,i=a.cycle[r],s=a.marks[i];return{statusName:i,mark:s,cycle:a}}function V0(n,a){let e=im(n,a);return e.length>0?e[0]:null}function En(n,a){let e=V0(n,a);return e?JU(n,e):null}function vF(n,a){let e=V0(n,a);return e?ZU(n,e):null}function py(n){let a=new Set;if(!n)return a;for(let e of n)if(e.enabled)for(let t of e.cycle)a.add(t);return a}function yF(n){let a=new Set;if(!n)return a;for(let e of n)if(e.enabled)for(let t of Object.values(e.marks))a.add(t);return a}function ca(n,a){let e=n.statusCycles||[],t=e.filter(r=>r.enabled);if(t.length>0){if(a){let i=V0(a,e);if(i)return{cycle:i.cycle,marks:i.marks,excludeMarksFromCycle:[],isMultiCycle:!0,currentCycleId:i.id}}let r=t.sort((i,s)=>i.priority-s.priority)[0];return{cycle:r.cycle,marks:r.marks,excludeMarksFromCycle:[],isMultiCycle:!0,currentCycleId:r.id}}return{cycle:n.taskStatusCycle||[],marks:n.taskStatusMarks||{},excludeMarksFromCycle:n.excludeMarksFromCycle||[],isMultiCycle:!1}}function nl(n){let a=new Map,t=(n.statusCycles||[]).filter(r=>r.enabled);if(t.length>0)for(let r of t)for(let[i,s]of Object.entries(r.marks))a.has(s)||a.set(s,i);else{let r=n.taskStatusMarks||{};for(let[i,s]of Object.entries(r))a.has(s)||a.set(s,i)}return a}var il=class extends bF.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:c("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":kF(o.status,this.plugin.settings)}}),d=l;this.plugin.settings.enableTaskGeniusIcons?(0,nc.setIcon)(d,o.status):d=gt(o.text,{...this.task,status:o.text},l),this.registerDomEvent(d,"click",u=>{var m,h,g,f;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()),(h=(m=this.params).onTaskUpdate)==null||h.call(m,this.task,p),(f=(g=this.params).onTaskStatusSelected)==null||f.call(g,o.text),this.task={...this.task,status:o.text},this.containerEl.querySelectorAll(".status-option").forEach(k=>{k.removeClass("current")}),l.addClass("current")})});let i=e.createEl("div",{cls:"more-status"}),s=new nc.ExtraButtonComponent(i).setIcon("ellipsis").onClick(()=>{var u;let o=new nc.Menu,l=nl(this.plugin.settings);for(let[p,m]of l)o.addItem(h=>{let f={" ":"notStarted","/":"inProgress",x:"completed","-":"abandoned","?":"planned",">":"inProgress",X:"completed"}[p];this.plugin.settings.enableTaskGeniusIcons&&f?h.titleEl.createEl("span",{cls:"status-option-icon"},k=>{(0,nc.setIcon)(k,f)}):h.titleEl.createEl("span",{cls:"status-option-checkbox"},k=>{gt(p,this.task,k)}),h.titleEl.createEl("span",{cls:"status-option",text:m}),h.onClick(()=>{var k,v,y,b;(v=(k=this.params).onTaskUpdate)==null||v.call(k,this.task,{...this.task,status:p}),(b=(y=this.params).onTaskStatusSelected)==null||b.call(y,p)})});let d=(u=s.extraSettingsEl)==null?void 0:u.getBoundingClientRect();d&&o.showAtPosition({x:d.left,y:d.bottom+10})})})}getTaskStatus(){return this.task.status||""}};var e$=require("obsidian");var Ub=require("obsidian");z();var xe={changelog:{enabled:!0,lastVersion:""},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:c("Just started")+" {{PROGRESS}}%"},{min:20,max:40,text:c("Making progress")+" {{PROGRESS}}% "},{min:40,max:60,text:c("Half way")+" {{PROGRESS}}% "},{min:60,max:80,text:c("Good progress")+" {{PROGRESS}}% "},{min:80,max:100,text:c("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,enableIndicatorWithCheckbox:!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:[],statusCycles:[{id:"default-cycle",name:c("Default Cycle"),description:c("Standard task lifecycle with all states"),priority:0,cycle:["Not Started","In Progress","Completed","Abandoned","Planned"],marks:{"Not Started":" ","In Progress":"/",Completed:"x",Abandoned:"-",Planned:"?"},enabled:!0}],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:c("archived on")+" {{date}}",customMarker:c("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:c("moved on")+" {{date}}",incompletedCustomMarker:c("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:c("Capture your thoughts..."),appendToFile:"append",targetType:"fixed",targetHeading:"",dailyNoteSettings:{format:"YYYY-MM-DD",folder:"",template:""},enableMinimalMode:!1,minimalModeSettings:{suggestTrigger:"/"},keepOpenAfterCapture:!1,rememberLastMode:!0,lastUsedMode:"checkbox",defaultFileNameTemplate:"{{DATE:YYYY-MM-DD}} - Task",defaultFileLocation:"",fileNameTemplates:[{name:"{{DATE:YYYY-MM-DD}}",template:"{{DATE:YYYY-MM-DD}}"},{name:"{{DATE:YYYY-MM-DD}} - Meeting",template:"{{DATE:YYYY-MM-DD}} - Meeting"},{name:"{{DATE:YYYY-MM-DD}} - Task",template:"{{DATE:YYYY-MM-DD}} - Task"},{name:"Project - {{DATE:YYYY-MM}}",template:"Project - {{DATE:YYYY-MM}}"},{name:"Notes - {{DATE:YYYY-MM-DD-HHmm}}",template:"Notes - {{DATE:YYYY-MM-DD-HHmm}}"}],createFileMode:{defaultFolder:"",useTemplate:!1,templateFolder:"",templateFile:"",writeContentTagsToFrontmatter:!1},autoStartTimer:!1},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:c("Project Workflow"),description:c("Standard project management workflow"),stages:[{id:"planning",name:c("Planning"),type:"linear",next:"in_progress"},{id:"in_progress",name:c("In Progress"),type:"cycle",subStages:[{id:"development",name:c("Development"),next:"testing"},{id:"testing",name:c("Testing"),next:"development"}],canProceedTo:["review","cancelled"]},{id:"review",name:c("Review"),type:"cycle",canProceedTo:["in_progress","completed"]},{id:"completed",name:c("Completed"),type:"terminal"},{id:"cancelled",name:c("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:!1,defaultViewMode:"list",globalFilterRules:{},viewConfiguration:[{id:"inbox",name:c("Inbox"),icon:"inbox",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!0,filterRules:{},filterBlanks:!1},{id:"working-on",name:c("Working On"),icon:"timer",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!0,filterRules:{},filterBlanks:!1},{id:"forecast",name:c("Forecast"),icon:"calendar-days",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!0,filterRules:{},filterBlanks:!1,specificConfig:{viewType:"forecast",firstDayOfWeek:void 0,hideWeekends:!1}},{id:"projects",name:c("Projects"),icon:"folders",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1},{id:"tags",name:c("Tags"),icon:"tag",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1},{id:"flagged",name:c("Flagged"),icon:"flag",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!0,filterRules:{},filterBlanks:!1},{id:"review",name:c("Review"),icon:"eye",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1},{id:"calendar",name:c("Events"),icon:"calendar",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1,region:"bottom",specificConfig:{viewType:"calendar",firstDayOfWeek:void 0,hideWeekends:!1,showWorkingHoursOnly:!1,workingHoursStart:9,workingHoursEnd:18}},{id:"kanban",name:c("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:c("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:c("Habit"),icon:"calendar-clock",type:"default",visible:!0,hideCompletedAndAbandonedTasks:!1,filterRules:{},filterBlanks:!1,region:"bottom"},{id:"table",name:c("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:c("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:c("Drink a cup of good tea"),occurrence:"common",inventory:-1},{id:"reward-series-episode",name:c("Watch an episode of a favorite series"),occurrence:"rare",inventory:20},{id:"reward-champagne-project",name:c("Play a game"),occurrence:"legendary",inventory:1,condition:"#project AND #milestone"},{id:"reward-chocolate-quick",name:c("Eat a piece of chocolate"),occurrence:"common",inventory:10,condition:"#quickwin",imageUrl:""}],occurrenceLevels:[{name:c("common"),chance:70},{name:c("rare"),chance:25},{name:c("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:[],scopeControls:{inlineTasksEnabled:!0,fileTasksEnabled:!0}},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:[],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"}},metadataMappings:[],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}},fluentView:{enableFluent:!0,workspaces:[{id:"default",name:"Default",color:"#3498db"}],fluentConfig:{enableWorkspaces:!0,defaultWorkspace:"default",maxOtherViewsBeforeOverflow:5},useWorkspaceSideLeaves:!1},customCalendarViews:[]};function xt(n,a){let e=n.settings.viewConfiguration||xe.viewConfiguration,t=e.find(l=>l.id===a),s=xe.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(d=>d.id==="gantt").length>1){let d=e.map((u,p)=>u.id==="gantt"?p:-1).filter(u=>u!==-1).slice(1);for(let u of d.reverse())e.splice(u,1);n.saveSettings()}return o}var ks=require("obsidian");var cu=require("obsidian");var wF=require("obsidian");function ri(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 nm=class extends wF.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=ri(e.priority);t&&this.element.classList.add(`priority-${t}`)}this.element.createDiv({cls:"tg-kanban-card-container"},t=>{var i,s;let r=gt(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 la(this.app,this.contentEl,this.task.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.task.metadata.source==="file-source"?this.task.originalMarkdown: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(),qt(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=qt(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=ri(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=ri(r.priority);l&&this.element.classList.remove(`priority-${l}`)}if(i.priority){let l=ri(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()}};var Fn=require("obsidian");var TF=require("obsidian"),my=require("@codemirror/state"),Od=require("@codemirror/view");function sm(n,a){let e=Object.keys(a).map(t=>t$(n,t,a[t]));return e.length===1?e[0]:function(){e.forEach(t=>t())}}function t$(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(...d){return s===i&&n[a]===o&&l(),s.apply(this,d)}function l(){n[a]===o&&(r?n[a]=i:delete n[a]),s!==i&&(s=i,Object.setPrototypeOf(o,t||Function))}}function W0(n,a,e){return t[n]=n,t;function t(...r){return(a[n]===n?a:e).apply(this,r)}}function cs(n,a,e){let t=a$(n);return new z0(n,t,a,e)}function a$(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 r$={cursorLocation:{anchor:0,head:0},value:"",singleLine:!1,cls:"",placeholder:"",onEnter:()=>!1,onEscape:()=>{},onSubmit:()=>{},onBlur:()=>{},onPaste:()=>{},onChange:()=>{}},z0=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={...r$,...r},this.initial_value=this.options.value,this.scope=new TF.Scope(a.scope),this.scope.register(["Mod"],"Enter",()=>!0);let i=this,s=sm(e.prototype,{buildLocalExtensions:d=>function(){let u=d.call(this);if(this===i.editor){i.options.placeholder&&u.push((0,Od.placeholder)(i.options.placeholder)),u.push(Od.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(my.Prec.highest(Od.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(sm(a.workspace,{setActiveLeaf:d=>(u,...p)=>{var m;(m=this.activeCM)!=null&&m.hasFocus||d.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:my.EditorSelection.range(r.cursorLocation.anchor,r.cursorLocation.head)});let o=this.editor.onUpdate.bind(this.editor);this.editor.onUpdate=(d,u)=>{o(d,u),u&&this.options.onChange(d)}}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()}};z();var OD={};_a(OD,{Chrono:()=>he,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingContext:()=>Im,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>RD,de:()=>sS,en:()=>J0,es:()=>dD,fr:()=>fS,it:()=>DD,ja:()=>bS,nl:()=>RS,parse:()=>fG,parseDate:()=>kG,pt:()=>SS,ru:()=>iD,strict:()=>gG,sv:()=>FD,uk:()=>bD,zh:()=>GS});var J0={};_a(J0,{Chrono:()=>he,GB:()=>uY,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>Am,configuration:()=>xy,parse:()=>pY,parseDate:()=>mY,strict:()=>X0});var $;(function(n){n[n.AM=0]="AM",n[n.PM=1]="PM"})($||($={}));var Ce;(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"})(Ce||(Ce={}));var Di;(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"})(Di||(Di={}));function Le(n,a){n.assign("day",a.getDate()),n.assign("month",a.getMonth()+1),n.assign("year",a.getFullYear())}function hy(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 ro(n,a){n.imply("day",a.getDate()),n.imply("month",a.getMonth()+1),n.imply("year",a.getFullYear())}function Gt(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 n$={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=>xF(n,Di.MARCH,Ce.SUNDAY,2),dstEnd:n=>xF(n,Di.OCTOBER,Ce.SUNDAY,3)},CHADT:825,CHAST:765,CKT:-600,CLST:-180,CLT:-240,COT:-300,CST:-360,CT:{timezoneOffsetDuringDst:-300,timezoneOffsetNonDst:-360,dstStart:n=>sl(n,Di.MARCH,Ce.SUNDAY,2,2),dstEnd:n=>sl(n,Di.NOVEMBER,Ce.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=>sl(n,Di.MARCH,Ce.SUNDAY,2,2),dstEnd:n=>sl(n,Di.NOVEMBER,Ce.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=>sl(n,Di.MARCH,Ce.SUNDAY,2,2),dstEnd:n=>sl(n,Di.NOVEMBER,Ce.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=>sl(n,Di.MARCH,Ce.SUNDAY,2,2),dstEnd:n=>sl(n,Di.NOVEMBER,Ce.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 sl(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 xF(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 gy(n,a,e={}){var r;if(n==null)return null;if(typeof n=="number")return n;let t=(r=e[n])!=null?r:n$[n];return t==null?null:typeof t=="number"?t:a==null?null:a>t.dstStart(a.getFullYear())&&!(a>t.dstEnd(a.getFullYear()))?t.timezoneOffsetDuringDst:t.timezoneOffsetNonDst}var CF={day:0,second:0,millisecond:0};function Ct(n,a){var t,r,i,s,o,l,d;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=(d=a==null?void 0:a.millisecond)!=null?d: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 dt(n){let a={};for(let e in n)a[e]=-n[e];return a}var Ge=class n{constructor(a,e){W(this,"instant");W(this,"timezoneOffset");this.instant=a!=null?a:new Date,this.timezoneOffset=e!=null?e:null}static fromDate(a){return new n(a)}static fromInput(a,e){var i;if(a instanceof Date)return n.fromDate(a);let t=(i=a==null?void 0:a.instant)!=null?i:new Date,r=gy(a==null?void 0:a.timezone,t,e);return new n(t,r)}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()}},Y=class n{constructor(a,e){W(this,"knownValues");W(this,"impliedValues");W(this,"reference");W(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)}static createRelativeFromReference(a,e=CF){let t=Ct(a.getDateWithAdjustedTimezone(),e),r=new n(a);return r.addTag("result/relativeDate"),"hour"in e||"minute"in e||"second"in e||"millisecond"in e?(r.addTag("result/relativeDateAndTime"),hy(r,t),Le(r,t),r.assign("timezoneOffset",a.getTimezoneOffset())):(Gt(r,t),r.imply("timezoneOffset",a.getTimezoneOffset()),"day"in e?(r.assign("day",t.getDate()),r.assign("month",t.getMonth()+1),r.assign("year",t.getFullYear()),r.assign("weekday",t.getDay())):"week"in e?(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()),"month"in e?(r.assign("month",t.getMonth()+1),r.assign("year",t.getFullYear())):(r.imply("month",t.getMonth()+1),"year"in e?r.assign("year",t.getFullYear()):r.imply("year",t.getFullYear())))),r}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}addDurationAsImplied(a){let e=this.dateWithoutTimezoneAdjustment(),t=Ct(e,a);return("day"in a||"week"in a||"month"in a||"year"in a)&&(this.delete(["day","weekday","month","year"]),this.imply("day",t.getDate()),this.imply("weekday",t.getDay()),this.imply("month",t.getMonth()+1),this.imply("year",t.getFullYear())),("second"in a||"minute"in a||"hour"in a)&&(this.delete(["second","minute","hour"]),this.imply("second",t.getSeconds()),this.imply("minute",t.getMinutes()),this.imply("hour",t.getHours())),this}delete(a){typeof a=="string"&&(a=[a]);for(let e of a)delete this.knownValues[e],delete this.impliedValues[e]}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)}]`}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}},$e=class n{constructor(a,e,t,r,i){W(this,"refDate");W(this,"index");W(this,"text");W(this,"reference");W(this,"start");W(this,"end");this.reference=a,this.refDate=a.instant,this.index=e,this.text=t,this.start=r||new Y(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 Ia(n,a,e="\\s{0,5},?\\s{0,5}"){let t=a.replace(/\((?!\?)/g,"(?:");return`${n}${t}(?:${e}${t}){0,10}`}function s$(n){let a;return n instanceof Array?a=[...n]:n instanceof Map?a=Array.from(n.keys()):a=Object.keys(n),a}function X(n){return`(?:${s$(n).sort((e,t)=>t.length-e.length).join("|").replace(/\./g,"\\.")})`}function er(n){return n<100&&(n>50?n=n+1900:n=n+2e3),n}function Ue(n,a,e){let t=new Date(n);t.setMonth(e-1),t.setDate(a);let r=Ct(t,{year:1}),i=Ct(t,{year:-1});return Math.abs(r.getTime()-n.getTime())<Math.abs(t.getTime()-n.getTime())?t=r:Math.abs(i.getTime()-n.getTime())<Math.abs(t.getTime()-n.getTime())&&(t=i),t.getFullYear()}var fy={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},$0={january:1,february:2,march:3,april:4,may:5,june:6,july:7,august:8,september:9,october:10,november:11,december:12},Gi={...$0,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},_0={one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9,ten:10,eleven:11,twelve:12},U0={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},DF={second:"second",seconds:"second",minute:"minute",minutes:"minute",hour:"hour",hours:"hour",day:"day",days:"day",week:"week",weeks:"week",month:"month",months:"month",quarter:"quarter",quarters:"quarter",year:"year",years:"year"},om={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:"day",day:"day",days:"day",w:"week",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",...DF},EF=`(?:${X(_0)}|[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 o$(n){let a=n.toLowerCase();return _0[a]!==void 0?_0[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 Nd=`(?:${X(U0)}|[0-9]{1,2}(?:st|nd|rd|th)?)`;function Ld(n){let a=n.toLowerCase();return U0[a]!==void 0?U0[a]:(a=a.replace(/(?:st|nd|rd|th)$/i,""),parseInt(a))}var ol="(?:[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 ll(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 er(a)}var MF=`(${EF})\\s{0,3}(${X(om)})`,SF=new RegExp(MF,"i"),l$=`(${EF})\\s{0,3}(${X(DF)})`,PF="\\s{0,5},?(?:\\s*and)?\\s{0,5}",io=Ia("(?:(?:about|around)\\s{0,3})?",MF,PF),cl=Ia("(?:(?:about|around)\\s{0,3})?",l$,PF);function Ki(n){let a={},e=n,t=SF.exec(e);for(;t;)c$(a,t),e=e.substring(t[0].length).trim(),t=SF.exec(e);return Object.keys(a).length==0?null:a}function c$(n,a){if(a[0].match(/^[a-zA-Z]+$/))return;let e=o$(a[1]),t=om[a[2].toLowerCase()];n[t]=e}var B=class{constructor(){W(this,"cachedInnerPattern",null);W(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 d$=new RegExp(`(?:(?:within|in|for)\\s*)?(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${io})(?=\\W|$)`,"i"),u$=new RegExp(`(?:within|in|for)\\s*(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${io})(?=\\W|$)`,"i"),p$=new RegExp(`(?:within|in|for)\\s*(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${cl})(?=\\W|$)`,"i"),lm=class extends B{constructor(e){super();W(this,"strictMode");this.strictMode=e}innerPattern(e){return this.strictMode?p$:e.option.forwardDate?d$:u$}innerExtract(e,t){if(t[0].match(/^for\s*the\s*\w+/))return null;let r=Ki(t[1]);return r?Y.createRelativeFromReference(e.reference,r):null}};var m$=new RegExp(`(?:on\\s{0,3})?(${Nd})(?:\\s{0,3}(?:to|\\-|\\\u2013|until|through|till)?\\s{0,3}(${Nd}))?(?:-|/|\\s{0,3}(?:of)?\\s{0,3})(${X(Gi)})(?:(?:-|/|,?\\s{0,3})(${ol}(?!\\w)))?(?=\\W|$)`,"i"),IF=1,AF=2,h$=3,FF=4,cm=class extends B{innerPattern(){return m$}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=Gi[e[h$].toLowerCase()],i=Ld(e[IF]);if(i>31)return e.index=e.index+e[IF].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[FF]){let s=ll(e[FF]);t.start.assign("year",s)}else{let s=Ue(a.refDate,i,r);t.start.imply("year",s)}if(e[AF]){let s=Ld(e[AF]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var g$=new RegExp(`(${X(Gi)})(?:-|/|\\s*,?\\s*)(${Nd})(?!\\s*(?:am|pm))\\s*(?:(?:to|\\-)\\s*(${Nd})\\s*)?(?:(?:-|/|\\s*,\\s*|\\s+)(${ol}))?(?=\\W|$)(?!\\:\\d)`,"i"),f$=1,RF=2,Y0=3,q0=4,dm=class extends B{constructor(e){super();W(this,"shouldSkipYearLikeDate");this.shouldSkipYearLikeDate=e}innerPattern(){return g$}innerExtract(e,t){let r=Gi[t[f$].toLowerCase()],i=Ld(t[RF]);if(i>31||this.shouldSkipYearLikeDate&&!t[Y0]&&!t[q0]&&t[RF].match(/^2[0-5]$/))return null;let s=e.createParsingComponents({day:i,month:r}).addTag("parser/ENMonthNameMiddleEndianParser");if(t[q0]){let d=ll(t[q0]);s.assign("year",d)}else{let d=Ue(e.refDate,i,r);s.imply("year",d)}if(!t[Y0])return s;let o=Ld(t[Y0]),l=e.createParsingResult(t.index,t[0]);return l.start=s,l.end=s.clone(),l.end.assign("day",o),l}};var k$=new RegExp(`((?:in)\\s*)?(${X(Gi)})\\s*(?:(?:,|-|of)?\\s*(${ol})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i"),v$=1,y$=2,OF=3,um=class extends B{innerPattern(){return k$}innerExtract(a,e){let t=e[y$].toLowerCase();if(e[0].length<=3&&!$0[t])return null;let r=a.createParsingResult(e.index+(e[v$]||"").length,e.index+e[0].length);r.start.imply("day",1),r.start.addTag("parser/ENMonthNameParser");let i=Gi[t];if(r.start.assign("month",i),e[OF]){let s=ll(e[OF]);r.start.assign("year",s)}else{let s=Ue(a.refDate,1,i);r.start.imply("year",s)}return r}};var b$=new RegExp(`([0-9]{4})[-\\.\\/\\s](?:(${X(Gi)})|([0-9]{1,2}))[-\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i"),w$=1,T$=2,NF=3,x$=4,pm=class extends B{constructor(e){super();W(this,"strictMonthDateOrder");this.strictMonthDateOrder=e}innerPattern(){return b$}innerExtract(e,t){let r=parseInt(t[w$]),i=parseInt(t[x$]),s=t[NF]?parseInt(t[NF]):Gi[t[T$].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 C$=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i"),S$=1,D$=2,mm=class extends B{innerPattern(){return C$}innerExtract(a,e){let t=parseInt(e[D$]),r=parseInt(e[S$]);return a.createParsingComponents().imply("day",1).assign("month",r).assign("year",t)}};function E$(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 M$(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 G0=2,sc=3,ky=4,vy=5,jd=6,Aa=class{constructor(a=!1){W(this,"strictMode");W(this,"cachedPrimaryPrefix",null);W(this,"cachedPrimarySuffix",null);W(this,"cachedPrimaryTimePattern",null);W(this,"cachedFollowingPhase",null);W(this,"cachedFollowingSuffix",null);W(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),d=this.getFollowingTimePatternThroughCache().exec(o);return i.match(/^\d{3,4}/)&&d&&(d[0].match(/^\s*([+-])\s*\d{2,4}$/)||d[0].match(/^\s*([+-])\s*\d{2}\W\d{2}/))?null:!d||d[0].match(/^\s*([+-])\s*\d{3,4}$/)?this.checkAndReturnWithoutFollowingPattern(s):(s.end=this.extractFollowingTimeComponents(a,d,s),s.end&&(s.text+=d[0]),this.checkAndReturnWithFollowingPattern(s))}extractPrimaryTimeComponents(a,e,t=!1){let r=a.createParsingComponents(),i=0,s=null,o=parseInt(e[G0]);if(o>100){if(e[G0].length==4&&e[sc]==null&&!e[jd]||this.strictMode||e[sc]!=null)return null;i=o%100,o=Math.floor(o/100)}if(o>24)return null;if(e[sc]!=null){if(e[sc].length==1&&!e[jd])return null;i=parseInt(e[sc])}if(i>=60)return null;if(o>12&&(s=$.PM),e[jd]!=null){if(o>12)return null;let l=e[jd][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[vy]!=null){let l=parseInt(e[vy].substring(0,3));if(l>=1e3)return null;r.assign("millisecond",l)}if(e[ky]!=null){let l=parseInt(e[ky]);if(l>=60)return null;r.assign("second",l)}return r}extractFollowingTimeComponents(a,e,t){let r=a.createParsingComponents();if(e[vy]!=null){let l=parseInt(e[vy].substring(0,3));if(l>=1e3)return null;r.assign("millisecond",l)}if(e[ky]!=null){let l=parseInt(e[ky]);if(l>=60)return null;r.assign("second",l)}let i=parseInt(e[G0]),s=0,o=-1;if(e[sc]!=null?s=parseInt(e[sc]):i>100&&(s=i%100,i=Math.floor(i/100)),s>=60||i>24)return null;if(i>=12&&(o=$.PM),e[jd]!=null){if(i>12)return null;let l=e[jd][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=E$(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=M$(a,e),this.cachedFollowingPhase=a,this.cachedFollowingSuffix=e,this.cachedFollowingTimePatten)}};var hm=class extends Aa{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 P$=new RegExp(`(${io})\\s{0,5}(?:ago|before|earlier)(?=\\W|$)`,"i"),I$=new RegExp(`(${cl})\\s{0,5}(?:ago|before|earlier)(?=\\W|$)`,"i"),gm=class extends B{constructor(e){super();W(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?I$:P$}innerExtract(e,t){let r=Ki(t[1]);return r?Y.createRelativeFromReference(e.reference,dt(r)):null}};var A$=new RegExp(`(${io})\\s{0,5}(?:later|after|from now|henceforth|forward|out)(?=(?:\\W|$))`,"i"),F$=new RegExp(`(${cl})\\s{0,5}(later|after|from now)(?=\\W|$)`,"i"),R$=1,fm=class extends B{constructor(e){super();W(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?F$:A$}innerExtract(e,t){let r=Ki(t[R$]);return r?Y.createRelativeFromReference(e.reference,r):null}};var Hd=class{refine(a,e){return e.filter(t=>this.isValid(a,t))}},Er=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,d=i,u=this.mergeResults(o,l,d,a);a.debug(()=>{`${this.constructor.name}${l}${d}${u}`}),r=u}}return r!=null&&t.push(r),t}};var Bt=class extends Er{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()>t.start.date()){let i=e.start.date(),s=t.start.date();t.start.isOnlyWeekdayComponent()&&Ct(s,{day:7})>i?(s=Ct(s,{day:7}),t.start.imply("day",s.getDate()),t.start.imply("month",s.getMonth()+1),t.start.imply("year",s.getFullYear())):e.start.isOnlyWeekdayComponent()&&Ct(i,{day:-7})<s?(i=Ct(i,{day:-7}),e.start.imply("day",i.getDate()),e.start.imply("month",i.getMonth()+1),e.start.imply("year",i.getFullYear())):t.start.isDateWithUnknownYear()&&Ct(s,{year:1})>i?(s=Ct(s,{year:1}),t.start.imply("year",s.getFullYear())):e.start.isDateWithUnknownYear()&&Ct(i,{year:-1})<s?(i=Ct(i,{year:-1}),e.start.imply("year",i.getFullYear())):[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 km=class extends Bt{patternBetween(){return/^\s*(to|-||until|through|till)\s*$/i}};function K0(n,a){let e=n.clone(),t=n.start,r=a.start;if(e.start=LF(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=LF(i,s);if(n.end==null&&o.date().getTime()<e.start.date().getTime()){let l=new Date(o.date().getTime());l.setDate(l.getDate()+1),o.isCertain("day")?Le(o,l):ro(o,l)}e.end=o}return e}function LF(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 Vt=class extends Er{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()?K0(e,t):K0(t,e);return r.index=e.index,r.text=e.text+a+t.text,r}};var Bd=class extends Vt{patternBetween(){return new RegExp("^\\s*(T|at|after|before|on|of|,|-|\\.|\u2219|:)?\\s*$")}};var O$=new RegExp("^\\s*,?\\s*\\(?([A-Z]{2,4})\\)?(?=\\W|$)","i"),vm=class{constructor(a){W(this,"timezoneOverrides");this.timezoneOverrides=a}refine(a,e){var r;let t=(r=a.option.timezones)!=null?r:{};return e.forEach(i=>{var h,g;let s=a.text.substring(i.index+i.text.length),o=O$.exec(s);if(!o)return;let l=o[1].toUpperCase(),d=(g=(h=i.start.date())!=null?h:i.refDate)!=null?g:new Date,u={...this.timezoneOverrides,...t},p=gy(l,d,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 N$=new RegExp("^\\s*(?:\\(?(?:GMT|UTC)\\s?)?([+-])(\\d{1,2})(?::?(\\d{2}))?\\)?","i"),L$=1,j$=2,H$=3,Mn=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=N$.exec(r);if(!i)return;a.debug(()=>{`${i[0]}${t}`});let s=parseInt(i[j$]),o=parseInt(i[H$]||"0"),l=s*60+o;l>840||(i[L$]==="-"&&(l=-l),t.end!=null&&t.end.assign("timezoneOffset",l),t.start.assign("timezoneOffset",l),t.text+=i[0])}),e}};var dl=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 ym=class{refine(a,e){return a.option.forwardDate&&e.forEach(t=>{let r=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),ro(t.start,s),a.debug(()=>{`${this.constructor.name}${t}${i}${s}`}),t.end&&t.end.isOnlyTime()&&(ro(t.end,s),t.start.date()>t.end.date()&&(s.setDate(s.getDate()+1),ro(t.end,s)))}if(t.start.isOnlyWeekdayComponent()&&r>t.start.date()){let i=t.start.get("weekday")-r.getDay();if(i<=0&&(i+=7),r=Ct(r,{day:i}),ro(t.start,r),a.debug(()=>{`${this.constructor.name}${t}${t.start}`}),t.end&&t.end.isOnlyWeekdayComponent()){let s=t.end.get("weekday")-r.getDay();s<=0&&(s+=7),r=Ct(r,{day:s}),ro(t.end,r),a.debug(()=>{`${this.constructor.name}${t}${t.end}`})}}if(t.start.isDateWithUnknownYear()&&r>t.start.date())for(let i=0;i<3&&r>t.start.date();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 bm=class extends Hd{constructor(e){super();W(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 B$=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"),V$=1,W$=2,z$=3,jF=4,_$=5,HF=6,BF=7,U$=8,VF=9,WF=10,Pn=class extends B{innerPattern(){return B$}innerExtract(a,e){let t=a.createParsingComponents({year:parseInt(e[V$]),month:parseInt(e[W$]),day:parseInt(e[z$])});if(e[jF]!=null&&(t.assign("hour",parseInt(e[jF])),t.assign("minute",parseInt(e[_$])),e[HF]!=null&&t.assign("second",parseInt(e[HF])),e[BF]!=null&&t.assign("millisecond",parseInt(e[BF])),e[U$]!=null)){let r=0;if(e[VF]){let i=parseInt(e[VF]),s=0;e[WF]!=null&&(s=parseInt(e[WF])),r=i*60,r<0?r-=s:r+=s}t.assign("timezoneOffset",r)}return t.addTag("parser/ISOFormatParser")}};var oc=class extends Er{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 At(n,a=!1){return n.parsers.unshift(new Pn),n.refiners.unshift(new oc),n.refiners.unshift(new Mn),n.refiners.unshift(new dl),n.refiners.push(new vm),n.refiners.push(new dl),n.refiners.push(new ym),n.refiners.push(new bm(a)),n}function Fa(n){let a=n.getDateWithAdjustedTimezone(),e=new Y(n,{});return Le(e,a),hy(e,a),e.assign("timezoneOffset",n.getTimezoneOffset()),e.addTag("casualReference/now"),e}function fa(n){let a=n.getDateWithAdjustedTimezone(),e=new Y(n,{});return Le(e,a),Gt(e,a),e.delete("meridiem"),e.addTag("casualReference/today"),e}function tr(n){return lc(n,1).addTag("casualReference/yesterday")}function ar(n){return ds(n,1).addTag("casualReference/tomorrow")}function lc(n,a){return ds(n,-a)}function ds(n,a){let e=n.getDateWithAdjustedTimezone(),t=new Y(n,{}),r=new Date(e.getTime());return r.setDate(r.getDate()+a),Le(t,r),Gt(t,r),t.delete("meridiem"),t}function yy(n,a=22){let e=n.getDateWithAdjustedTimezone(),t=new Y(n,{});return Le(t,e),t.imply("hour",a),t.imply("meridiem",$.PM),t.addTag("casualReference/tonight"),t}function by(n,a=0){let e=n.getDateWithAdjustedTimezone(),t=new Y(n,{});return e.getHours()<6&&(e=new Date(e.getTime()-1440*60*1e3)),Le(t,e),t.imply("hour",a),t}function Vd(n,a=20){let e=new Y(n,{});return e.imply("meridiem",$.PM),e.imply("hour",a),e.addTag("casualReference/evening"),e}function wy(n,a=20){let e=n.getDateWithAdjustedTimezone(),t=new Y(n,{});return e=new Date(e.getTime()-1440*60*1e3),Le(t,e),t.imply("hour",a),t.imply("meridiem",$.PM),t.addTag("casualReference/yesterday"),t.addTag("casualReference/evening"),t}function cc(n){let a=new Y(n,{});return n.getDateWithAdjustedTimezone().getHours()>2&&a.addDurationAsImplied({day:1}),a.assign("hour",0),a.imply("minute",0),a.imply("second",0),a.imply("millisecond",0),a.addTag("casualReference/midnight"),a}function Wd(n,a=6){let e=new Y(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 zF(n,a=15){let e=new Y(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 zd(n){let a=new Y(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 $$=/(now|today|tonight|tomorrow|overmorrow|tmr|tmrw|yesterday|last\s*night)(?=\W|$)/i,wm=class extends B{innerPattern(a){return $$}innerExtract(a,e){let t=a.refDate,r=e[0].toLowerCase(),i=a.createParsingComponents();switch(r){case"now":i=Fa(a.reference);break;case"today":i=fa(a.reference);break;case"yesterday":i=tr(a.reference);break;case"tomorrow":case"tmr":case"tmrw":i=ar(a.reference);break;case"tonight":i=yy(a.reference);break;case"overmorrow":i=ds(a.reference,2);break;default:if(r.match(/last\s*night/)){if(t.getHours()>6){let s=new Date(t.getTime());s.setDate(s.getDate()-1),t=s}Le(i,t),i.imply("hour",0)}break}return i.addTag("parser/ENCasualDateParser"),i}};var Y$=/(?:this)?\s{0,3}(morning|afternoon|evening|night|midnight|midday|noon)(?=\W|$)/i,Tm=class extends B{innerPattern(){return Y$}innerExtract(a,e){let t=null;switch(e[1].toLowerCase()){case"afternoon":t=zF(a.reference);break;case"evening":case"night":t=Vd(a.reference);break;case"midnight":t=cc(a.reference);break;case"morning":t=Wd(a.reference);break;case"noon":case"midday":t=zd(a.reference);break}return t&&t.addTag("parser/ENCasualTimeParser"),t}};function Zt(n,a,e){let t=n.getDateWithAdjustedTimezone(),r=q$(t,a,e),i=new Y(n);return i=i.addDurationAsImplied({day:r}),i.assign("weekday",a),i}function q$(n,a,e){let t=n.getDay();switch(e){case"this":return Ty(n,a);case"last":return _F(n,a);case"next":return t==Ce.SUNDAY?a==Ce.SUNDAY?7:a:t==Ce.SATURDAY?a==Ce.SATURDAY?7:a==Ce.SUNDAY?8:1+a:a<t&&a!=Ce.SUNDAY?Ty(n,a):Ty(n,a)+7}return G$(n,a)}function G$(n,a){let e=_F(n,a),t=Ty(n,a);return t<-e?t:e}function Ty(n,a){let e=n.getDay(),t=a-e;return t<0&&(t+=7),t}function _F(n,a){let e=n.getDay(),t=a-e;return t>=0&&(t-=7),t}var K$=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:on\\s*?)?(?:(this|last|past|next)\\s*)?(${X(fy)}|weekend|weekday)(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(this|last|past|next)\\s*week)?(?=\\W|$)`,"i"),Q$=1,X$=2,J$=3,xm=class extends B{innerPattern(){return K$}innerExtract(a,e){let t=e[Q$],r=e[J$],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[X$].toLowerCase(),l;if(fy[o]!==void 0)l=fy[o];else if(o=="weekend")l=s=="last"?Ce.SUNDAY:Ce.SATURDAY;else if(o=="weekday"){let d=a.reference.getDateWithAdjustedTimezone().getDay();d==Ce.SUNDAY||d==Ce.SATURDAY?l=s=="last"?Ce.FRIDAY:Ce.MONDAY:(l=d-1,l=s=="last"?l-1:l+1,l=l%5+1)}else return null;return Zt(a.reference,l,s)}};var Z$=new RegExp(`(this|last|past|next|after\\s*this)\\s*(${X(om)})(?=\\s*)(?=\\W|$)`,"i"),eY=1,tY=2,Cm=class extends B{innerPattern(){return Z$}innerExtract(a,e){let t=e[eY].toLowerCase(),r=e[tY].toLowerCase(),i=om[r];if(t=="next"||t.startsWith("after")){let l={};return l[i]=1,Y.createRelativeFromReference(a.reference,l)}if(t=="last"||t=="past"){let l={};return l[i]=-1,Y.createRelativeFromReference(a.reference,l)}let s=a.createParsingComponents(),o=new Date(a.reference.instant.getTime());return r.match(/week/i)?(o.setDate(o.getDate()-o.getDay()),s.imply("day",o.getDate()),s.imply("month",o.getMonth()+1),s.imply("year",o.getFullYear())):r.match(/month/i)?(o.setDate(1),s.imply("day",o.getDate()),s.assign("year",o.getFullYear()),s.assign("month",o.getMonth()+1)):r.match(/year/i)&&(o.setDate(1),o.setMonth(0),s.imply("day",o.getDate()),s.imply("month",o.getMonth()+1),s.assign("year",o.getFullYear())),s}};var aY=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"),rY=1,iY=5,UF=2,$F=3,Q0=4,da=class{constructor(a){W(this,"groupNumberMonth");W(this,"groupNumberDay");this.groupNumberMonth=a?$F:UF,this.groupNumberDay=a?UF:$F}pattern(){return aY}extract(a,e){let t=e.index+e[rY].length,r=e.index+e[0].length-e[iY].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[Q0]&&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[Q0]){let d=parseInt(e[Q0]),u=er(d);s.start.assign("year",u)}else{let d=Ue(a.refDate,l,o);s.start.imply("year",d)}return s.addTag("parser/SlashDateFormatParser")}};var nY=new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${io})(?=\\W|$)`,"i"),sY=new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${cl})(?=\\W|$)`,"i"),Sm=class extends B{constructor(e=!0){super();W(this,"allowAbbreviations");this.allowAbbreviations=e}innerPattern(){return this.allowAbbreviations?nY:sY}innerExtract(e,t){let r=t[1].toLowerCase(),i=Ki(t[2]);if(!i)return null;switch(r){case"last":case"past":case"-":i=dt(i);break}return Y.createRelativeFromReference(e.reference,i)}};function oY(n){return n.text.match(/^[+-]/i)!=null}function YF(n){return n.text.match(/^-/i)!=null}var Dm=class extends Er{shouldMergeResults(a,e,t){return a.match(/^\s*$/i)?oY(t)||YF(t):!1}mergeResults(a,e,t,r){let i=Ki(t.text);YF(t)&&(i=dt(i));let s=Y.createRelativeFromReference(Ge.fromDate(e.start.date()),i);return new $e(e.reference,e.index,`${e.text}${a}${t.text}`,s)}};function qF(n){return n.text.match(/\s+(before|from)$/i)!=null}function lY(n){return n.text.match(/\s+(after|since)$/i)!=null}var Em=class extends Er{patternBetween(){return/^\s*$/i}shouldMergeResults(a,e,t){return!a.match(this.patternBetween())||!qF(e)&&!lY(e)?!1:!!t.start.get("day")&&!!t.start.get("month")&&!!t.start.get("year")}mergeResults(a,e,t){let r=Ki(e.text);qF(e)&&(r=dt(r));let i=Y.createRelativeFromReference(Ge.fromDate(t.start.date()),r);return new $e(t.reference,e.index,`${e.text}${a}${t.text}`,i)}};var cY=new RegExp(`^\\s*(${ol})`,"i"),dY=1,Mm=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=cY.exec(r);if(!i||i[0].trim().length<=3)return;a.debug(()=>{`${i[0]}${t}`});let s=ll(i[dY]);t.end!=null&&t.end.assign("year",s),t.start.assign("year",s),t.text+=i[0]}),e}};var Pm=class extends Hd{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 dc=class{createCasualConfiguration(a=!1){let e=this.createConfiguration(!1,a);return e.parsers.push(new wm),e.parsers.push(new Tm),e.parsers.push(new um),e.parsers.push(new Cm),e.parsers.push(new Sm),e.refiners.push(new Pm),e}createConfiguration(a=!0,e=!1){let t=At({parsers:[new da(e),new lm(a),new cm,new dm(e),new xm,new mm,new hm(a),new gm(a),new fm(a)],refiners:[new Bd]},a);return t.parsers.unshift(new pm(a)),t.refiners.unshift(new Em),t.refiners.unshift(new Dm),t.refiners.unshift(new dl),t.refiners.push(new Bd),t.refiners.push(new Mm),t.refiners.push(new km),t}};var he=class n{constructor(a){W(this,"parsers");W(this,"refiners");W(this,"defaultConfig",new dc);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 Im(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 d=e.extract(a,o);if(!d){s=i.substring(o.index+1),o=r.exec(s);continue}let u=null;d instanceof $e?u=d:d instanceof Y?(u=a.createParsingResult(o.index,o[0]),u.start=d):u=a.createParsingResult(o.index,o[0],d);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}},Im=class{constructor(a,e,t){W(this,"text");W(this,"option");W(this,"reference");W(this,"refDate");this.text=a,this.option=t!=null?t:{},this.reference=Ge.fromInput(e,this.option.timezones),this.refDate=this.reference.instant}createParsingComponents(a){return a instanceof Y?a:new Y(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 $e(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 xy=new dc,Am=new he(xy.createCasualConfiguration(!1)),X0=new he(xy.createConfiguration(!0,!1)),uY=new he(xy.createCasualConfiguration(!0));function pY(n,a,e){return Am.parse(n,a,e)}function mY(n,a,e){return Am.parseDate(n,a,e)}var sS={};_a(sS,{Chrono:()=>he,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>iS,createCasualConfiguration:()=>sR,createConfiguration:()=>nS,parse:()=>MY,parseDate:()=>PY,strict:()=>EY});var Fm=class extends Aa{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 eS={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},tS={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},Z0={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},Rm={sek:"second",sekunde:"second",sekunden:"second",min:"minute",minute:"minute",minuten:"minute",h:"hour",std:"hour",stunde:"hour",stunden:"hour",tag:"day",tage:"day",tagen:"day",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"},aS=`(?:${X(Z0)}|[0-9]+|[0-9]+\\.[0-9]+|halb?|halbe?|einigen?|wenigen?|mehreren?)`;function rS(n){let a=n.toLowerCase();return Z0[a]!==void 0?Z0[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 KF="(?:[0-9]{1,4}(?:\\s*[vn]\\.?\\s*(?:C(?:hr)?|(?:u\\.?|d\\.?(?:\\s*g\\.?)?)?\\s*Z)\\.?|\\s*(?:u\\.?|d\\.?(?:\\s*g\\.)?)\\s*Z\\.?)?)";function QF(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 er(a)}var XF=`(${aS})\\s{0,5}(${X(Rm)})\\s{0,5}`,GF=new RegExp(XF,"i"),JF=Ia("",XF);function ZF(n){let a={},e=n,t=GF.exec(e);for(;t;)hY(a,t),e=e.substring(t[0].length),t=GF.exec(e);return a}function hY(n,a){let e=rS(a[1]),t=Rm[a[2].toLowerCase()];n[t]=e}var gY=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:a[mn]\\s*?)?(?:(diese[mn]|letzte[mn]|n(?:\xE4|ae)chste[mn])\\s*)?(${X(eS)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(diese|letzte|n(?:\xE4|ae)chste)\\s*woche)?(?=\\W|$)`,"i"),fY=1,kY=3,vY=2,Om=class extends B{innerPattern(){return gY}innerExtract(a,e){let t=e[vY].toLowerCase(),r=eS[t],i=e[fY],s=e[kY],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"),Zt(a.reference,r,l)}};var yY=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"),bY=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"),wY=2,eR=3,tR=4,aR=5,Nm=class n{pattern(a){return yY}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=bY.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[wY]),e[eR]!=null&&(r=parseInt(e[eR])),r>=60||t>24)return null;if(t>=12&&(i=$.PM),e[aR]!=null){if(t>12)return null;let s=e[aR].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[tR]!=null){let s=parseInt(e[tR]);if(s>=60)return null;a.assign("second",s)}return a}};var Lm=class extends Bt{patternBetween(){return/^\s*(bis(?:\s*(?:am|zum))?|-)\s*$/i}};var jm=class extends Vt{patternBetween(){return new RegExp("^\\s*(T|um|am|,|-)?\\s*$")}};var uc=class n extends B{innerPattern(a){return/(diesen)?\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht)(?=\W|$)/i}innerExtract(a,e){let t=a.refDate,r=e[2].toLowerCase(),i=a.createParsingComponents();return Gt(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.addDurationAsImplied({day:1}),a.imply("hour",0),a.imply("minute",0),a.imply("second",0),a.imply("meridiem",$.AM);break}return a}};var TY=new RegExp("(jetzt|heute|morgen|\xFCbermorgen|uebermorgen|gestern|vorgestern|letzte\\s*nacht)(?:\\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht))?(?=\\W|$)","i"),xY=1,CY=2,Hm=class extends B{innerPattern(a){return TY}innerExtract(a,e){let t=a.reference.getDateWithAdjustedTimezone(),r=(e[xY]||"").toLowerCase(),i=(e[CY]||"").toLowerCase(),s=a.createParsingComponents();switch(r){case"jetzt":s=Fa(a.reference);break;case"heute":s=fa(a.reference);break;case"morgen":t=Ct(t,{day:1}),Le(s,t),Gt(s,t);break;case"\xFCbermorgen":case"uebermorgen":t=Ct(t,{day:2}),Le(s,t),Gt(s,t);break;case"gestern":t=Ct(t,{day:-1}),Le(s,t),Gt(s,t);break;case"vorgestern":t=Ct(t,{day:-2}),Le(s,t),Gt(s,t);break;default:r.match(/letzte\s*nacht/)&&(t.getHours()>6&&(t=Ct(t,{day:-1})),Le(s,t),s.imply("hour",0));break}return i&&(s=uc.extractTimeComponents(s,i)),s}};var SY=new RegExp(`(?:am\\s*?)?(?:den\\s*?)?([0-9]{1,2})\\.(?:\\s*(?:bis(?:\\s*(?:am|zum))?|\\-|\\\u2013|\\s)\\s*([0-9]{1,2})\\.?)?\\s*(${X(tS)})(?:(?:-|/|,?\\s*)(${KF}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),rR=1,iR=2,DY=3,nR=4,Bm=class extends B{innerPattern(){return SY}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=tS[e[DY].toLowerCase()],i=parseInt(e[rR]);if(i>31)return e.index=e.index+e[rR].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[nR]){let s=QF(e[nR]);t.start.assign("year",s)}else{let s=Ue(a.refDate,i,r);t.start.imply("year",s)}if(e[iR]){let s=parseInt(e[iR]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var Vm=class extends B{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*)?(${aS})?(?:\\s*(n\xE4chste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?)?\\s*(${X(Rm)})`,"i")}innerExtract(a,e){let t=e[2]?rS(e[2]):1,r=Rm[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=dt(i)),Y.createRelativeFromReference(a.reference,i)}};var Wm=class extends B{innerPattern(){return new RegExp(`(?:in|f\xFCr|w\xE4hrend)\\s*(${JF})(?=\\W|$)`,"i")}innerExtract(a,e){let t=ZF(e[1]);return Y.createRelativeFromReference(a.reference,t)}};var iS=new he(sR()),EY=new he(nS(!0));function MY(n,a,e){return iS.parse(n,a,e)}function PY(n,a,e){return iS.parseDate(n,a,e)}function sR(n=!0){let a=nS(!1,n);return a.parsers.unshift(new uc),a.parsers.unshift(new Hm),a.parsers.unshift(new Vm),a}function nS(n=!0,a=!0){return At({parsers:[new Pn,new da(a),new Fm,new Nm,new Bm,new Om,new Wm],refiners:[new Lm,new jm]},n)}var fS={};_a(fS,{Chrono:()=>he,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>hS,createCasualConfiguration:()=>kR,createConfiguration:()=>gS,parse:()=>VY,parseDate:()=>WY,strict:()=>BY});var zm=class extends B{innerPattern(a){return/(maintenant|aujourd'hui|demain|hier|cette\s*nuit|la\s*veille)(?=\W|$)/i}innerExtract(a,e){let t=a.refDate,r=e[0].toLowerCase(),i=a.createParsingComponents();switch(r){case"maintenant":return Fa(a.reference);case"aujourd'hui":return fa(a.reference);case"hier":return tr(a.reference);case"demain":return ar(a.reference);default:if(r.match(/cette\s*nuit/))Le(i,t),i.imply("hour",22),i.imply("meridiem",$.PM);else if(r.match(/la\s*veille/)){let s=new Date(t.getTime());s.setDate(s.getDate()-1),Le(i,s),i.imply("hour",0)}}return i}};var _m=class extends B{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 Um=class extends Aa{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 $m=class extends Vt{patternBetween(){return new RegExp("^\\s*(T|\xE0|a|au|vers|de|,|-)?\\s*$")}};var Ym=class extends Bt{patternBetween(){return/^\s*(à|a|au|-)\s*$/i}};var lS={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},cS={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},oS={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},qm={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:"day",jours:"day",semaine:"week",semaines:"week",mois:"month",trimestre:"quarter",trimestres:"quarter",ans:"year",ann\u00E9e:"year",ann\u00E9es:"year"},dS=`(?:${X(oS)}|[0-9]+|[0-9]+\\.[0-9]+|une?\\b|quelques?|demi-?)`;function uS(n){let a=n.toLowerCase();return oS[a]!==void 0?oS[a]:a==="une"||a==="un"?1:a.match(/quelques?/)?3:a.match(/demi-?/)?.5:parseFloat(a)}var pS="(?:[0-9]{1,2}(?:er)?)";function mS(n){let a=n.toLowerCase();return a=a.replace(/(?:er)$/i,""),parseInt(a)}var lR="(?:[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 cR(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 dR=`(${dS})\\s{0,5}(${X(qm)})\\s{0,5}`,oR=new RegExp(dR,"i"),Cy=Ia("",dR);function Sy(n){let a={},e=n,t=oR.exec(e);for(;t;)IY(a,t),e=e.substring(t[0].length),t=oR.exec(e);return a}function IY(n,a){let e=uS(a[1]),t=qm[a[2].toLowerCase()];n[t]=e}var AY=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(?:ce)\\s*)?(${X(lS)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(dernier|prochain)\\s*)?(?=\\W|\\d|$)`,"i"),FY=1,RY=2,Gm=class extends B{innerPattern(){return AY}innerExtract(a,e){let t=e[FY].toLowerCase(),r=lS[t];if(r===void 0)return null;let i=e[RY];i=i||"",i=i.toLowerCase();let s=null;return i=="dernier"?s="last":i=="prochain"&&(s="next"),Zt(a.reference,r,s)}};var OY=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"),NY=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"),LY=2,uR=3,pR=4,mR=5,Km=class n{pattern(a){return OY}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=NY.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[LY]),e[uR]!=null&&(r=parseInt(e[uR])),r>=60||t>24)return null;if(t>=12&&(i=$.PM),e[mR]!=null){if(t>12)return null;let s=e[mR][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[pR]!=null){let s=parseInt(e[pR]);if(s>=60)return null;a.assign("second",s)}return a}};var jY=new RegExp(`(?:on\\s*?)?(${pS})(?:\\s*(?:au|\\-|\\\u2013|jusqu'au?|\\s)\\s*(${pS}))?(?:-|/|\\s*(?:de)?\\s*)(${X(cS)})(?:(?:-|/|,?\\s*)(${lR}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),hR=1,gR=2,HY=3,fR=4,Qm=class extends B{innerPattern(){return jY}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=cS[e[HY].toLowerCase()],i=mS(e[hR]);if(i>31)return e.index=e.index+e[hR].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[fR]){let s=cR(e[fR]);t.start.assign("year",s)}else{let s=Ue(a.refDate,i,r);t.start.imply("year",s)}if(e[gR]){let s=mS(e[gR]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var Xm=class extends B{constructor(){super()}innerPattern(){return new RegExp(`il y a\\s*(${Cy})(?=(?:\\W|$))`,"i")}innerExtract(a,e){let t=Sy(e[1]),r=dt(t);return Y.createRelativeFromReference(a.reference,r)}};var Jm=class extends B{innerPattern(){return new RegExp(`(?:dans|en|pour|pendant|de)\\s*(${Cy})(?=\\W|$)`,"i")}innerExtract(a,e){let t=Sy(e[1]);return Y.createRelativeFromReference(a.reference,t)}};var Zm=class extends B{constructor(){super()}innerPattern(){return new RegExp(`(?:les?|la|l'|du|des?)\\s*(${dS})?(?:\\s*(prochaine?s?|derni[e\xE8]re?s?|pass[\xE9e]e?s?|pr[\xE9e]c[\xE9e]dents?|suivante?s?))?\\s*(${X(qm)})(?:\\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]?uS(e[1]):1,r=qm[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=dt(i)),Y.createRelativeFromReference(a.reference,i)}};var hS=new he(kR()),BY=new he(gS(!0));function VY(n,a,e){return hS.parse(n,a,e)}function WY(n,a,e){return hS.parseDate(n,a,e)}function kR(n=!0){let a=gS(!1,n);return a.parsers.unshift(new zm),a.parsers.unshift(new _m),a.parsers.unshift(new Zm),a}function gS(n=!0,a=!0){return At({parsers:[new da(a),new Qm,new Um,new Km,new Xm,new Jm,new Gm],refiners:[new $m,new Ym]},n)}var bS={};_a(bS,{Chrono:()=>he,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>vS,createCasualConfiguration:()=>DR,createConfiguration:()=>yS,parse:()=>iq,parseDate:()=>nq,strict:()=>rq});var us={\u96F6:0,"\u3007":0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9,\u5341:10},_d={\u65E5:0,\u6708:1,\u706B:2,\u6C34:3,\u6728:4,\u91D1:5,\u571F:6};function Qi(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,zY)}function zY(n){return String.fromCharCode(n.charCodeAt(0)-65248)}function Dy(n){let a=0;for(let e=0;e<n.length;e++){let t=n[e];t==="\u5341"?a=a===0?us[t]:a*us[t]:a+=us[t]}return a}var _Y=/(?:(?:([同今本])|((昭和|平成|令和)?([0-9-]{1,4}|元)))年\s*)?([0-9-]{1,2})月\s*([0-9-]{1,2})日/i,vR=1,UY=2,kS=3,$Y=4,YY=5,qY=6,eh=class{pattern(){return _Y}extract(a,e){let t=parseInt(Qi(e[YY])),r=parseInt(Qi(e[qY])),i=a.createParsingComponents({day:r,month:t});if(e[vR]&&e[vR].match("\u540C|\u4ECA|\u672C")&&i.assign("year",a.reference.getDateWithAdjustedTimezone().getFullYear()),e[UY]){let s=e[$Y],o=s=="\u5143"?1:parseInt(Qi(s));e[kS]=="\u4EE4\u548C"?o+=2018:e[kS]=="\u5E73\u6210"?o+=1988:e[kS]=="\u662D\u548C"&&(o+=1925),i.assign("year",o)}else{let s=Ue(a.refDate,r,t);i.imply("year",s)}return i}};var th=class extends Bt{patternBetween(){return/^\s*(から||ー|-||~)\s*$/i}};var GY=/今日|きょう|本日|ほんじつ|昨日|きのう|明日|あした|今夜|こんや|今夕|こんゆう|今晩|こんばん|今朝|けさ/i;function KY(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 ah=class{pattern(){return GY}extract(a,e){let t=KY(e[0]),r=a.createParsingComponents();switch(t){case"\u6628\u65E5":return tr(a.reference);case"\u660E\u65E5":return ar(a.reference);case"\u672C\u65E5":case"\u4ECA\u65E5":return fa(a.reference)}t=="\u4ECA\u591C"||t=="\u4ECA\u5915"||t=="\u4ECA\u6669"?(r.imply("hour",22),r.assign("meridiem",$.PM)):t.match("\u4ECA\u671D")&&(r.imply("hour",6),r.assign("meridiem",$.AM));let i=a.refDate;return r.assign("day",i.getDate()),r.assign("month",i.getMonth()+1),r.assign("year",i.getFullYear()),r}};var QY=new RegExp("((?<prefix>\u524D\u306E|\u6B21\u306E|\u4ECA\u9031))?(?<weekday>"+Object.keys(_d).join("|")+")(?:\u66DC\u65E5|\u66DC)","i"),rh=class{pattern(){return QY}extract(a,e){let t=e.groups.weekday,r=_d[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"),Zt(a.reference,r,s)}};var XY=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"),yR=1,JY=2,ZY=3,ih=class{pattern(){return XY}extract(a,e){let t=a.createParsingComponents(),r=parseInt(Qi(e[JY])),i=parseInt(Qi(e[ZY]));if(r<1||r>12||i<1||i>31)return null;if(t.assign("day",i),t.assign("month",r),e[yR]){let s=parseInt(Qi(e[yR])),o=er(s);t.assign("year",o)}else{let s=Ue(a.reference.instant,i,r);t.imply("year",s)}return t}};var eq=new RegExp("(?:(\u5348\u524D|\u5348\u5F8C|A.M.|P.M.|AM|PM))?(?:[\\s,\uFF0C\u3001]*)(?:([0-9\uFF10-\uFF19]+|["+Object.keys(us).join("")+"]+)(?:\\s*)(?:\u6642(?!\u9593)|:|\uFF1A)(?:\\s*)([0-9\uFF10-\uFF19]+|\u534A|["+Object.keys(us).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)([0-9\uFF10-\uFF19]+|["+Object.keys(us).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),tq=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(us).join("")+"]+)(?:\\s*)(?:\u6642|:|\uFF1A)(?:\\s*)([0-9\uFF10-\uFF19]+|\u534A|["+Object.keys(us).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)([0-9\uFF10-\uFF19]+|["+Object.keys(us).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),bR=1,wR=2,TR=3,xR=4,CR=5,nh=class extends B{innerPattern(){return eq}innerExtract(a,e){var r,i;if(e.index>0&&a.text[e.index-1].match(/\w/))return null;let t=a.createParsingResult(e.index,e[0]);return t.start=SR(a,e[wR],e[TR],e[xR],(r=e[bR])!=null?r:e[CR]),t.start?(e=tq.exec(a.text.substring(t.index+t.text.length)),e?(t.text=t.text+e[0],t.end=SR(a,e[wR],e[TR],e[xR],(i=e[bR])!=null?i:e[CR]),t.end?(!t.end.isCertain("meridiem")&&t.start.isCertain("meridiem")&&(t.end.imply("meridiem",t.start.get("meridiem")),t.start.get("meridiem")===$.PM&&(t.start.get("hour")-12>t.end.get("hour")?t.end.imply("meridiem",$.AM):t.end.get("hour")<12&&t.end.assign("hour",t.end.get("hour")+12))),t.end.date().getTime()<t.start.date().getTime()&&t.end.imply("day",t.end.get("day")+1),t):null):t):(e.index+=e[0].length,null)}};function SR(n,a,e,t,r){let i=0,s=-1,o=n.createParsingComponents();if(i=parseInt(Qi(a)),isNaN(i)&&(i=Dy(a)),i>24)return null;if(e){let l;if(e==="\u534A"?l=30:(l=parseInt(Qi(e)),isNaN(l)&&(l=Dy(e))),l>=60)return null;o.assign("minute",l)}if(t){let l=parseInt(Qi(t));if(isNaN(l)&&(l=Dy(t)),l>=60)return null;o.assign("second",l)}if(r){if(i>12)return null;let l=r;l==="\u5348\u524D"||l[0].toLowerCase()==="a"?(s=$.AM,i===12&&(i=0)):(l==="\u5348\u5F8C"||l[0].toLowerCase()==="p")&&(s=$.PM,i!=12&&(i+=12))}return o.assign("hour",i),s>=0?o.assign("meridiem",s):i<12?o.imply("meridiem",$.AM):o.imply("meridiem",$.PM),o}var sh=class extends Vt{patternBetween(){return/^\s*(の)?\s*$/i}};var oh=class extends Er{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 aq=new RegExp("(?:\\(|\\\uFF08)(?<weekday>"+Object.keys(_d).join("|")+")(?:\\)|\\\uFF09)","i"),lh=class{pattern(){return aq}extract(a,e){let t=e.groups.weekday,r=_d[t];return r===void 0?null:Zt(a.reference,r)}};var vS=new he(DR()),rq=new he(yS(!0));function iq(n,a,e){return vS.parse(n,a,e)}function nq(n,a,e){return vS.parseDate(n,a,e)}function DR(){let n=yS(!1);return n.parsers.unshift(new ah),n}function yS(n=!0){let a=At({parsers:[new eh,new rh,new lh,new ih,new nh],refiners:[new oh,new sh,new th]},n);return a.refiners=a.refiners.filter(e=>!(e instanceof oc)),a}var SS={};_a(SS,{Chrono:()=>he,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>xS,createCasualConfiguration:()=>FR,createConfiguration:()=>CS,parse:()=>mq,parseDate:()=>hq,strict:()=>pq});var wS={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},TS={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},ER="[0-9]{1,4}(?![^\\s]\\d)(?:\\s*[a|d]\\.?\\s*c\\.?|\\s*a\\.?\\s*d\\.?)?";function MR(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 sq=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(este|esta|passado|pr[o\xF3]ximo)\\s*)?(${X(wS)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(este|esta|passado|pr[\xF3o]ximo)\\s*semana)?(?=\\W|\\d|$)`,"i"),oq=1,lq=2,cq=3,ch=class extends B{innerPattern(){return sq}innerExtract(a,e){let t=e[lq].toLowerCase(),r=wS[t];if(r===void 0)return null;let i=e[oq],s=e[cq],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"),Zt(a.reference,r,l)}};var dh=class extends Aa{primaryPrefix(){return"(?:(?:ao?|\xE0s?|das|da|de|do)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|a(?:o)?|\\?)\\s*"}};var uh=class extends Vt{patternBetween(){return new RegExp("^\\s*(?:,|\xE0)?\\s*$")}};var ph=class extends Bt{patternBetween(){return/^\s*(?:-)\s*$/i}};var dq=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*)(${X(TS)})(?:\\s*(?:de|,)?\\s*(${ER}))?(?=\\W|$)`,"i"),PR=1,IR=2,uq=3,AR=4,mh=class extends B{innerPattern(){return dq}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=TS[e[uq].toLowerCase()],i=parseInt(e[PR]);if(i>31)return e.index=e.index+e[PR].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[AR]){let s=MR(e[AR]);t.start.assign("year",s)}else{let s=Ue(a.refDate,i,r);t.start.imply("year",s)}if(e[IR]){let s=parseInt(e[IR]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var hh=class extends B{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 Fa(a.reference);case"hoje":return fa(a.reference);case"amanha":case"amanh\xE3":return ar(a.reference);case"ontem":return tr(a.reference)}return r}};var gh=class extends B{innerPattern(){return/(?:esta\s*)?(manha|manhã|tarde|meia-noite|meio-dia|noite)(?=\W|$)/i}innerExtract(a,e){let t=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":let i=new Date(t.getTime());i.setDate(i.getDate()+1),Le(r,i),Gt(r,i),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 xS=new he(FR()),pq=new he(CS(!0));function mq(n,a,e){return xS.parse(n,a,e)}function hq(n,a,e){return xS.parseDate(n,a,e)}function FR(n=!0){let a=CS(!1,n);return a.parsers.push(new hh),a.parsers.push(new gh),a}function CS(n=!0,a=!0){return At({parsers:[new da(a),new ch,new dh,new mh],refiners:[new uh,new ph]},n)}var RS={};_a(RS,{Chrono:()=>he,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>AS,createCasualConfiguration:()=>VR,createConfiguration:()=>FS,parse:()=>Kq,parseDate:()=>Qq,strict:()=>Gq});var fh=class extends Bt{patternBetween(){return/^\s*(tot|-)\s*$/i}};var kh=class extends Vt{patternBetween(){return new RegExp("^\\s*(om|na|voor|in de|,|-)?\\s*$")}};var vh=class extends B{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 Fa(a.reference);case"vandaag":return fa(a.reference);case"morgen":case"morgend":return ar(a.reference);case"gisteren":return tr(a.reference)}return r}};var gq=1,fq=2,yh=class extends B{innerPattern(){return/(deze)?\s*(namiddag|avond|middernacht|ochtend|middag|'s middags|'s avonds|'s ochtends)(?=\W|$)/i}innerExtract(a,e){let t=a.refDate,r=a.createParsingComponents();switch(e[gq]==="deze"&&(r.assign("day",a.refDate.getDate()),r.assign("month",a.refDate.getMonth()+1),r.assign("year",a.refDate.getFullYear())),e[fq].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":let i=new Date(t.getTime());i.setDate(i.getDate()+1),Le(r,i),Gt(r,i),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 MS={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},no={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},DS={een:1,twee:2,drie:3,vier:4,vijf:5,zes:6,zeven:7,acht:8,negen:9,tien:10,elf:11,twaalf:12},ES={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},bh={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:"day",dagen:"day",week:"week",weken:"week",maand:"month",maanden:"month",jaar:"year",jr:"year",jaren:"year"},kq=`(?:${X(DS)}|[0-9]+|[0-9]+[\\.,][0-9]+|halve?|half|paar)`;function vq(n){let a=n.toLowerCase();return DS[a]!==void 0?DS[a]:a==="paar"?2:a==="half"||a.match(/halve?/)?.5:parseFloat(a.replace(",","."))}var PS=`(?:${X(ES)}|[0-9]{1,2}(?:ste|de)?)`;function IS(n){let a=n.toLowerCase();return ES[a]!==void 0?ES[a]:(a=a.replace(/(?:ste|de)$/i,""),parseInt(a))}var Ey="(?:[1-9][0-9]{0,3}\\s*(?:voor Christus|na Christus)|[1-2][0-9]{3}|[5-9][0-9])";function My(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 er(a)}var OR=`(${kq})\\s{0,5}(${X(bh)})\\s{0,5}`,RR=new RegExp(OR,"i"),ps=Ia("(?:(?:binnen|in)\\s*)?",OR);function ul(n){let a={},e=n,t=RR.exec(e);for(;t;)yq(a,t),e=e.substring(t[0].length),t=RR.exec(e);return a}function yq(n,a){let e=vq(a[1]),t=bh[a[2].toLowerCase()];n[t]=e}var wh=class extends B{innerPattern(){return new RegExp("(?:binnen|in|binnen de|voor)\\s*("+ps+")(?=\\W|$)","i")}innerExtract(a,e){let t=ul(e[1]);return Y.createRelativeFromReference(a.reference,t)}};var bq=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:op\\s*?)?(?:(deze|vorige|volgende)\\s*(?:week\\s*)?)?(${X(MS)})(?=\\W|$)`,"i"),wq=1,Tq=2,xq=3,Th=class extends B{innerPattern(){return bq}innerExtract(a,e){let t=e[Tq].toLowerCase(),r=MS[t],i=e[wq],s=e[xq],o=i||s;o=o||"",o=o.toLowerCase();let l=null;return o=="vorige"?l="last":o=="volgende"?l="next":o=="deze"&&(l="this"),Zt(a.reference,r,l)}};var Cq=new RegExp(`(?:on\\s*?)?(${PS})(?:\\s*(?:tot|\\-|\\\u2013|until|through|till|\\s)\\s*(${PS}))?(?:-|/|\\s*(?:of)?\\s*)(`+X(no)+`)(?:(?:-|/|,?\\s*)(${Ey}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),Sq=3,NR=1,LR=2,jR=4,xh=class extends B{innerPattern(){return Cq}innerExtract(a,e){let t=no[e[Sq].toLowerCase()],r=IS(e[NR]);if(r>31)return e.index=e.index+e[NR].length,null;let i=a.createParsingComponents({day:r,month:t});if(e[jR]){let l=My(e[jR]);i.assign("year",l)}else{let l=Ue(a.refDate,r,t);i.imply("year",l)}if(!e[LR])return i;let s=IS(e[LR]),o=a.createParsingResult(e.index,e[0]);return o.start=i,o.end=i.clone(),o.end.assign("day",s),o}};var Dq=new RegExp(`(${X(no)})\\s*(?:[,-]?\\s*(${Ey})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i"),Eq=1,HR=2,Ud=class extends B{innerPattern(){return Dq}innerExtract(a,e){let t=a.createParsingComponents();t.imply("day",1);let r=e[Eq],i=no[r.toLowerCase()];if(t.assign("month",i),e[HR]){let s=My(e[HR]);t.assign("year",s)}else{let s=Ue(a.refDate,1,i);t.imply("year",s)}return t}};var Mq=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i"),Pq=1,Iq=2,Ch=class extends B{innerPattern(){return Mq}innerExtract(a,e){let t=parseInt(e[Iq]),r=parseInt(e[Pq]);return a.createParsingComponents().imply("day",1).assign("month",r).assign("year",t)}};var Sh=class extends Aa{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 Aq=new RegExp(`([0-9]{4})[\\.\\/\\s](?:(${X(no)})|([0-9]{1,2}))[\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i"),Fq=1,Rq=2,BR=3,Oq=4,Dh=class extends B{innerPattern(){return Aq}innerExtract(a,e){let t=e[BR]?parseInt(e[BR]):no[e[Rq].toLowerCase()];if(t<1||t>12)return null;let r=parseInt(e[Fq]);return{day:parseInt(e[Oq]),month:t,year:r}}};var Nq=1,Lq=2,Eh=class extends B{innerPattern(a){return/(gisteren|morgen|van)(ochtend|middag|namiddag|avond|nacht)(?=\W|$)/i}innerExtract(a,e){let t=e[Nq].toLowerCase(),r=e[Lq].toLowerCase(),i=a.createParsingComponents(),s=a.refDate;switch(t){case"gisteren":let o=new Date(s.getTime());o.setDate(o.getDate()-1),Le(i,o);break;case"van":Le(i,s);break;case"morgen":let l=new Date(s.getTime());l.setDate(l.getDate()+1),Le(i,l),Gt(i,l);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 jq=new RegExp(`(dit|deze|vorig|afgelopen|(?:aan)?komend|over|\\+|-)e?\\s*(${ps})(?=\\W|$)`,"i"),Hq=1,Bq=2,Mh=class extends B{innerPattern(){return jq}innerExtract(a,e){let t=e[Hq].toLowerCase(),r=ul(e[Bq]);switch(t){case"vorig":case"afgelopen":case"-":r=dt(r);break}return Y.createRelativeFromReference(a.reference,r)}};var Vq=new RegExp(`(dit|deze|(?:aan)?komend|volgend|afgelopen|vorig)e?\\s*(${X(bh)})(?=\\s*)(?=\\W|$)`,"i"),Wq=1,zq=2,Ph=class extends B{innerPattern(){return Vq}innerExtract(a,e){let t=e[Wq].toLowerCase(),r=e[zq].toLowerCase(),i=bh[r];if(t=="volgend"||t=="komend"||t=="aankomend"){let l={};return l[i]=1,Y.createRelativeFromReference(a.reference,l)}if(t=="afgelopen"||t=="vorig"){let l={};return l[i]=-1,Y.createRelativeFromReference(a.reference,l)}let s=a.createParsingComponents(),o=new Date(a.reference.instant.getTime());return r.match(/week/i)?(o.setDate(o.getDate()-o.getDay()),s.imply("day",o.getDate()),s.imply("month",o.getMonth()+1),s.imply("year",o.getFullYear())):r.match(/maand/i)?(o.setDate(1),s.imply("day",o.getDate()),s.assign("year",o.getFullYear()),s.assign("month",o.getMonth()+1)):r.match(/jaar/i)&&(o.setDate(1),o.setMonth(0),s.imply("day",o.getDate()),s.imply("month",o.getMonth()+1),s.assign("year",o.getFullYear())),s}};var _q=new RegExp("("+ps+")(?:geleden|voor|eerder)(?=(?:\\W|$))","i"),Uq=new RegExp("("+ps+")geleden(?=(?:\\W|$))","i"),Ih=class extends B{constructor(e){super();W(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?Uq:_q}innerExtract(e,t){let r=ul(t[1]),i=dt(r);return Y.createRelativeFromReference(e.reference,i)}};var $q=new RegExp("("+ps+")(later|na|vanaf nu|voortaan|vooruit|uit)(?=(?:\\W|$))","i"),Yq=new RegExp("("+ps+")(later|vanaf nu)(?=(?:\\W|$))","i"),qq=1,Ah=class extends B{constructor(e){super();W(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?Yq:$q}innerExtract(e,t){let r=ul(t[qq]);return Y.createRelativeFromReference(e.reference,r)}};var AS=new he(VR()),Gq=new he(FS(!0));function Kq(n,a,e){return AS.parse(n,a,e)}function Qq(n,a,e){return AS.parseDate(n,a,e)}function VR(n=!0){let a=FS(!1,n);return a.parsers.unshift(new vh),a.parsers.unshift(new yh),a.parsers.unshift(new Eh),a.parsers.unshift(new Ud),a.parsers.unshift(new Ph),a.parsers.unshift(new Mh),a}function FS(n=!0,a=!0){return At({parsers:[new da(a),new wh,new xh,new Ud,new Th,new Dh,new Ch,new Sh(n),new Ih(n),new Ah(n)],refiners:[new kh,new fh]},n)}var GS={};_a(GS,{Chrono:()=>he,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>YS,createCasualConfiguration:()=>XR,createConfiguration:()=>qS,hans:()=>Uy,hant:()=>_y,parse:()=>C6,parseDate:()=>S6,strict:()=>x6});var rr={\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},$d={\u5929:0,\u65E5:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6};function Xi(n){let a=0;for(let e=0;e<n.length;e++){let t=n[e];t==="\u5341"?a=a===0?rr[t]:a*rr[t]:a+=rr[t]}return a}function WR(n){let a="";for(let e=0;e<n.length;e++){let t=n[e];a=a+rr[t]}return parseInt(a)}var OS=1,zR=2,NS=3,pc=class extends B{innerPattern(){return new RegExp("(\\d{2,4}|["+Object.keys(rr).join("")+"]{4}|["+Object.keys(rr).join("")+"]{2})?(?:\\s*)(?:\u5E74)?(?:[\\s|,|\uFF0C]*)(\\d{1,2}|["+Object.keys(rr).join("")+"]{1,3})(?:\\s*)(?:\u6708)(?:\\s*)(\\d{1,2}|["+Object.keys(rr).join("")+"]{1,3})?(?:\\s*)(?:\u65E5|\u53F7)?")}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=parseInt(e[zR]);if(isNaN(r)&&(r=Xi(e[zR])),t.start.assign("month",r),e[NS]){let i=parseInt(e[NS]);isNaN(i)&&(i=Xi(e[NS])),t.start.assign("day",i)}else t.start.imply("day",a.refDate.getDate());if(e[OS]){let i=parseInt(e[OS]);isNaN(i)&&(i=WR(e[OS])),t.start.assign("year",i)}else t.start.imply("year",a.refDate.getFullYear());return t}};var Xq=new RegExp("(\\d+|["+Object.keys(rr).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"),LS=1,Jq=2,mc=class extends B{innerPattern(){return Xq}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=parseInt(e[LS]);if(isNaN(r)&&(r=Xi(e[LS])),isNaN(r)){let d=e[LS];if(d==="\u51E0")r=3;else if(d==="\u534A")r=.5;else return null}let i={},o=e[Jq][0];if(o.match(/[日天星礼月年]/)){o=="\u65E5"||o=="\u5929"?i.day=r:o=="\u661F"||o=="\u793C"?i.week=r:o=="\u6708"?i.month=r:o=="\u5E74"&&(i.year=r);let d=Ct(a.refDate,i);return t.start.assign("year",d.getFullYear()),t.start.assign("month",d.getMonth()+1),t.start.assign("day",d.getDate()),t}o=="\u79D2"?i.second=r:o=="\u5206"?i.minute=r:(o=="\u5C0F"||o=="\u949F")&&(i.hour=r);let l=Ct(a.refDate,i);return t.start.imply("year",l.getFullYear()),t.start.imply("month",l.getMonth()+1),t.start.imply("day",l.getDate()),t.start.assign("hour",l.getHours()),t.start.assign("minute",l.getMinutes()),t.start.assign("second",l.getSeconds()),t}};var Zq=new RegExp("(?<prefix>\u4E0A|\u4E0B|\u8FD9)(?:\u4E2A)?(?:\u661F\u671F|\u793C\u62DC|\u5468)(?<weekday>"+Object.keys($d).join("|")+")"),hc=class extends B{innerPattern(){return Zq}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=e.groups.weekday,i=$d[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=new Date(a.refDate.getTime()),d=!1,u=l.getDay();if(s=="last"||s=="past")l.setDate(l.getDate()+(i-7-u)),d=!0;else if(s=="next")l.setDate(l.getDate()+(i+7-u)),d=!0;else if(s=="this")l.setDate(l.getDate()+(i-u));else{let p=i-u;Math.abs(p-7)<Math.abs(p)&&(p-=7),Math.abs(p+7)<Math.abs(p)&&(p+=7),l.setDate(l.getDate()+p)}return t.start.assign("weekday",i),d?(t.start.assign("day",l.getDate()),t.start.assign("month",l.getMonth()+1),t.start.assign("year",l.getFullYear())):(t.start.imply("day",l.getDate()),t.start.imply("month",l.getMonth()+1),t.start.imply("year",l.getFullYear())),t}};var e6=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(rr).join("")+"]+)(?:\\s*)(?:\u70B9|\u65F6|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(rr).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(rr).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),t6=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(rr).join("")+"]+)(?:\\s*)(?:\u70B9|\u65F6|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(rr).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(rr).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),Py=1,Iy=2,Ay=3,Fy=4,Ry=5,Oy=6,Ji=7,Yd=8,Ny=9,gc=class extends B{innerPattern(){return e6}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=new Date(a.refDate.getTime());if(e[Py]){let u=e[Py];u=="\u660E"?a.refDate.getHours()>1&&r.setDate(r.getDate()+1):u=="\u6628"?r.setDate(r.getDate()-1):u=="\u524D"?r.setDate(r.getDate()-2):u=="\u5927\u524D"?r.setDate(r.getDate()-3):u=="\u540E"?r.setDate(r.getDate()+2):u=="\u5927\u540E"&&r.setDate(r.getDate()+3),t.start.assign("day",r.getDate()),t.start.assign("month",r.getMonth()+1),t.start.assign("year",r.getFullYear())}else if(e[Fy]){let u=e[Fy];u=="\u660E"?r.setDate(r.getDate()+1):u=="\u6628"?r.setDate(r.getDate()-1):u=="\u524D"?r.setDate(r.getDate()-2):u=="\u5927\u524D"?r.setDate(r.getDate()-3):u=="\u540E"?r.setDate(r.getDate()+2):u=="\u5927\u540E"&&r.setDate(r.getDate()+3),t.start.assign("day",r.getDate()),t.start.assign("month",r.getMonth()+1),t.start.assign("year",r.getFullYear())}else t.start.imply("day",r.getDate()),t.start.imply("month",r.getMonth()+1),t.start.imply("year",r.getFullYear());let i=0,s=0,o=-1;if(e[Yd]){let u=parseInt(e[Yd]);if(isNaN(u)&&(u=Xi(e[Yd])),u>=60)return null;t.start.assign("second",u)}if(i=parseInt(e[Oy]),isNaN(i)&&(i=Xi(e[Oy])),e[Ji]?e[Ji]=="\u534A"?s=30:e[Ji]=="\u6B63"||e[Ji]=="\u6574"?s=0:(s=parseInt(e[Ji]),isNaN(s)&&(s=Xi(e[Ji]))):i>100&&(s=i%100,i=Math.floor(i/100)),s>=60||i>24)return null;if(i>=12&&(o=1),e[Ny]){if(i>12)return null;let u=e[Ny][0].toLowerCase();u=="a"&&(o=0,i==12&&(i=0)),u=="p"&&(o=1,i!=12&&(i+=12))}else if(e[Iy]){let p=e[Iy][0];p=="\u65E9"?(o=0,i==12&&(i=0)):p=="\u665A"&&(o=1,i!=12&&(i+=12))}else if(e[Ay]){let p=e[Ay][0];p=="\u4E0A"||p=="\u65E9"||p=="\u51CC"?(o=0,i==12&&(i=0)):(p=="\u4E0B"||p=="\u665A")&&(o=1,i!=12&&(i+=12))}else if(e[Ry]){let p=e[Ry][0];p=="\u4E0A"||p=="\u65E9"||p=="\u51CC"?(o=0,i==12&&(i=0)):(p=="\u4E0B"||p=="\u665A")&&(o=1,i!=12&&(i+=12))}t.start.assign("hour",i),t.start.assign("minute",s),o>=0?t.start.assign("meridiem",o):i<12?t.start.imply("meridiem",0):t.start.imply("meridiem",1);let l=t6.exec(a.text.substring(t.index+t.text.length));if(!l)return t.text.match(/^\d+$/)?null:t;let d=new Date(r.getTime());if(t.end=a.createParsingComponents(),l[Py]){let u=l[Py];u=="\u660E"?a.refDate.getHours()>1&&d.setDate(d.getDate()+1):u=="\u6628"?d.setDate(d.getDate()-1):u=="\u524D"?d.setDate(d.getDate()-2):u=="\u5927\u524D"?d.setDate(d.getDate()-3):u=="\u540E"?d.setDate(d.getDate()+2):u=="\u5927\u540E"&&d.setDate(d.getDate()+3),t.end.assign("day",d.getDate()),t.end.assign("month",d.getMonth()+1),t.end.assign("year",d.getFullYear())}else if(l[Fy]){let u=l[Fy];u=="\u660E"?d.setDate(d.getDate()+1):u=="\u6628"?d.setDate(d.getDate()-1):u=="\u524D"?d.setDate(d.getDate()-2):u=="\u5927\u524D"?d.setDate(d.getDate()-3):u=="\u540E"?d.setDate(d.getDate()+2):u=="\u5927\u540E"&&d.setDate(d.getDate()+3),t.end.assign("day",d.getDate()),t.end.assign("month",d.getMonth()+1),t.end.assign("year",d.getFullYear())}else t.end.imply("day",d.getDate()),t.end.imply("month",d.getMonth()+1),t.end.imply("year",d.getFullYear());if(i=0,s=0,o=-1,l[Yd]){let u=parseInt(l[Yd]);if(isNaN(u)&&(u=Xi(l[Yd])),u>=60)return null;t.end.assign("second",u)}if(i=parseInt(l[Oy]),isNaN(i)&&(i=Xi(l[Oy])),l[Ji]?l[Ji]=="\u534A"?s=30:l[Ji]=="\u6B63"||l[Ji]=="\u6574"?s=0:(s=parseInt(l[Ji]),isNaN(s)&&(s=Xi(l[Ji]))):i>100&&(s=i%100,i=Math.floor(i/100)),s>=60||i>24)return null;if(i>=12&&(o=1),l[Ny]){if(i>12)return null;let u=l[Ny][0].toLowerCase();u=="a"&&(o=0,i==12&&(i=0)),u=="p"&&(o=1,i!=12&&(i+=12)),t.start.isCertain("meridiem")||(o==0?(t.start.imply("meridiem",0),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(l[Iy]){let p=l[Iy][0];p=="\u65E9"?(o=0,i==12&&(i=0)):p=="\u665A"&&(o=1,i!=12&&(i+=12))}else if(l[Ay]){let p=l[Ay][0];p=="\u4E0A"||p=="\u65E9"||p=="\u51CC"?(o=0,i==12&&(i=0)):(p=="\u4E0B"||p=="\u665A")&&(o=1,i!=12&&(i+=12))}else if(l[Ry]){let p=l[Ry][0];p=="\u4E0A"||p=="\u65E9"||p=="\u51CC"?(o=0,i==12&&(i=0)):(p=="\u4E0B"||p=="\u665A")&&(o=1,i!=12&&(i+=12))}return t.text=t.text+l[0],t.end.assign("hour",i),t.end.assign("minute",s),o>=0?t.end.assign("meridiem",o):t.start.isCertain("meridiem")&&t.start.get("meridiem")==1&&t.start.get("hour")>i?t.end.imply("meridiem",0):i>12&&t.end.imply("meridiem",1),t.end.date().getTime()<t.start.date().getTime()&&t.end.imply("day",t.end.get("day")+1),t}};var a6=new RegExp("(?:\u661F\u671F|\u793C\u62DC|\u5468)(?<weekday>"+Object.keys($d).join("|")+")"),fc=class extends B{innerPattern(){return a6}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=e.groups.weekday,i=$d[r];if(i===void 0)return null;let s=new Date(a.refDate.getTime()),o=!1,l=s.getDay(),d=i-l;return Math.abs(d-7)<Math.abs(d)&&(d-=7),Math.abs(d+7)<Math.abs(d)&&(d+=7),s.setDate(s.getDate()+d),t.start.assign("weekday",i),o?(t.start.assign("day",s.getDate()),t.start.assign("month",s.getMonth()+1),t.start.assign("year",s.getFullYear())):(t.start.imply("day",s.getDate()),t.start.imply("month",s.getMonth()+1),t.start.imply("year",s.getFullYear())),t}};var r6=1,_R=2,i6=3,UR=4,$R=5,n6=6,kc=class extends B{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=a.refDate,s=new Date(i.getTime());if(e[r6])r.start.imply("hour",i.getHours()),r.start.imply("minute",i.getMinutes()),r.start.imply("second",i.getSeconds()),r.start.imply("millisecond",i.getMilliseconds());else if(e[_R]){let o=e[_R],l=e[i6];o=="\u660E"||o=="\u807D"?i.getHours()>1&&s.setDate(s.getDate()+1):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?s.setDate(s.getDate()-1):o=="\u524D"?s.setDate(s.getDate()-2):o=="\u5927\u524D"?s.setDate(s.getDate()-3):o=="\u5F8C"?s.setDate(s.getDate()+2):o=="\u5927\u5F8C"&&s.setDate(s.getDate()+3),l=="\u65E9"||l=="\u671D"?r.start.imply("hour",6):l=="\u665A"&&(r.start.imply("hour",22),r.start.imply("meridiem",1))}else if(e[UR]){let l=e[UR][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[$R]){let o=e[$R];o=="\u660E"||o=="\u807D"?i.getHours()>1&&s.setDate(s.getDate()+1):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?s.setDate(s.getDate()-1):o=="\u524D"?s.setDate(s.getDate()-2):o=="\u5927\u524D"?s.setDate(s.getDate()-3):o=="\u5F8C"?s.setDate(s.getDate()+2):o=="\u5927\u5F8C"&&s.setDate(s.getDate()+3);let l=e[n6];if(l){let d=l[0];d=="\u65E9"||d=="\u671D"||d=="\u4E0A"?r.start.imply("hour",6):d=="\u4E0B"||d=="\u664F"?(r.start.imply("hour",15),r.start.imply("meridiem",1)):d=="\u4E2D"?(r.start.imply("hour",12),r.start.imply("meridiem",1)):d=="\u591C"||d=="\u665A"?(r.start.imply("hour",22),r.start.imply("meridiem",1)):d=="\u51CC"&&r.start.imply("hour",0)}}return r.start.assign("day",s.getDate()),r.start.assign("month",s.getMonth()+1),r.start.assign("year",s.getFullYear()),r}};var ir={\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},qd={\u5929:0,\u65E5:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6};function Zi(n){let a=0;for(let e=0;e<n.length;e++){let t=n[e];t==="\u5341"?a=a===0?ir[t]:a*ir[t]:a+=ir[t]}return a}function YR(n){let a="";for(let e=0;e<n.length;e++){let t=n[e];a=a+ir[t]}return parseInt(a)}var jS=1,qR=2,HS=3,vc=class extends B{innerPattern(){return new RegExp("(\\d{2,4}|["+Object.keys(ir).join("")+"]{4}|["+Object.keys(ir).join("")+"]{2})?(?:\\s*)(?:\u5E74)?(?:[\\s|,|\uFF0C]*)(\\d{1,2}|["+Object.keys(ir).join("")+"]{1,2})(?:\\s*)(?:\u6708)(?:\\s*)(\\d{1,2}|["+Object.keys(ir).join("")+"]{1,2})?(?:\\s*)(?:\u65E5|\u865F)?")}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=parseInt(e[qR]);if(isNaN(r)&&(r=Zi(e[qR])),t.start.assign("month",r),e[HS]){let i=parseInt(e[HS]);isNaN(i)&&(i=Zi(e[HS])),t.start.assign("day",i)}else t.start.imply("day",a.refDate.getDate());if(e[jS]){let i=parseInt(e[jS]);isNaN(i)&&(i=YR(e[jS])),t.start.assign("year",i)}else t.start.imply("year",a.refDate.getFullYear());return t}};var s6=new RegExp("(\\d+|["+Object.keys(ir).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"),BS=1,o6=2,yc=class extends B{innerPattern(){return s6}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=parseInt(e[BS]);if(isNaN(r)&&(r=Zi(e[BS])),isNaN(r)){let d=e[BS];if(d==="\u5E7E")r=3;else if(d==="\u534A")r=.5;else return null}let i={},o=e[o6][0];if(o.match(/[日天星禮月年]/)){o=="\u65E5"||o=="\u5929"?i.day=r:o=="\u661F"||o=="\u79AE"?i.week=r:o=="\u6708"?i.month=r:o=="\u5E74"&&(i.year=r);let d=Ct(a.refDate,i);return t.start.assign("year",d.getFullYear()),t.start.assign("month",d.getMonth()+1),t.start.assign("day",d.getDate()),t}o=="\u79D2"?i.second=r:o=="\u5206"?i.minute=r:(o=="\u5C0F"||o=="\u9418")&&(i.hour=r);let l=Ct(a.refDate,i);return t.start.imply("year",l.getFullYear()),t.start.imply("month",l.getMonth()+1),t.start.imply("day",l.getDate()),t.start.assign("hour",l.getHours()),t.start.assign("minute",l.getMinutes()),t.start.assign("second",l.getSeconds()),t}};var l6=new RegExp("(?<prefix>\u4E0A|\u4ECA|\u4E0B|\u9019|\u5462)(?:\u500B)?(?:\u661F\u671F|\u79AE\u62DC|\u9031)(?<weekday>"+Object.keys(qd).join("|")+")"),bc=class extends B{innerPattern(){return l6}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=e.groups.weekday,i=qd[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=new Date(a.refDate.getTime()),d=!1,u=l.getDay();if(s=="last"||s=="past")l.setDate(l.getDate()+(i-7-u)),d=!0;else if(s=="next")l.setDate(l.getDate()+(i+7-u)),d=!0;else if(s=="this")l.setDate(l.getDate()+(i-u));else{let p=i-u;Math.abs(p-7)<Math.abs(p)&&(p-=7),Math.abs(p+7)<Math.abs(p)&&(p+=7),l.setDate(l.getDate()+p)}return t.start.assign("weekday",i),d?(t.start.assign("day",l.getDate()),t.start.assign("month",l.getMonth()+1),t.start.assign("year",l.getFullYear())):(t.start.imply("day",l.getDate()),t.start.imply("month",l.getMonth()+1),t.start.imply("year",l.getFullYear())),t}};var c6=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(ir).join("")+"]+)(?:\\s*)(?:\u9EDE|\u6642|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(ir).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(ir).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),d6=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(ir).join("")+"]+)(?:\\s*)(?:\u9EDE|\u6642|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(ir).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(ir).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),Ly=1,jy=2,Hy=3,By=4,Vy=5,Wy=6,en=7,Gd=8,zy=9,wc=class extends B{innerPattern(){return c6}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=new Date(a.refDate.getTime());if(e[Ly]){let y=e[Ly];y=="\u660E"||y=="\u807D"?a.refDate.getHours()>1&&r.setDate(r.getDate()+1):y=="\u6628"||y=="\u5C0B"||y=="\u7434"?r.setDate(r.getDate()-1):y=="\u524D"?r.setDate(r.getDate()-2):y=="\u5927\u524D"?r.setDate(r.getDate()-3):y=="\u5F8C"?r.setDate(r.getDate()+2):y=="\u5927\u5F8C"&&r.setDate(r.getDate()+3),t.start.assign("day",r.getDate()),t.start.assign("month",r.getMonth()+1),t.start.assign("year",r.getFullYear())}else if(e[By]){let y=e[By];y=="\u660E"||y=="\u807D"?r.setDate(r.getDate()+1):y=="\u6628"||y=="\u5C0B"||y=="\u7434"?r.setDate(r.getDate()-1):y=="\u524D"?r.setDate(r.getDate()-2):y=="\u5927\u524D"?r.setDate(r.getDate()-3):y=="\u5F8C"?r.setDate(r.getDate()+2):y=="\u5927\u5F8C"&&r.setDate(r.getDate()+3),t.start.assign("day",r.getDate()),t.start.assign("month",r.getMonth()+1),t.start.assign("year",r.getFullYear())}else t.start.imply("day",r.getDate()),t.start.imply("month",r.getMonth()+1),t.start.imply("year",r.getFullYear());let i=0,s=0,o=-1;if(e[Gd]){var l=parseInt(e[Gd]);if(isNaN(l)&&(l=Zi(e[Gd])),l>=60)return null;t.start.assign("second",l)}if(i=parseInt(e[Wy]),isNaN(i)&&(i=Zi(e[Wy])),e[en]?e[en]=="\u534A"?s=30:e[en]=="\u6B63"||e[en]=="\u6574"?s=0:(s=parseInt(e[en]),isNaN(s)&&(s=Zi(e[en]))):i>100&&(s=i%100,i=Math.floor(i/100)),s>=60||i>24)return null;if(i>=12&&(o=1),e[zy]){if(i>12)return null;var d=e[zy][0].toLowerCase();d=="a"&&(o=0,i==12&&(i=0)),d=="p"&&(o=1,i!=12&&(i+=12))}else if(e[jy]){var u=e[jy],p=u[0];p=="\u671D"||p=="\u65E9"?(o=0,i==12&&(i=0)):p=="\u665A"&&(o=1,i!=12&&(i+=12))}else if(e[Hy]){var m=e[Hy],h=m[0];h=="\u4E0A"||h=="\u671D"||h=="\u65E9"||h=="\u51CC"?(o=0,i==12&&(i=0)):(h=="\u4E0B"||h=="\u664F"||h=="\u665A")&&(o=1,i!=12&&(i+=12))}else if(e[Vy]){var g=e[Vy],f=g[0];f=="\u4E0A"||f=="\u671D"||f=="\u65E9"||f=="\u51CC"?(o=0,i==12&&(i=0)):(f=="\u4E0B"||f=="\u664F"||f=="\u665A")&&(o=1,i!=12&&(i+=12))}t.start.assign("hour",i),t.start.assign("minute",s),o>=0?t.start.assign("meridiem",o):i<12?t.start.imply("meridiem",0):t.start.imply("meridiem",1);let k=d6.exec(a.text.substring(t.index+t.text.length));if(!k)return t.text.match(/^\d+$/)?null:t;let v=new Date(r.getTime());if(t.end=a.createParsingComponents(),k[Ly]){let y=k[Ly];y=="\u660E"||y=="\u807D"?a.refDate.getHours()>1&&v.setDate(v.getDate()+1):y=="\u6628"||y=="\u5C0B"||y=="\u7434"?v.setDate(v.getDate()-1):y=="\u524D"?v.setDate(v.getDate()-2):y=="\u5927\u524D"?v.setDate(v.getDate()-3):y=="\u5F8C"?v.setDate(v.getDate()+2):y=="\u5927\u5F8C"&&v.setDate(v.getDate()+3),t.end.assign("day",v.getDate()),t.end.assign("month",v.getMonth()+1),t.end.assign("year",v.getFullYear())}else if(k[By]){let y=k[By];y=="\u660E"||y=="\u807D"?v.setDate(v.getDate()+1):y=="\u6628"||y=="\u5C0B"||y=="\u7434"?v.setDate(v.getDate()-1):y=="\u524D"?v.setDate(v.getDate()-2):y=="\u5927\u524D"?v.setDate(v.getDate()-3):y=="\u5F8C"?v.setDate(v.getDate()+2):y=="\u5927\u5F8C"&&v.setDate(v.getDate()+3),t.end.assign("day",v.getDate()),t.end.assign("month",v.getMonth()+1),t.end.assign("year",v.getFullYear())}else t.end.imply("day",v.getDate()),t.end.imply("month",v.getMonth()+1),t.end.imply("year",v.getFullYear());if(i=0,s=0,o=-1,k[Gd]){let y=parseInt(k[Gd]);if(isNaN(y)&&(y=Zi(k[Gd])),y>=60)return null;t.end.assign("second",y)}if(i=parseInt(k[Wy]),isNaN(i)&&(i=Zi(k[Wy])),k[en]?k[en]=="\u534A"?s=30:k[en]=="\u6B63"||k[en]=="\u6574"?s=0:(s=parseInt(k[en]),isNaN(s)&&(s=Zi(k[en]))):i>100&&(s=i%100,i=Math.floor(i/100)),s>=60||i>24)return null;if(i>=12&&(o=1),k[zy]){if(i>12)return null;var d=k[zy][0].toLowerCase();d=="a"&&(o=0,i==12&&(i=0)),d=="p"&&(o=1,i!=12&&(i+=12)),t.start.isCertain("meridiem")||(o==0?(t.start.imply("meridiem",0),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(k[jy]){var p=k[jy][0];p=="\u671D"||p=="\u65E9"?(o=0,i==12&&(i=0)):p=="\u665A"&&(o=1,i!=12&&(i+=12))}else if(k[Hy]){var h=k[Hy][0];h=="\u4E0A"||h=="\u671D"||h=="\u65E9"||h=="\u51CC"?(o=0,i==12&&(i=0)):(h=="\u4E0B"||h=="\u664F"||h=="\u665A")&&(o=1,i!=12&&(i+=12))}else if(k[Vy]){var f=k[Vy][0];f=="\u4E0A"||f=="\u671D"||f=="\u65E9"||f=="\u51CC"?(o=0,i==12&&(i=0)):(f=="\u4E0B"||f=="\u664F"||f=="\u665A")&&(o=1,i!=12&&(i+=12))}return t.text=t.text+k[0],t.end.assign("hour",i),t.end.assign("minute",s),o>=0?t.end.assign("meridiem",o):t.start.isCertain("meridiem")&&t.start.get("meridiem")==1&&t.start.get("hour")>i?t.end.imply("meridiem",0):i>12&&t.end.imply("meridiem",1),t.end.date().getTime()<t.start.date().getTime()&&t.end.imply("day",t.end.get("day")+1),t}};var u6=new RegExp("(?:\u661F\u671F|\u79AE\u62DC|\u9031)(?<weekday>"+Object.keys(qd).join("|")+")"),Tc=class extends B{innerPattern(){return u6}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=e.groups.weekday,i=qd[r];if(i===void 0)return null;let s=new Date(a.refDate.getTime()),o=!1,l=s.getDay(),d=i-l;return Math.abs(d-7)<Math.abs(d)&&(d-=7),Math.abs(d+7)<Math.abs(d)&&(d+=7),s.setDate(s.getDate()+d),t.start.assign("weekday",i),o?(t.start.assign("day",s.getDate()),t.start.assign("month",s.getMonth()+1),t.start.assign("year",s.getFullYear())):(t.start.imply("day",s.getDate()),t.start.imply("month",s.getMonth()+1),t.start.imply("year",s.getFullYear())),t}};var xc=class extends Bt{patternBetween(){return/^\s*(至|到|\-|\~|||ー)\s*$/i}};var Cc=class extends Vt{patternBetween(){return/^\s*$/i}};var _y={};_a(_y,{Chrono:()=>he,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>VS,createCasualConfiguration:()=>WS,createConfiguration:()=>zS,hant:()=>p6,parse:()=>h6,parseDate:()=>g6,strict:()=>m6});var p6=new he(WS()),VS=new he(WS()),m6=new he(zS());function h6(n,a,e){return VS.parse(n,a,e)}function g6(n,a,e){return VS.parseDate(n,a,e)}function WS(){let n=zS();return n.parsers.unshift(new kc),n}function zS(){let n=At({parsers:[new vc,new bc,new Tc,new wc,new yc],refiners:[new xc,new Cc]});return n.refiners=n.refiners.filter(a=>!(a instanceof Mn)),n}var Uy={};_a(Uy,{Chrono:()=>he,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>_S,createCasualConfiguration:()=>US,createConfiguration:()=>$S,hans:()=>y6,parse:()=>w6,parseDate:()=>T6,strict:()=>b6});var f6=1,GR=2,k6=3,KR=4,QR=5,v6=6,Fh=class extends B{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=a.refDate,s=new Date(i.getTime());if(e[f6])r.start.imply("hour",i.getHours()),r.start.imply("minute",i.getMinutes()),r.start.imply("second",i.getSeconds()),r.start.imply("millisecond",i.getMilliseconds());else if(e[GR]){let o=e[GR],l=e[k6];o=="\u660E"?i.getHours()>1&&s.setDate(s.getDate()+1):o=="\u6628"?s.setDate(s.getDate()-1):o=="\u524D"?s.setDate(s.getDate()-2):o=="\u5927\u524D"?s.setDate(s.getDate()-3):o=="\u540E"?s.setDate(s.getDate()+2):o=="\u5927\u540E"&&s.setDate(s.getDate()+3),l=="\u65E9"?r.start.imply("hour",6):l=="\u665A"&&(r.start.imply("hour",22),r.start.imply("meridiem",1))}else if(e[KR]){let l=e[KR][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[QR]){let o=e[QR];o=="\u660E"?i.getHours()>1&&s.setDate(s.getDate()+1):o=="\u6628"?s.setDate(s.getDate()-1):o=="\u524D"?s.setDate(s.getDate()-2):o=="\u5927\u524D"?s.setDate(s.getDate()-3):o=="\u540E"?s.setDate(s.getDate()+2):o=="\u5927\u540E"&&s.setDate(s.getDate()+3);let l=e[v6];if(l){let d=l[0];d=="\u65E9"||d=="\u4E0A"?r.start.imply("hour",6):d=="\u4E0B"?(r.start.imply("hour",15),r.start.imply("meridiem",1)):d=="\u4E2D"?(r.start.imply("hour",12),r.start.imply("meridiem",1)):d=="\u591C"||d=="\u665A"?(r.start.imply("hour",22),r.start.imply("meridiem",1)):d=="\u51CC"&&r.start.imply("hour",0)}}return r.start.assign("day",s.getDate()),r.start.assign("month",s.getMonth()+1),r.start.assign("year",s.getFullYear()),r}};var Rh=class extends Bt{patternBetween(){return/^\s*(至|到|-|~|||ー)\s*$/i}};var Oh=class extends Vt{patternBetween(){return/^\s*$/i}};var y6=new he(US()),_S=new he(US()),b6=new he($S());function w6(n,a,e){return _S.parse(n,a,e)}function T6(n,a,e){return _S.parseDate(n,a,e)}function US(){let n=$S();return n.parsers.unshift(new Fh),n}function $S(){let n=At({parsers:[new pc,new hc,new fc,new gc,new mc],refiners:[new Rh,new Oh]});return n.refiners=n.refiners.filter(a=>!(a instanceof Mn)),n}var YS=new he(XR()),x6=new he(qS());function C6(n,a,e){return YS.parse(n,a,e)}function S6(n,a,e){return YS.parseDate(n,a,e)}function XR(){let n=qS();return n.parsers.unshift(new kc),n}function qS(){let n=At({parsers:[new vc,new pc,new bc,new hc,new Tc,new fc,new wc,new gc,new yc,new mc],refiners:[new xc,new Cc]});return n.refiners=n.refiners.filter(a=>!(a instanceof Mn)),n}var iD={};_a(iD,{Chrono:()=>he,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>aD,createCasualConfiguration:()=>nO,createConfiguration:()=>rD,parse:()=>j6,parseDate:()=>H6,strict:()=>L6});var Ei={leftBoundary:"([^\\p{L}\\p{N}_]|^)",rightBoundary:"(?=[^\\p{L}\\p{N}_]|$)",flags:"iu"},JS={\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},ZS={\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},Kd={...ZS,\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},QS={\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},XS={\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},Nh={\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:"day",\u0434\u043D\u044F:"day",\u0434\u043D\u0435\u0439:"day",\u0441\u0443\u0442\u043E\u043A:"day",\u0441\u0443\u0442\u043A\u0438:"day",\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"},D6=`(?:${X(QS)}|[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 E6(n){let a=n.toLowerCase();return QS[a]!==void 0?QS[a]:a.match(/несколько/)?3:a.match(/пол/)?.5:a.match(/пар/)?2:a===""?1:parseFloat(a)}var eD=`(?:${X(XS)}|[0-9]{1,2}(?:\u0433\u043E|\u043E\u0433\u043E|\u0435|\u043E\u0435)?)`;function tD(n){let a=n.toLowerCase();return XS[a]!==void 0?XS[a]:parseInt(a)}var KS="(?:\\s+(?:\u0433\u043E\u0434\u0443|\u0433\u043E\u0434\u0430|\u0433\u043E\u0434|\u0433|\u0433.))?",$y=`(?:[1-9][0-9]{0,3}${KS}\\s*(?:\u043D.\u044D.|\u0434\u043E \u043D.\u044D.|\u043D. \u044D.|\u0434\u043E \u043D. \u044D.)|[1-2][0-9]{3}${KS}|[5-9][0-9]${KS})`;function Yy(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 er(a)}var ZR=`(${D6})\\s{0,3}(${X(Nh)})`,JR=new RegExp(ZR,"i"),Qd=Ia("(?:(?:\u043E\u043A\u043E\u043B\u043E|\u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E)\\s{0,3})?",ZR);function Xd(n){let a={},e=n,t=JR.exec(e);for(;t;)M6(a,t),e=e.substring(t[0].length).trim(),t=JR.exec(e);return a}function M6(n,a){let e=E6(a[1]),t=Nh[a[2].toLowerCase()];n[t]=e}var eO=`(?:(?:\u043E\u043A\u043E\u043B\u043E|\u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E)\\s*(?:~\\s*)?)?(${Qd})${Ei.rightBoundary}`,Lh=class extends B{patternLeftBoundary(){return Ei.leftBoundary}innerPattern(a){return a.option.forwardDate?new RegExp(eO,Ei.flags):new RegExp(`(?:\u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435|\u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0438)\\s*${eO}`,Ei.flags)}innerExtract(a,e){let t=Xd(e[1]);return Y.createRelativeFromReference(a.reference,t)}};var Sc=class extends B{patternLeftBoundary(){return Ei.leftBoundary}innerPattern(a){return new RegExp(this.innerPatternString(a),Ei.flags)}innerPatternHasChange(a,e){return!1}},ni=class extends Sc{innerPattern(a){return new RegExp(`${this.innerPatternString(a)}${Ei.rightBoundary}`,Ei.flags)}};var tO=1,aO=2,P6=3,rO=4,jh=class extends ni{innerPatternString(a){return`(?:\u0441)?\\s*(${eD})(?:\\s{0,3}(?:\u043F\u043E|-|\u2013|\u0434\u043E)?\\s{0,3}(${eD}))?(?:-|\\/|\\s{0,3}(?:of)?\\s{0,3})(${X(Kd)})(?:(?:-|\\/|,?\\s{0,3})(${$y}(?![^\\s]\\d)))?`}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=Kd[e[P6].toLowerCase()],i=tD(e[tO]);if(i>31)return e.index=e.index+e[tO].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[rO]){let s=Yy(e[rO]);t.start.assign("year",s)}else{let s=Ue(a.refDate,i,r);t.start.imply("year",s)}if(e[aO]){let s=tD(e[aO]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var I6=2,iO=3,Hh=class extends Sc{innerPatternString(a){return`((?:\u0432)\\s*)?(${X(Kd)})\\s*(?:[,-]?\\s*(${$y})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`}innerExtract(a,e){let t=e[I6].toLowerCase();if(e[0].length<=3&&!ZS[t])return null;let r=a.createParsingResult(e.index,e.index+e[0].length);r.start.imply("day",1);let i=Kd[t];if(r.start.assign("month",i),e[iO]){let s=Yy(e[iO]);r.start.assign("year",s)}else{let s=Ue(a.refDate,1,i);r.start.imply("year",s)}return r}};var Bh=class extends Aa{constructor(a){super(a)}patternFlags(){return Ei.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))?(?!\\/)${Ei.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 Vh=class extends Sc{innerPatternString(a){return`(${Qd})\\s{0,5}\u043D\u0430\u0437\u0430\u0434(?=(?:\\W|$))`}innerExtract(a,e){let t=Xd(e[1]),r=dt(t);return Y.createRelativeFromReference(a.reference,r)}};var Wh=class extends Bt{patternBetween(){return/^\s*(и до|и по|до|по|-)\s*$/i}};var zh=class extends Vt{patternBetween(){return new RegExp("^\\s*(T|\u0432|,|-)?\\s*$")}};var _h=class extends ni{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 fa(a.reference);case"\u0432\u0447\u0435\u0440\u0430":return tr(a.reference);case"\u0437\u0430\u0432\u0442\u0440\u0430":return ar(a.reference);case"\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430":return ds(a.reference,2);case"\u043F\u043E\u0441\u043B\u0435\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430":return ds(a.reference,3);case"\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430":return lc(a.reference,2);case"\u043F\u043E\u0437\u0430\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430":return lc(a.reference,3)}return r}};var Uh=class extends ni{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=a.refDate,r=e[0].toLowerCase(),i=a.createParsingComponents();if(r==="\u0441\u0435\u0439\u0447\u0430\u0441")return Fa(a.reference);if(r==="\u0432\u0435\u0447\u0435\u0440\u043E\u043C"||r==="\u0432\u0435\u0447\u0435\u0440\u0430")return Vd(a.reference);if(r.endsWith("\u0443\u0442\u0440\u043E\u043C")||r.endsWith("\u0443\u0442\u0440\u0430"))return Wd(a.reference);if(r.match(/в\s*полдень/))return zd(a.reference);if(r.match(/прошлой\s*ночью/))return by(a.reference);if(r.match(/прошлым\s*вечером/))return wy(a.reference);if(r.match(/следующей\s*ночью/)){let s=t.getHours()<22?1:2,o=new Date(t.getTime());o.setDate(o.getDate()+s),Le(i,o),i.imply("hour",0)}return r.match(/в\s*полночь/)||r.endsWith("\u043D\u043E\u0447\u044C\u044E")?cc(a.reference):i}};var A6=1,F6=2,R6=3,$h=class extends ni{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*)?(${X(JS)})(?:\\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[F6].toLowerCase(),r=JS[t],i=e[A6],s=e[R6],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"),Zt(a.reference,r,l)}};var O6=1,N6=2,Yh=class extends ni{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*(${X(Nh)})`}innerExtract(a,e){let t=e[O6].toLowerCase(),r=e[N6].toLowerCase(),i=Nh[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,Y.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,Y.createRelativeFromReference(a.reference,l)}let s=a.createParsingComponents(),o=new Date(a.reference.instant.getTime());return i.match(/week/i)?(o.setDate(o.getDate()-o.getDay()),s.imply("day",o.getDate()),s.imply("month",o.getMonth()+1),s.imply("year",o.getFullYear())):i.match(/month/i)?(o.setDate(1),s.imply("day",o.getDate()),s.assign("year",o.getFullYear()),s.assign("month",o.getMonth()+1)):i.match(/year/i)&&(o.setDate(1),o.setMonth(0),s.imply("day",o.getDate()),s.imply("month",o.getMonth()+1),s.assign("year",o.getFullYear())),s}};var qh=class extends ni{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*(${Qd})`}innerExtract(a,e){let t=e[1].toLowerCase(),r=Xd(e[2]);switch(t){case"\u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435":case"\u043F\u0440\u043E\u0448\u043B\u044B\u0435":case"-":r=dt(r);break}return Y.createRelativeFromReference(a.reference,r)}};var aD=new he(nO()),L6=new he(rD(!0));function j6(n,a,e){return aD.parse(n,a,e)}function H6(n,a,e){return aD.parseDate(n,a,e)}function nO(){let n=rD(!1);return n.parsers.unshift(new _h),n.parsers.unshift(new Uh),n.parsers.unshift(new Hh),n.parsers.unshift(new Yh),n.parsers.unshift(new qh),n}function rD(n=!0){return At({parsers:[new da(!0),new Lh,new jh,new $h,new Bh(n),new Vh],refiners:[new zh,new Wh]},n)}var dD={};_a(dD,{Chrono:()=>he,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>lD,createCasualConfiguration:()=>fO,createConfiguration:()=>cD,parse:()=>K6,parseDate:()=>Q6,strict:()=>G6});var sD={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},oD={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},nD={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},oO={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:"day",d\u00EDas:"day",semana:"week",semanas:"week",mes:"month",meses:"month",cuarto:"quarter",cuartos:"quarter",a\u00F1o:"year",a\u00F1os:"year"},B6=`(?:${X(nD)}|[0-9]+|[0-9]+\\.[0-9]+|un?|uno?|una?|algunos?|unos?|demi-?)`;function V6(n){let a=n.toLowerCase();return nD[a]!==void 0?nD[a]:a==="un"||a==="una"||a==="uno"?1:a.match(/algunos?/)||a.match(/unos?/)?3:a.match(/media?/)?.5:parseFloat(a)}var lO="[0-9]{1,4}(?![^\\s]\\d)(?:\\s*[a|d]\\.?\\s*c\\.?|\\s*a\\.?\\s*d\\.?)?";function cO(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 dO=`(${B6})\\s{0,5}(${X(oO)})\\s{0,5}`,sO=new RegExp(dO,"i"),uO=Ia("",dO);function pO(n){let a={},e=n,t=sO.exec(e);for(;t;)W6(a,t),e=e.substring(t[0].length),t=sO.exec(e);return a}function W6(n,a){let e=V6(a[1]),t=oO[a[2].toLowerCase()];n[t]=e}var z6=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(este|esta|pasado|pr[o\xF3]ximo)\\s*)?(${X(sD)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(este|esta|pasado|pr[\xF3o]ximo)\\s*semana)?(?=\\W|\\d|$)`,"i"),_6=1,U6=2,$6=3,Gh=class extends B{innerPattern(){return z6}innerExtract(a,e){let t=e[U6].toLowerCase(),r=sD[t];if(r===void 0)return null;let i=e[_6],s=e[$6],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"),Zt(a.reference,r,l)}};var Kh=class extends Aa{primaryPrefix(){return"(?:(?:aslas|deslas|las?|al?|de|del)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|a(?:l)?|\\?)\\s*"}};var Qh=class extends Vt{patternBetween(){return new RegExp("^\\s*(?:,|de|aslas|a)?\\s*$")}};var Xh=class extends Bt{patternBetween(){return/^\s*(?:-)\s*$/i}};var Y6=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*)(${X(oD)})(?:\\s*(?:de|,)?\\s*(${lO}))?(?=\\W|$)`,"i"),mO=1,hO=2,q6=3,gO=4,Jh=class extends B{innerPattern(){return Y6}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=oD[e[q6].toLowerCase()],i=parseInt(e[mO]);if(i>31)return e.index=e.index+e[mO].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[gO]){let s=cO(e[gO]);t.start.assign("year",s)}else{let s=Ue(a.refDate,i,r);t.start.imply("year",s)}if(e[hO]){let s=parseInt(e[hO]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var Zh=class extends B{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 Fa(a.reference);case"hoy":return fa(a.reference);case"ma\xF1ana":return ar(a.reference);case"ayer":return tr(a.reference)}return r}};var eg=class extends B{innerPattern(){return/(?:esta\s*)?(mañana|tarde|medianoche|mediodia|mediodía|noche)(?=\W|$)/i}innerExtract(a,e){let t=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":let i=new Date(t.getTime());i.setDate(i.getDate()+1),Le(r,i),Gt(r,i),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 tg=class extends B{innerPattern(){return new RegExp(`(?:en|por|durante|de|dentro de)\\s*(${uO})(?=\\W|$)`,"i")}innerExtract(a,e){let t=pO(e[1]);return Y.createRelativeFromReference(a.reference,t)}};var lD=new he(fO()),G6=new he(cD(!0));function K6(n,a,e){return lD.parse(n,a,e)}function Q6(n,a,e){return lD.parseDate(n,a,e)}function fO(n=!0){let a=cD(!1,n);return a.parsers.push(new Zh),a.parsers.push(new eg),a}function cD(n=!0,a=!0){return At({parsers:[new da(a),new Gh,new Kh,new Jh,new tg],refiners:[new Qh,new Xh]},n)}var bD={};_a(bD,{Chrono:()=>he,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>vD,createCasualConfiguration:()=>CO,createConfiguration:()=>yD,parse:()=>l8,parseDate:()=>c8,strict:()=>o8});var tn={leftBoundary:"([^\\p{L}\\p{N}_]|^)",rightBoundary:"(?=[^\\p{L}\\p{N}_]|$)",flags:"iu"},hD={\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},gD={\u0441\u0456\u0447\u0435\u043D\u044C:1,\u0441\u0456\u0447\u043D\u044F:1,\u0441\u0456\u0447\u043D\u0456:1,\u043B\u044E\u0442\u0438\u0439:2,\u043B\u044E\u0442\u043E\u0433\u043E:2,\u043B\u044E\u0442\u043E\u043C\u0443:2,\u0431\u0435\u0440\u0435\u0437\u0435\u043D\u044C:3,\u0431\u0435\u0440\u0435\u0437\u043D\u044F:3,\u0431\u0435\u0440\u0435\u0437\u043D\u0456:3,\u043A\u0432\u0456\u0442\u0435\u043D\u044C:4,\u043A\u0432\u0456\u0442\u043D\u044F:4,\u043A\u0432\u0456\u0442\u043D\u0456:4,\u0442\u0440\u0430\u0432\u0435\u043D\u044C:5,\u0442\u0440\u0430\u0432\u043D\u044F:5,\u0442\u0440\u0430\u0432\u043D\u0456:5,\u0447\u0435\u0440\u0432\u0435\u043D\u044C:6,\u0447\u0435\u0440\u0432\u043D\u044F:6,\u0447\u0435\u0440\u0432\u043D\u0456:6,\u043B\u0438\u043F\u0435\u043D\u044C:7,\u043B\u0438\u043F\u043D\u044F:7,\u043B\u0438\u043F\u043D\u0456:7,\u0441\u0435\u0440\u043F\u0435\u043D\u044C:8,\u0441\u0435\u0440\u043F\u043D\u044F:8,\u0441\u0435\u0440\u043F\u043D\u0456:8,\u0432\u0435\u0440\u0435\u0441\u0435\u043D\u044C:9,\u0432\u0435\u0440\u0435\u0441\u043D\u044F:9,\u0432\u0435\u0440\u0435\u0441\u043D\u0456:9,\u0436\u043E\u0432\u0442\u0435\u043D\u044C:10,\u0436\u043E\u0432\u0442\u043D\u044F:10,\u0436\u043E\u0432\u0442\u043D\u0456:10,\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434:11,\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434\u0430:11,\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434\u0443:11,\u0433\u0440\u0443\u0434\u0435\u043D\u044C:12,\u0433\u0440\u0443\u0434\u043D\u044F:12,\u0433\u0440\u0443\u0434\u043D\u0456:12},Jd={...gD,\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},pD={\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},mD={\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},ag={\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:"day",\u0434\u043D\u044F:"day",\u0434\u043D\u0456\u0432:"day",\u0434\u043D\u0456:"day",\u0434\u043E\u0431\u0430:"day",\u0434\u043E\u0431\u0443:"day",\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"},X6=`(?:${X(pD)}|[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 J6(n){let a=n.toLowerCase();return pD[a]!==void 0?pD[a]:a.match(/декілька/)?2:a.match(/пів/)?.5:a.match(/пар/)?2:a===""?1:parseFloat(a)}var fD=`(?:${X(mD)}|[0-9]{1,2}(?:\u0433\u043E|\u043E\u0433\u043E|\u0435)?)`;function kD(n){let a=n.toLowerCase();return mD[a]!==void 0?mD[a]:parseInt(a)}var uD="(?:\\s+(?:\u0440\u043E\u043A\u0443|\u0440\u0456\u043A|\u0440|\u0440.))?",qy=`(?:[1-9][0-9]{0,3}${uD}\\s*(?:\u043D.\u0435.|\u0434\u043E \u043D.\u0435.|\u043D. \u0435.|\u0434\u043E \u043D. \u0435.)|[1-2][0-9]{3}${uD}|[5-9][0-9]${uD})`;function Gy(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 er(a)}var vO=`(${X6})\\s{0,3}(${X(ag)})`,kO=new RegExp(vO,"i"),Zd=Ia("(?:(?:\u0431\u043B\u0438\u0437\u044C\u043A\u043E|\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E)\\s{0,3})?",vO);function eu(n){let a={},e=n,t=kO.exec(e);for(;t;)Z6(a,t),e=e.substring(t[0].length).trim(),t=kO.exec(e);return a}function Z6(n,a){let e=J6(a[1]),t=ag[a[2].toLowerCase()];n[t]=e}var yO=`(?:(?:\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E|\u043E\u0440\u0456\u0454\u043D\u0442\u043E\u0432\u043D\u043E)\\s*(?:~\\s*)?)?(${Zd})${tn.rightBoundary}`,rg=class extends B{patternLeftBoundary(){return tn.leftBoundary}innerPattern(a){return a.option.forwardDate?new RegExp(yO,"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*${yO}`,tn.flags)}innerExtract(a,e){let t=eu(e[1]);return Y.createRelativeFromReference(a.reference,t)}};var Dc=class extends B{patternLeftBoundary(){return tn.leftBoundary}innerPattern(a){return new RegExp(this.innerPatternString(a),tn.flags)}innerPatternHasChange(a,e){return!1}},si=class extends Dc{innerPattern(a){return new RegExp(`${this.innerPatternString(a)}${tn.rightBoundary}`,tn.flags)}};var bO=1,wO=2,e8=3,TO=4,ig=class extends si{innerPatternString(a){return`(?:\u0437|\u0456\u0437)?\\s*(${fD})(?:\\s{0,3}(?:\u043F\u043E|-|\u2013|\u0434\u043E)?\\s{0,3}(${fD}))?(?:-|\\/|\\s{0,3}(?:of)?\\s{0,3})(${X(Jd)})(?:(?:-|\\/|,?\\s{0,3})(${qy}(?![^\\s]\\d)))?`}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=Jd[e[e8].toLowerCase()],i=kD(e[bO]);if(i>31)return e.index=e.index+e[bO].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[TO]){let s=Gy(e[TO]);t.start.assign("year",s)}else{let s=Ue(a.reference.instant,i,r);t.start.imply("year",s)}if(e[wO]){let s=kD(e[wO]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var t8=2,xO=3,ng=class extends Dc{innerPatternString(a){return`((?:\u0432|\u0443)\\s*)?(${X(Jd)})\\s*(?:[,-]?\\s*(${qy})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`}innerExtract(a,e){let t=e[t8].toLowerCase();if(e[0].length<=3&&!gD[t])return null;let r=a.createParsingResult(e.index,e.index+e[0].length);r.start.imply("day",1);let i=Jd[t];if(r.start.assign("month",i),e[xO]){let s=Gy(e[xO]);r.start.assign("year",s)}else{let s=Ue(a.reference.instant,1,i);r.start.imply("year",s)}return r}};var sg=class extends Aa{constructor(a){super(a)}patternFlags(){return tn.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))?(?!\\/)${tn.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 og=class extends Dc{innerPatternString(a){return`(${Zd})\\s{0,5}\u0442\u043E\u043C\u0443(?=(?:\\W|$))`}innerExtract(a,e){let t=eu(e[1]),r=dt(t);return Y.createRelativeFromReference(a.reference,r)}};var lg=class extends Bt{patternBetween(){return/^\s*(і до|і по|до|по|-)\s*$/i}};var cg=class extends Vt{patternBetween(){return new RegExp("^\\s*(T|\u0432|\u0443|\u043E|,|-)?\\s*$")}};var dg=class extends si{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 fa(a.reference);case"\u0432\u0447\u043E\u0440\u0430":return tr(a.reference);case"\u0437\u0430\u0432\u0442\u0440\u0430":return ar(a.reference);case"\u043F\u0456\u0441\u043B\u044F\u0437\u0430\u0432\u0442\u0440\u0430":return ds(a.reference,2);case"\u043F\u0456\u0441\u043B\u044F\u043F\u0456\u0441\u043B\u044F\u0437\u0430\u0432\u0442\u0440\u0430":return ds(a.reference,3);case"\u043F\u043E\u0437\u0430\u0432\u0447\u043E\u0440\u0430":return lc(a.reference,2);case"\u043F\u043E\u0437\u0430\u043F\u043E\u0437\u0430\u0432\u0447\u043E\u0440\u0430":return lc(a.reference,3)}return r}};var ug=class extends si{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=a.refDate,r=e[0].toLowerCase(),i=a.createParsingComponents();if(r==="\u0437\u0430\u0440\u0430\u0437")return Fa(a.reference);if(r==="\u0432\u0432\u0435\u0447\u0435\u0440\u0456"||r==="\u0432\u0435\u0447\u043E\u0440\u0430")return Vd(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 Wd(a.reference);if(r.endsWith("\u043E\u043F\u0456\u0432\u0434\u043D\u0456"))return zd(a.reference);if(r.match(/минулої\s*ночі/))return by(a.reference);if(r.match(/минулого\s*вечора/))return wy(a.reference);if(r.match(/наступної\s*ночі/)){let s=t.getHours()<22?1:2,o=new Date(t.getTime());o.setDate(o.getDate()+s),Le(i,o),i.imply("hour",1)}return r.match(/цієї\s*ночі/)?cc(a.reference):r.endsWith("\u043E\u043F\u0456\u0432\u043D\u043E\u0447\u0456")||r.endsWith("\u0432\u043D\u043E\u0447\u0456")?cc(a.reference):i}};var a8=1,r8=2,i8=3,pg=class extends si{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*)?(${X(hD)})(?:\\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[r8].toLocaleLowerCase(),r=hD[t],i=e[a8],s=e[i8],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"),Zt(a.reference,r,l)}};var n8=1,s8=2,mg=class extends si{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*(${X(ag)})(?=\\s*)`}innerExtract(a,e){let t=e[n8].toLowerCase(),r=e[s8].toLowerCase(),i=ag[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,Y.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,Y.createRelativeFromReference(a.reference,l)}let s=a.createParsingComponents(),o=new Date(a.reference.instant.getTime());return i.match(/week/i)?(o.setDate(o.getDate()-o.getDay()),s.imply("day",o.getDate()),s.imply("month",o.getMonth()+1),s.imply("year",o.getFullYear())):i.match(/month/i)?(o.setDate(1),s.imply("day",o.getDate()),s.assign("year",o.getFullYear()),s.assign("month",o.getMonth()+1)):i.match(/year/i)&&(o.setDate(1),o.setMonth(0),s.imply("day",o.getDate()),s.imply("month",o.getMonth()+1),s.assign("year",o.getFullYear())),s}};var hg=class extends si{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*(${Zd})`}innerExtract(a,e){let t=e[1].toLowerCase(),r=eu(e[3]);switch(t){case"\u043E\u0441\u0442\u0430\u043D\u043D\u0456":case"\u043C\u0438\u043D\u0443\u043B\u0456":case"-":r=dt(r);break}return Y.createRelativeFromReference(a.reference,r)}};var vD=new he(CO()),o8=new he(yD(!0));function CO(){let n=yD(!1);return n.parsers.unshift(new dg),n.parsers.unshift(new ug),n.parsers.unshift(new ng),n.parsers.unshift(new mg),n.parsers.unshift(new hg),n}function yD(n){return At({parsers:[new Pn,new da(!0),new rg,new ig,new pg,new sg(n),new og],refiners:[new cg,new lg]},n)}function l8(n,a,e){return vD.parse(n,a,e)}function c8(n,a,e){return vD.parseDate(n,a,e)}var DD={};_a(DD,{GB:()=>q8,casual:()=>SD,createCasualConfiguration:()=>NO,createConfiguration:()=>Ky,parse:()=>G8,parseDate:()=>K8,strict:()=>Y8});var xD={domenica:0,dom:0,luned\u00EC:1,lun:1,marted\u00EC:2,mar:2,mercoled\u00EC:3,merc:3,gioved\u00EC:4,giov:4,venerd\u00EC:5,ven:5,sabato:6,sab:6},CD={},an={...CD,gennaio:1,gen:1,"gen.":1,febbraio:2,feb:2,"feb.":2,febraio:2,febb:2,"febb.":2,marzo:3,mar:3,"mar.":3,aprile:4,apr:4,"apr.":4,maggio:5,mag:5,giugno:6,giu:6,luglio:7,lug:7,lugl:7,"lug.":7,agosto:8,ago:8,settembre:9,set:9,"set.":9,sett:9,"sett.":9,ottobre:10,ott:10,"ott.":10,novembre:11,nov:11,"nov.":11,dicembre:12,dic:12,dice:12,"dic.":12},wD={uno:1,due:2,tre:3,quattro:4,cinque:5,sei:6,sette:7,otto:8,nove:9,dieci:10,undici:11,dodici:12},TD={primo:1,secondo:2,terzo:3,quarto:4,quinto:5,sesto:6,settimo:7,ottavo:8,nono:9,decimo:10,undicesimo:11,dodicesimo:12,tredicesimo:13,quattordicesimo:14,quindicesimo:15,sedicesimo:16,diciassettesimo:17,diciottesimo:18,diciannovesimo:19,ventesimo:20,ventunesimo:21,ventiduesimo:22,ventitreesimo:23,ventiquattresimo:24,venticinquesimo:25,ventiseiesimo:26,ventisettesimo:27,ventottesimo:28,ventinovesimo:29,trentesimo:30,trentunesimo:31},gg={sec:"second",secondo:"second",secondi:"second",min:"minute",mins:"minute",minuti:"minute",h:"hour",hr:"hour",o:"hour",ora:"hour",ore:"hour",giorno:"day",giorni:"day",settimana:"week",settimane:"week",mese:"month",trimestre:"quarter",trimestri:"quarter",anni:"year",anno:"year"},d8=`(?:${X(wD)}|[0-9]+|[0-9]+\\.[0-9]+|half(?:\\s{0,2}un?)?|un?\\b(?:\\s{0,2}qualcuno)?|qualcuno|molti|a?\\s{0,2}alcuni\\s{0,2}(?:of)?)`;function u8(n){let a=n.toLowerCase();return wD[a]!==void 0?wD[a]:a==="un"||a==="una"?1:a.match(/alcuni/)?3:a.match(/metá/)?.5:a.match(/paio/)?2:a.match(/molti/)?7:parseFloat(a)}var tu=`(?:${X(TD)}|[0-9]{1,2}(?:mo|ndo|rzo|simo|esimo)?)`;function au(n){let a=n.toLowerCase();return TD[a]!==void 0?TD[a]:(a=a.replace(/(?:imo|ndo|rzo|rto|nto|sto|tavo|nono|cimo|timo|esimo)$/i,""),parseInt(a))}var ru="(?:[1-9][0-9]{0,3}\\s{0,2}(?:BE|AD|BC|BCE|CE)|[1-2][0-9]{3}|[5-9][0-9])";function iu(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 er(a)}var DO=`(${d8})\\s{0,3}(${X(gg)})`,SO=new RegExp(DO,"i"),In=Ia("(?:(?:about|around)\\s{0,3})?",DO);function ms(n){let a={},e=n,t=SO.exec(e);for(;t;)p8(a,t),e=e.substring(t[0].length).trim(),t=SO.exec(e);return a}function p8(n,a){let e=u8(a[1]),t=gg[a[2].toLowerCase()];n[t]=e}var m8=new RegExp(`(?:within|in|for)\\s*(?:(?:pi\xF9 o meno|intorno|approssimativamente|verso|verso le)\\s*(?:~\\s*)?)?(${In})(?=\\W|$)`,"i"),h8=new RegExp(`(?:(?:pi\xF9 o meno|intorno|approssimativamente|verso|verso le)\\s*(?:~\\s*)?)?(${In})(?=\\W|$)`,"i"),fg=class extends B{innerPattern(a){return a.option.forwardDate?h8:m8}innerExtract(a,e){let t=ms(e[1]);return Y.createRelativeFromReference(a.reference,t)}};var g8=new RegExp(`(?:on\\s{0,3})?(${tu})(?:\\s{0,3}(?:al|\\-|\\\u2013|fino|alle|allo)?\\s{0,3}(${tu}))?(?:-|/|\\s{0,3}(?:dal)?\\s{0,3})(${X(an)})(?:(?:-|/|,?\\s{0,3})(${ru}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),EO=1,MO=2,f8=3,PO=4,kg=class extends B{innerPattern(){return g8}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=an[e[f8].toLowerCase()],i=au(e[EO]);if(i>31)return e.index=e.index+e[EO].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[PO]){let s=iu(e[PO]);t.start.assign("year",s)}else{let s=Ue(a.refDate,i,r);t.start.imply("year",s)}if(e[MO]){let s=au(e[MO]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var k8=new RegExp(`(${X(an)})(?:-|/|\\s*,?\\s*)(${tu})(?!\\s*(?:am|pm))\\s*(?:(?:al|\\-|\\alle|\\del|\\s)\\s*(${tu})\\s*)?(?:(?:-|/|\\s*,?\\s*)(${ru}))?(?=\\W|$)(?!\\:\\d)`,"i"),v8=1,y8=2,IO=3,AO=4,vg=class extends B{innerPattern(){return k8}innerExtract(a,e){let t=an[e[v8].toLowerCase()],r=au(e[y8]);if(r>31)return null;let i=a.createParsingComponents({day:r,month:t});if(e[AO]){let l=iu(e[AO]);i.assign("year",l)}else{let l=Ue(a.refDate,r,t);i.imply("year",l)}if(!e[IO])return i;let s=au(e[IO]),o=a.createParsingResult(e.index,e[0]);return o.start=i,o.end=i.clone(),o.end.assign("day",s),o}};var b8=new RegExp(`((?:in)\\s*)?(${X(an)})\\s*(?:[,-]?\\s*(${ru})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i"),w8=1,T8=2,FO=3,yg=class extends B{innerPattern(){return b8}innerExtract(a,e){let t=e[T8].toLowerCase();if(e[0].length<=3&&!CD[t])return null;let r=a.createParsingResult(e.index+(e[w8]||"").length,e.index+e[0].length);r.start.imply("day",1);let i=an[t];if(r.start.assign("month",i),e[FO]){let s=iu(e[FO]);r.start.assign("year",s)}else{let s=Ue(a.refDate,1,i);r.start.imply("year",s)}return r}};var x8=new RegExp(`([0-9]{4})[\\.\\/\\s](?:(${X(an)})|([0-9]{1,2}))[\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i"),C8=1,S8=2,RO=3,D8=4,bg=class extends B{innerPattern(){return x8}innerExtract(a,e){let t=e[RO]?parseInt(e[RO]):an[e[S8].toLowerCase()];if(t<1||t>12)return null;let r=parseInt(e[C8]);return{day:parseInt(e[D8]),month:t,year:r}}};var E8=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i"),M8=1,P8=2,wg=class extends B{innerPattern(){return E8}innerExtract(a,e){let t=parseInt(e[P8]),r=parseInt(e[M8]);return a.createParsingComponents().imply("day",1).assign("month",r).assign("year",t)}};var Tg=class extends Aa{constructor(a){super(a)}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|to|\\?)\\s*"}primaryPrefix(){return"(?:(?:alle|dalle)\\s*)??"}primarySuffix(){return"(?:\\s*(?:o\\W*in punto|alle\\s*sera|in\\s*del\\s*(?:mattina|pomeriggio)))?(?!/)(?=\\W|$)"}extractPrimaryTimeComponents(a,e){let t=super.extractPrimaryTimeComponents(a,e);if(t){if(e[0].endsWith("sera")){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("pomeriggio")){t.assign("meridiem",$.PM);let r=t.get("hour");r>=0&&r<=6&&t.assign("hour",t.get("hour")+12)}e[0].endsWith("mattina")&&(t.assign("meridiem",$.AM),t.get("hour")<12&&t.assign("hour",t.get("hour")))}return t}};var I8=new RegExp(`(${In})\\s{0,5}(?:fa|prima|precedente)(?=(?:\\W|$))`,"i"),A8=new RegExp(`(${In})\\s{0,5}fa(?=(?:\\W|$))`,"i"),xg=class extends B{constructor(e){super();W(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?A8:I8}innerExtract(e,t){let r=ms(t[1]),i=dt(r);return Y.createRelativeFromReference(e.reference,i)}};var F8=new RegExp(`(${In})\\s{0,5}(?:dopo|pi\xF9 tardi|da adesso|avanti|oltre|a seguire)(?=(?:\\W|$))`,"i"),R8=new RegExp("("+In+")(dopo|pi\xF9 tardi)(?=(?:\\W|$))","i"),O8=1,Cg=class extends B{constructor(e){super();W(this,"strictMode");this.strictMode=e}innerPattern(){return this.strictMode?R8:F8}innerExtract(e,t){let r=ms(t[O8]);return Y.createRelativeFromReference(e.reference,r)}};var Sg=class extends Bt{patternBetween(){return/^\s*(to|-)\s*$/i}};var Dg=class extends Vt{patternBetween(){return new RegExp("^\\s*(T|alle|dopo|prima|il|di|del|delle|,|-)?\\s*$")}};var N8=/(ora|oggi|stasera|questa sera|domani|dmn|ieri\s*sera)(?=\W|$)/i,Eg=class extends B{innerPattern(a){return N8}innerExtract(a,e){let t=a.refDate,r=e[0].toLowerCase(),i=a.createParsingComponents();switch(r){case"ora":return Fa(a.reference);case"oggi":return fa(a.reference);case"ieri":return tr(a.reference);case"domani":case"dmn":return ar(a.reference);case"stasera":case"questa sera":return yy(a.reference);default:if(r.match(/ieri\s*sera/)){if(t.getHours()>6){let s=new Date(t.getTime());s.setDate(s.getDate()-1),t=s}Le(i,t),i.imply("hour",0)}break}return i}};var L8=/(?:questo|questa)?\s{0,3}(mattina|pomeriggio|sera|notte|mezzanotte|mezzogiorno)(?=\W|$)/i,Mg=class extends B{innerPattern(){return L8}innerExtract(a,e){let t=a.refDate,r=a.createParsingComponents();switch(e[1].toLowerCase()){case"pomeriggio":r.imply("meridiem",$.PM),r.imply("hour",15);break;case"sera":case"notte":r.imply("meridiem",$.PM),r.imply("hour",20);break;case"mezzanotte":let i=new Date(t.getTime());i.setDate(i.getDate()+1),Le(r,i),Gt(r,i),r.imply("hour",0),r.imply("minute",0),r.imply("second",0);break;case"mattina":r.imply("meridiem",$.AM),r.imply("hour",6);break;case"mezzogiorno":r.imply("meridiem",$.AM),r.imply("hour",12);break}return r}};var j8=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:il\\s*?)?(?:(questa|l'ultima|scorsa|prossima)\\s*)?(${X(xD)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(questa|l'ultima|scorsa|prossima)\\s*settimana)?(?=\\W|$)`,"i"),H8=1,B8=2,V8=3,Pg=class extends B{innerPattern(){return j8}innerExtract(a,e){let t=e[B8].toLowerCase(),r=xD[t],i=e[H8],s=e[V8],o=i||s;o=o||"",o=o.toLowerCase();let l=null;return o=="ultima"||o=="scorsa"?l="ultima":o=="prossima"?l="prossima":o=="questa"&&(l="questa"),Zt(a.reference,r,l)}};var W8=new RegExp(`(questo|ultimo|scorso|prossimo|dopo\\s*questo|questa|ultima|scorsa|prossima\\s*questa)\\s*(${X(gg)})(?=\\s*)(?=\\W|$)`,"i"),z8=1,_8=2,Ig=class extends B{innerPattern(){return W8}innerExtract(a,e){let t=e[z8].toLowerCase(),r=e[_8].toLowerCase(),i=gg[r];if(t=="prossimo"||t.startsWith("dopo")){let l={};return l[i]=1,Y.createRelativeFromReference(a.reference,l)}if(t=="prima"||t=="precedente"){let l={};return l[i]=-1,Y.createRelativeFromReference(a.reference,l)}let s=a.createParsingComponents(),o=new Date(a.reference.instant.getTime());return r.match(/settimana/i)?(o.setDate(o.getDate()-o.getDay()),s.imply("day",o.getDate()),s.imply("month",o.getMonth()+1),s.imply("year",o.getFullYear())):r.match(/mese/i)?(o.setDate(1),s.imply("day",o.getDate()),s.assign("year",o.getFullYear()),s.assign("month",o.getMonth()+1)):r.match(/anno/i)&&(o.setDate(1),o.setMonth(0),s.imply("day",o.getDate()),s.imply("month",o.getMonth()+1),s.assign("year",o.getFullYear())),s}};var U8=new RegExp(`(questo|ultimo|passato|prossimo|dopo|questa|ultima|passata|prossima|\\+|-)\\s*(${In})(?=\\W|$)`,"i"),Ag=class extends B{innerPattern(){return U8}innerExtract(a,e){let t=e[1].toLowerCase(),r=ms(e[2]);switch(t){case"last":case"past":case"-":r=dt(r);break}return Y.createRelativeFromReference(a.reference,r)}};function OO(n){return n.text.match(/\s+(prima|dal)$/i)!=null}function $8(n){return n.text.match(/\s+(dopo|dal|fino)$/i)!=null}var Fg=class extends Er{patternBetween(){return/^\s*$/i}shouldMergeResults(a,e,t){return!a.match(this.patternBetween())||!OO(e)&&!$8(e)?!1:!!t.start.get("day")&&!!t.start.get("month")&&!!t.start.get("year")}mergeResults(a,e,t){let r=ms(e.text);OO(e)&&(r=dt(r));let i=Y.createRelativeFromReference(Ge.fromDate(t.start.date()),r);return new $e(t.reference,e.index,`${e.text}${a}${t.text}`,i)}};var SD=new he(NO(!1)),Y8=new he(Ky(!0,!1)),q8=new he(Ky(!1,!0));function G8(n,a,e){return SD.parse(n,a,e)}function K8(n,a,e){return SD.parseDate(n,a,e)}function NO(n=!1){let a=Ky(!1,n);return a.parsers.unshift(new Eg),a.parsers.unshift(new Mg),a.parsers.unshift(new yg),a.parsers.unshift(new Ig),a.parsers.unshift(new Ag),a}function Ky(n=!0,a=!1){return At({parsers:[new da(a),new fg,new kg,new vg,new Pg,new bg,new wg,new Tg(n),new xg(n),new Cg(n)],refiners:[new Fg,new Dg,new Sg]},n)}var FD={};_a(FD,{Chrono:()=>he,Meridiem:()=>$,ParsingComponents:()=>Y,ParsingResult:()=>$e,ReferenceWithTimezone:()=>Ge,Weekday:()=>Ce,casual:()=>ID,createCasualConfiguration:()=>YO,createConfiguration:()=>AD,parse:()=>mG,parseDate:()=>hG,strict:()=>pG});var ED={s\u00F6ndag:0,s\u00F6n:0,so:0,m\u00E5ndag:1,m\u00E5n:1,m\u00E5:1,tisdag:2,tis:2,ti:2,onsdag:3,ons:3,on:3,torsdag:4,tors:4,to:4,fredag:5,fre:5,fr:5,l\u00F6rdag:6,l\u00F6r:6,l\u00F6:6},MD={januari:1,jan:1,"jan.":1,februari:2,feb:2,"feb.":2,mars:3,mar:3,"mar.":3,april:4,apr:4,"apr.":4,maj:5,juni:6,jun:6,"jun.":6,juli:7,jul:7,"jul.":7,augusti:8,aug:8,"aug.":8,september:9,sep:9,"sep.":9,sept:9,oktober:10,okt:10,"okt.":10,november:11,nov:11,"nov.":11,december:12,dec:12,"dec.":12},Q8={f\u00F6rsta:1,andra:2,tredje:3,fj\u00E4rde:4,femte:5,sj\u00E4tte:6,sjunde:7,\u00E5ttonde:8,nionde:9,tionde:10,elfte:11,tolfte:12,trettonde:13,fjortonde:14,femtonde:15,sextonde:16,sjuttonde:17,artonde:18,nittonde:19,tjugonde:20,tjugof\u00F6rsta:21,tjugoandra:22,tjugotredje:23,tjugofj\u00E4rde:24,tjugofemte:25,tjugosj\u00E4tte:26,tjugosjunde:27,tjugo\u00E5ttonde:28,tjugonionde:29,trettionde:30,trettiof\u00F6rsta:31},Rg={en:1,ett:1,tv\u00E5:2,tre:3,fyra:4,fem:5,sex:6,sju:7,\u00E5tta:8,nio:9,tio:10,elva:11,tolv:12,tretton:13,fjorton:14,femton:15,sexton:16,sjutton:17,arton:18,nitton:19,tjugo:20,tretti\u043E:30,fyrtio:40,femtio:50,sextio:60,sjuttio:70,\u00E5ttio:80,nittio:90,hundra:100,tusen:1e3},PD={sek:"second",sekund:"second",sekunder:"second",min:"minute",minut:"minute",minuter:"minute",tim:"hour",timme:"hour",timmar:"hour",dag:"day",dagar:"day",vecka:"week",veckor:"week",m\u00E5n:"month",m\u00E5nad:"month",m\u00E5nader:"month",\u00E5r:"year",kvart\u0430l:"quarter",kvartal:"quarter"},X8={sekund:"second",sekunder:"second",minut:"minute",minuter:"minute",timme:"hour",timmar:"hour",dag:"day",dagar:"day",vecka:"week",veckor:"week",m\u00E5nad:"month",m\u00E5nader:"month",\u00E5r:"year",kvartal:"quarter"};function jO(n){let a={},e=n,t=LO.exec(e);for(;t;)J8(a,t),e=e.substring(t[0].length),t=LO.exec(e);return a}function J8(n,a){let e=eG(a[1]),t=PD[a[2].toLowerCase()];n[t]=e}var HO=`(?:${X(Rg)}|\\d+)`,pBe=`(?:${X(Q8)}|\\d{1,2}(?:e|:e))`,mBe=`(?:${X(PD)})`,BO=`(${HO})\\s{0,5}(${X(PD)})\\s{0,5}`,LO=new RegExp(BO,"i"),Z8=`(${HO})\\s{0,5}(${X(X8)})\\s{0,5}`,VO=Ia("",BO),WO=Ia("",Z8);function eG(n){let a=n.toLowerCase();return Rg[a]!==void 0?Rg[a]:parseInt(a)}function zO(n){if(/\d+/.test(n)){let e=parseInt(n);return e<100&&(e=er(e)),e}let a=n.toLowerCase();return Rg[a]!==void 0?Rg[a]:parseInt(n)}var tG=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:p\xE5\\s*?)?(?:(f\xF6rra|senaste|n\xE4sta|kommande)\\s*)?(${X(ED)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(f\xF6rra|senaste|n\xE4sta|kommande)\\s*vecka)?(?=\\W|$)`,"i"),aG=1,rG=3,iG=2,Og=class extends B{innerPattern(){return tG}innerExtract(a,e){let t=e[iG].toLowerCase(),r=ED[t],i=e[aG],s=e[rG],o=i||s;o=o||"",o=o.toLowerCase();let l=null;return o.match(/förra|senaste/)?l="last":o.match(/nästa|kommande/)&&(l="next"),Zt(a.reference,r,l)}};var nG=new RegExp(`(?:den\\s*?)?([0-9]{1,2})(?:\\s*(?:till|\\-|\\\u2013|\\s)\\s*([0-9]{1,2}))?\\s*(${X(MD)})(?:(?:-|/|,?\\s*)([0-9]{4}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),_O=1,UO=2,sG=3,$O=4,Ng=class extends B{innerPattern(){return nG}innerExtract(a,e){let t=a.createParsingResult(e.index,e[0]),r=MD[e[sG].toLowerCase()],i=parseInt(e[_O]);if(i>31)return e.index=e.index+e[_O].length,null;if(t.start.assign("month",r),t.start.assign("day",i),e[$O]){let s=zO(e[$O]);t.start.assign("year",s)}else{let s=Ue(a.refDate,i,r);t.start.imply("year",s)}if(e[UO]){let s=parseInt(e[UO]);t.end=t.start.clone(),t.end.assign("day",s)}return t}};var oG=new RegExp(`(denna|den h\xE4r|f\xF6rra|passerade|n\xE4sta|kommande|efter|\\+|-)\\s*(${VO})(?=\\W|$)`,"i"),lG=new RegExp(`(denna|den h\xE4r|f\xF6rra|passerade|n\xE4sta|kommande|efter|\\+|-)\\s*(${WO})(?=\\W|$)`,"i"),Lg=class extends B{constructor(e=!0){super();W(this,"allowAbbreviations");this.allowAbbreviations=e}innerPattern(){return this.allowAbbreviations?oG:lG}innerExtract(e,t){let r=t[1].toLowerCase(),i=jO(t[2]);if(!i)return null;switch(r){case"f\xF6rra":case"passerade":case"-":i=dt(i);break}return Y.createRelativeFromReference(e.reference,i)}};var cG=new RegExp("(nu|idag|imorgon|\xF6vermorgon|ig\xE5r|f\xF6rrg\xE5r|i\\s*f\xF6rrg\xE5r)(?:\\s*(?:p\xE5\\s*)?(morgonen?|f\xF6rmiddagen?|middagen?|eftermiddagen?|kv\xE4llen?|natten?|midnatt))?(?=\\W|$)","i"),dG=1,uG=2,jg=class extends B{innerPattern(a){return cG}innerExtract(a,e){let t=a.refDate,r=(e[dG]||"").toLowerCase(),i=(e[uG]||"").toLowerCase(),s=a.createParsingComponents();switch(r){case"nu":s=Fa(a.reference);break;case"idag":s=fa(a.reference);break;case"imorgon":case"imorn":let o=new Date(t.getTime());o.setDate(o.getDate()+1),Le(s,o),Gt(s,o);break;case"ig\xE5r":let l=new Date(t.getTime());l.setDate(l.getDate()-1),Le(s,l),Gt(s,l);break;case"f\xF6rrg\xE5r":case"i f\xF6rrg\xE5r":let d=new Date(t.getTime());d.setDate(d.getDate()-2),Le(s,d),Gt(s,d);break}switch(i){case"morgon":case"morgonen":s.imply("hour",6),s.imply("minute",0),s.imply("second",0),s.imply("millisecond",0);break;case"f\xF6rmiddag":case"f\xF6rmiddagen":s.imply("hour",9),s.imply("minute",0),s.imply("second",0),s.imply("millisecond",0);break;case"middag":case"middagen":s.imply("hour",12),s.imply("minute",0),s.imply("second",0),s.imply("millisecond",0);break;case"eftermiddag":case"eftermiddagen":s.imply("hour",15),s.imply("minute",0),s.imply("second",0),s.imply("millisecond",0);break;case"kv\xE4ll":case"kv\xE4llen":s.imply("hour",20),s.imply("minute",0),s.imply("second",0),s.imply("millisecond",0);break;case"natt":case"natten":case"midnatt":i==="midnatt"?s.imply("hour",0):s.imply("hour",2),s.imply("minute",0),s.imply("second",0),s.imply("millisecond",0);break}return s}};var ID=new he(YO()),pG=new he(AD(!0));function mG(n,a,e){return ID.parse(n,a,e)}function hG(n,a,e){return ID.parseDate(n,a,e)}function YO(n=!0){let a=AD(!1,n);return a.parsers.unshift(new jg),a}function AD(n=!0,a=!0){return At({parsers:[new Pn,new da(a),new Ng,new Og,new Lg],refiners:[]},n)}var gG=X0,RD=Am;function fG(n,a,e){return RD.parse(n,a,e)}function kG(n,a,e){return RD.parseDate(n,a,e)}var nu=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=d=>d&&"timeDefaults"in d;return{hour:i,minute:s,second:o,originalText:e,isRange:!1}}return null}extractTimeComponents(a){let e={},t={},r=[],i=[...a.matchAll(this.TIME_PATTERNS.TIME_RANGE)],s=[...a.matchAll(this.TIME_PATTERNS.TIME_RANGE_12H)];for(let u of[...i,...s]){let p=u[0],m=u.index||0,h=p.split(/\s*[-~\uff5e]\s*/);if(h.length===2){let g=this.parseTimeComponent(h[0]),f=this.parseTimeComponent(h[1]);if(g&&f){g.isRange=!0,f.isRange=!0,g.rangePartner=f,f.rangePartner=g,r.push({text:p,index:m,isRange:!0,rangeStart:g,rangeEnd:f});let k=this.determineTimeContext(a,p,m);(k==="start"||!e.startTime)&&(e.startTime=g,e.endTime=f,t.startTime=k==="start"?"explicit":"inferred")}}}let o=[...a.matchAll(this.TIME_PATTERNS.TIME_12H)],l=[...a.matchAll(this.TIME_PATTERNS.TIME_24H)],d=new Set;for(let u of o){let p=u[0],m=u.index||0;if(!r.some(g=>g.isRange&&m>=g.index&&m<g.index+g.text.length)){let g=this.parseTimeComponent(p);if(g){let f=a[m+p.length],k=a[m+p.length+1],v=m>0?a[m-1]:void 0,y=m>1?a[m-2]:void 0;if(f===":"&&k!==void 0&&/\d/.test(k)||f==="-"&&k==="-"||v==="-"&&y==="-")continue;switch(d.add(m),r.push({text:p,index:m,timeComponent:g,isRange:!1}),this.determineTimeContext(a,p,m)){case"start":e.startTime=g,t.startTime="explicit";break;case"due":(!e.dueTime||t.dueTime!=="explicit")&&(e.dueTime=g,t.dueTime="explicit");break;case"scheduled":(!e.scheduledTime||t.scheduledTime!=="explicit")&&(e.scheduledTime=g,t.scheduledTime="explicit");break}}}}for(let u of l){let p=u[0],m=u.index||0;if(d.has(m))continue;if(!r.some(g=>g.isRange&&m>=g.index&&m<g.index+g.text.length)){let g=this.parseTimeComponent(p);if(g){let f=a[m+p.length],k=a[m+p.length+1],v=m>0?a[m-1]:void 0,y=m>1?a[m-2]:void 0;if(f===":"&&k!==void 0&&/\d/.test(k)||f==="-"&&k==="-"||v==="-"&&y==="-")continue;switch(r.push({text:p,index:m,timeComponent:g,isRange:!1}),this.determineTimeContext(a,p,m)){case"start":e.startTime=g,t.startTime="explicit";break;case"due":(!e.dueTime||t.dueTime!=="explicit")&&(e.dueTime=g,t.dueTime="explicit");break;case"scheduled":(!e.scheduledTime||t.scheduledTime!=="explicit")&&(e.scheduledTime=g,t.scheduledTime="explicit");break}}}}return e.startTime&&!e.scheduledTime&&(e.scheduledTime=e.startTime),{timeComponents:e,timeExpressions:r}}determineTimeContext(a,e,t){let r=a.substring(Math.max(0,t-200),t),i=r.toLowerCase(),o=a.substring(t+e.length,Math.min(a.length,t+e.length+20)).toLowerCase(),l=i+" "+o;if(r.includes("\u{1F6EB}"))return"start";if(r.includes("\u{1F4C5}"))return"due";if(r.includes("\u23F3"))return"scheduled";for(let d of this.config.dateKeywords.start)if(l.includes(d.toLowerCase()))return"start";for(let d of this.config.dateKeywords.scheduled)if(l.includes(d.toLowerCase()))return"scheduled";for(let d of this.config.dateKeywords.due)if(l.includes(d.toLowerCase()))return"due";return l.includes("at")||l.includes("@")?"scheduled":"due"}parseTimeExpressions(a){var d,u;let e=a!=null?a:"",t=/(\d{4}-\d{2}-\d{2})\s+(\d{1,2}):([0-5]\d)(?::([0-5]\d))?/,r=(p,m,h)=>{var w,T,x,C;let g=new Date(p),f=m.match(t),k=(w=h==null?void 0:h.timeComponent)!=null?w:h==null?void 0:h.rangeStart,v=(T=k==null?void 0:k.hour)!=null?T:f?Number(f[2]):void 0,y=(x=k==null?void 0:k.minute)!=null?x:f?Number(f[3]):void 0,b=(C=k==null?void 0:k.second)!=null?C:f&&f[4]?Number(f[4]):0;return v===void 0||y===void 0?(g.setHours(0,0,0,0),g):(g.setHours(v,y,b!=null?b:0,0),g)};if(!this.config.enabled)return{originalText:e,cleanedText:e,parsedExpressions:[]};let i=this.generateCacheKey(e);if(this.parseCache.has(i))return this.parseCache.get(i);let{timeComponents:s,timeExpressions:o}=this.extractTimeComponents(e),l={originalText:e,cleanedText:e,parsedExpressions:[],timeComponents:s};try{if(e.trim().length===0)return l;let p=OD,m;try{m=p.parse(e)}catch(h){console.warn("TimeParsingService: Chrono parsing failed:",h),m=[]}if(m.length===0&&/[\u4e00-\u9fff]/.test(e))try{if(p.zh&&p.zh.hant&&typeof p.zh.hant.parse=="function"){let h=p.zh.parse(e);h&&h.length>0&&(m=h)}if(m.length===0&&p.zh&&typeof p.zh.parse=="function"){let h=p.zh.parse(e);h&&h.length>0&&(m=h)}m.length===0&&(m=this.parseChineseTimeExpressions(e))}catch(h){console.warn("TimeParsingService: Chinese parsing failed:",h);try{m=this.parseChineseTimeExpressions(e)}catch(g){console.warn("TimeParsingService: Custom Chinese parsing failed:",g),m=[]}}for(let h of m)try{if(!h||!h.text||!h.start){console.warn("TimeParsingService: Invalid parse result structure:",h);continue}let g=h.text,f;try{f=h.start.date()}catch(C){console.warn("TimeParsingService: Failed to extract date from parse result:",C);continue}if(!f||isNaN(f.getTime())){console.warn("TimeParsingService: Invalid date extracted:",f);continue}let k=(d=h.index)!=null?d:0,v=g.length,y;try{y=this.determineTimeType(e,g,k)}catch(C){console.warn("TimeParsingService: Failed to determine time type:",C),y="due"}let b=o.find(C=>C.index>=k-10&&C.index<=k+v+10),w=!1;b!=null&&b.rangeStart&&(b!=null&&b.rangeEnd)&&(w=b.rangeStart.hour>b.rangeEnd.hour);let T=r(f,g,b),x={text:g,date:T,type:y,index:k,length:v,timeComponent:(u=b==null?void 0:b.timeComponent)!=null?u:b==null?void 0:b.rangeStart,isTimeRange:(b==null?void 0:b.isRange)||!1,rangeStart:b==null?void 0:b.rangeStart,rangeEnd:b==null?void 0:b.rangeEnd,crossesMidnight:w||void 0};switch(l.parsedExpressions.push(x),y){case"start":l.startDate||(l.startDate=T);break;case"due":l.dueDate||(l.dueDate=T);break;case"scheduled":l.scheduledDate||(l.scheduledDate=T);break;default:console.warn("TimeParsingService: Unknown date type:",y);break}}catch(g){console.warn("TimeParsingService: Error processing expression:",g);continue}l.cleanedText=this.cleanTextFromTimeExpressions(a,l.parsedExpressions)}catch(p){console.warn("Time parsing error:",p)}finally{this.cacheResult(i,l)}return l}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),d=o,u=l;o.endsWith(" ")&&l.startsWith(" ")?u=l.trimStart():o.endsWith(" ")&&!l.startsWith(" ")&&(d=o.trimEnd()+" ");let p=d.match(/[,;]\s*$/),m=u.match(/^[,;]\s*/);if(p&&m){d=d.replace(/[,;]\s*$/,"");let h=((i=u.match(/^[,;]/))==null?void 0:i[0])||"";u=u.replace(/^[,;]\s*/,""),u.trim()&&(d+=h+" ")}else p&&!m?(d=d.replace(/[,;]\s*$/,""),u.trim()&&!d.endsWith(" ")&&(d+=" ")):(!p&&m&&(u=u.replace(/^[,;]\s*/,"")),d&&u.trim()&&!d.endsWith(" ")&&(d+=" "));r=d+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-200),t),i=r.toLowerCase(),o=a.substring(t+e.length,Math.min(a.length,t+e.length+20)).toLowerCase(),l=i+" "+o;if(r.includes("\u{1F6EB}"))return"start";if(r.includes("\u{1F4C5}"))return"due";if(r.includes("\u23F3"))return"scheduled";for(let d of this.config.dateKeywords.start)if(l.includes(d.toLowerCase()))return"start";for(let d of this.config.dateKeywords.due)if(l.includes(d.toLowerCase()))return"due";for(let d of this.config.dateKeywords.scheduled)if(l.includes(d.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,d=l+o.length,u=!1;for(let m=l;m<d;m++)if(t.has(m)){u=!0;break}if(u)continue;let p=this.parseChineseDate(o);if(p){for(let m=l;m<d;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 d;return(d={\u65E5:0,\u5929:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6}[o])!=null?d:-1},i=(o,l=0)=>{let d=t.getDay(),u=o-d;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,d=r(l);if(d!==-1){let u=0;return o==="\u4E0B"?u=1:o==="\u4E0A"?u=-1:u=0,i(d,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}}},qO={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 St=require("obsidian");var su=require("obsidian"),ND=require("obsidian");function vG(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 yG(n){return n.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()}function GO(n){let a=n.split("/");return a.map((t,r)=>r===a.length-1?yG(t):t.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()).join("/")}function An(n){let a=/\{\{DATE?:([^}]+)\}\}/gi,e=n.replace(a,(t,r)=>{try{return!r||r.trim()===""?t:(0,ND.moment)().format(r)}catch(i){return console.warn(`Invalid date format in template: ${r}`,i),t}});return GO(e)}async function pl(n,a,e){let{targetFile:t,appendToFile:r,targetType:i,targetHeading:s,dailyNoteSettings:o}=e,l;if(i==="daily-note"&&o){let u=(0,ND.moment)().format(o.format),p=o.folder?`${o.folder}/${u}.md`:`${u}.md`;l=GO(p)}else l=An(t||"Quick Capture.md");let d=n.vault.getFileByPath(l);if(d)if(d instanceof su.TFile)await n.vault.process(d,u=>{if(s)return bG(u,a,s,r||"append");switch(r){case"append":{let p=(0,su.getFrontMatterInfo)(u),m=u.endsWith(`
`)?"":`
`;if(p.exists){let h=p.contentStart;if(h!==void 0){let g=u.slice(0,h),f=u.slice(h);return g+f+m+a}else return u+m+a}else return u+m+a}case"prepend":{let p=(0,su.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(h){}}let p="";if(i==="daily-note"&&(o!=null&&o.template)){let m=vG(n,o.template);if(m instanceof su.TFile)try{p=await n.vault.read(m)}catch(h){console.warn("Failed to read template file:",h)}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;d=await n.vault.create(l,p)}}function bG(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 h=r[m].match(i);if(h){s=m,o=h[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 g=r[m].match(/^(#{1,6})\s+/);if(g&&g[1].length<=o){l=m;break}}let d;if(t==="prepend")for(d=s+1;d<l&&r[d].trim()==="";)d++;else for(d=l;d>s+1&&r[d-1].trim()==="";)d--;let u=a.split(`
`);return[...r.slice(0,d),"",...u,"",...r.slice(d)].join(`
`)}z();var Hg=require("obsidian"),KO=n=>{if(n==null)return null;if(n instanceof Date)return n;let a=new Date(n);return Number.isNaN(a.getTime())?null:a};function so(n){let a=KO(n);return a?a.getHours()===0&&a.getMinutes()===0&&a.getSeconds()===0&&a.getMilliseconds()===0:!1}function hs(n,a){var r;let e=KO(n);if(!e)return"";let t=(r=a==null?void 0:a.includeSeconds)!=null?r:!1;return(a==null?void 0:a.forceFormat)==="date-only"?(0,Hg.moment)(e).format("YYYY-MM-DD"):(a==null?void 0:a.forceFormat)==="date-time"?(0,Hg.moment)(e).format(t?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD HH:mm"):so(e)?(0,Hg.moment)(e).format("YYYY-MM-DD"):(0,Hg.moment)(e).format(t?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD HH:mm")}var Qy=require("obsidian");var nr=require("obsidian");z();function QO(){return[{id:"priority-highest",label:c("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 nr.Notice(c("Highest priority set"))}},{id:"priority-high",label:c("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 nr.Notice(c("High priority set"))}},{id:"priority-medium",label:c("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 nr.Notice(c("Medium priority set"))}},{id:"priority-low",label:c("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 nr.Notice(c("Low priority set"))}},{id:"priority-lowest",label:c("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 nr.Notice(c("Lowest priority set"))}}]}function XO(){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:c("Today"),icon:"calendar-days",description:c("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 nr.Notice(c("Due date set to today"))}},{id:"date-tomorrow",label:c("Tomorrow"),icon:"calendar-plus",description:c("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 nr.Notice(c("Due date set to tomorrow"))}},{id:"date-picker",label:c("Pick Date"),icon:"calendar",description:c("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:c("Scheduled Date"),icon:"calendar-clock",description:c("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 nr.Notice(c("Scheduled date set"))}}]}function JO(n){let a=[{id:"target-inbox",label:c("Inbox"),icon:"inbox",description:c("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 nr.Notice(c("Target set to Inbox"))}},{id:"target-daily",label:c("Daily Note"),icon:"calendar-days",description:c("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 nr.Notice(c("Target set to Daily Note"))}},{id:"target-current",label:c("Current File"),icon:"file-text",description:c("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 nr.Notice(c("Target set to Current File"))}},{id:"target-picker",label:c("Choose File"),icon:"folder-open",description:c("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:c("Save to recent file"),replacement:"",trigger:"*",action:(o,l)=>{var m;let d=(m=o.cm)==null?void 0:m.dom,u=d==null?void 0:d.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 nr.Notice(c("Target set to")+` ${i}`)}})}),a}function ZO(n){let a=[{id:"tag-important",label:c("Important"),icon:"star",description:c("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 nr.Notice(c("Tagged as important"))}},{id:"tag-urgent",label:c("Urgent"),icon:"zap",description:c("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 nr.Notice(c("Tagged as urgent"))}},{id:"tag-work",label:c("Work"),icon:"briefcase",description:c("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 nr.Notice(c("Tagged as work"))}},{id:"tag-personal",label:c("Personal"),icon:"user",description:c("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 nr.Notice(c("Tagged as personal"))}},{id:"tag-picker",label:c("Choose Tag"),icon:"tag",description:c("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:c("Existing tag"),replacement:"",trigger:"#",action:(s,o)=>{var p;let l=(p=s.cm)==null?void 0:p.dom,d=l==null?void 0:l.closest(".quick-capture-modal.minimal"),u=d==null?void 0:d.__minimalQuickCaptureModal;u&&(u.taskMetadata.tags||(u.taskMetadata.tags=[]),u.taskMetadata.tags.includes(r)||u.taskMetadata.tags.push(r),u.updateButtonState(u.tagButton,!0)),new nr.Notice(c("Tagged with")+` #${r}`)}})})}catch(e){console.warn("Failed to load existing tags:",e)}return a}function eN(n){return{priority:QO(),date:XO(),target:JO(n),tag:ZO(n)}}function Bg(n,a){let e=eN(a);switch(n){case"!":return e.priority;case"~":return e.date;case"*":return e.target;case"#":return e.tag;default:return[]}}var Vg=class extends Qy.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 Bg(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,Qy.setIcon)(s,e.icon),i.createDiv({cls:"universal-suggest-label",text:e.label})})}selectSuggestion(e,t){var d,u;let r=(d=this.context)==null?void 0:d.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 Ec=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 Vg(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={}}};var aN=require("obsidian");function jD(n){let a={};if(!n||!n.filterGroups||n.filterGroups.length===0||n.rootCondition==="none")return a;if(n.rootCondition==="all")n.filterGroups.forEach(e=>{let t=tN(e);TG(a,t)});else if(n.rootCondition==="any"){let e=n.filterGroups.map(tN);if(e.length>0){let t=e[0];if(["priority","project","status","context"].forEach(s=>{let o=t[s];o!==void 0&&e.every(d=>d[s]===o)&&(a[s]=o)}),["startDate","dueDate","scheduledDate"].forEach(s=>{let o=t[s];o instanceof Date&&e.every(d=>{let u=d[s];return u instanceof Date&&u.getTime()===o.getTime()})&&(a[s]=o)}),t.tags&&t.tags.length>0){let s=t.tags.filter(o=>e.every(l=>l.tags&&l.tags.includes(o)));s.length>0&&(a.tags=s)}}}return a}function tN(n){let a={};return n.groupCondition!=="all"||n.filters.forEach(e=>{wG(e,a)}),a}function wG(n,a){if(!n.property||!n.condition)return;let e=n.value;if(!(e===void 0||e===""||e===null))switch(n.property){case"priority":if(n.condition==="is"){let t=parseInt(e,10);isNaN(t)||(a.priority=t)}break;case"project":n.condition==="is"&&(a.project=String(e).trim());break;case"status":n.condition==="is"&&(a.status=String(e).trim());break;case"tags":if(n.condition==="contains"||n.condition==="is"){a.tags||(a.tags=[]);let t=String(e).trim();t&&!a.tags.includes(t)&&a.tags.push(t)}break;case"dueDate":if(n.condition==="is"){let t=LD(e);t&&(a.dueDate=t)}break;case"startDate":if(n.condition==="is"){let t=LD(e);t&&(a.startDate=t)}break;case"scheduledDate":if(n.condition==="is"){let t=LD(e);t&&(a.scheduledDate=t)}break}}function TG(n,a){a.priority!==void 0&&(n.priority=a.priority),a.project!==void 0&&(n.project=a.project),a.status!==void 0&&(n.status=a.status),a.context!==void 0&&(n.context=a.context),a.startDate!==void 0&&(n.startDate=a.startDate),a.dueDate!==void 0&&(n.dueDate=a.dueDate),a.scheduledDate!==void 0&&(n.scheduledDate=a.scheduledDate),a.tags&&(n.tags||(n.tags=[]),a.tags.forEach(e=>{n.tags.includes(e)||n.tags.push(e)}))}function LD(n){if(typeof n!="string")return;let a=(0,aN.moment)(n,["YYYY-MM-DD","YYYY-MM-DDTHH:mm"],!0);if(a.isValid())return a.toDate()}var Ft=class{constructor(a){this.STORAGE_PREFIX="taskTimer_";this.TIMER_LIST_KEY="taskTimer_activeList";this.COMPLETED_LIST_KEY="taskTimer_completedList";this.MAX_COMPLETED_HISTORY=200;this.settings=a}loadFromStorage(a){let e=window.app;return e!=null&&e.loadLocalStorage?e.loadLocalStorage(a):typeof localStorage!="undefined"?localStorage.getItem(a):null}saveToStorage(a,e){let t=window.app;if(t!=null&&t.saveLocalStorage){t.saveLocalStorage(a,e);return}typeof localStorage!="undefined"&&(e===null?localStorage.removeItem(a):localStorage.setItem(a,e))}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{this.saveToStorage(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",this.saveToStorage(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",this.saveToStorage(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",this.saveToStorage(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);this.recordCompletedTimer({taskId:e.taskId,filePath:e.filePath,blockId:e.blockId,duration:r,completedAt:t,createdAt:e.createdAt,segments:e.segments});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=this.loadFromStorage(a);if(!e)return null;let t=JSON.parse(e);if(this.isLegacyFormat(t)){`${a}`;let r=this.migrateLegacyState(t);return this.saveToStorage(a,JSON.stringify(r)),r}return this.validateTimerState(t)?t:(console.error(`[TaskTimerManager] Invalid timer state structure for ${a}:`,t),this.saveToStorage(a,null),null)}catch(e){console.error(`[TaskTimerManager] Error retrieving timer state for ${a}:`,e);try{this.saveToStorage(a,null)}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){this.saveToStorage(a,null),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=this.loadFromStorage(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),this.saveToStorage(this.TIMER_LIST_KEY,JSON.stringify(e)))}removeFromActiveList(a){let t=this.getActiveList().filter(r=>r!==a);this.saveToStorage(this.TIMER_LIST_KEY,JSON.stringify(t))}recordCompletedTimer(a){let e=this.getCompletedList();e.unshift(a),e.length>this.MAX_COMPLETED_HISTORY&&(e.length=this.MAX_COMPLETED_HISTORY),this.saveToStorage(this.COMPLETED_LIST_KEY,JSON.stringify(e))}getRecentCompletedTimers(a=50){let e=this.getCompletedList();return a&&a>0?e.slice(0,a):e}getCompletedList(){let a=this.loadFromStorage(this.COMPLETED_LIST_KEY);if(!a)return[];try{let e=JSON.parse(a);return Array.isArray(e)?e:[]}catch(e){return console.error("Error parsing completed timer list:",e),[]}}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 xG="task-genius.lastUsedQuickCaptureMode",ou=class extends St.Modal{constructor(e,t,r="checkbox",i){var d,u,p,m,h;super(e);this.markdownEditor=null;this.capturedContent="";this.taskMetadata={};this.inlineModeAvailable=!0;this.fileModeAvailable=!1;this.headerContainer=null;this.contentContainer=null;this.footerContainer=null;this.tempTargetFilePath="";this.preferMetadataFormat="tasks";this.keepOpenAfterCapture=!1;this.plugin=t,this.currentMode=r;let s=(d=this.plugin.settings.fileFilter)==null?void 0:d.scopeControls;this.inlineModeAvailable=(s==null?void 0:s.inlineTasksEnabled)!==!1,this.fileModeAvailable=((p=(u=this.plugin.settings.fileSource)==null?void 0:u.enabled)!=null?p:!1)&&(s==null?void 0:s.fileTasksEnabled)!==!1,s||(this.inlineModeAvailable=!0,this.fileModeAvailable=(h=(m=this.plugin.settings.fileSource)==null?void 0:m.enabled)!=null?h:!1),!this.inlineModeAvailable&&!this.fileModeAvailable&&(this.inlineModeAvailable=!0),this.suggestManager=new Ec(e,t);let o={},l=this.app.loadLocalStorage("task-genius-view-filter");if(l&&(o={...jD(l)}),i){let g=o.tags||[],f=i.tags||[];o={...o,...i},(g.length>0||f.length>0)&&(o.tags=[...new Set([...g,...f])])}Object.keys(o).length>0&&(this.taskMetadata=this.normalizeMetadataDates(o),o.location==="file"&&(this.currentMode="file")),this.currentMode==="file"&&!this.fileModeAvailable?this.currentMode="checkbox":this.currentMode==="checkbox"&&!this.inlineModeAvailable&&this.fileModeAvailable&&(this.currentMode="file"),this.preferMetadataFormat=this.plugin.settings.preferMetadataFormat,this.keepOpenAfterCapture=this.plugin.settings.quickCapture.keepOpenAfterCapture||!1,this.initializeTargetFile()}normalizeMetadataDates(e){let t=r=>{if(r!=null){if(r instanceof Date)return r;if(typeof r=="number"){let i=new Date(r);return isNaN(i.getTime())?void 0:i}if(typeof r=="string"){let i=(0,St.moment)(r,St.moment.ISO_8601,!0);if(i.isValid())return i.toDate();let s=(0,St.moment)(r,["YYYY-MM-DD HH:mm","YYYY-MM-DDTHH:mm"],!0);if(s.isValid())return s.toDate();let o=(0,St.moment)(r,"YYYY-MM-DD",!0);if(o.isValid())return o.toDate()}}};return{...e,startDate:t(e.startDate),dueDate:t(e.dueDate),scheduledDate:t(e.scheduledDate)}}initializeTargetFile(){let e=this.plugin.settings.quickCapture;if(this.taskMetadata.location==="file"&&this.taskMetadata.customFileName)this.tempTargetFilePath=this.taskMetadata.customFileName;else if(e.targetType==="daily-note"){let t=(0,St.moment)().format(e.dailyNoteSettings.format),r=e.dailyNoteSettings.folder?`${e.dailyNoteSettings.folder}/${t}.md`:`${t}.md`;this.tempTargetFilePath=this.sanitizeFilePath(r)}else this.tempTargetFilePath=e.targetFile}onOpen(){let{contentEl:e}=this;this.modalEl.toggleClass("quick-capture-modal",!0),this.modalEl.toggleClass(`quick-capture-${this.currentMode}`,!0),this.suggestManager.startManaging(),this.createBaseUI(e),this.createUI(),this.initializeComponents()}createBaseUI(e){this.titleEl.toggleClass("quick-capture-header",!0),this.headerContainer=this.titleEl,this.createHeader(),this.contentContainer=e.createDiv({cls:"quick-capture-content"}),this.footerContainer=e.createDiv({cls:"quick-capture-footer"}),this.createFooter()}createHeader(){if(!this.headerContainer)return;let e=this.headerContainer.createDiv({cls:"quick-capture-tabs",attr:{role:"tablist","aria-label":c("Save mode selection")}});if(this.inlineModeAvailable){let t=new St.ButtonComponent(e).setClass("quick-capture-tab").onClick(()=>this.switchMode("checkbox"));t.buttonEl.toggleClass("clickable-icon",!0);let r=t.buttonEl;r.setAttribute("role","tab"),r.setAttribute("aria-selected",String(this.currentMode==="checkbox")),r.setAttribute("aria-controls","quick-capture-content"),r.setAttribute("data-mode","checkbox"),this.currentMode==="checkbox"&&t.setClass("active"),r.empty();let i=r.createSpan({cls:"quick-capture-tab-icon"});(0,St.setIcon)(i,"check-square"),r.createSpan({text:c("Checkbox"),cls:"quick-capture-tab-text"})}if(this.fileModeAvailable){let t=new St.ButtonComponent(e).setClass("quick-capture-tab").onClick(()=>this.switchMode("file"));t.buttonEl.toggleClass("clickable-icon",!0);let r=t.buttonEl;r.setAttribute("role","tab"),r.setAttribute("aria-selected",String(this.currentMode==="file")),r.setAttribute("aria-controls","quick-capture-content"),r.setAttribute("data-mode","file"),this.currentMode==="file"&&t.setClass("active"),r.empty();let i=r.createSpan({cls:"quick-capture-tab-icon"});(0,St.setIcon)(i,"file-plus"),r.createSpan({text:c("File"),cls:"quick-capture-tab-text"})}this.fileModeAvailable&&this.inlineModeAvailable||(e.classList.add("is-hidden"),e.setAttribute("aria-hidden","true")),this.fileModeAvailable&&this.inlineModeAvailable&&this.headerContainer.createEl("button",{text:c("Clear"),cls:["quick-capture-clear","clickable-icon"],attr:{"aria-label":c("Clear all content"),type:"button"}}).addEventListener("click",()=>this.handleClear())}createFooter(){if(!this.footerContainer)return;this.footerContainer.createDiv({cls:"quick-capture-footer-left"}).createEl("button",{text:c("Continue & New"),cls:"quick-capture-continue"}).addEventListener("click",()=>this.handleContinueCreate());let r=this.footerContainer.createDiv({cls:"quick-capture-footer-right"});r.createEl("button",{text:this.currentMode==="file"?c("Save as File"):c("Add Task"),cls:"mod-cta"}).addEventListener("click",()=>this.handleSubmit()),r.createEl("button",{text:c("Cancel")}).addEventListener("click",()=>this.close())}async switchMode(e){var o,l;if(e===this.currentMode)return;if(e==="file"&&!this.fileModeAvailable){new St.Notice(c("File Task is disabled. Enable FileSource in Settings to use File mode."));return}if(e==="checkbox"&&!this.inlineModeAvailable)return;let t=this.capturedContent,r={...this.taskMetadata};this.currentMode=e;try{this.app.saveLocalStorage(xG,e)}catch(d){}this.modalEl.removeClass("quick-capture-checkbox","quick-capture-file"),this.modalEl.addClass(`quick-capture-${e}`);let i=(o=this.headerContainer)==null?void 0:o.querySelectorAll(".quick-capture-tab");i==null||i.forEach(d=>{d.removeClass("active");let u=d.getAttribute("data-mode");u===e&&d.addClass("active"),d.setAttribute("aria-selected",String(u===e))}),this.updateTargetDisplay(),this.taskMetadata=r;let s=(l=this.footerContainer)==null?void 0:l.querySelector(".mod-cta");s&&s.setText(e==="file"?c("Save as File"):c("Add Task"))}handleClear(){var r,i;this.capturedContent="",this.markdownEditor&&this.markdownEditor.set("",!1);let e=this.taskMetadata.location,t=this.taskMetadata.targetFile;this.taskMetadata={location:e,targetFile:t},this.resetUIElements(),(i=(r=this.markdownEditor)==null?void 0:r.editor)==null||i.focus()}async handleContinueCreate(){var t;let e=this.capturedContent.trim()||((t=this.markdownEditor)==null?void 0:t.value.trim())||"";if(!e){new St.Notice(c("Nothing to capture"));return}try{await this.saveContent(e),new St.Notice(c("Captured successfully")),this.handleClear()}catch(r){new St.Notice(`${c("Failed to save:")} ${r}`)}}async handleSubmit(){var t;let e=this.capturedContent.trim()||((t=this.markdownEditor)==null?void 0:t.value.trim())||"";if(!e){new St.Notice(c("Nothing to capture"));return}try{await this.saveContent(e),new St.Notice(this.currentMode==="file"?c("File saved successfully"):c("Task added successfully")),this.keepOpenAfterCapture?this.handleClear():this.close()}catch(r){new St.Notice(`${c("Failed to save:")} ${r}`)}}async saveContent(e){var d,u,p,m,h;let t=this.processContentWithMetadata(e),r=this.tempTargetFilePath,i,s=this.currentMode==="checkbox"&&((d=this.plugin.settings.taskTimer)==null?void 0:d.enabled)&&this.plugin.settings.quickCapture.autoStartTimer;if(s&&(i=new Ft(this.plugin.settings.taskTimer).generateBlockId(),t=this.appendBlockIdToContent(t,i)),this.currentMode==="file"&&this.taskMetadata.customFileName){r=An(this.taskMetadata.customFileName),r.endsWith(".md")||(r+=".md");let g=(p=(u=this.plugin.settings.quickCapture.createFileMode)==null?void 0:u.defaultFolder)==null?void 0:p.trim();(h=(m=this.plugin.settings)==null?void 0:m.fileSource)!=null&&h.enabled&&g&&!r.includes("/")&&(r=this.sanitizeFilePath(`${g}/${r}`)),t=await this.buildFileModeContent(e,t)}let o="fixed";this.taskMetadata.location==="daily-note"?o="daily-note":this.taskMetadata.location==="file"||this.taskMetadata.location==="fixed"?o="fixed":this.plugin.settings.quickCapture.targetType==="daily-note"?o="daily-note":o="fixed";let l={...this.plugin.settings.quickCapture,targetFile:r,targetType:o,appendToFile:this.currentMode==="file"?"replace":this.plugin.settings.quickCapture.appendToFile};await pl(this.app,t,l),s&&i&&await this.startTimerForNewTask(r,i)}appendBlockIdToContent(e,t){return/\s\^[\w-]+\s*$/.test(e)?e:`${e} ^${t}`}async startTimerForNewTask(e,t){try{let r=new Ft(this.plugin.settings.taskTimer),i=e;if(this.plugin.settings.quickCapture.targetType==="daily-note"){let s=(0,St.moment)().format(this.plugin.settings.quickCapture.dailyNoteSettings.format),o=this.plugin.settings.quickCapture.dailyNoteSettings.folder;i=o?`${o}/${s}.md`:`${s}.md`}i.endsWith(".md")||(i+=".md"),r.startTimer(i,t),new St.Notice(c("Timer started for new task"))}catch(r){console.error("[QuickCapture] Failed to start timer for new task:",r)}}sanitizeFilePath(e){let t=e.split("/");return t.map((i,s)=>s===t.length-1?this.sanitizeFilename(i):i.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()).join("/")}mapStatusToText(e){if(!e)return"not-started";if(e.length>1)return e;switch(e){case"x":case"X":return"completed";case"/":case">":return"in-progress";case"?":return"planned";case"-":return"cancelled";case" ":default:return"not-started"}}async buildFileModeContent(e,t,r={}){var l;let i=this.plugin.settings.quickCapture.createFileMode,s=!!(i!=null&&i.useTemplate);if(s){let d=(l=i==null?void 0:i.templateFile)==null?void 0:l.trim();if(d){let u=this.app.vault.getAbstractFileByPath(d);if(u instanceof St.TFile)try{let p=await this.app.vault.read(u),m=this.mergeContentIntoTemplate(p,t);return this.ensureMinimalFrontmatter(m)}catch(p){console.error("Failed to read quick capture template:",p),r.preview||new St.Notice(`${c("Failed to read template file:")} ${d}`)}else r.preview||new St.Notice(`${c("Template file not found:")} ${d}`)}else r.preview||new St.Notice(c("Template file is not configured for Quick Capture file mode."))}let o=t.trimStart().startsWith("---");return s&&o?t:s?this.ensureMinimalFrontmatter(t):this.buildFullFrontmatter(t,e)}mergeContentIntoTemplate(e,t){if(!e)return t;let r=/\{\{\s*CONTENT\s*\}\}/gi;if(r.test(e))return e.replace(r,t);let i=e.trimEnd();return`${i}${i?`
`:""}${t}`}ensureMinimalFrontmatter(e){if(e.trimStart().startsWith("---"))return e;let r=this.mapStatusToText(this.taskMetadata.status);return`---
status: ${JSON.stringify(r)}
---
${e}`}buildFullFrontmatter(e,t){var k;if(e.trimStart().startsWith("---"))return e;let i=this.mapStatusToText(this.taskMetadata.status),s=this.taskMetadata.startDate?this.formatDate(this.taskMetadata.startDate):void 0,o=this.taskMetadata.dueDate?this.formatDate(this.taskMetadata.dueDate):void 0,l=this.taskMetadata.scheduledDate?this.formatDate(this.taskMetadata.scheduledDate):void 0,d=this.taskMetadata.priority!==void 0&&this.taskMetadata.priority!==null?String(this.taskMetadata.priority):void 0,u=this.taskMetadata.project||void 0,p=this.taskMetadata.context||void 0,m=this.taskMetadata.recurrence||void 0,g=!!((k=this.plugin.settings.quickCapture.createFileMode)!=null&&k.writeContentTagsToFrontmatter)?this.extractTagsFromContentForFrontmatter(t):[],f=[];return f.push(`status: ${JSON.stringify(i)}`),o&&f.push(`dueDate: ${JSON.stringify(o)}`),s&&f.push(`startDate: ${JSON.stringify(s)}`),l&&f.push(`scheduledDate: ${JSON.stringify(l)}`),d&&f.push(`priority: ${JSON.stringify(d)}`),u&&f.push(`project: ${JSON.stringify(u)}`),p&&f.push(`context: ${JSON.stringify(p)}`),m&&f.push(`repeat: ${JSON.stringify(m)}`),g.length>0&&f.push(`tags: [${g.map(v=>JSON.stringify(v)).join(", ")}]`),`---
${f.join(`
`)}
---
${e}`}extractTagsFromContentForFrontmatter(e){if(!e)return[];let t=/(^|\s)#([A-Za-z0-9_\/-]+)/g,r=new Set,i;for(;(i=t.exec(e))!==null;){let s=i[2];s&&r.add(s)}return Array.from(r)}sanitizeFilename(e){return e.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()}formatDate(e){return hs(e,{includeSeconds:!1})}parseDate(e){let t=e==null?void 0:e.trim();if(!t)return new Date("");let r=(0,St.moment)(t,["YYYY-MM-DD HH:mm","YYYY-MM-DDTHH:mm","YYYY-MM-DD"],!0);if(r.isValid()){let s=r.toDate();return r.creationData().format==="YYYY-MM-DD"&&s.setHours(0,0,0,0),s}let i=new Date(t);return isNaN(i.getTime())?new Date(""):(so(i)&&i.setHours(0,0,0,0),i)}onClose(){this.suggestManager.stopManaging(),this.markdownEditor&&(this.markdownEditor.destroy(),this.markdownEditor=null),this.contentEl.empty()}};var Jy=require("obsidian");z();var HD=class extends Jy.AbstractInputSuggest{constructor(e,t,r){super(e,t);this.currentFolder="";this.fileTemplates=["{{DATE:YYYY-MM-DD}} - Meeting Notes","{{DATE:YYYY-MM-DD}} - Daily Log","{{DATE:YYYY-MM-DD}} - Task List","Project - {{DATE:YYYY-MM}}","Notes - {{DATE:YYYY-MM-DD-HHmm}}"];this.textInputEl=t,this.currentFolder=r||""}getSuggestions(e){let t=this.app.vault.getMarkdownFiles(),r=e.toLowerCase(),i=[],s=t.filter(o=>this.currentFolder&&!o.path.startsWith(this.currentFolder)?!1:o.basename.toLowerCase().contains(r));return i.push(...s.slice(0,5)),i}renderSuggestion(e,t){var r;t.setText(e.basename),t.createDiv({cls:"suggestion-folder",text:((r=e.parent)==null?void 0:r.path)||"/"})}selectSuggestion(e){this.textInputEl.value=e.basename,this.textInputEl.trigger("input"),this.close()}},Xy=class{constructor(a,e,t,r){this.inputEl=null;this.suggest=null;this.templateDropdown=null;this.app=a,this.plugin=e,this.container=t,this.onChange=r==null?void 0:r.onChange,this.render(r)}render(a){let e=this.container.createDiv({cls:"file-name-input-container"});e.createEl("label",{text:c("File Name"),cls:"file-name-label"});let t=An((a==null?void 0:a.defaultValue)||"{{DATE:YYYY-MM-DD}}"),r=e.createDiv({cls:"file-name-input-wrapper"});this.inputEl=r.createEl("input",{type:"text",cls:"file-name-input",placeholder:(a==null?void 0:a.placeholder)||c("Enter file name..."),value:t}),this.suggest=new HD(this.app,this.inputEl,a==null?void 0:a.currentFolder),this.createTemplateDropdown(r),this.inputEl.addEventListener("input",()=>{this.onChange&&this.onChange(this.getValue())})}createTemplateDropdown(a){let e=a.createDiv({cls:"file-name-template-container"});this.templateDropdown=new Jy.DropdownComponent(e);let t=[{name:"Daily Note",template:"{{DATE:YYYY-MM-DD}}"},{name:"Meeting",template:"{{DATE:YYYY-MM-DD}} - Meeting"},{name:"Task",template:"{{DATE:YYYY-MM-DD}} - Task"},{name:"Project",template:"Project - {{DATE:YYYY-MM}}"},{name:"Notes",template:"Notes - {{DATE:YYYY-MM-DD-HHmm}}"}],r=this.plugin.settings.quickCapture.fileNameTemplates,{templates:i,updated:s}=this.normalizeTemplates(r,t);s&&(this.plugin.settings.quickCapture.fileNameTemplates=i,typeof this.plugin.saveSettings=="function"&&this.plugin.saveSettings()),this.templateDropdown.addOption("",c("Select a template...")),i.forEach(o=>{var m;let l=An(o.template),d=(o.name||"").trim(),u=d.length?d:o.template,p=u===l?u:`${u} \u2014 ${l}`;(m=this.templateDropdown)==null||m.addOption(o.template,p)}),this.templateDropdown.setValue(""),this.templateDropdown.onChange(o=>{if(o&&this.inputEl){let l=An(o);this.inputEl.value=l,this.onChange&&this.onChange(this.getValue()),this.inputEl.focus()}})}normalizeTemplates(a,e){if(!Array.isArray(a))return{templates:e.map(i=>({...i})),updated:!0};let t=!1;return{templates:a.map(i=>{if(typeof i=="string")return t=!0,{name:i,template:i};if(i&&typeof i=="object"){let s=i.template,o=typeof s=="string"?s:"";typeof s!="string"&&(t=!0);let l=i.name,d=typeof l=="string"?l.trim():"",u=d.length?d:o;return(typeof l!="string"||d.length===0)&&(t=!0),{name:u,template:o}}return t=!0,{name:"",template:""}}),updated:t}}getValue(){return this.inputEl?this.inputEl.value:""}setValue(a){this.inputEl&&(this.inputEl.value=a)}clear(){this.setValue("")}focus(){var a;(a=this.inputEl)==null||a.focus()}destroy(){var a;(a=this.suggest)==null||a.close(),this.templateDropdown=null,this.container.empty()}};var CG="task-genius.lastUsedQuickCaptureMode",ft=class extends ou{constructor(e,t,r,i=!1){let s="checkbox";try{let o=e.loadLocalStorage(CG);(o==="checkbox"||o==="file")&&(s=o)}catch(o){}super(e,t,s,r);this.previewContainerEl=null;this.previewMarkdownEl=null;this.previewPlainEl=null;this.markdownRenderer=null;this.universalSuggest=null;this.includeTime=!0;this.fileNameInput=null;this.targetSectionContainer=null;this.configPanel=null;this.metadataContainer=null;this.timeParsingService=new nu(this.plugin.settings.timeParsing||qO)}initializeComponents(){if(this.contentContainer&&!this.markdownEditor){let e=this.contentContainer.querySelector(".quick-capture-modal-editor");e&&this.setupMarkdownEditor(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)}this.markdownEditor&&this.capturedContent&&this.markdownEditor.set(this.capturedContent,!1)}createUI(){if(!this.contentContainer)return;let e=this.contentContainer.createDiv({cls:"quick-capture-layout"}),t=e.createDiv({cls:"quick-capture-config-panel"}),r=e.createDiv({cls:"quick-capture-editor-panel"});this.configPanel=t,this.createTargetSection(t),this.metadataContainer=t.createDiv({cls:"quick-capture-metadata-container"}),this.createTaskMetadataConfig(this.metadataContainer),r.createDiv({text:this.currentMode==="file"?c("File Content"):c("Task Content"),cls:"quick-capture-section-title"});let i=r.createDiv({cls:"quick-capture-modal-editor"});this.previewContainerEl=r.createDiv({cls:"preview-container"}),this.previewMarkdownEl=this.previewContainerEl.createDiv({cls:"preview-markdown"}),this.previewPlainEl=this.previewContainerEl.createEl("pre",{cls:"preview-plain tg-file-preview"}),this.currentMode==="checkbox"&&(this.markdownRenderer=new la(this.app,this.previewMarkdownEl,"",!1)),this.previewMarkdownEl&&this.previewPlainEl&&(this.previewMarkdownEl.style.display=this.currentMode==="checkbox"?"block":"none",this.previewPlainEl.style.display=this.currentMode==="checkbox"?"none":"block")}createTargetSection(e){this.targetSectionContainer=e.createDiv({cls:"quick-capture-target-container"}),this.updateTargetDisplay()}updateTargetDisplay(){var t;if(!this.targetSectionContainer)return;this.targetSectionContainer.empty(),this.currentMode==="checkbox"?this.createTargetFileSelector(this.targetSectionContainer):this.createFileNameSelector(this.targetSectionContainer),this.metadataContainer&&(this.metadataContainer.style.display="block",this.metadataContainer.children.length===0&&this.createTaskMetadataConfig(this.metadataContainer));let e=(t=this.contentContainer)==null?void 0:t.querySelector(".quick-capture-section-title");e&&e.setText(this.currentMode==="file"?c("File Content"):c("Task Content")),this.previewMarkdownEl&&this.previewPlainEl&&(this.previewMarkdownEl.style.display=this.currentMode==="checkbox"?"block":"none",this.previewPlainEl.style.display=this.currentMode==="checkbox"?"none":"block"),this.updatePreview()}createFileNameSelector(e){var r;let t=e;if(t.createDiv({text:c("Capture as:"),cls:"quick-capture-section-title"}),this.fileNameInput&&(this.fileNameInput.destroy(),this.fileNameInput=null),this.fileNameInput=new Xy(this.app,this.plugin,t,{placeholder:c("Enter file name..."),defaultValue:this.plugin.settings.quickCapture.defaultFileNameTemplate||"{{DATE:YYYY-MM-DD}} - Task",currentFolder:(r=this.plugin.settings.quickCapture.createFileMode)==null?void 0:r.defaultFolder,onChange:i=>{this.taskMetadata.customFileName=i}}),!this.taskMetadata.customFileName){let i=this.plugin.settings.quickCapture.defaultFileNameTemplate||"{{DATE:YYYY-MM-DD}} - Task";this.taskMetadata.customFileName=An(i)}this.taskMetadata.customFileName&&this.fileNameInput.setValue(this.taskMetadata.customFileName)}createTargetFileSelector(e){let t=e.createDiv({cls:"quick-capture-target-container"});t.createDiv({text:c("Capture to:"),cls:"quick-capture-section-title"});let r=t.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 qo(this.app,r,this.plugin.settings.quickCapture,i=>{var s,o;r.textContent=i.path,this.tempTargetFilePath=i.path,(o=(s=this.markdownEditor)==null?void 0:s.editor)==null||o.focus()})}createTaskMetadataConfig(e){e.createDiv({text:c("Task Properties"),cls:"quick-capture-section-title"}),new il(this.plugin,e,{status:this.taskMetadata.status},{type:"quick-capture",onTaskStatusSelected:r=>{this.taskMetadata.status=r,this.updatePreview()}}).load(),this.createDateInputs(e),this.createPrioritySelector(e),this.createProjectInput(e),this.createContextInput(e),this.createRecurrenceInput(e)}createDateInputs(e){let t=()=>this.includeTime?"datetime-local":"date",r=()=>this.includeTime?"YYYY-MM-DD HH:mm":"YYYY-MM-DD";new Fn.Setting(e).setName(c("Include time")).setDesc(c("Toggle between date-only and date+time input")).addToggle(i=>{i.setValue(this.includeTime).onChange(s=>{this.includeTime=s,this.updateDateInputsMode()})}),new Fn.Setting(e).setName(c("Start Date")).addText(i=>{i.setPlaceholder(r()).setValue(this.taskMetadata.startDate?this.formatDateInputValue(this.taskMetadata.startDate):"").onChange(s=>{s?(this.taskMetadata.startDate=this.parseDate(s),this.markAsManuallySet("startDate")):(this.taskMetadata.startDate=void 0,this.taskMetadata.manuallySet&&(this.taskMetadata.manuallySet.startDate=!1)),this.updatePreview()}),i.inputEl.type=t(),this.startDateInput=i.inputEl}),new Fn.Setting(e).setName(c("Due Date")).addText(i=>{i.setPlaceholder(r()).setValue(this.taskMetadata.dueDate?this.formatDateInputValue(this.taskMetadata.dueDate):"").onChange(s=>{s?(this.taskMetadata.dueDate=this.parseDate(s),this.markAsManuallySet("dueDate")):(this.taskMetadata.dueDate=void 0,this.taskMetadata.manuallySet&&(this.taskMetadata.manuallySet.dueDate=!1)),this.updatePreview()}),i.inputEl.type=t(),this.dueDateInput=i.inputEl}),new Fn.Setting(e).setName(c("Scheduled Date")).addText(i=>{i.setPlaceholder(r()).setValue(this.taskMetadata.scheduledDate?this.formatDateInputValue(this.taskMetadata.scheduledDate):"").onChange(s=>{s?(this.taskMetadata.scheduledDate=this.parseDate(s),this.markAsManuallySet("scheduledDate")):(this.taskMetadata.scheduledDate=void 0,this.taskMetadata.manuallySet&&(this.taskMetadata.manuallySet.scheduledDate=!1)),this.updatePreview()}),i.inputEl.type=t(),this.scheduledDateInput=i.inputEl})}createPrioritySelector(e){new Fn.Setting(e).setName(c("Priority")).addDropdown(t=>{var r;t.addOption("",c("None")).addOption("5",c("Highest")).addOption("4",c("High")).addOption("3",c("Medium")).addOption("2",c("Low")).addOption("1",c("Lowest")).setValue(((r=this.taskMetadata.priority)==null?void 0:r.toString())||"").onChange(i=>{this.taskMetadata.priority=i?parseInt(i):void 0,this.updatePreview()})})}createProjectInput(e){new Fn.Setting(e).setName(c("Project")).addText(t=>{new xr(this.app,t.inputEl,this.plugin),t.setPlaceholder(c("Project name")).setValue(this.taskMetadata.project||"").onChange(r=>{this.taskMetadata.project=r||void 0,this.updatePreview()})})}createContextInput(e){new Fn.Setting(e).setName(c("Context")).addText(t=>{new Jr(this.app,t.inputEl,this.plugin),t.setPlaceholder(c("Context")).setValue(this.taskMetadata.context||"").onChange(r=>{this.taskMetadata.context=r||void 0,this.updatePreview()})})}createRecurrenceInput(e){new Fn.Setting(e).setName(c("Recurrence")).addText(t=>{t.setPlaceholder(c("e.g., every day, every week")).setValue(this.taskMetadata.recurrence||"").onChange(r=>{this.taskMetadata.recurrence=r||void 0,this.updatePreview()})})}setupMarkdownEditor(e){setTimeout(()=>{var t,r;this.markdownEditor=cs(this.app,e,{placeholder:this.plugin.settings.quickCapture.placeholder,singleLine:this.currentMode==="checkbox",onEnter:(i,s,o)=>s?(this.handleSubmit(),!0):this.currentMode==="checkbox"?(this.handleSubmit(),!0):!1,onEscape:i=>{this.close()},onSubmit:i=>{this.handleSubmit()},onChange:i=>{var s;this.capturedContent=((s=this.markdownEditor)==null?void 0:s.value)||"",this.parseDebounceTimer&&clearTimeout(this.parseDebounceTimer),this.parseDebounceTimer=window.setTimeout(()=>{this.performRealTimeParsing()},300),this.updatePreview()}}),(r=(t=this.markdownEditor)==null?void 0:t.editor)==null||r.focus(),this.capturedContent&&this.markdownEditor&&this.markdownEditor.set(this.capturedContent,!1)},50)}updatePreview(){if(this.currentMode==="checkbox")this.markdownRenderer&&this.markdownRenderer.render(this.processContentWithMetadata(this.capturedContent));else if(this.previewPlainEl){let e=this.capturedContent;this.computeFileModePreviewContent(e).then(t=>{this.previewPlainEl&&this.capturedContent===e&&(this.previewPlainEl.textContent=t)})}}async computeFileModePreviewContent(e){let t=this.processContentWithMetadata(e);return this.buildFileModeContent(e,t,{preview:!0})}processContentWithMetadata(e){var i;if(this.currentMode==="file")return e;let t=e.split(`
`),r=[];for(let s of t){if(!s.trim()){r.push(s);continue}let o=this.timeParsingService.parseTimeExpressionsForLine(s),l=o.cleanedLine,d=s.match(/^(\s+)/),u=d&&d[1].length>0,p=l.trim().match(/^(-|\d+\.|\*|\+)(\s+\[[^\]\[]+\])?/);if(u){let m=d[1];r.push(m+this.cleanTemporaryMarks(l.trim()))}else if(p)if(l.trim().match(/^(-|\d+\.|\*|\+)\s+\[[^\]]+\]/))r.push(this.addLineMetadataToTask(l,o));else{let m=(i=l.trim().match(/^(-|\d+\.|\*|\+)/))==null?void 0:i[0],h=this.cleanTemporaryMarks(l.trim().substring((m==null?void 0:m.length)||0).trim()),g=this.taskMetadata.status||" ",f=`${m} [${g}] ${h}`;r.push(this.addLineMetadataToTask(f,o))}else{let m=this.taskMetadata.status||" ",h=this.cleanTemporaryMarks(l),g=`- [${m}] ${h}`;r.push(this.addLineMetadataToTask(g,o))}}return r.join(`
`)}addLineMetadataToTask(e,t){let r=this.generateLineMetadata(t);return r?`${e} ${r}`.trim():e}generateLineMetadata(e){var l,d;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 u=this.formatDate(i);t.push(r?`[start:: ${u}]`:`\u{1F6EB} ${u}`)}if(s){let u=this.formatDate(s);t.push(r?`[due:: ${u}]`:`\u{1F4C5} ${u}`)}if(o){let u=this.formatDate(o);t.push(r?`[scheduled:: ${u}]`:`\u23F3 ${u}`)}if(this.taskMetadata.priority)if(r){let u={5:"highest",4:"high",3:"medium",2:"low",1:"lowest"};t.push(`[priority:: ${u[this.taskMetadata.priority]}]`)}else{let u=["\u23EC","\u{1F53D}","\u{1F53C}","\u23EB","\u{1F53A}"];t.push(u[this.taskMetadata.priority-1])}if(this.taskMetadata.project){let u=((l=this.plugin.settings.projectTagPrefix)==null?void 0:l[this.plugin.settings.preferMetadataFormat])||"project";t.push(r?`[${u}:: ${this.taskMetadata.project}]`:`#${u}/${this.taskMetadata.project}`)}if(this.taskMetadata.context){let u=((d=this.plugin.settings.contextTagPrefix)==null?void 0:d[this.plugin.settings.preferMetadataFormat])||"@";t.push(r?`[context:: ${this.taskMetadata.context}]`:`${u}${this.taskMetadata.context}`)}return this.taskMetadata.recurrence&&t.push(r?`[repeat:: ${this.taskMetadata.recurrence}]`:`\u{1F501} ${this.taskMetadata.recurrence}`),t.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}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.setDateInputValue(this.startDateInput,r)),i&&!this.isManuallySet("dueDate")&&(this.taskMetadata.dueDate=i,this.setDateInputValue(this.dueDateInput,i)),s&&!this.isManuallySet("scheduledDate")&&(this.taskMetadata.scheduledDate=s,this.setDateInputValue(this.scheduledDateInput,s))}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}updateDateInputsMode(){let e=this.includeTime?"datetime-local":"date",t=this.includeTime?"YYYY-MM-DD HH:mm":"YYYY-MM-DD",r=(i,s)=>{i&&(i.type=e,i.placeholder=t,i.value=this.formatDateInputValue(s))};r(this.startDateInput,this.taskMetadata.startDate),r(this.dueDateInput,this.taskMetadata.dueDate),r(this.scheduledDateInput,this.taskMetadata.scheduledDate),this.updatePreview()}setDateInputValue(e,t){e&&(e.value=this.formatDateInputValue(t))}formatDateInputValue(e){return e?(0,Fn.moment)(e).format(this.includeTime?"YYYY-MM-DD[T]HH:mm":"YYYY-MM-DD"):""}formatDate(e){return hs(e,{forceFormat:this.includeTime?void 0:"date-only",includeSeconds:!1})}resetUIElements(){this.startDateInput&&(this.startDateInput.value=""),this.dueDateInput&&(this.dueDateInput.value=""),this.scheduledDateInput&&(this.scheduledDateInput.value=""),this.fileNameInput&&this.fileNameInput.clear(),this.previewContainerEl&&this.previewContainerEl.empty()}onClose(){this.plugin.settings.quickCapture.rememberLastMode&&(this.plugin.settings.quickCapture.lastUsedMode=this.currentMode,this.plugin.saveSettings()),this.universalSuggest&&(this.universalSuggest.disable(),this.universalSuggest=null),this.parseDebounceTimer&&clearTimeout(this.parseDebounceTimer),this.markdownRenderer&&(this.markdownRenderer.unload(),this.markdownRenderer=null),this.fileNameInput&&(this.fileNameInput.destroy(),this.fileNameInput=null),super.onClose()}};z();var SG=20,lu=class extends cu.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 l;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"}),{marks:t}=ca(this.plugin.settings),r=t[this.statusName]||" ";e.dataset.task=r;let i=(((l=this.plugin.settings.taskStatuses)==null?void 0:l.completed)||"x|X").split("|");e.checked=i.includes(r),this.registerDomEvent(e,"click",d=>{d.stopPropagation(),d.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.registerDomEvent(this.headerEl,"contextmenu",d=>{if(this.params.onColumnHide){let u=new cu.Menu;u.addItem(p=>{p.setTitle(c("Hide this column")).setIcon("eye-off").onClick(()=>{var m,h;(h=(m=this.params).onColumnHide)==null||h.call(m,this.statusName)})}),u.showAtMouseEvent(d)}}),this.contentEl=this.element.createDiv({cls:"tg-kanban-column-content"}),this.sentinelEl=this.contentEl.createDiv({cls:"tg-kanban-sentinel"});let o=this.element.createDiv({cls:"tg-kanban-add-card-container"}).createEl("button",{cls:"tg-kanban-add-card-button"},d=>{d.createEl("span",{},u=>{(0,cu.setIcon)(u,"plus")}),d.createEl("span",{text:c("Add Card")})});this.registerDomEvent(o,"click",()=>{let{marks:d}=ca(this.plugin.settings),u=d[this.statusName]||this.statusName||" ";new ft(this.app,this.plugin,{status:u},!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+SG,this.tasks.length),r=!1;for(let s=e;s<t;s++){let o=this.tasks[s],l=new nm(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 nm(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}getElement(){return this.element}getTaskCount(){return this.tasks.length}isEmpty(){return this.tasks.length===0}setVisible(e){this.element.toggle(e),e?this.element.classList.remove("tg-kanban-column-hidden"):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)}};function rN(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 fs(n){for(var a=1;a<arguments.length;a++){var e=arguments[a]!=null?arguments[a]:{};a%2?rN(Object(e),!0).forEach(function(t){DG(n,t,e[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):rN(Object(e)).forEach(function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))})}return n}function rb(n){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?rb=function(a){return typeof a}:rb=function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},rb(n)}function DG(n,a,e){return a in n?Object.defineProperty(n,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[a]=e,n}function lo(){return lo=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},lo.apply(this,arguments)}function EG(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 MG(n,a){if(n==null)return{};var e=EG(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 PG="1.15.6";function oo(n){if(typeof window!="undefined"&&window.navigator)return!!navigator.userAgent.match(n)}var co=oo(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Kg=oo(/Edge/i),iN=oo(/firefox/i),Ug=oo(/safari/i)&&!oo(/chrome/i)&&!oo(/android/i),JD=oo(/iP(ad|od|hone)/i),pN=oo(/chrome/i)&&oo(/android/i),mN={capture:!1,passive:!1};function st(n,a,e){n.addEventListener(a,e,!co&&mN)}function tt(n,a,e){n.removeEventListener(a,e,!co&&mN)}function lb(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 hN(n){return n.host&&n!==document&&n.host.nodeType?n.host:n.parentNode}function On(n,a,e,t){if(n){e=e||document;do{if(a!=null&&(a[0]===">"?n.parentNode===e&&lb(n,a):lb(n,a))||t&&n===e)return n;if(n===e)break}while(n=hN(n))}return null}var nN=/\s+/g;function Mi(n,a,e){if(n&&a)if(n.classList)n.classList[e?"add":"remove"](a);else{var t=(" "+n.className+" ").replace(nN," ").replace(" "+a+" "," ");n.className=(t+(e?" "+a:"")).replace(nN," ")}}function Me(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 hu(n,a){var e="";if(typeof n=="string")e=n;else do{var t=Me(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 gN(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 gs(){var n=document.scrollingElement;return n||document.documentElement}function Oa(n,a,e,t,r){if(!(!n.getBoundingClientRect&&n!==window)){var i,s,o,l,d,u,p;if(n!==window&&n.parentNode&&n!==gs()?(i=n.getBoundingClientRect(),s=i.top,o=i.left,l=i.bottom,d=i.right,u=i.height,p=i.width):(s=0,o=0,l=window.innerHeight,d=window.innerWidth,u=window.innerHeight,p=window.innerWidth),(a||e)&&n!==window&&(r=r||n.parentNode,!co))do if(r&&r.getBoundingClientRect&&(Me(r,"transform")!=="none"||e&&Me(r,"position")!=="static")){var m=r.getBoundingClientRect();s-=m.top+parseInt(Me(r,"border-top-width")),o-=m.left+parseInt(Me(r,"border-left-width")),l=s+i.height,d=o+i.width;break}while(r=r.parentNode);if(t&&n!==window){var h=hu(r||n),g=h&&h.a,f=h&&h.d;h&&(s/=f,o/=g,p/=g,u/=f,l=s+u,d=o+p)}return{top:s,left:o,bottom:l,right:d,width:p,height:u}}}function sN(n,a,e){for(var t=gl(n,!0),r=Oa(n)[a];t;){var i=Oa(t)[e],s=void 0;if(e==="top"||e==="left"?s=r>=i:s=r<=i,!s)return t;if(t===gs())break;t=gl(t,!1)}return!1}function gu(n,a,e,t){for(var r=0,i=0,s=n.children;i<s.length;){if(s[i].style.display!=="none"&&s[i]!==Pe.ghost&&(t||s[i]!==Pe.dragged)&&On(s[i],e.draggable,n,!1)){if(r===a)return s[i];r++}i++}return null}function ZD(n,a){for(var e=n.lastElementChild;e&&(e===Pe.ghost||Me(e,"display")==="none"||a&&!lb(e,a));)e=e.previousElementSibling;return e||null}function rn(n,a){var e=0;if(!n||!n.parentNode)return-1;for(;n=n.previousElementSibling;)n.nodeName.toUpperCase()!=="TEMPLATE"&&n!==Pe.clone&&(!a||lb(n,a))&&e++;return e}function oN(n){var a=0,e=0,t=gs();if(n)do{var r=hu(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 IG(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 gl(n,a){if(!n||!n.getBoundingClientRect)return gs();var e=n,t=!1;do if(e.clientWidth<e.scrollWidth||e.clientHeight<e.scrollHeight){var r=Me(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 gs();if(t||a)return e;t=!0}}while(e=e.parentNode);return gs()}function AG(n,a){if(n&&a)for(var e in a)a.hasOwnProperty(e)&&(n[e]=a[e]);return n}function BD(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 $g;function fN(n,a){return function(){if(!$g){var e=arguments,t=this;e.length===1?n.call(t,e[0]):n.apply(t,e),$g=setTimeout(function(){$g=void 0},a)}}}function FG(){clearTimeout($g),$g=void 0}function kN(n,a,e){n.scrollLeft+=a,n.scrollTop+=e}function vN(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 yN(n,a,e){var t={};return Array.from(n.children).forEach(function(r){var i,s,o,l;if(!(!On(r,a.draggable,n,!1)||r.animated||r===e)){var d=Oa(r);t.left=Math.min((i=t.left)!==null&&i!==void 0?i:1/0,d.left),t.top=Math.min((s=t.top)!==null&&s!==void 0?s:1/0,d.top),t.right=Math.max((o=t.right)!==null&&o!==void 0?o:-1/0,d.right),t.bottom=Math.max((l=t.bottom)!==null&&l!==void 0?l:-1/0,d.bottom)}}),t.width=t.right-t.left,t.height=t.bottom-t.top,t.x=t.left,t.y=t.top,t}var li="Sortable"+new Date().getTime();function RG(){var n=[],a;return{captureAnimationState:function(){if(n=[],!!this.options.animation){var t=[].slice.call(this.el.children);t.forEach(function(r){if(!(Me(r,"display")==="none"||r===Pe.ghost)){n.push({target:r,rect:Oa(r)});var i=fs({},n[n.length-1].rect);if(r.thisAnimationDuration){var s=hu(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(IG(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,d=o.target,u=d.fromRect,p=Oa(d),m=d.prevFromRect,h=d.prevToRect,g=o.rect,f=hu(d,!0);f&&(p.top-=f.f,p.left-=f.e),d.toRect=p,d.thisAnimationDuration&&BD(m,p)&&!BD(u,p)&&(g.top-p.top)/(g.left-p.left)===(u.top-p.top)/(u.left-p.left)&&(l=NG(g,m,h,r.options)),BD(p,u)||(d.prevFromRect=u,d.prevToRect=p,l||(l=r.options.animation),r.animate(d,g,p,l)),l&&(i=!0,s=Math.max(s,l),clearTimeout(d.animationResetTimer),d.animationResetTimer=setTimeout(function(){d.animationTime=0,d.prevFromRect=null,d.fromRect=null,d.prevToRect=null,d.thisAnimationDuration=null},l),d.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){Me(t,"transition",""),Me(t,"transform","");var o=hu(this.el),l=o&&o.a,d=o&&o.d,u=(r.left-i.left)/(l||1),p=(r.top-i.top)/(d||1);t.animatingX=!!u,t.animatingY=!!p,Me(t,"transform","translate3d("+u+"px,"+p+"px,0)"),this.forRepaintDummy=OG(t),Me(t,"transition","transform "+s+"ms"+(this.options.easing?" "+this.options.easing:"")),Me(t,"transform","translate3d(0,0,0)"),typeof t.animated=="number"&&clearTimeout(t.animated),t.animated=setTimeout(function(){Me(t,"transition",""),Me(t,"transform",""),t.animated=!1,t.animatingX=!1,t.animatingY=!1},s)}}}}function OG(n){return n.offsetWidth}function NG(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 du=[],VD={initializeByDefault:!0},Qg={mount:function(a){for(var e in VD)VD.hasOwnProperty(e)&&!(e in a)&&(a[e]=VD[e]);du.forEach(function(t){if(t.pluginName===a.pluginName)throw"Sortable: Cannot mount plugin ".concat(a.pluginName," more than once")}),du.push(a)},pluginEvent:function(a,e,t){var r=this;this.eventCanceled=!1,t.cancel=function(){r.eventCanceled=!0};var i=a+"Global";du.forEach(function(s){e[s.pluginName]&&(e[s.pluginName][i]&&e[s.pluginName][i](fs({sortable:e},t)),e.options[s.pluginName]&&e[s.pluginName][a]&&e[s.pluginName][a](fs({sortable:e},t)))})},initializePlugins:function(a,e,t,r){du.forEach(function(o){var l=o.pluginName;if(!(!a.options[l]&&!o.initializeByDefault)){var d=new o(a,e,a.options);d.sortable=a,d.options=a.options,a[l]=d,lo(t,d.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 du.forEach(function(r){typeof r.eventProperties=="function"&&lo(t,r.eventProperties.call(e[r.pluginName],a))}),t},modifyOption:function(a,e,t){var r;return du.forEach(function(i){a[i.pluginName]&&i.optionListeners&&typeof i.optionListeners[e]=="function"&&(r=i.optionListeners[e].call(a[i.pluginName],t))}),r}};function LG(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,d=n.newIndex,u=n.oldDraggableIndex,p=n.newDraggableIndex,m=n.originalEvent,h=n.putSortable,g=n.extraEventProperties;if(a=a||e&&e[li],!!a){var f,k=a.options,v="on"+t.charAt(0).toUpperCase()+t.substr(1);window.CustomEvent&&!co&&!Kg?f=new CustomEvent(t,{bubbles:!0,cancelable:!0}):(f=document.createEvent("Event"),f.initEvent(t,!0,!0)),f.to=s||e,f.from=o||e,f.item=r||e,f.clone=i,f.oldIndex=l,f.newIndex=d,f.oldDraggableIndex=u,f.newDraggableIndex=p,f.originalEvent=m,f.pullMode=h?h.lastPutMode:void 0;var y=fs(fs({},g),Qg.getEventProperties(t,a));for(var b in y)f[b]=y[b];e&&e.dispatchEvent(f),k[v]&&k[v].call(a,f)}}var jG=["evt"],oi=function(a,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=t.evt,i=MG(t,jG);Qg.pluginEvent.bind(Pe)(a,e,fs({dragEl:se,parentEl:ka,ghostEl:je,rootEl:ea,nextEl:Ic,lastDownEl:ib,cloneEl:ua,cloneHidden:hl,dragStarted:Wg,putSortable:fr,activeSortable:Pe.active,originalEvent:r,oldIndex:mu,oldDraggableIndex:Yg,newIndex:Pi,newDraggableIndex:ml,hideGhostForTarget:xN,unhideGhostForTarget:CN,cloneNowHidden:function(){hl=!0},cloneNowShown:function(){hl=!1},dispatchSortableEvent:function(o){zr({sortable:e,name:o,originalEvent:r})}},i))};function zr(n){LG(fs({putSortable:fr,cloneEl:ua,targetEl:se,rootEl:ea,oldIndex:mu,oldDraggableIndex:Yg,newIndex:Pi,newDraggableIndex:ml},n))}var se,ka,je,ea,Ic,ib,ua,hl,mu,Pi,Yg,ml,Zy,fr,pu=!1,cb=!1,db=[],Mc,Rn,WD,zD,lN,cN,Wg,uu,qg,Gg=!1,eb=!1,nb,Mr,_D=[],GD=!1,ub=[],mb=typeof document!="undefined",tb=JD,dN=Kg||co?"cssFloat":"float",HG=mb&&!pN&&!JD&&"draggable"in document.createElement("div"),bN=(function(){if(mb){if(co)return!1;var n=document.createElement("x");return n.style.cssText="pointer-events:auto",n.style.pointerEvents==="auto"}})(),wN=function(a,e){var t=Me(a),r=parseInt(t.width)-parseInt(t.paddingLeft)-parseInt(t.paddingRight)-parseInt(t.borderLeftWidth)-parseInt(t.borderRightWidth),i=gu(a,0,e),s=gu(a,1,e),o=i&&Me(i),l=s&&Me(s),d=o&&parseInt(o.marginLeft)+parseInt(o.marginRight)+Oa(i).width,u=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+Oa(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"||d>=r&&t[dN]==="none"||s&&t[dN]==="none"&&d+u>r)?"vertical":"horizontal"},BG=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,d=t?e.width:e.height;return r===o||i===l||r+s/2===o+d/2},VG=function(a,e){var t;return db.some(function(r){var i=r[li].options.emptyInsertThreshold;if(!(!i||ZD(r))){var s=Oa(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},TN=function(a){function e(i,s){return function(o,l,d,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,d,u),s)(o,l,d,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||rb(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},xN=function(){!bN&&je&&Me(je,"display","none")},CN=function(){!bN&&je&&Me(je,"display","")};mb&&!pN&&document.addEventListener("click",function(n){if(cb)return n.preventDefault(),n.stopPropagation&&n.stopPropagation(),n.stopImmediatePropagation&&n.stopImmediatePropagation(),cb=!1,!1},!0);var Pc=function(a){if(se){a=a.touches?a.touches[0]:a;var e=VG(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[li]._onDragOver(t)}}},WG=function(a){se&&se.parentNode[li]._isOutsideThisEl(a.target)};function Pe(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=lo({},a),n[li]=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 wN(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:Pe.supportPointer!==!1&&"PointerEvent"in window&&(!Ug||JD),emptyInsertThreshold:5};Qg.initializePlugins(this,n,e);for(var t in e)!(t in a)&&(a[t]=e[t]);TN(a);for(var r in this)r.charAt(0)==="_"&&typeof this[r]=="function"&&(this[r]=this[r].bind(this));this.nativeDraggable=a.forceFallback?!1:HG,this.nativeDraggable&&(this.options.touchStartThreshold=1),a.supportPointer?st(n,"pointerdown",this._onTapStart):(st(n,"mousedown",this._onTapStart),st(n,"touchstart",this._onTapStart)),this.nativeDraggable&&(st(n,"dragover",this),st(n,"dragenter",this)),db.push(this.el),a.store&&a.store.get&&this.sort(a.store.get(this)||[]),lo(this,RG())}Pe.prototype={constructor:Pe,_isOutsideThisEl:function(a){!this.el.contains(a)&&a!==this.el&&(uu=null)},_getDirection:function(a,e){return typeof this.options.direction=="function"?this.options.direction.call(this,a,e,se):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,d=a.target.shadowRoot&&(a.path&&a.path[0]||a.composedPath&&a.composedPath()[0])||l,u=r.filter;if(KG(t),!se&&!(/mousedown|pointerdown/.test(s)&&a.button!==0||r.disabled)&&!d.isContentEditable&&!(!this.nativeDraggable&&Ug&&l&&l.tagName.toUpperCase()==="SELECT")&&(l=On(l,r.draggable,t,!1),!(l&&l.animated)&&ib!==l)){if(mu=rn(l),Yg=rn(l,r.draggable),typeof u=="function"){if(u.call(this,a,l,this)){zr({sortable:e,rootEl:d,name:"filter",targetEl:l,toEl:t,fromEl:t}),oi("filter",e,{evt:a}),i&&a.preventDefault();return}}else if(u&&(u=u.split(",").some(function(p){if(p=On(d,p.trim(),t,!1),p)return zr({sortable:e,rootEl:p,name:"filter",targetEl:l,fromEl:t,toEl:t}),oi("filter",e,{evt:a}),!0}),u)){i&&a.preventDefault();return}r.handle&&!On(d,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&&!se&&t.parentNode===i){var d=Oa(t);if(ea=i,se=t,ka=se.parentNode,Ic=se.nextSibling,ib=t,Zy=s.group,Pe.dragged=se,Mc={target:se,clientX:(e||a).clientX,clientY:(e||a).clientY},lN=Mc.clientX-d.left,cN=Mc.clientY-d.top,this._lastX=(e||a).clientX,this._lastY=(e||a).clientY,se.style["will-change"]="all",l=function(){if(oi("delayEnded",r,{evt:a}),Pe.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!iN&&r.nativeDraggable&&(se.draggable=!0),r._triggerDragStart(a,e),zr({sortable:r,name:"choose",originalEvent:a}),Mi(se,s.chosenClass,!0)},s.ignore.split(",").forEach(function(u){gN(se,u.trim(),UD)}),st(o,"dragover",Pc),st(o,"mousemove",Pc),st(o,"touchmove",Pc),s.supportPointer?(st(o,"pointerup",r._onDrop),!this.nativeDraggable&&st(o,"pointercancel",r._onDrop)):(st(o,"mouseup",r._onDrop),st(o,"touchend",r._onDrop),st(o,"touchcancel",r._onDrop)),iN&&this.nativeDraggable&&(this.options.touchStartThreshold=4,se.draggable=!0),oi("delayStart",this,{evt:a}),s.delay&&(!s.delayOnTouchOnly||e)&&(!this.nativeDraggable||!(Kg||co))){if(Pe.eventCanceled){this._onDrop();return}s.supportPointer?(st(o,"pointerup",r._disableDelayedDrag),st(o,"pointercancel",r._disableDelayedDrag)):(st(o,"mouseup",r._disableDelayedDrag),st(o,"touchend",r._disableDelayedDrag),st(o,"touchcancel",r._disableDelayedDrag)),st(o,"mousemove",r._delayedDragTouchMoveHandler),st(o,"touchmove",r._delayedDragTouchMoveHandler),s.supportPointer&&st(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(){se&&UD(se),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var a=this.el.ownerDocument;tt(a,"mouseup",this._disableDelayedDrag),tt(a,"touchend",this._disableDelayedDrag),tt(a,"touchcancel",this._disableDelayedDrag),tt(a,"pointerup",this._disableDelayedDrag),tt(a,"pointercancel",this._disableDelayedDrag),tt(a,"mousemove",this._delayedDragTouchMoveHandler),tt(a,"touchmove",this._delayedDragTouchMoveHandler),tt(a,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(a,e){e=e||a.pointerType=="touch"&&a,!this.nativeDraggable||e?this.options.supportPointer?st(document,"pointermove",this._onTouchMove):e?st(document,"touchmove",this._onTouchMove):st(document,"mousemove",this._onTouchMove):(st(se,"dragend",this),st(ea,"dragstart",this._onDragStart));try{document.selection?sb(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(a,e){if(pu=!1,ea&&se){oi("dragStarted",this,{evt:e}),this.nativeDraggable&&st(document,"dragover",WG);var t=this.options;!a&&Mi(se,t.dragClass,!1),Mi(se,t.ghostClass,!0),Pe.active=this,a&&this._appendGhost(),zr({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(Rn){this._lastX=Rn.clientX,this._lastY=Rn.clientY,xN();for(var a=document.elementFromPoint(Rn.clientX,Rn.clientY),e=a;a&&a.shadowRoot&&(a=a.shadowRoot.elementFromPoint(Rn.clientX,Rn.clientY),a!==e);)e=a;if(se.parentNode[li]._isOutsideThisEl(a),e)do{if(e[li]){var t=void 0;if(t=e[li]._onDragOver({clientX:Rn.clientX,clientY:Rn.clientY,target:a,rootEl:e}),t&&!this.options.dragoverBubble)break}a=e}while(e=hN(e));CN()}},_onTouchMove:function(a){if(Mc){var e=this.options,t=e.fallbackTolerance,r=e.fallbackOffset,i=a.touches?a.touches[0]:a,s=je&&hu(je,!0),o=je&&s&&s.a,l=je&&s&&s.d,d=tb&&Mr&&oN(Mr),u=(i.clientX-Mc.clientX+r.x)/(o||1)+(d?d[0]-_D[0]:0)/(o||1),p=(i.clientY-Mc.clientY+r.y)/(l||1)+(d?d[1]-_D[1]:0)/(l||1);if(!Pe.active&&!pu){if(t&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<t)return;this._onDragStart(a,!0)}if(je){s?(s.e+=u-(WD||0),s.f+=p-(zD||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,")");Me(je,"webkitTransform",m),Me(je,"mozTransform",m),Me(je,"msTransform",m),Me(je,"transform",m),WD=u,zD=p,Rn=i}a.cancelable&&a.preventDefault()}},_appendGhost:function(){if(!je){var a=this.options.fallbackOnBody?document.body:ea,e=Oa(se,!0,tb,!0,a),t=this.options;if(tb){for(Mr=a;Me(Mr,"position")==="static"&&Me(Mr,"transform")==="none"&&Mr!==document;)Mr=Mr.parentNode;Mr!==document.body&&Mr!==document.documentElement?(Mr===document&&(Mr=gs()),e.top+=Mr.scrollTop,e.left+=Mr.scrollLeft):Mr=gs(),_D=oN(Mr)}je=se.cloneNode(!0),Mi(je,t.ghostClass,!1),Mi(je,t.fallbackClass,!0),Mi(je,t.dragClass,!0),Me(je,"transition",""),Me(je,"transform",""),Me(je,"box-sizing","border-box"),Me(je,"margin",0),Me(je,"top",e.top),Me(je,"left",e.left),Me(je,"width",e.width),Me(je,"height",e.height),Me(je,"opacity","0.8"),Me(je,"position",tb?"absolute":"fixed"),Me(je,"zIndex","100000"),Me(je,"pointerEvents","none"),Pe.ghost=je,a.appendChild(je),Me(je,"transform-origin",lN/parseInt(je.style.width)*100+"% "+cN/parseInt(je.style.height)*100+"%")}},_onDragStart:function(a,e){var t=this,r=a.dataTransfer,i=t.options;if(oi("dragStart",this,{evt:a}),Pe.eventCanceled){this._onDrop();return}oi("setupClone",this),Pe.eventCanceled||(ua=vN(se),ua.removeAttribute("id"),ua.draggable=!1,ua.style["will-change"]="",this._hideClone(),Mi(ua,this.options.chosenClass,!1),Pe.clone=ua),t.cloneId=sb(function(){oi("clone",t),!Pe.eventCanceled&&(t.options.removeCloneOnHide||ea.insertBefore(ua,se),t._hideClone(),zr({sortable:t,name:"clone"}))}),!e&&Mi(se,i.dragClass,!0),e?(cb=!0,t._loopId=setInterval(t._emulateDragOver,50)):(tt(document,"mouseup",t._onDrop),tt(document,"touchend",t._onDrop),tt(document,"touchcancel",t._onDrop),r&&(r.effectAllowed="move",i.setData&&i.setData.call(t,r,se)),st(document,"drop",t),Me(se,"transform","translateZ(0)")),pu=!0,t._dragStartId=sb(t._dragStarted.bind(t,e,a)),st(document,"selectstart",t),Wg=!0,window.getSelection().removeAllRanges(),Ug&&Me(document.body,"user-select","none")},_onDragOver:function(a){var e=this.el,t=a.target,r,i,s,o=this.options,l=o.group,d=Pe.active,u=Zy===l,p=o.sort,m=fr||d,h,g=this,f=!1;if(GD)return;function k(V,K){oi(V,g,fs({evt:a,isOwner:u,axis:h?"vertical":"horizontal",revert:s,dragRect:r,targetRect:i,canSort:p,fromSortable:m,target:t,completed:y,onMove:function(ce,pe){return ab(ea,e,se,r,ce,Oa(ce),a,pe)},changed:b},K))}function v(){k("dragOverAnimationCapture"),g.captureAnimationState(),g!==m&&m.captureAnimationState()}function y(V){return k("dragOverCompleted",{insertion:V}),V&&(u?d._hideClone():d._showClone(g),g!==m&&(Mi(se,fr?fr.options.ghostClass:d.options.ghostClass,!1),Mi(se,o.ghostClass,!0)),fr!==g&&g!==Pe.active?fr=g:g===Pe.active&&fr&&(fr=null),m===g&&(g._ignoreWhileAnimating=t),g.animateAll(function(){k("dragOverAnimationComplete"),g._ignoreWhileAnimating=null}),g!==m&&(m.animateAll(),m._ignoreWhileAnimating=null)),(t===se&&!se.animated||t===e&&!t.animated)&&(uu=null),!o.dragoverBubble&&!a.rootEl&&t!==document&&(se.parentNode[li]._isOutsideThisEl(a.target),!V&&Pc(a)),!o.dragoverBubble&&a.stopPropagation&&a.stopPropagation(),f=!0}function b(){Pi=rn(se),ml=rn(se,o.draggable),zr({sortable:g,name:"change",toEl:e,newIndex:Pi,newDraggableIndex:ml,originalEvent:a})}if(a.preventDefault!==void 0&&a.cancelable&&a.preventDefault(),t=On(t,o.draggable,e,!0),k("dragOver"),Pe.eventCanceled)return f;if(se.contains(a.target)||t.animated&&t.animatingX&&t.animatingY||g._ignoreWhileAnimating===t)return y(!1);if(cb=!1,d&&!o.disabled&&(u?p||(s=ka!==ea):fr===this||(this.lastPutMode=Zy.checkPull(this,d,se,a))&&l.checkPut(this,d,se,a))){if(h=this._getDirection(a,t)==="vertical",r=Oa(se),k("dragOverValid"),Pe.eventCanceled)return f;if(s)return ka=ea,v(),this._hideClone(),k("revert"),Pe.eventCanceled||(Ic?ea.insertBefore(se,Ic):ea.appendChild(se)),y(!0);var w=ZD(e,o.draggable);if(!w||$G(a,h,this)&&!w.animated){if(w===se)return y(!1);if(w&&e===a.target&&(t=w),t&&(i=Oa(t)),ab(ea,e,se,r,t,i,a,!!t)!==!1)return v(),w&&w.nextSibling?e.insertBefore(se,w.nextSibling):e.appendChild(se),ka=e,b(),y(!0)}else if(w&&UG(a,h,this)){var T=gu(e,0,o,!0);if(T===se)return y(!1);if(t=T,i=Oa(t),ab(ea,e,se,r,t,i,a,!1)!==!1)return v(),e.insertBefore(se,T),ka=e,b(),y(!0)}else if(t.parentNode===e){i=Oa(t);var x=0,C,S=se.parentNode!==e,D=!BG(se.animated&&se.toRect||r,t.animated&&t.toRect||i,h),E=h?"top":"left",R=sN(t,"top","top")||sN(se,"top","top"),I=R?R.scrollTop:void 0;uu!==t&&(C=i[E],Gg=!1,eb=!D&&o.invertSwap||S),x=YG(a,t,i,h,D?1:o.swapThreshold,o.invertedSwapThreshold==null?o.swapThreshold:o.invertedSwapThreshold,eb,uu===t);var H;if(x!==0){var U=rn(se);do U-=x,H=ka.children[U];while(H&&(Me(H,"display")==="none"||H===je))}if(x===0||H===t)return y(!1);uu=t,qg=x;var q=t.nextElementSibling,L=!1;L=x===1;var _=ab(ea,e,se,r,t,i,a,L);if(_!==!1)return(_===1||_===-1)&&(L=_===1),GD=!0,setTimeout(_G,30),v(),L&&!q?e.appendChild(se):t.parentNode.insertBefore(se,L?q:t),R&&kN(R,0,I-R.scrollTop),ka=se.parentNode,C!==void 0&&!eb&&(nb=Math.abs(C-Oa(t)[E])),b(),y(!0)}if(e.contains(se))return y(!1)}return!1},_ignoreWhileAnimating:null,_offMoveEvents:function(){tt(document,"mousemove",this._onTouchMove),tt(document,"touchmove",this._onTouchMove),tt(document,"pointermove",this._onTouchMove),tt(document,"dragover",Pc),tt(document,"mousemove",Pc),tt(document,"touchmove",Pc)},_offUpEvents:function(){var a=this.el.ownerDocument;tt(a,"mouseup",this._onDrop),tt(a,"touchend",this._onDrop),tt(a,"pointerup",this._onDrop),tt(a,"pointercancel",this._onDrop),tt(a,"touchcancel",this._onDrop),tt(document,"selectstart",this)},_onDrop:function(a){var e=this.el,t=this.options;if(Pi=rn(se),ml=rn(se,t.draggable),oi("drop",this,{evt:a}),ka=se&&se.parentNode,Pi=rn(se),ml=rn(se,t.draggable),Pe.eventCanceled){this._nulling();return}pu=!1,eb=!1,Gg=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),KD(this.cloneId),KD(this._dragStartId),this.nativeDraggable&&(tt(document,"drop",this),tt(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),Ug&&Me(document.body,"user-select",""),Me(se,"transform",""),a&&(Wg&&(a.cancelable&&a.preventDefault(),!t.dropBubble&&a.stopPropagation()),je&&je.parentNode&&je.parentNode.removeChild(je),(ea===ka||fr&&fr.lastPutMode!=="clone")&&ua&&ua.parentNode&&ua.parentNode.removeChild(ua),se&&(this.nativeDraggable&&tt(se,"dragend",this),UD(se),se.style["will-change"]="",Wg&&!pu&&Mi(se,fr?fr.options.ghostClass:this.options.ghostClass,!1),Mi(se,this.options.chosenClass,!1),zr({sortable:this,name:"unchoose",toEl:ka,newIndex:null,newDraggableIndex:null,originalEvent:a}),ea!==ka?(Pi>=0&&(zr({rootEl:ka,name:"add",toEl:ka,fromEl:ea,originalEvent:a}),zr({sortable:this,name:"remove",toEl:ka,originalEvent:a}),zr({rootEl:ka,name:"sort",toEl:ka,fromEl:ea,originalEvent:a}),zr({sortable:this,name:"sort",toEl:ka,originalEvent:a})),fr&&fr.save()):Pi!==mu&&Pi>=0&&(zr({sortable:this,name:"update",toEl:ka,originalEvent:a}),zr({sortable:this,name:"sort",toEl:ka,originalEvent:a})),Pe.active&&((Pi==null||Pi===-1)&&(Pi=mu,ml=Yg),zr({sortable:this,name:"end",toEl:ka,originalEvent:a}),this.save()))),this._nulling()},_nulling:function(){oi("nulling",this),ea=se=ka=je=Ic=ua=ib=hl=Mc=Rn=Wg=Pi=ml=mu=Yg=uu=qg=fr=Zy=Pe.dragged=Pe.ghost=Pe.clone=Pe.active=null,ub.forEach(function(a){a.checked=!0}),ub.length=WD=zD=0},handleEvent:function(a){switch(a.type){case"drop":case"dragend":this._onDrop(a);break;case"dragenter":case"dragover":se&&(this._onDragOver(a),zG(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],On(e,s.draggable,this.el,!1)&&a.push(e.getAttribute(s.dataIdAttr)||GG(e));return a},sort:function(a,e){var t={},r=this.el;this.toArray().forEach(function(i,s){var o=r.children[s];On(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 On(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=Qg.modifyOption(this,a,e);typeof r!="undefined"?t[a]=r:t[a]=e,a==="group"&&TN(t)},destroy:function(){oi("destroy",this);var a=this.el;a[li]=null,tt(a,"mousedown",this._onTapStart),tt(a,"touchstart",this._onTapStart),tt(a,"pointerdown",this._onTapStart),this.nativeDraggable&&(tt(a,"dragover",this),tt(a,"dragenter",this)),Array.prototype.forEach.call(a.querySelectorAll("[draggable]"),function(e){e.removeAttribute("draggable")}),this._onDrop(),this._disableDelayedDragEvents(),db.splice(db.indexOf(this.el),1),this.el=a=null},_hideClone:function(){if(!hl){if(oi("hideClone",this),Pe.eventCanceled)return;Me(ua,"display","none"),this.options.removeCloneOnHide&&ua.parentNode&&ua.parentNode.removeChild(ua),hl=!0}},_showClone:function(a){if(a.lastPutMode!=="clone"){this._hideClone();return}if(hl){if(oi("showClone",this),Pe.eventCanceled)return;se.parentNode==ea&&!this.options.group.revertClone?ea.insertBefore(ua,se):Ic?ea.insertBefore(ua,Ic):ea.appendChild(ua),this.options.group.revertClone&&this.animate(se,ua),Me(ua,"display",""),hl=!1}}};function zG(n){n.dataTransfer&&(n.dataTransfer.dropEffect="move"),n.cancelable&&n.preventDefault()}function ab(n,a,e,t,r,i,s,o){var l,d=n[li],u=d.options.onMove,p;return window.CustomEvent&&!co&&!Kg?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||Oa(a),l.willInsertAfter=o,l.originalEvent=s,n.dispatchEvent(l),u&&(p=u.call(d,l,s)),p}function UD(n){n.draggable=!1}function _G(){GD=!1}function UG(n,a,e){var t=Oa(gu(e.el,0,e.options,!0)),r=yN(e.el,e.options,je),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 $G(n,a,e){var t=Oa(ZD(e.el,e.options.draggable)),r=yN(e.el,e.options,je),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 YG(n,a,e,t,r,i,s,o){var l=t?n.clientY:n.clientX,d=t?e.height:e.width,u=t?e.top:e.left,p=t?e.bottom:e.right,m=!1;if(!s){if(o&&nb<d*r){if(!Gg&&(qg===1?l>u+d*i/2:l<p-d*i/2)&&(Gg=!0),Gg)m=!0;else if(qg===1?l<u+nb:l>p-nb)return-qg}else if(l>u+d*(1-r)/2&&l<p-d*(1-r)/2)return qG(a)}return m=m||s,m&&(l<u+d*i/2||l>p-d*i/2)?l>u+d/2?1:-1:0}function qG(n){return rn(se)<rn(n)?1:-1}function GG(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 KG(n){ub.length=0;for(var a=n.getElementsByTagName("input"),e=a.length;e--;){var t=a[e];t.checked&&ub.push(t)}}function sb(n){return setTimeout(n,0)}function KD(n){return clearTimeout(n)}mb&&st(document,"touchmove",function(n){(Pe.active||pu)&&n.cancelable&&n.preventDefault()});Pe.utils={on:st,off:tt,css:Me,find:gN,is:function(a,e){return!!On(a,e,a,!1)},extend:AG,throttle:fN,closest:On,toggleClass:Mi,clone:vN,index:rn,nextTick:sb,cancelNextTick:KD,detectDirection:wN,getChild:gu,expando:li};Pe.get=function(n){return n[li]};Pe.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&&(Pe.utils=fs(fs({},Pe.utils),t.utils)),Qg.mount(t)})};Pe.create=function(n,a){return new Pe(n,a)};Pe.version=PG;var Ra=[],zg,QD,XD=!1,$D,YD,pb,_g;function QG(){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?st(document,"dragover",this._handleAutoScroll):this.options.supportPointer?st(document,"pointermove",this._handleFallbackAutoScroll):t.touches?st(document,"touchmove",this._handleFallbackAutoScroll):st(document,"mousemove",this._handleFallbackAutoScroll)},dragOverCompleted:function(e){var t=e.originalEvent;!this.options.dragOverBubble&&!t.rootEl&&this._handleAutoScroll(t)},drop:function(){this.sortable.nativeDraggable?tt(document,"dragover",this._handleAutoScroll):(tt(document,"pointermove",this._handleFallbackAutoScroll),tt(document,"touchmove",this._handleFallbackAutoScroll),tt(document,"mousemove",this._handleFallbackAutoScroll)),uN(),ob(),FG()},nulling:function(){pb=QD=zg=XD=_g=$D=YD=null,Ra.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(pb=e,t||this.options.forceAutoScrollFallback||Kg||co||Ug){qD(e,this.options,o,t);var l=gl(o,!0);XD&&(!_g||i!==$D||s!==YD)&&(_g&&uN(),_g=setInterval(function(){var d=gl(document.elementFromPoint(i,s),!0);d!==l&&(l=d,ob()),qD(e,r.options,d,t)},10),$D=i,YD=s)}else{if(!this.options.bubbleScroll||gl(o,!0)===gs()){ob();return}qD(e,this.options,gl(o,!1),!1)}}},lo(n,{pluginName:"scroll",initializeByDefault:!0})}function ob(){Ra.forEach(function(n){clearInterval(n.pid)}),Ra=[]}function uN(){clearInterval(_g)}var qD=fN(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=gs(),d=!1,u;QD!==e&&(QD=e,ob(),zg=a.scroll,u=a.scrollFn,zg===!0&&(zg=gl(e,!0)));var p=0,m=zg;do{var h=m,g=Oa(h),f=g.top,k=g.bottom,v=g.left,y=g.right,b=g.width,w=g.height,T=void 0,x=void 0,C=h.scrollWidth,S=h.scrollHeight,D=Me(h),E=h.scrollLeft,R=h.scrollTop;h===l?(T=b<C&&(D.overflowX==="auto"||D.overflowX==="scroll"||D.overflowX==="visible"),x=w<S&&(D.overflowY==="auto"||D.overflowY==="scroll"||D.overflowY==="visible")):(T=b<C&&(D.overflowX==="auto"||D.overflowX==="scroll"),x=w<S&&(D.overflowY==="auto"||D.overflowY==="scroll"));var I=T&&(Math.abs(y-r)<=s&&E+b<C)-(Math.abs(v-r)<=s&&!!E),H=x&&(Math.abs(k-i)<=s&&R+w<S)-(Math.abs(f-i)<=s&&!!R);if(!Ra[p])for(var U=0;U<=p;U++)Ra[U]||(Ra[U]={});(Ra[p].vx!=I||Ra[p].vy!=H||Ra[p].el!==h)&&(Ra[p].el=h,Ra[p].vx=I,Ra[p].vy=H,clearInterval(Ra[p].pid),(I!=0||H!=0)&&(d=!0,Ra[p].pid=setInterval(function(){t&&this.layer===0&&Pe.active._onTouchMove(pb);var q=Ra[this.layer].vy?Ra[this.layer].vy*o:0,L=Ra[this.layer].vx?Ra[this.layer].vx*o:0;typeof u=="function"&&u.call(Pe.dragged.parentNode[li],L,q,n,pb,Ra[this.layer].el)!=="continue"||kN(Ra[this.layer].el,L,q)}.bind({layer:p}),24))),p++}while(a.bubbleScroll&&m!==l&&(m=gl(m,!1)));XD=d}},30),SN=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 d=t||i;o();var u=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e,p=document.elementFromPoint(u.clientX,u.clientY);l(),d&&!d.el.contains(p)&&(s("spill"),this.onSpill({dragEl:r,putSortable:t}))}};function eE(){}eE.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=gu(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:SN};lo(eE,{pluginName:"revertOnSpill"});function tE(){}tE.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:SN};lo(tE,{pluginName:"removeOnSpill"});Pe.mount(new QG);Pe.mount(tE,eE);var Pr=Pe;z();var ku=require("obsidian");var Ac=require("obsidian");z();var hb=class extends Ac.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.show(),this.element.toggleVisibility(!0);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(c("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:c("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 d=l.createEl("span",{cls:"filter-dropdown-item-arrow back"});(0,Ac.setIcon)(d,"chevron-left")}if(l.createEl("span",{cls:"filter-dropdown-item-label",text:e}),r){let d=l.createEl("span",{cls:"filter-dropdown-item-arrow"});(0,Ac.setIcon)(d,"chevron-right")}return this.registerDomEvent(l,"click",t),this.registerDomEvent(l,"keydown",d=>{d.key==="Enter"&&(d.preventDefault(),t())}),l}setupEventListeners(){let e=(0,Ac.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:c("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 d=o.createEl("div",{cls:"filter-dropdown-value-preview",text:l,attr:{tabindex:0,"data-category":i.id,"data-value":l}});this.registerDomEvent(d,"click",u=>{u.stopPropagation(),this.onSelect(i.id,l)}),this.registerDomEvent(d,"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 fb=require("obsidian"),gb=class extends fb.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 fb.ExtraButtonComponent(t).setIcon("x").onClick(()=>{this.removePill()})}),a}removePill(){this.element.classList.add("filter-pill-removing"),setTimeout(()=>{this.onRemove(this.filter.id)},150)}};z();function Xg(n){let a=new Set,e=new Set,t=new Set,r=new Set,i=new Set,s=new Set;n.forEach(k=>{k.status&&a.add(k.status),k.metadata.tags.forEach(v=>{typeof v=="string"&&e.add(v)}),k.metadata.project&&t.add(k.metadata.project),k.metadata.context&&r.add(k.metadata.context),k.metadata.priority!==void 0&&i.add(k.metadata.priority),k.filePath&&s.add(k.filePath)});let o=Array.from(a).sort(),l=Array.from(e).sort(),d=Array.from(t).sort(),u=Array.from(r).sort(),p={},m={5:"\u{1F53A}",4:"\u23EB",3:"\u{1F53C}",2:"\u{1F53D}",1:"\u23EC"};for(let k in vd){let v=vd[k];(k===m[v]||!p[v])&&(p[v]=k)}for(let k in m)p[k]||(p[k]=m[k]);let h=Array.from(i).sort((k,v)=>v-k).map(k=>p[k]||k.toString()).filter(k=>!!k),g=Array.from(s).sort();return[{id:"status",label:c("Status"),options:o},{id:"tag",label:c("Tag"),options:l},{id:"project",label:c("Project"),options:d},{id:"context",label:c("Context"),options:u},{id:"priority",label:c("Priority"),options:h},{id:"completed",label:c("Completed"),options:["Yes","No"]},{id:"filePath",label:c("File Path"),options:g}]}var fu=class extends ku.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,ku.setIcon)(r,"plus");let i=t.createEl("span",{text:c("Add filter")})}),this.clearAllButton=this.controlsContainer.createEl("button",{cls:"filter-clear-all-button mod-destructive",text:c("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));if(e.length===0){new ku.Notice("No more filter categories available.");return}this.dropdown=new hb({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 gb({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=Xg(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 nn=class extends ks.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.configOverride=null;this.selectedCycleId=null;this.CYCLE_STORAGE_KEY_PREFIX="kanban-cycle-";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}setConfigOverride(e){let t=this.hasConfigOverrideChanged(e);if(this.configOverride=e,t){this.loadKanbanConfig();let r=this.getEffectiveKanbanConfig();this.columnContainerEl&&this.applyFiltersAndRender()}}getEffectiveKanbanConfig(){var t;let e=(t=this.plugin.settings.viewConfiguration.find(r=>r.id===this.currentViewId))==null?void 0:t.specificConfig;return this.configOverride?{...e!=null?e:{},...this.configOverride}:e}onload(){super.onload(),this.containerEl.empty(),this.containerEl.addClass("tg-kanban-view"),this.loadKanbanConfig(),this.loadCycleSelection(),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()}hasConfigOverrideChanged(e){if(!this.configOverride&&!e)return!1;if(!this.configOverride||!e)return!0;try{return JSON.stringify(this.configOverride)!==JSON.stringify(e)}catch(t){return console.warn("Failed to compare kanban config overrides:",t),!0}}renderControls(e){let t=e.createDiv({cls:"tg-kanban-controls-container"}),i=t.createDiv({cls:"tg-kanban-sort-container"}).createEl("button",{cls:"tg-kanban-sort-button clickable-icon"},s=>{(0,ks.setIcon)(s,"arrow-up-down")});this.registerDomEvent(i,"click",s=>{let o=new ks.Menu;[{field:"priority",order:"desc",label:c("Priority (High to Low)")},{field:"priority",order:"asc",label:c("Priority (Low to High)")},{field:"dueDate",order:"asc",label:c("Due Date (Earliest First)")},{field:"dueDate",order:"desc",label:c("Due Date (Latest First)")},{field:"scheduledDate",order:"asc",label:c("Scheduled Date (Earliest First)")},{field:"scheduledDate",order:"desc",label:c("Scheduled Date (Latest First)")},{field:"startDate",order:"asc",label:c("Start Date (Earliest First)")},{field:"startDate",order:"desc",label:c("Start Date (Latest First)")}].forEach(d=>{o.addItem(u=>{u.setTitle(d.label).setChecked(d.field===this.sortOption.field&&d.order===this.sortOption.order).onClick(()=>{this.sortOption=d,this.renderColumns()})})}),o.showAtMouseEvent(s)}),this.renderCycleSelector(t)}renderCycleSelector(e){let t=this.getEffectiveKanbanConfig();if((t==null?void 0:t.groupBy)!=="status")return;let i=e.createDiv({cls:"tg-kanban-cycle-container"}).createEl("button",{cls:"tg-kanban-cycle-button clickable-icon",attr:{"aria-label":c("kanban.cycleSelector")}},s=>{(0,ks.setIcon)(s,"layers")});this.registerDomEvent(i,"click",s=>{let o=new ks.Menu;o.addItem(d=>{d.setTitle(c("kanban.allCycles")).setChecked(this.selectedCycleId===null).onClick(()=>{this.selectedCycleId=null,this.saveCycleSelection(),this.renderColumns()})}),o.addSeparator();let l=(this.plugin.settings.statusCycles||[]).filter(d=>d.enabled).sort((d,u)=>d.priority-u.priority);if(l.length===0)o.addItem(d=>{d.setTitle(c("kanban.noCyclesAvailable")).setDisabled(!0)});else for(let d of l)o.addItem(u=>{u.setTitle(d.name).setChecked(this.selectedCycleId===d.id).onClick(()=>{this.selectedCycleId=d.id,this.saveCycleSelection(),this.renderColumns()})});o.showAtMouseEvent(s)})}renderFilterControls(e){let t=Xg(this.allTasks);this.filterComponent=new fu({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+"/")})}getAllowedMarksForStatusName(e){if(!e)return null;let t=e.trim().toLowerCase(),r=this.plugin.settings.taskStatuses;if(!r)return null;let s={"in progress":"inProgress",completed:"completed",abandoned:"abandoned",planned:"planned","not started":"notStarted",cancelled:"abandoned",canceled:"abandoned",unchecked:"notStarted",checked:"completed"}[t];if(!s)return null;let o=r[s];if(!o||typeof o!="string")return null;let l=new Set(o.split("|").map(d=>d.trim()).filter(d=>d.length===1));return l.size>0?l:null}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 c("Tag");case"project":return c("Project");case"priority":return c("Priority");case"status":return c("Status");case"context":return c("Context");default:return e}}handleColumnHide(e){var r;let t=this.plugin.settings.viewConfiguration.find(i=>i.id===this.currentViewId);if(t&&((r=t.specificConfig)==null?void 0:r.viewType)==="kanban"){let i=t.specificConfig;i.hiddenColumns||(i.hiddenColumns=[]),i.hiddenColumns.includes(e)||(i.hiddenColumns.push(e),this.plugin.saveSettings(),this.renderColumns())}}renderColumns(){var r;(r=this.columnContainerEl)==null||r.empty(),this.columns.forEach(i=>this.removeChild(i)),this.columns=[];let e=this.getEffectiveKanbanConfig(),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(){var p;let e,t=[];if(this.selectedCycleId){let m=(this.plugin.settings.statusCycles||[]).find(h=>h.id===this.selectedCycleId&&h.enabled);if(m)e=[...m.cycle];else{console.warn(`[Kanban] Selected cycle ${this.selectedCycleId} not found, resetting`),this.selectedCycleId=null,this.saveCycleSelection();let h=ca(this.plugin.settings);e=h.cycle.length>0?h.cycle:["Todo","In Progress","Done"],t=h.excludeMarksFromCycle||[]}}else{let m=ca(this.plugin.settings);e=m.cycle.length>0?m.cycle:["Todo","In Progress","Done"],t=m.excludeMarksFromCycle||[]}let r=[],i=[],s=[];e.forEach(m=>{var g;let h=(g=this.resolveStatusMark(m))!=null?g:" ";t&&t.includes(m)||(h===" "?r.push(m):h.toLowerCase()==="x"?i.push(m):s.push(m))}),e=[...r,...s,...i];let o=e.map(m=>({title:m})),l=this.applyColumnOrder(o),d=((p=this.getEffectiveKanbanConfig())==null?void 0:p.hiddenColumns)||[];if(l.map(m=>m.title).filter(m=>!d.includes(m)).forEach(m=>{let h=this.getTasksForStatus(m),g=new lu(this.app,this.plugin,this.columnContainerEl,m,h,{...this.params,onTaskStatusUpdate:(f,k)=>this.handleStatusUpdate(f,k),onFilterApply:this.handleFilterApply,onColumnHide:f=>this.handleColumnHide(f)});this.addChild(g),this.columns.push(g)}),this.selectedCycleId){let m=this.getUnmatchedTasks();if(m.length>0){let h=new lu(this.app,this.plugin,this.columnContainerEl,c("kanban.otherColumn"),m,{...this.params,onTaskStatusUpdate:(g,f)=>this.handleStatusUpdate(g,f),onFilterApply:this.handleFilterApply,onColumnHide:g=>this.handleColumnHide(g)});this.addChild(h),h.getElement().dataset.isOtherColumn="true",this.columns.push(h)}}}getUnmatchedTasks(){if(!this.selectedCycleId)return[];let e=(this.plugin.settings.statusCycles||[]).find(r=>r.id===this.selectedCycleId);if(!e)return[];let t=new Set(Object.values(e.marks));return this.tasks.filter(r=>!t.has(r.status||" "))}renderCustomColumns(e,t){var o;let r=[];t&&t.length>0?r=t.sort((l,d)=>l.order-d.order).map(l=>({title:l.title,value:l.value,id:l.id})):r=this.generateDefaultColumns(e);let i=this.applyColumnOrder(r),s=((o=this.getEffectiveKanbanConfig())==null?void 0:o.hiddenColumns)||[];i.forEach(l=>{if(s.includes(l.title))return;let d=this.getTasksForProperty(e,l.value),u=new lu(this.app,this.plugin,this.columnContainerEl,l.title,d,{...this.params,onTaskStatusUpdate:(p,m)=>this.handlePropertyUpdate(p,e,l.value,m),onFilterApply:this.handleFilterApply,onColumnHide:p=>this.handleColumnHide(p)});this.addChild(u),this.columns.push(u)})}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=qt(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 d=new Set;return this.tasks.forEach(u=>{u.filePath&&d.add(u.filePath)}),Array.from(d).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(){var r;let e=this.getEffectiveKanbanConfig(),t=(r=e==null?void 0:e.hideEmptyColumns)!=null?r:this.hideEmptyColumns;this.columns.forEach(i=>{t&&i.isEmpty()?i.setVisible(!1):i.setVisible(!0)})}getTasksForStatus(e){var i;let t;if(this.selectedCycleId){let s=(this.plugin.settings.statusCycles||[]).find(o=>o.id===this.selectedCycleId);if(s){let o=s.marks[e];t=o?new Set([o]):new Set}else t=new Set}else{let s=this.getAllowedMarksForStatusName(e),o=(i=this.resolveStatusMark(e))!=null?i:" ";t=s||new Set([o])}let r=this.tasks.filter(s=>{let o=s.status||" ";return t.has(o)});return r.sort((s,o)=>this.compareTasks(s,o,this.sortOption)),r}compareTasks(e,t,r){var u,p,m,h,g,f,k,v,y,b;let{field:i,order:s}=r,o=0,l=e.metadata||{},d=t.metadata||{};switch(i){case"priority":let w=(u=l.priority)!=null?u:0,T=(p=d.priority)!=null?p:0;o=w-T;break;case"dueDate":let x=(m=l.dueDate)!=null?m:Number.MAX_SAFE_INTEGER,C=(h=d.dueDate)!=null?h:Number.MAX_SAFE_INTEGER;o=x-C;break;case"scheduledDate":let S=(g=l.scheduledDate)!=null?g:Number.MAX_SAFE_INTEGER,D=(f=d.scheduledDate)!=null?f:Number.MAX_SAFE_INTEGER;o=S-D;break;case"startDate":let E=(k=l.startDate)!=null?k:Number.MAX_SAFE_INTEGER,R=(v=d.startDate)!=null?v:Number.MAX_SAFE_INTEGER;o=E-R;break;case"createdDate":let I=(y=l.createdDate)!=null?y:Number.MAX_SAFE_INTEGER,H=(b=d.createdDate)!=null?b:Number.MAX_SAFE_INTEGER;o=I-H;break}return s==="desc"?-o:o}initializeSortableInstances(){this.sortableInstances.forEach(t=>t.destroy()),this.sortableInstances=[];let e=!ks.Platform.isDesktop||"ontouchstart"in window||navigator.maxTouchPoints>0;this.columns.forEach(t=>{let r=t.getContentElement(),i=t.getElement(),o=(i==null?void 0:i.dataset.isOtherColumn)==="true"?{name:"kanban-group",put:!1,pull:!0}:"kanban-group",l=Pr.create(r,{group:o,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:d=>{this.handleSortEnd(d)}});this.sortableInstances.push(l)})}async handleSortEnd(e){var s,o,l,d,u;e.oldIndex,e.newIndex;let t=e.item.dataset.taskId,r=e.to,i=e.from;if(t&&r){let p=r.closest(".tg-kanban-column"),m=p?(s=p.querySelector(".tg-kanban-column-title"))==null?void 0:s.textContent:null,h=i.closest(".tg-kanban-column"),g=h?(o=h.querySelector(".tg-kanban-column-title"))==null?void 0:o.textContent:null;if(m&&g){let f=(l=this.plugin.settings.viewConfiguration.find(y=>y.id===this.currentViewId))==null?void 0:l.specificConfig,k=(f==null?void 0:f.groupBy)||"status",v=((d=this.getEffectiveKanbanConfig())==null?void 0:d.groupBy)||k;if(v==="status"){let y=this.getStatusMarkForColumn((m||"").trim());y!=null?(`${t}${m}${y}`,await this.handleStatusUpdate(t,y)):console.warn(`Could not find status mark for status name: ${m} or drag to Other column is not allowed`)}else{let y=((u=this.getEffectiveKanbanConfig())==null?void 0:u.customColumns)||(f==null?void 0:f.customColumns),b=this.getColumnValueFromTitle(m,v,y),w=this.getColumnValueFromTitle(g,v,y);`${v}${t}${w}${b}`,await this.handlePropertyUpdate(t,v,w,b)}}}}loadKanbanConfig(){let e=this.getEffectiveKanbanConfig();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.hideEmptyColumns,this.sortOption.field,this.sortOption.order),this.loadColumnOrder()}getCycleStorageKey(){return`${this.CYCLE_STORAGE_KEY_PREFIX}${this.currentViewId}`}loadCycleSelection(){let e=this.getCycleStorageKey(),t=localStorage.getItem(e);if(t){let i=(this.plugin.settings.statusCycles||[]).some(s=>s.id===t&&s.enabled);this.selectedCycleId=i?t:null,!i&&t&&(`${t}`,localStorage.removeItem(e))}}saveCycleSelection(){let e=this.getCycleStorageKey();this.selectedCycleId?localStorage.setItem(e,this.selectedCycleId):localStorage.removeItem(e)}getSortOptionLabel(e,t){let r={priority:c("Priority"),dueDate:c("Due Date"),scheduledDate:c("Scheduled Date"),startDate:c("Start Date"),createdDate:c("Created Date")},i=t==="asc"?c("Ascending"):c("Descending");return`${r[e]} (${i})`}getStatusMarkForColumn(e){if(e){if(e===c("kanban.otherColumn"))return null;if(this.selectedCycleId){let t=(this.plugin.settings.statusCycles||[]).find(r=>r.id===this.selectedCycleId);if(t)return t.marks[e]||void 0}return this.resolveStatusMark(e)}}resolveStatusMark(e){if(!e)return;let t=e.trim();if(t.length===1)return t;let{marks:r}=ca(this.plugin.settings),i=r[t];if(typeof i=="string")return i;for(let[s,o]of Object.entries(r))if(s.toLowerCase()===t.toLowerCase())return o}getColumnContainer(){return this.columnContainerEl}async handleStatusUpdate(e,t){if(`${e}${t}`,this.params.onTaskStatusUpdate,this.params.onTaskStatusUpdate)try{await this.params.onTaskStatusUpdate(e,t)}catch(r){console.error("[Kanban] Failed to update task status:",r),console.error("[Kanban] Error details:",r.stack)}else console.error("[Kanban] CRITICAL: onTaskStatusUpdate callback is not defined!"),console.error("[Kanban] this.params:",this.params)}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 d=o.metadata.tags||[];if(r&&r!==""&&r!==i){let m=[r,`#${r}`,r.startsWith("#")?r.substring(1):r];d=d.filter(h=>!m.includes(h))}let u=[i,`#${i}`,i.startsWith("#")?i.substring(1):i];if(!d.some(m=>u.includes(m))){let m=d.length>0&&d[0].startsWith("#")?i.startsWith("#")?i:`#${i}`:i.startsWith("#")?i.substring(1):i;d.push(m)}o.metadata.tags=d}break;case"project":Yi(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===""?!qt(i):qt(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),d=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<d;case"later":return m>=d;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 qt(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(){let e=this.getEffectiveKanbanConfig(),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=Pr.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 d=i.getAttribute("data-status-name")||s;t.push(d)}}),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 Rt=require("obsidian");var kb=class{create(a){return a?a instanceof Date?new Date(a):new Date(a):new Date}parse(a,e){let t=a.replace(/\//g,"-");if(t.includes("T")){let[o,l]=t.split("T"),[d,u,p]=o.split("-").map(Number),h=l.replace(/[Z+-].*$/,"").split(":").map(Number),[g,f,k]=h;return new Date(d,u-1,p,g!=null?g:0,f!=null?f:0,k!=null?k:0)}if(t.includes(" ")){let[o,l]=t.split(" "),[d,u,p]=o.split("-").map(Number),m=l.split(":").map(Number),[h,g,f]=m;return new Date(d,u-1,p,h!=null?h:0,g!=null?g:0,f!=null?f:0)}let[r,i,s]=t.split("-").map(Number);return new Date(r,i-1,s)}format(a,e){let t=a.getFullYear(),r=a.getMonth()+1,i=a.getDate(),s=String(r).padStart(2,"0"),o=String(i).padStart(2,"0"),l=String(a.getHours()).padStart(2,"0"),d=String(a.getMinutes()).padStart(2,"0"),u=String(a.getSeconds()).padStart(2,"0");return e.replace(/YYYY/g,String(t)).replace(/yyyy/g,String(t)).replace(/MM/g,s).replace(/DD/g,o).replace(/dd/g,o).replace(/HH/g,l).replace(/mm/g,d).replace(/ss/g,u).replace(/\bM\b/g,String(r)).replace(/\bD\b/g,String(i)).replace(/\bd\b/g,String(i))}year(a){return a.getFullYear()}month(a){return a.getMonth()}date(a){return a.getDate()}day(a){return a.getDay()}hour(a){return a.getHours()}minute(a){return a.getMinutes()}setHour(a,e){let t=new Date(a);return t.setHours(e),t}setMinute(a,e){let t=new Date(a);return t.setMinutes(e),t}add(a,e,t){let r=new Date(a);switch(t){case"year":r.setFullYear(r.getFullYear()+e);break;case"month":r.setMonth(r.getMonth()+e);break;case"week":r.setDate(r.getDate()+e*7);break;case"day":r.setDate(r.getDate()+e);break;case"hour":r.setHours(r.getHours()+e);break;case"minute":r.setMinutes(r.getMinutes()+e);break}return r}diff(a,e,t){let r=a.getTime()-e.getTime();switch(t){case"year":return a.getFullYear()-e.getFullYear();case"month":return(a.getFullYear()-e.getFullYear())*12+(a.getMonth()-e.getMonth());case"week":return Math.floor(r/(10080*60*1e3));case"day":return Math.floor(r/(1440*60*1e3));case"hour":return Math.floor(r/(3600*1e3));case"minute":return Math.floor(r/(60*1e3));default:return 0}}startOf(a,e){let t=new Date(a);switch(e){case"year":t.setMonth(0,1),t.setHours(0,0,0,0);break;case"month":t.setDate(1),t.setHours(0,0,0,0);break;case"week":{let r=t.getDay();t.setDate(t.getDate()-r),t.setHours(0,0,0,0);break}case"day":t.setHours(0,0,0,0);break;case"hour":t.setMinutes(0,0,0);break;case"minute":t.setSeconds(0,0);break}return t}endOf(a,e){let t=new Date(a);switch(e){case"year":t.setMonth(11,31),t.setHours(23,59,59,999);break;case"month":t.setMonth(t.getMonth()+1,0),t.setHours(23,59,59,999);break;case"week":{let r=t.getDay();t.setDate(t.getDate()+(6-r)),t.setHours(23,59,59,999);break}case"day":t.setHours(23,59,59,999);break;case"hour":t.setMinutes(59,59,999);break;case"minute":t.setSeconds(59,999);break}return t}isBefore(a,e,t){return t?this.startOf(a,t).getTime()<this.startOf(e,t).getTime():a.getTime()<e.getTime()}isAfter(a,e,t){return t?this.startOf(a,t).getTime()>this.startOf(e,t).getTime():a.getTime()>e.getTime()}isSame(a,e,t){return t?this.startOf(a,t).getTime()===this.startOf(e,t).getTime():a.getTime()===e.getTime()}};function be(n,a,e){let t=document.createElement(n);if(a&&(t.className=a),e)for(let[r,i]of Object.entries(e))t.setAttribute(r,i);return t}function Fc(n,a){Object.assign(n.style,a)}function ef(n){n.innerHTML=""}function Nn(n,a=document){return a.querySelectorAll(n)}var vb=class{constructor(a,e,t,r,i=60,s){this.adapter=a,this.config=e,this.onDrop=t,this.onResize=r,this.cellHeight=i,this.dateFormats=s,this.state=null,this.proxyElement=null,this.boundOnMove=this.onMove.bind(this),this.boundOnUp=this.onUp.bind(this)}resolveCellWidth(a,e){let t=a.getBoundingClientRect().width,r=parseFloat(getComputedStyle(a).width||"0")||0;return(a.offsetWidth||t||r||e||1)/Math.max(e,1)}getAllDayColumnCount(a){let e=getComputedStyle(a).getPropertyValue("--tg-allday-columns");return parseInt(e,10)||7}initMonthDrag(a,e,t){this.config.enabled&&(a.onmousedown=r=>{if(r.button!==0||!this.config.enabled)return;r.stopPropagation();let i=a.closest(".tg-month-row"),s=a.closest(".tg-allday-events-container"),o,l;if(i)l=7,o=this.resolveCellWidth(i,l);else if(s)l=this.getAllDayColumnCount(s),o=this.resolveCellWidth(s,l);else return;let d="move",u=r.target;u.classList.contains("tg-left")&&(d="resize-left"),u.classList.contains("tg-right")&&(d="resize-right");let p=this.adapter.parse(e.start),m=this.adapter.parse(e.end),h=this.adapter.diff(this.adapter.startOf(m,"day"),this.adapter.startOf(p,"day"),"day")+1,g=a.getBoundingClientRect(),f=r.clientX-g.left,k=g.width||o,v=Math.max(0,Math.min(h-1,Math.floor(f/k*h)));this.startDrag({type:"month",mode:d,event:e,startX:r.clientX,startY:r.clientY,startDate:p,endDate:m,cellW:o,renderCallback:t,clickOffsetDays:v})})}initTimeDrag(a,e,t){this.config.enabled&&(a.onmousedown=r=>{if(r.button!==0||!this.config.enabled)return;r.stopPropagation();let i=a.closest(".tg-day-column");if(!i)return;let s=i.getBoundingClientRect(),o="move",l=r.target;l.classList.contains("tg-resize-v")&&(o=l.classList.contains("tg-top")?"resize-top":"resize-bottom");let d=this.adapter.parse(e.start),u=this.adapter.parse(e.end);this.startDrag({type:"time",mode:o,event:e,startX:r.clientX,startY:r.clientY,startDate:d,endDate:u,colW:s.width,renderCallback:t,origStartMin:this.adapter.hour(d)*60+this.adapter.minute(d),origDuration:this.adapter.diff(u,d,"minute")})})}setCellHeight(a){this.cellHeight=a}isDragging(){return this.state!==null}destroy(){document.removeEventListener("mousemove",this.boundOnMove),document.removeEventListener("mouseup",this.boundOnUp),this.removeProxy(),this.state=null}startDrag(a){this.state=a,document.body.style.cursor="grabbing",Nn(`[data-eid="${a.event.id}"]`).forEach(e=>{e.classList.add("tg-is-dragging-source")}),this.createProxy(a.event),document.addEventListener("mousemove",this.boundOnMove),document.addEventListener("mouseup",this.boundOnUp)}createProxy(a){this.proxyElement=document.getElementById("tg-drag-proxy"),this.proxyElement||(this.proxyElement=be("div",void 0,{id:"tg-drag-proxy"}),document.body.appendChild(this.proxyElement)),this.proxyElement.textContent=a.title,Fc(this.proxyElement,{backgroundColor:a.color||"#3b82f6",color:"white",padding:"4px 8px",fontSize:"12px"})}removeProxy(){this.proxyElement&&(this.proxyElement.style.visibility="hidden")}onMove(a){this.state&&(this.proxyElement&&Fc(this.proxyElement,{visibility:"visible",left:`${a.clientX+10}px`,top:`${a.clientY+10}px`,transform:"none"}),this.state.type==="month"?this.handleMonthMove(a):this.handleTimeMove(a))}handleMonthMove(a){var e,t;let r=this.state,i=(e=document.elementFromPoint(a.clientX,a.clientY))==null?void 0:e.closest(".tg-month-row"),s=(t=document.elementFromPoint(a.clientX,a.clientY))==null?void 0:t.closest(".tg-allday-events-container"),o;if(i!=null&&i.dataset.date){let u=this.adapter.parse(i.dataset.date),p=i.getBoundingClientRect(),m=p.width/7,h=Math.floor((a.clientX-p.left)/(m||1));o=this.adapter.add(u,Math.max(0,Math.min(6,h)),"day")}else if(s){let u=s.getBoundingClientRect(),p=this.getAllDayColumnCount(s),m=u.width/p,h=Math.floor((a.clientX-u.left)/m),g=s.closest(".tg-time-view, .tg-calendar");if(!g)return;let f=g.querySelector(".tg-day-column[data-date]");if(f!=null&&f.dataset.date){let k=this.adapter.parse(f.dataset.date);o=this.adapter.add(k,Math.max(0,Math.min(p-1,h)),"day")}else return}else return;let l=r.startDate,d=r.endDate;if(r.mode==="move"){let u=this.adapter.startOf(r.startDate,"day"),p=this.adapter.startOf(r.endDate,"day"),m=this.adapter.diff(p,u,"day"),h=r.clickOffsetDays||0,g=this.adapter.add(o,-h,"day");if(r.event.title,this.adapter.format(r.startDate,"yyyy-MM-dd HH:mm"),this.adapter.format(r.endDate,"yyyy-MM-dd HH:mm"),this.adapter.format(u,"yyyy-MM-dd"),this.adapter.format(p,"yyyy-MM-dd"),this.adapter.format(o,"yyyy-MM-dd HH:mm"),this.adapter.format(g,"yyyy-MM-dd HH:mm"),this.config.dateOnly,this.config.dateOnly){let f=this.adapter.diff(g,u,"day");l=this.adapter.add(r.startDate,f,"day"),d=this.adapter.add(r.endDate,f,"day")}else{let f=this.adapter.hour(r.startDate),k=this.adapter.minute(r.startDate),v=this.adapter.hour(r.endDate),y=this.adapter.minute(r.endDate);l=this.adapter.setMinute(this.adapter.setHour(g,f),k),d=this.adapter.setMinute(this.adapter.setHour(this.adapter.add(g,m,"day"),v),y)}this.adapter.format(l,"yyyy-MM-dd HH:mm"),this.adapter.format(d,"yyyy-MM-dd HH:mm")}else if(r.mode==="resize-right"){if(l=r.startDate,this.config.dateOnly){let u=this.adapter.hour(r.endDate),p=this.adapter.minute(r.endDate);d=this.adapter.setMinute(this.adapter.setHour(o,u),p),this.adapter.isSame(d,l,"day")&&this.adapter.isBefore(d,l)&&(d=this.adapter.setMinute(this.adapter.setHour(o,23),59))}else d=o;this.adapter.isBefore(d,l)&&(d=l)}else if(r.mode==="resize-left"){if(d=r.endDate,this.config.dateOnly){let u=this.adapter.hour(r.startDate),p=this.adapter.minute(r.startDate);l=this.adapter.setMinute(this.adapter.setHour(o,u),p),this.adapter.isSame(l,d,"day")&&this.adapter.isAfter(l,d)&&(l=this.adapter.setMinute(this.adapter.setHour(o,0),0))}else l=o;this.adapter.isAfter(l,d)&&(l=d)}this.renderMonthGhost(l,d),r.tentativeStart=l,r.tentativeEnd=d}handleTimeMove(a){var e;let t=this.state,r=(e=document.elementFromPoint(a.clientX,a.clientY))==null?void 0:e.closest(".tg-day-column");if(!(r!=null&&r.dataset.date))return;let i=this.adapter.parse(r.dataset.date),s=r.getBoundingClientRect(),l=(a.clientY-s.top)/this.cellHeight*60,d=this.config.dateOnly?1440:this.config.snapMinutes||15,u=Math.max(0,Math.min(1440,Math.round(l/d)*d)),p,m;if(t.mode==="move")if(this.config.dateOnly){let h=this.adapter.diff(i,t.startDate,"day");p=this.adapter.add(t.startDate,h,"day"),m=this.adapter.add(t.endDate,h,"day")}else p=this.adapter.setMinute(this.adapter.setHour(i,0),u),m=this.adapter.add(p,t.origDuration||60,"minute");else if(t.mode==="resize-top"){if(m=t.endDate,this.config.dateOnly){let h=this.adapter.diff(i,t.startDate,"day");p=this.adapter.add(t.startDate,h,"day")}else if(this.adapter.isSame(i,t.endDate,"day")){let h=this.adapter.hour(t.endDate)*60+this.adapter.minute(t.endDate),g=Math.min(h-15,u);p=this.adapter.setMinute(this.adapter.setHour(i,0),g)}else p=this.adapter.setMinute(this.adapter.setHour(i,0),u);this.adapter.isAfter(p,m)&&(p=m)}else if(this.config.dateOnly){p=t.startDate;let h=this.adapter.diff(i,t.endDate,"day");m=this.adapter.add(t.endDate,h,"day")}else if(p=t.startDate,this.adapter.isSame(i,t.startDate,"day")){let h=Math.max((t.origStartMin||0)+15,u);m=this.adapter.setMinute(this.adapter.setHour(i,0),h)}else m=t.endDate;this.renderTimeGhost(p,m),t.tentativeStart=p,t.tentativeEnd=m}renderMonthGhost(a,e){var t,r;Nn(".tg-ghost-event").forEach(s=>s.remove());let i=Nn(".tg-month-row");if(i.length>0){let o=14.285714285714286;for(let l of i){if(!l.dataset.date)continue;let d=this.adapter.parse(l.dataset.date),u=this.adapter.add(d,6,"day");if(!this.adapter.isBefore(e,d)&&!this.adapter.isAfter(a,u)){let p=this.adapter.isBefore(a,d)?d:a,m=this.adapter.isAfter(e,u)?u:e,h=this.adapter.diff(p,d,"day"),g=this.adapter.diff(m,p,"day")+1,f=h*o,k=g*o,v=h+g-1,y=l.querySelectorAll(".tg-event-bar"),b=26;for(let T of y){let x=T.style.left.match(/calc\(\s*([\d.]+)%/),C=T.style.width.match(/calc\(\s*([\d.]+)%/);if(!(x!=null&&x[1])||!(C!=null&&C[1]))continue;let S=parseFloat(x[1]),D=parseFloat(C[1]),E=Math.round(S/o),R=Math.round(D/o),I=E+R-1;if(E<=v&&I>=h){let H=parseFloat(T.style.top)||0,U=T.offsetHeight||26;b=Math.max(b,H+U)}}let w=be("div","tg-ghost-event");Fc(w,{left:`calc(${f}% + 2px)`,width:`calc(${k}% - 4px)`,top:`${b+2}px`,height:"26px"}),l.appendChild(w)}}}else{let s=document.querySelector(".tg-allday-events-container");if(!s)return;let o=this.getAllDayColumnCount(s),l=s.closest(".tg-time-view, .tg-calendar");if(!l)return;let d=Array.from(l.querySelectorAll(".tg-day-column[data-date]"));if(d.length===0)return;let u=(t=d[0])==null?void 0:t.dataset.date,p=(r=d[d.length-1])==null?void 0:r.dataset.date;if(!u||!p)return;let m=this.adapter.parse(u),h=this.adapter.parse(p);if(!this.adapter.isBefore(e,m,"day")&&!this.adapter.isAfter(a,h,"day")){let g=this.adapter.isBefore(a,m)?m:a,f=this.adapter.isAfter(e,h)?h:e,k=this.adapter.diff(g,m,"day"),v=this.adapter.diff(f,g,"day")+1,y=100/o,b=k*y,w=v*y,T=k+v-1,x=s.querySelectorAll(".tg-allday-event"),C=0;for(let D of x){let E=D.style.left.match(/calc\(\s*([\d.]+)%/),R=D.style.width.match(/calc\(\s*([\d.]+)%/);if(!(E!=null&&E[1])||!(R!=null&&R[1]))continue;let I=parseFloat(E[1]),H=parseFloat(R[1]),U=Math.round(I/y),q=Math.round(H/y),L=U+q-1;if(U<=T&&L>=k){let _=parseFloat(D.style.top)||0,V=D.offsetHeight||22;C=Math.max(C,_+V)}}let S=be("div","tg-ghost-event");Fc(S,{left:`calc(${b}% + 2px)`,width:`calc(${w}% - 4px)`,top:`${C+4}px`,height:"22px"}),s.appendChild(S)}}}renderTimeGhost(a,e){Nn(".tg-ghost-event").forEach(d=>d.remove());let t=this.adapter.format(a,this.dateFormats.date),r=document.querySelector(`.tg-day-column[data-date="${t}"]`);if(!r)return;let s=(this.adapter.hour(a)*60+this.adapter.minute(a))*(this.cellHeight/60),o=this.adapter.diff(e,a,"minute")*(this.cellHeight/60),l=be("div","tg-ghost-event");Fc(l,{top:`${s}px`,height:`${o}px`,width:"90%",left:"5%"}),l.textContent=`${this.adapter.format(a,this.dateFormats.time)} - ${this.adapter.format(e,this.dateFormats.time)}`,Fc(l,{color:"#3b82f6",fontSize:"10px",padding:"2px"}),r.appendChild(l)}onUp(a){if(!this.state)return;let e=this.state;if(document.body.style.cursor="",this.removeProxy(),Nn(".tg-ghost-event").forEach(t=>t.remove()),Nn(".tg-is-dragging-source").forEach(t=>{t.classList.remove("tg-is-dragging-source")}),document.removeEventListener("mousemove",this.boundOnMove),document.removeEventListener("mouseup",this.boundOnUp),e.tentativeStart&&e.tentativeEnd){let t=this.toDate(e.tentativeStart),r=this.toDate(e.tentativeEnd);e.event.title,e.mode,this.adapter.format(e.tentativeStart,"yyyy-MM-dd HH:mm"),this.adapter.format(e.tentativeEnd,"yyyy-MM-dd HH:mm"),t.toISOString(),r.toISOString(),e.mode==="move"?this.onDrop(e.event,t,r):this.onResize(e.event,t,r),e.renderCallback()}this.state=null}toDate(a){return new Date(this.adapter.year(a),this.adapter.month(a),this.adapter.date(a),this.adapter.hour(a),this.adapter.minute(a))}},yb=class{constructor(a){this.events=[],a&&(this.events=[...a])}addEvent(a){this.events.push(a)}removeEvent(a){let e=this.events.findIndex(t=>t.id===a);return e>-1?(this.events.splice(e,1),!0):!1}updateEvent(a,e){let t=this.events.find(r=>r.id===a);return t?(Object.assign(t,e),!0):!1}getEvents(){return[...this.events]}findEvent(a){return this.events.find(e=>e.id===a)}clear(){this.events=[]}setEvents(a){this.events=[...a]}get count(){return this.events.length}},bb=class{constructor(a,e,t,r,i){this.adapter=a,this.config=e,this.dragController=t,this.currentView=r,this.eventManager=i,this.container=null,this.rangeState=null,this.boundHandleClick=this.handleClick.bind(this),this.boundHandleDblClick=this.handleDblClick.bind(this),this.boundHandleContextMenu=this.handleContextMenu.bind(this),this.boundHandleMouseDown=this.handleMouseDown.bind(this),this.boundHandleRangeMove=this.handleRangeMove.bind(this),this.boundHandleRangeEnd=this.handleRangeEnd.bind(this)}init(a){this.destroy(),this.container=a,a.addEventListener("click",this.boundHandleClick),a.addEventListener("dblclick",this.boundHandleDblClick),a.addEventListener("contextmenu",this.boundHandleContextMenu),a.addEventListener("mousedown",this.boundHandleMouseDown)}destroy(){this.container&&(this.container.removeEventListener("click",this.boundHandleClick),this.container.removeEventListener("dblclick",this.boundHandleDblClick),this.container.removeEventListener("contextmenu",this.boundHandleContextMenu),this.container.removeEventListener("mousedown",this.boundHandleMouseDown)),document.removeEventListener("mousemove",this.boundHandleRangeMove),document.removeEventListener("mouseup",this.boundHandleRangeEnd),this.clearRangePreview(),this.rangeState=null,this.container=null}handleClick(a){let e=a.target;if(!e.closest(".tg-event-block, .tg-event-bar")){if(this.currentView()==="month"){let r=e.closest(".tg-month-cell");if(r){this.handleDateClick(r);return}}if(this.currentView()==="week"||this.currentView()==="day"){let r=e.closest(".tg-day-column");if(r&&!e.closest(".tg-event-block")){this.handleTimeSlotClick(a,r);return}}}}handleDblClick(a){var e,t,r,i,s,o;let l=a.target,d=l.closest(".tg-event-block, .tg-event-bar");if(d){let u=d.getAttribute("data-eid"),p=this.getEventById(u);p&&((t=(e=this.config).onEventDoubleClick)==null||t.call(e,p));return}if(this.currentView()==="month"){let u=l.closest(".tg-month-cell");if(u){let p=this.getDateFromCell(u);p&&((i=(r=this.config).onDateDoubleClick)==null||i.call(r,this.toDate(p)));return}}if(this.currentView()==="week"||this.currentView()==="day"){let u=l.closest(".tg-day-column");if(u&&!l.closest(".tg-event-block")){let p=this.getDateTimeFromSlot(a,u);p&&((o=(s=this.config).onTimeSlotDoubleClick)==null||o.call(s,this.toDate(p)));return}}}handleContextMenu(a){let e=a.target;if(!(this.config.onEventContextMenu||this.config.onDateContextMenu||this.config.onTimeSlotContextMenu))return;let r=e.closest(".tg-event-block, .tg-event-bar");if(r&&this.config.onEventContextMenu){a.preventDefault();let i=r.getAttribute("data-eid"),s=this.getEventById(i);r.className,this.eventManager.getEvents().map(o=>o.id),s&&this.config.onEventContextMenu(s,a.clientX,a.clientY);return}if(this.currentView()==="month"&&this.config.onDateContextMenu){let i=e.closest(".tg-month-cell");if(i){a.preventDefault();let s=this.getDateFromCell(i);s&&this.config.onDateContextMenu(this.toDate(s),a.clientX,a.clientY);return}}if((this.currentView()==="week"||this.currentView()==="day")&&this.config.onTimeSlotContextMenu){let i=e.closest(".tg-day-column");if(i&&!e.closest(".tg-event-block")){a.preventDefault();let s=this.getDateTimeFromSlot(a,i);s&&this.config.onTimeSlotContextMenu(this.toDate(s),a.clientX,a.clientY);return}}}handleMouseDown(a){if(a.button!==0)return;let e=a.target;if(!(e.closest(".tg-event-block, .tg-event-bar")||this.dragController.isDragging()||!(this.config.onDateRangeSelect||this.config.onTimeRangeSelect))){if(this.currentView()==="month"&&this.config.onDateRangeSelect){let r=e.closest(".tg-month-cell");if(!r)return;let i=this.getDateFromCell(r);if(!i)return;this.rangeState={isSelecting:!0,startDate:i,startX:a.clientX,startY:a.clientY,currentDate:i,viewType:"month"},document.addEventListener("mousemove",this.boundHandleRangeMove),document.addEventListener("mouseup",this.boundHandleRangeEnd),this.container&&this.container.classList.add("tg-selecting");return}if((this.currentView()==="week"||this.currentView()==="day")&&this.config.onTimeRangeSelect){let r=e.closest(".tg-day-column");if(!r)return;let i=this.getDateTimeFromSlot(a,r);if(!i)return;this.rangeState={isSelecting:!0,startDate:i,startX:a.clientX,startY:a.clientY,currentDate:i,viewType:"time",columnEl:r},document.addEventListener("mousemove",this.boundHandleRangeMove),document.addEventListener("mouseup",this.boundHandleRangeEnd),this.container&&this.container.classList.add("tg-selecting");return}}}handleRangeMove(a){var e;if(!((e=this.rangeState)!=null&&e.isSelecting))return;let t=document.elementFromPoint(a.clientX,a.clientY);if(t)if(this.rangeState.viewType==="month"){let r=t.closest(".tg-month-cell");if(r){let i=this.getDateFromCell(r);i&&(this.rangeState.currentDate=i,this.renderMonthRangePreview())}}else{let r=t.closest(".tg-day-column");if(r){let i=this.getDateTimeFromSlot(a,r);i&&(this.rangeState.currentDate=i,this.renderTimeRangePreview())}}}handleRangeEnd(a){var e,t,r,i,s;if((e=this.rangeState)!=null&&e.isSelecting){if(document.removeEventListener("mousemove",this.boundHandleRangeMove),document.removeEventListener("mouseup",this.boundHandleRangeEnd),this.container&&this.container.classList.remove("tg-selecting"),this.rangeState.startDate&&this.rangeState.currentDate){let o=this.rangeState.startDate,l=this.rangeState.currentDate,d=this.adapter.isAfter(o,l);if(this.rangeState.viewType==="month"){let u=this.toDate(d?l:o),p=this.toDate(d?o:l);(r=(t=this.config).onDateRangeSelect)==null||r.call(t,u,p)}else{let u=this.toDate(d?l:o),p=this.toDate(d?o:l);(s=(i=this.config).onTimeRangeSelect)==null||s.call(i,u,p)}}this.clearRangePreview(),this.rangeState=null}}toDate(a){return new Date(this.adapter.year(a),this.adapter.month(a),this.adapter.date(a),this.adapter.hour(a),this.adapter.minute(a))}getEventById(a){if(a)return this.eventManager.findEvent(a)}getDateFromCell(a){let e=a.closest(".tg-month-row");if(!(e!=null&&e.dataset.date))return null;let r=Array.from(e.querySelectorAll(".tg-month-cell")).indexOf(a);if(r<0)return null;let i=this.adapter.parse(e.dataset.date);return this.adapter.add(i,r,"day")}getDateTimeFromSlot(a,e){let t=e.dataset.date;if(!t)return null;let r=e.getBoundingClientRect(),i=a.clientY-r.top,s=this.config.theme.cellHeight,o=this.config.draggable.snapMinutes,l=i/s*60,d=Math.max(0,Math.min(1440,Math.round(l/o)*o)),u=this.adapter.parse(t);return this.adapter.setMinute(this.adapter.setHour(u,Math.floor(d/60)),d%60)}handleDateClick(a){var e,t;let r=this.getDateFromCell(a);r&&((t=(e=this.config).onDateClick)==null||t.call(e,this.toDate(r)))}handleTimeSlotClick(a,e){var t,r;let i=this.getDateTimeFromSlot(a,e);i&&((r=(t=this.config).onTimeSlotClick)==null||r.call(t,this.toDate(i)))}renderMonthRangePreview(){var a,e;if(!((a=this.rangeState)!=null&&a.startDate)||!((e=this.rangeState)!=null&&e.currentDate))return;this.clearRangePreview();let t=this.adapter.isBefore(this.rangeState.startDate,this.rangeState.currentDate)?this.rangeState.startDate:this.rangeState.currentDate,r=this.adapter.isAfter(this.rangeState.startDate,this.rangeState.currentDate)?this.rangeState.startDate:this.rangeState.currentDate,i=Nn(".tg-month-row");for(let s of i){if(!s.dataset.date)continue;let o=this.adapter.parse(s.dataset.date),l=Array.from(s.querySelectorAll(".tg-month-cell")),d=this.adapter.add(o,l.length-1,"day");if(!this.adapter.isBefore(r,o)&&!this.adapter.isAfter(t,d))for(let u=0;u<l.length;u++){let p=this.adapter.add(o,u,"day");if(!this.adapter.isBefore(p,t)&&!this.adapter.isAfter(p,r)){let m=l[u];m&&m.classList.add("tg-range-preview")}}}}renderTimeRangePreview(){var a,e;if(!((a=this.rangeState)!=null&&a.startDate)||!((e=this.rangeState)!=null&&e.currentDate))return;this.clearRangePreview();let t=this.adapter.isBefore(this.rangeState.startDate,this.rangeState.currentDate)?this.rangeState.startDate:this.rangeState.currentDate,r=this.adapter.isAfter(this.rangeState.startDate,this.rangeState.currentDate)?this.rangeState.startDate:this.rangeState.currentDate;if(this.adapter.isSame(t,r,"day")){let s=Nn(".tg-day-column"),o=null;for(let g of s){let f=g.dataset.date;if(f){let k=this.adapter.parse(f);if(this.adapter.isSame(k,t,"day")){o=g;break}}}if(!o)return;let l=this.adapter.hour(t)*60+this.adapter.minute(t),d=this.adapter.hour(r)*60+this.adapter.minute(r),u=this.config.theme.cellHeight,p=l/60*u,m=(d-l)/60*u,h=be("div","tg-time-range-preview");Fc(h,{top:`${p}px`,height:`${Math.max(m,u/4)}px`,width:"100%",left:"0"}),o.appendChild(h)}else{let s=Nn(".tg-day-column");for(let o of s){let l=o.dataset.date;if(!l)continue;let d=this.adapter.parse(l);!this.adapter.isBefore(d,t,"day")&&!this.adapter.isAfter(d,r,"day")&&o.classList.add("tg-range-preview")}}}clearRangePreview(){Nn(".tg-time-range-preview").forEach(a=>a.remove()),Nn(".tg-range-preview").forEach(a=>{a.classList.remove("tg-range-preview")})}};function DN(n,a){n.style.setProperty("--tg-primary-color",a.primaryColor),n.style.setProperty("--tg-primary-rgb",XG(a.primaryColor)),n.style.setProperty("--tg-cell-height",`${a.cellHeight}px`),n.style.setProperty("--tg-font-header",a.fontSize.header),n.style.setProperty("--tg-font-event",a.fontSize.event)}function XG(n){let a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return a?`${parseInt(a[1],16)}, ${parseInt(a[2],16)}, ${parseInt(a[3],16)}`:"59, 130, 246"}var Jg={date:"yyyy-MM-dd",dateTime:"yyyy-MM-dd HH:mm",time:"HH:mm",monthHeader:"yyyy\u5E74 M\u6708",dayHeader:"yyyy\u5E74M\u6708d\u65E5"},Zg={date:"yyyy-MM-dd",dateTime:"yyyy-MM-dd HH:mm"},Ln=class{constructor(){this.mounted=!1}init(a){this.context=a}onMount(){this.mounted=!0}onUnmount(){this.mounted=!1}onEventsUpdate(a){return!1}onDateChange(a){return!1}getNavigationUnit(){return"month"}getHeaderTitle(){let a=this.getNavigationUnit()==="day"?this.context.config.dateFormats.dayHeader:this.context.config.dateFormats.monthHeader;return this.context.adapter.format(this.context.currentDate,a)}isMounted(){return this.mounted}getMeta(){return this.constructor.meta}},Rc=class{constructor(){this.views=new Map}register(a,e={}){if(!(a.prototype instanceof Ln)&&a!==Ln)throw new Error(`View class must extend BaseView. Got: ${a.name||"anonymous class"}`);let t=a.meta;if(!t||typeof t!="object")throw new Error(`View class '${a.name||"anonymous"}' must have a static 'meta' property of type ViewMeta`);if(!t.type||typeof t.type!="string")throw new Error(`View class '${a.name||"anonymous"}' meta must have a 'type' string property`);if(!t.label||typeof t.label!="string")throw new Error(`View class '${a.name||"anonymous"}' meta must have a 'label' string property`);if(this.views.has(t.type)&&!e.override)throw new Error(`View type '${t.type}' is already registered. Use { override: true } to replace.`);this.views.set(t.type,{ctor:a,meta:{...t}})}unregister(a){return this.views.delete(a)}has(a){return this.views.has(a)}getMeta(a){var e;return(e=this.views.get(a))==null?void 0:e.meta}create(a){let e=this.views.get(a);if(e)return new e.ctor}getAll(){return Array.from(this.views.values()).map(e=>e.meta).sort((e,t)=>{var s,o;let r=(s=e.order)!=null?s:50,i=(o=t.order)!=null?o:50;return r!==i?r-i:e.type.localeCompare(t.type)})}getTypes(){return Array.from(this.views.keys())}clear(){this.views.clear()}get size(){return this.views.size}};var wb=class{constructor(a,e=0,t=!0,r){this.adapter=a,this.firstDayOfWeek=e,this.showWeekends=t,this.dateFormats=r}generateGrid(a,e){let t=this.adapter.startOf(a,"month"),r=this.adapter.endOf(a,"month"),i=this.adapter.create(),s=this.adapter.startOf(t,"week"),o=this.adapter.day(s);if(o!==this.firstDayOfWeek){let h=this.firstDayOfWeek-o;h>0&&(h=h-7),s=this.adapter.add(s,h,"day")}let l=this.adapter.endOf(r,"week"),d=this.adapter.day(l),u=(this.firstDayOfWeek+6)%7;if(d!==u){let h=(u-d+7)%7;h>0&&(l=this.adapter.add(l,h,"day"))}let p=[],m=s;for(;this.adapter.isBefore(m,l)||this.adapter.isSame(m,l,"day");){let h=[];for(let g=0;g<7;g++){let f=this.adapter.day(m),k=f===0||f===6,v={isWeekend:k,dayOfWeek:f,isToday:this.adapter.isSame(m,i,"day"),isThisMonth:this.adapter.isSame(m,a,"month")},y=!0;if(e){let b=e(m,v);y=typeof b=="boolean"?b:b.visible}else!this.showWeekends&&k&&(y=!1);y&&h.push({date:m,dateStr:this.adapter.format(m,this.dateFormats.date)}),m=this.adapter.add(m,1,"day")}h.length>0&&p.push(h)}return p}calculateLayoutWithVisibleDays(a,e){if(e.length===0)return[];let t=e[0].date,r=e[e.length-1].date,i=a.filter(l=>{let d=this.adapter.startOf(this.adapter.parse(l.start),"day"),u=this.adapter.startOf(this.adapter.parse(l.end),"day");return!this.adapter.isAfter(d,r,"day")&&!this.adapter.isBefore(u,t,"day")}),s=[];for(let l of i){let d=this.adapter.startOf(this.adapter.parse(l.start),"day"),u=this.adapter.startOf(this.adapter.parse(l.end),"day"),p=[];for(let b of e)b.disabled||!this.adapter.isBefore(b.date,d,"day")&&!this.adapter.isAfter(b.date,u,"day")&&p.push({colIndex:b.colIndex,date:b.date,dateStr:b.dateStr});if(p.length===0)continue;let m=[],h=p[0],g=h,f=1;for(let b=1;b<p.length;b++){let w=p[b],T=this.adapter.add(g.date,1,"day");if(this.adapter.isSame(w.date,T,"day"))f++,g=w;else{let C=this.adapter.isSame(h.date,d,"day"),S=this.adapter.isSame(g.date,u,"day");m.push({startIdx:h.colIndex,span:f,isEventStart:C,isEventEnd:S}),h=w,g=w,f=1}}let k=this.adapter.isSame(h.date,d,"day"),v=this.adapter.isSame(g.date,u,"day");m.push({startIdx:h.colIndex,span:f,isEventStart:k,isEventEnd:v});let y=m.length;m.forEach((b,w)=>{let T={event:l,startIdx:b.startIdx,span:b.span,slot:0,isStart:b.isEventStart,isEnd:b.isEventEnd,sortKey:b.startIdx*1e3-b.span,...y>1?{segmentIndex:w,totalSegments:y}:{}};s.push(T)})}s.sort((l,d)=>l.sortKey-d.sortKey);let o=[];for(let l of s){let d=0;for(;;){let u=o[d];if(u===void 0||u<l.startIdx){o[d]=l.startIdx+l.span-1,l.slot=d;break}d++}}return s.map(({sortKey:l,...d})=>d)}calculateLayout(a,e,t){let r=[],i=e,s=0;for(;this.adapter.isBefore(i,t,"day")||this.adapter.isSame(i,t,"day");){let o=this.adapter.day(i),l=o===0||o===6;(this.showWeekends||!l)&&(r.push({date:i,dateStr:this.adapter.format(i,this.dateFormats.date),colIndex:s}),s++),i=this.adapter.add(i,1,"day")}return this.calculateLayoutWithVisibleDays(a,r)}getWeekCount(a){return this.generateGrid(a).length}},Tb=class{constructor(a,e,t,r=!1,i,s,o,l,d,u){this.engine=a,this.adapter=e,this.showEventCounts=r,this.onRenderDateCell=s,this.onStyleEvent=o,this.maxEventsPerRow=l,this.onRenderMoreEventsPopover=d,this.onRenderEvent=u,this.activePopover=null,this.popoverCloseHandler=null}render(a,e,t,r,i,s,o){var l;this.closePopover(),ef(a);let d=this.engine.generateGrid(e,o),u=this.renderHeader(((l=d[0])==null?void 0:l.length)||7);a.appendChild(u);let p=be("div","tg-month-body");for(let m of d){let h=this.renderWeekRow(m,e,t,r,i,s,o);p.appendChild(h)}a.appendChild(p)}renderHeader(a){let e=be("div","tg-month-header"),t=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],r=[],i=this.engine.firstDayOfWeek||0;for(let s=0;s<a;s++){let o=(i+s)%7;r.push(t[o])}e.style.setProperty("--tg-grid-columns",String(r.length)),e.style.gridTemplateColumns="repeat(var(--tg-grid-columns), 1fr)";for(let s of r){let o=be("div","tg-month-header-cell");o.textContent=s,e.appendChild(o)}return e}renderWeekRow(a,e,t,r,i,s,o){let l=be("div","tg-month-row");l.dataset.date=a[0].dateStr;let d=a.length;l.style.setProperty("--tg-grid-columns",String(a.length)),l.style.gridTemplateColumns="repeat(var(--tg-grid-columns), 1fr)";let u=a.map((b,w)=>{let T=!1;if(o){let x=this.adapter.day(b.date),C=x===0||x===6,S=this.adapter.create(),D={isWeekend:C,dayOfWeek:x,isToday:this.adapter.isSame(b.date,S,"day"),isThisMonth:this.adapter.isSame(b.date,e,"month")},E=o(b.date,D);typeof E=="object"&&E.disabled&&(T=!0)}return{date:b.date,dateStr:b.dateStr,colIndex:w,disabled:T}}),p=this.engine.calculateLayoutWithVisibleDays(t,u),m=this.maxEventsPerRow!==void 0?p.filter(b=>b.slot<this.maxEventsPerRow):p,h=new Map;if(this.maxEventsPerRow!==void 0){for(let b of p)if(b.slot>=this.maxEventsPerRow)for(let w=b.startIdx;w<b.startIdx+b.span;w++){h.has(w)||h.set(w,[]);let T=h.get(w);T.find(x=>x.id===b.event.id)||T.push(b.event)}}let g=m.reduce((b,w)=>Math.max(b,w.slot),-1),f=80,k=g>=0?26+(g+1)*28:0;h.size>0&&(k+=24);let v=Math.max(f,k+8);l.style.setProperty("--tg-row-min-height",`${v}px`);let y=new Map;for(let b of t){let w=this.adapter.parse(b.start),T=this.adapter.parse(b.end);for(let x of a)!this.adapter.isBefore(T,x.date)&&!this.adapter.isAfter(w,x.date)&&(y.has(x.dateStr)||y.set(x.dateStr,[]),y.get(x.dateStr).push(b))}for(let b of a){let w=y.get(b.dateStr)||[],T=this.renderDateCell(b,e,w,o);l.appendChild(T)}for(let b of m){let w=this.renderEventBar(b,d,r,i,s);l.appendChild(w)}for(let[b,w]of h){let T=this.renderMoreIndicator(b,w,a[b],d,g,s);l.appendChild(T)}return l}renderDateCell(a,e,t,r){let i=be("div","tg-month-cell"),s=be("div","tg-date-number");s.textContent=String(this.adapter.date(a.date));let o=this.adapter.create(),l=this.adapter.isSame(a.date,o,"day"),d=this.adapter.isBefore(a.date,o,"day"),u=this.adapter.isAfter(a.date,o,"day"),p=this.adapter.month(a.date)===this.adapter.month(e),m=this.adapter.day(a.date),g={isWeekend:m===0||m===6,dayOfWeek:m,isToday:l,isThisMonth:p};if(r){let f=r(a.date,g);if(typeof f=="object"){let k=f;k.className&&i.classList.add(k.className),k.style&&Object.assign(i.style,k.style),k.disabled&&i.classList.add("tg-disabled")}}if(p?s.classList.add("tg-current-month"):s.classList.add("tg-other-month"),l&&s.classList.add("tg-today"),i.appendChild(s),this.showEventCounts&&t.length>0){let f=be("div","tg-event-count-badge");f.textContent=t.length.toString(),i.appendChild(f)}if(this.onRenderDateCell){let f=new Date(this.adapter.year(a.date),this.adapter.month(a.date),this.adapter.date(a.date));this.onRenderDateCell({date:f,events:t,cellEl:i,isToday:l,isPastDue:d,isFuture:u,isThisMonth:p})}return i}renderEventBar(a,e,t,r,i){let s=be("div","tg-event-base tg-event-bar");s.dataset.eid=a.event.id,a.segmentIndex!==void 0&&a.totalSegments!==void 0&&(s.dataset.segmentIndex=String(a.segmentIndex),s.dataset.totalSegments=String(a.totalSegments),s.classList.add("tg-event-segmented"),a.segmentIndex===0&&s.classList.add("tg-event-segment-first"),a.segmentIndex===a.totalSegments-1&&s.classList.add("tg-event-segment-last"),a.segmentIndex>0&&a.segmentIndex<a.totalSegments-1&&s.classList.add("tg-event-segment-middle"));let o=a.event.color||"#3b82f6",l;if(this.onStyleEvent){let h=this.onStyleEvent(a.event);h.className&&s.classList.add(h.className),h.color&&(o=h.color),h.opacity!==void 0&&(l=h.opacity)}let d=100/e,u=a.startIdx*d,p=26+a.slot*28;s.style.left=`calc(${u}% + 2px)`,s.style.top=`${p}px`,s.style.width=`calc(${a.span*d}% - 4px)`,s.style.backgroundColor=o,l!==void 0&&(s.style.opacity=l.toString());let m=()=>{s.textContent=a.event.title};if(this.onRenderEvent){let h={event:a.event,el:s,viewType:"month",isAllDay:!0,isStart:a.isStart,isEnd:a.isEnd,defaultRender:m};a.segmentIndex!==void 0&&(h.segmentIndex=a.segmentIndex),a.totalSegments!==void 0&&(h.totalSegments=a.totalSegments),this.onRenderEvent(h)}else m();if(a.isStart){let h=be("div","tg-resize-handle tg-resize-h tg-left");s.appendChild(h)}if(a.isEnd){let h=be("div","tg-resize-handle tg-resize-h tg-right");s.appendChild(h)}return i&&s.addEventListener("click",h=>{h.stopPropagation(),i(a.event)}),t.initMonthDrag(s,a.event,r),s}renderMoreIndicator(a,e,t,r,i,s){let o=be("div","tg-more-indicator");o.textContent=`+${e.length} more`;let l=100/r,d=a*l,u=26+(i+1)*28+2;o.style.left=`calc(${d}% + 2px)`,o.style.top=`${u}px`,o.style.width=`calc(${l}% - 4px)`;let p=new Date(this.adapter.year(t.date),this.adapter.month(t.date),this.adapter.date(t.date));return o.addEventListener("click",m=>{m.stopPropagation();let h=()=>{this.renderDefaultPopover(o,e,p,s)};this.onRenderMoreEventsPopover?this.onRenderMoreEventsPopover(e,p,o,h):h()}),o}renderDefaultPopover(a,e,t,r){this.closePopover();let i=be("div","tg-more-popover");this.activePopover=i;let s=be("div","tg-more-popover-header");s.textContent=t.toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric"}),i.appendChild(s);let o=be("div","tg-more-popover-list");for(let l of e){let d=be("div","tg-more-popover-item"),u=l.color||"#3b82f6",p;if(this.onStyleEvent){let g=this.onStyleEvent(l);g.className&&d.classList.add(g.className),g.color&&(u=g.color),g.opacity!==void 0&&(p=g.opacity)}let m=be("span","tg-more-popover-dot");m.style.backgroundColor=u,d.appendChild(m);let h=be("span","tg-more-popover-title");h.textContent=l.title,d.appendChild(h),p!==void 0&&(d.style.opacity=p.toString()),r&&(d.addEventListener("click",g=>{g.stopPropagation(),this.closePopover(),r(l)}),d.style.cursor="pointer"),o.appendChild(d)}i.appendChild(o),document.body.appendChild(i),this.positionPopover(i,a),this.popoverCloseHandler=l=>{!i.contains(l.target)&&l.target!==a&&this.closePopover()},setTimeout(()=>{document.addEventListener("click",this.popoverCloseHandler)},0)}positionPopover(a,e){let t=e.getBoundingClientRect(),r=a.getBoundingClientRect(),i=window.innerHeight,s=window.innerWidth,o=t.bottom+4,l=t.left;o+r.height>i-8&&(o=t.top-r.height-4),l+r.width>s-8&&(l=s-r.width-8),l<8&&(l=8),a.style.top=`${o}px`,a.style.left=`${l}px`}closePopover(){this.activePopover&&(this.activePopover.remove(),this.activePopover=null),this.popoverCloseHandler&&(document.removeEventListener("click",this.popoverCloseHandler),this.popoverCloseHandler=null)}},EN=class extends Ln{init(a){super.init(a),this.engine=new wb(this.context.adapter,this.context.config.view.firstDayOfWeek,this.context.config.view.showWeekends,this.context.config.dateFormats),this.renderer=new Tb(this.engine,this.context.adapter,this.context.config.theme,this.context.config.showEventCounts,this.context.config.dateFormats,this.context.config.onRenderDateCell,this.context.config.onStyleEvent,this.context.config.view.maxEventsPerRow,this.context.config.onRenderMoreEventsPopover,this.context.config.onRenderEvent)}render(a,e,t){this.renderer.render(a,this.context.currentDate,e,this.context.dragController,this.context.requestRender,this.context.config.onEventClick,this.context.config.view.dayFilter)}getNavigationUnit(){return"month"}getEngine(){return this.engine}getRenderer(){return this.renderer}};EN.meta={type:"month",label:"Month",shortLabel:"M",order:10};var MN=EN,xb=class{constructor(a,e=60,t=!0,r=0,i){this.adapter=a,this.showWeekends=t,this.firstDayOfWeek=r,this.dateFormats=i,this.cellHeight=e}generateColumns(a,e,t){let r=[],i=this.adapter.create();if(e==="day")r.push({date:a,dateStr:this.adapter.format(a,this.dateFormats.date)});else{let s=this.adapter.startOf(a,"week"),o=this.adapter.day(s);if(o!==this.firstDayOfWeek){let d=this.firstDayOfWeek-o;d>0?s=this.adapter.add(s,d,"day"):s=this.adapter.add(s,d,"day")}let l=s;for(let d=0;d<7;d++){let u=this.adapter.day(l),p=u===0||u===6,m={isWeekend:p,dayOfWeek:u,isToday:this.adapter.isSame(l,i,"day"),isThisMonth:this.adapter.isSame(l,a,"month")},h=!0;if(t){let g=t(l,m);h=typeof g=="boolean"?g:g.visible}else!this.showWeekends&&p&&(h=!1);h&&r.push({date:l,dateStr:this.adapter.format(l,this.dateFormats.date)}),l=this.adapter.add(l,1,"day")}}return r}generateTimeSlots(a){let e=[];for(let t=0;t<24;t++){if(!a){e.push({hour:t});continue}let r=a(t);typeof r=="boolean"?r&&e.push({hour:t}):r.visible&&e.push({hour:t,config:r})}return e}calculateLayout(a,e){let t=this.filterAndCalculateGeometry(a,e);if(t.length===0)return[];t.sort((i,s)=>i.startMin-s.startMin||s.endMin-i.endMin);let r=this.groupOverlappingEvents(t);for(let i of r)this.calculateColumnPositions(i);return t.map(i=>{let s={event:i.event,top:i.top,height:i.height,leftPercent:i.leftPercent,widthPercent:i.widthPercent,colIndex:i.colIndex,startMin:i.startMin,endMin:i.endMin,isStart:i.isStart,isEnd:i.isEnd};return i.segmentIndex!==void 0&&i.totalSegments!==void 0&&(s.segmentIndex=i.segmentIndex,s.totalSegments=i.totalSegments),s})}isSingleDayEvent(a){let e=this.adapter.parse(a.start),t=this.adapter.parse(a.end);return this.adapter.isSame(e,t,"day")}isCrossMidnightEvent(a){return this.isAllDayEvent(a)?!1:!this.isSingleDayEvent(a)}getEventDaySpan(a){let e=this.adapter.startOf(this.adapter.parse(a.start),"day"),t=this.adapter.startOf(this.adapter.parse(a.end),"day");return this.adapter.diff(t,e,"day")+1}isAllDayEvent(a){let e=this.adapter.parse(a.start),t=this.adapter.parse(a.end),r=this.adapter.hour(e),i=this.adapter.minute(e),s=this.adapter.hour(t),o=this.adapter.minute(t);return r===0&&i===0&&s===0&&o===0||r===0&&i===0&&s===23&&o>=59}calculateAllDayLayout(a,e){if(e.length===0||a.length===0)return[];let t=e[0].date,r=e[e.length-1].date,i=a.filter(l=>{let d=this.adapter.startOf(this.adapter.parse(l.start),"day"),u=this.adapter.startOf(this.adapter.parse(l.end),"day");return!this.adapter.isAfter(d,r,"day")&&!this.adapter.isBefore(u,t,"day")}),s=[];for(let l of i){let d=this.adapter.startOf(this.adapter.parse(l.start),"day"),u=this.adapter.startOf(this.adapter.parse(l.end),"day"),p=[];for(let b=0;b<e.length;b++){let w=e[b];!this.adapter.isBefore(w.date,d,"day")&&!this.adapter.isAfter(w.date,u,"day")&&p.push({colIndex:b,date:w.date,dateStr:w.dateStr})}if(p.length===0)continue;let m=[],h=p[0],g=h,f=1;for(let b=1;b<p.length;b++){let w=p[b],T=this.adapter.add(g.date,1,"day");if(this.adapter.isSame(w.date,T,"day"))f++,g=w;else{let C=this.adapter.isSame(h.date,d,"day"),S=this.adapter.isSame(g.date,u,"day");m.push({startIdx:h.colIndex,span:f,isEventStart:C,isEventEnd:S}),h=w,g=w,f=1}}let k=this.adapter.isSame(h.date,d,"day"),v=this.adapter.isSame(g.date,u,"day");m.push({startIdx:h.colIndex,span:f,isEventStart:k,isEventEnd:v});let y=m.length;m.forEach((b,w)=>{let T={event:l,startIdx:b.startIdx,span:b.span,slot:0,isStart:b.isEventStart,isEnd:b.isEventEnd,sortKey:b.startIdx*1e3-b.span,...y>1?{segmentIndex:w,totalSegments:y}:{}};s.push(T)})}s.sort((l,d)=>l.sortKey-d.sortKey);let o=[];for(let l of s){let d=0;for(;;){let u=o[d];if(u===void 0||u<l.startIdx){o[d]=l.startIdx+l.span-1,l.slot=d;break}d++}}return s.map(({sortKey:l,...d})=>d)}setCellHeight(a){this.cellHeight=a}getCellHeight(){return this.cellHeight}filterAndCalculateGeometry(a,e){let t=[],r=this.adapter.parse(e),i=this.adapter.startOf(r,"day");for(let s of a){if(this.isAllDayEvent(s))continue;let o=this.adapter.parse(s.start),l=this.adapter.parse(s.end),d=this.adapter.startOf(o,"day"),u=this.adapter.startOf(l,"day");if(!(!this.adapter.isBefore(i,d,"day")&&!this.adapter.isAfter(i,u,"day")))continue;let m=this.adapter.isSame(i,d,"day"),h=this.adapter.isSame(i,u,"day"),g=this.adapter.diff(u,d,"day")+1,f=this.adapter.diff(i,d,"day"),k,v;if(m&&h?(k=this.adapter.hour(o)*60+this.adapter.minute(o),v=this.adapter.hour(l)*60+this.adapter.minute(l)):m?(k=this.adapter.hour(o)*60+this.adapter.minute(o),v=1440):h?(k=0,v=this.adapter.hour(l)*60+this.adapter.minute(l)):(k=0,v=1440),v<=k)continue;let y=this.cellHeight/60,b=k*y,w=v-k,T=Math.max(20,w*y),x={event:s,top:b,height:T,startMin:k,endMin:v,colIndex:0,widthPercent:100,leftPercent:0,isStart:m,isEnd:h};g>1&&(x.segmentIndex=f,x.totalSegments=g),t.push(x)}return t}groupOverlappingEvents(a){if(a.length===0)return[];let e=[],t=[a[0]],r=a[0].endMin;for(let i=1;i<a.length;i++){let s=a[i];s.startMin<r?(t.push(s),r=Math.max(r,s.endMin)):(e.push(t),t=[s],r=s.endMin)}return e.push(t),e}calculateColumnPositions(a){let e=[];for(let s of a){let o=!1;for(let l=0;l<e.length;l++)if(e[l]<=s.startMin){e[l]=s.endMin,s.colIndex=l,o=!0;break}o||(e.push(s.endMin),s.colIndex=e.length-1)}let t=e.length;if(t===1){for(let s of a)s.widthPercent=100,s.leftPercent=0;return}let r=100/t,i=t<=3?1.6:t<=5?1.5:1.4;for(let s of a){let o=s.colIndex*r,l=1;for(let p=s.colIndex+1;p<t&&!a.some(h=>h.colIndex===p&&h.startMin<s.endMin&&h.endMin>s.startMin);p++)l++;let d=r*(l-1+i),u=100-o;s.leftPercent=o,s.widthPercent=Math.min(d,u),s.colIndex+l===t&&(s.widthPercent=u)}}},Cb=class{constructor(a,e,t,r,i,s,o,l){this.engine=a,this.adapter=e,this.theme=t,this.dateFormats=r,this.onStyleEvent=i,this.onRenderEvent=s,this.maxEventsPerRow=o,this.onRenderMoreEventsPopover=l,this.currentViewType="week",this.activePopover=null,this.popoverCloseHandler=null}render(a,e,t,r,i,s,o,l,d,u,p){this.currentViewType=t,ef(a);let m=this.engine.generateColumns(e,t,d),h=this.engine.generateTimeSlots(u),g=r.filter(T=>this.engine.isAllDayEvent(T)),f=r.filter(T=>!this.engine.isAllDayEvent(T)),k=this.renderHeader(m,e,d);if(a.appendChild(k),g.length>0){let T=this.renderAllDaySection(m,g,i,s,o);a.appendChild(T)}let v=be("div","tg-time-grid-container"),y=be("div","tg-time-body"),b=this.renderTimeAxis(h,p);y.appendChild(b);for(let T of m){let x=this.renderDayColumn(T,f,i,s,o,h);y.appendChild(x)}v.appendChild(y),a.appendChild(v);let w=()=>{if(l!=null)v.scrollTop=l;else{let x=h.findIndex(C=>C.hour>=8);x>=0&&(v.scrollTop=x*this.theme.cellHeight)}};a.isConnected?w():requestAnimationFrame(w)}renderHeader(a,e,t){let r=be("div","tg-time-header"),i=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],s=this.adapter.create();for(let o of a){let l=be("div","tg-time-header-cell"),d=this.adapter.day(o.date),u=d===0||d===6,p=this.adapter.isSame(o.date,s,"day"),m={isWeekend:u,dayOfWeek:d,isToday:p,isThisMonth:this.adapter.isSame(o.date,e,"month")};if(t){let v=t(o.date,m);if(typeof v=="object"){let y=v;y.className&&l.classList.add(y.className),y.style&&Object.assign(l.style,y.style),y.disabled&&l.classList.add("tg-disabled")}}p&&!t&&l.classList.add("tg-today");let h=i[d],g=this.adapter.date(o.date),f=be("div");f.textContent=h;let k=be("div","tg-header-date");k.textContent=String(g),l.appendChild(f),l.appendChild(k),r.appendChild(l)}return r}renderAllDaySection(a,e,t,r,i){let s=be("div","tg-allday-section"),o=be("div","tg-allday-spacer");s.appendChild(o);let l=be("div","tg-allday-events-container");l.style.setProperty("--tg-allday-columns",String(a.length));let d=this.engine.calculateAllDayLayout(e,a),u=this.maxEventsPerRow!==void 0?d.filter(k=>k.slot<this.maxEventsPerRow):d,p=new Map;if(this.maxEventsPerRow!==void 0){for(let k of d)if(k.slot>=this.maxEventsPerRow)for(let v=k.startIdx;v<k.startIdx+k.span;v++){p.has(v)||p.set(v,[]);let y=p.get(v);y.find(b=>b.id===k.event.id)||y.push(k.event)}}let m=u.reduce((k,v)=>Math.max(k,v.slot),-1),f=m>=0?8+(m+1)*26:0;p.size>0&&(f+=22),l.style.height=`${Math.max(f,28)}px`;for(let k of u){let v=this.renderAllDayEventBar(k,a.length,t,r,i);l.appendChild(v)}for(let[k,v]of p){let y=this.renderAllDayMoreIndicator(k,v,a[k],a.length,m,i);l.appendChild(y)}return s.appendChild(l),s}renderAllDayEventBar(a,e,t,r,i){let s=be("div","tg-event-base tg-allday-event");s.dataset.eid=a.event.id,a.segmentIndex!==void 0&&a.totalSegments!==void 0&&(s.dataset.segmentIndex=String(a.segmentIndex),s.dataset.totalSegments=String(a.totalSegments),s.classList.add("tg-event-segmented"),a.segmentIndex===0&&s.classList.add("tg-event-segment-first"),a.segmentIndex===a.totalSegments-1&&s.classList.add("tg-event-segment-last"),a.segmentIndex>0&&a.segmentIndex<a.totalSegments-1&&s.classList.add("tg-event-segment-middle"));let o=a.event.color||"#3b82f6",l;if(this.onStyleEvent){let h=this.onStyleEvent(a.event);h.className&&s.classList.add(h.className),h.color&&(o=h.color),h.opacity!==void 0&&(l=h.opacity)}let d=100/e,u=a.startIdx*d,p=4+a.slot*26;s.style.left=`calc(${u}% + 2px)`,s.style.top=`${p}px`,s.style.width=`calc(${a.span*d}% - 4px)`,s.style.backgroundColor=o,l!==void 0&&(s.style.opacity=l.toString());let m=()=>{s.textContent=a.event.title};if(this.onRenderEvent){let h={event:a.event,el:s,viewType:this.currentViewType,isAllDay:!0,isStart:a.isStart,isEnd:a.isEnd,defaultRender:m};a.segmentIndex!==void 0&&(h.segmentIndex=a.segmentIndex),a.totalSegments!==void 0&&(h.totalSegments=a.totalSegments),this.onRenderEvent(h)}else m();if(a.isStart){let h=be("div","tg-resize-handle tg-resize-h tg-left");s.appendChild(h)}if(a.isEnd){let h=be("div","tg-resize-handle tg-resize-h tg-right");s.appendChild(h)}return i&&s.addEventListener("click",h=>{h.stopPropagation(),i(a.event)}),t.initMonthDrag(s,a.event,r),s}renderAllDayMoreIndicator(a,e,t,r,i,s){let o=be("div","tg-more-indicator tg-allday-more");o.textContent=`+${e.length} more`;let l=100/r,d=a*l,u=4+(i+1)*26+2;o.style.left=`calc(${d}% + 2px)`,o.style.top=`${u}px`,o.style.width=`calc(${l}% - 4px)`;let p=new Date(this.adapter.year(t.date),this.adapter.month(t.date),this.adapter.date(t.date));return o.addEventListener("click",m=>{m.stopPropagation();let h=()=>{this.renderDefaultPopover(o,e,p,s)};this.onRenderMoreEventsPopover?this.onRenderMoreEventsPopover(e,p,o,h):h()}),o}renderDefaultPopover(a,e,t,r){this.closePopover();let i=be("div","tg-more-popover");this.activePopover=i;let s=be("div","tg-more-popover-header");s.textContent=t.toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric"}),i.appendChild(s);let o=be("div","tg-more-popover-list");for(let l of e){let d=be("div","tg-more-popover-item"),u=l.color||"#3b82f6",p;if(this.onStyleEvent){let g=this.onStyleEvent(l);g.className&&d.classList.add(g.className),g.color&&(u=g.color),g.opacity!==void 0&&(p=g.opacity)}let m=be("span","tg-more-popover-dot");m.style.backgroundColor=u,d.appendChild(m);let h=be("span","tg-more-popover-title");h.textContent=l.title,d.appendChild(h),p!==void 0&&(d.style.opacity=p.toString()),r&&(d.addEventListener("click",g=>{g.stopPropagation(),this.closePopover(),r(l)}),d.style.cursor="pointer"),o.appendChild(d)}i.appendChild(o),document.body.appendChild(i),this.positionPopover(i,a),this.popoverCloseHandler=l=>{!i.contains(l.target)&&l.target!==a&&this.closePopover()},setTimeout(()=>{document.addEventListener("click",this.popoverCloseHandler)},0)}positionPopover(a,e){let t=e.getBoundingClientRect(),r=a.getBoundingClientRect(),i=window.innerHeight,s=window.innerWidth,o=t.bottom+4,l=t.left;o+r.height>i-8&&(o=t.top-r.height-4),l+r.width>s-8&&(l=s-r.width-8),l<8&&(l=8),a.style.top=`${o}px`,a.style.left=`${l}px`}closePopover(){this.activePopover&&(this.activePopover.remove(),this.activePopover=null),this.popoverCloseHandler&&(document.removeEventListener("click",this.popoverCloseHandler),this.popoverCloseHandler=null)}renderTimeAxis(a,e){var t,r;let i=be("div","tg-time-axis");for(let s=0;s<a.length;s++){let o=a[s],l=be("div","tg-time-axis-label");(t=o.config)!=null&&t.label?l.textContent=o.config.label:e?l.textContent=e(o.hour,0):l.textContent=`${o.hour}:00`,(r=o.config)!=null&&r.className&&l.classList.add(o.config.className);let d=s*this.theme.cellHeight;l.style.transform=`translateY(${d}px)`,i.appendChild(l)}return i}renderDayColumn(a,e,t,r,i,s){let o=be("div","tg-day-column");if(o.dataset.date=a.dateStr,s&&s.length>0){let d=s.length*this.theme.cellHeight;o.style.setProperty("--tg-column-height",`${d}px`),o.style.height="var(--tg-column-height)"}let l=this.engine.calculateLayout(e,a.dateStr);for(let d of l){let u=this.renderEventBlock(d,t,r,i);o.appendChild(u)}return o}renderEventBlock(a,e,t,r){let i=be("div","tg-event-base tg-event-block");i.dataset.eid=a.event.id,a.segmentIndex!==void 0&&a.totalSegments!==void 0&&(i.dataset.segmentIndex=String(a.segmentIndex),i.dataset.totalSegments=String(a.totalSegments),i.classList.add("tg-event-segmented"),a.segmentIndex===0&&i.classList.add("tg-event-segment-first"),a.segmentIndex===a.totalSegments-1&&i.classList.add("tg-event-segment-last"),a.segmentIndex>0&&a.segmentIndex<a.totalSegments-1&&i.classList.add("tg-event-segment-middle")),a.isStart||i.classList.add("tg-event-continuation"),a.isEnd||i.classList.add("tg-event-continued");let s=a.event.color||"#3b82f6",o;if(this.onStyleEvent){let k=this.onStyleEvent(a.event);k.className&&i.classList.add(k.className),k.color&&(s=k.color),k.opacity!==void 0&&(o=k.opacity)}i.style.transform=`translate(${a.leftPercent}%, ${a.top}px)`,i.style.width=`calc(${a.widthPercent}% - 2px)`,i.style.height=`${a.height}px`,i.style.backgroundColor=s;let l=a.endMin-a.startMin,d=Math.max(0,Math.min(50,Math.floor((120-l)/2)));i.style.zIndex=`${10+d}`,o!==void 0&&(i.style.opacity=o.toString());let u=this.engine.isAllDayEvent(a.event),p=this.adapter.parse(a.event.start),m=this.adapter.parse(a.event.end),h=this.adapter.format(p,this.dateFormats.time),g=this.adapter.format(m,this.dateFormats.time),f=()=>{if(!u){let v=be("div","tg-time-text");a.isStart&&a.isEnd?v.textContent=`${h} - ${g}`:a.isStart?v.textContent=`${h} \u2192`:a.isEnd?v.textContent=`\u2192 ${g}`:v.textContent="\u2192 \u2192",i.appendChild(v)}let k=be("div","tg-event-title");k.textContent=a.event.title,i.appendChild(k)};if(this.onRenderEvent){let k={event:a.event,el:i,viewType:this.currentViewType,isAllDay:u,isStart:a.isStart,isEnd:a.isEnd,defaultRender:f};u||(k.startTime=h,k.endTime=g),a.segmentIndex!==void 0&&(k.segmentIndex=a.segmentIndex),a.totalSegments!==void 0&&(k.totalSegments=a.totalSegments),this.onRenderEvent(k)}else f();if(a.isStart){let k=be("div","tg-resize-handle tg-resize-v tg-top");i.appendChild(k)}if(a.isEnd){let k=be("div","tg-resize-handle tg-resize-v tg-bottom");i.appendChild(k)}return r&&i.addEventListener("click",k=>{k.stopPropagation(),r(a.event)}),e.initTimeDrag(i,a.event,t),i}},PN=class extends Ln{constructor(){super(...arguments),this.timeViewType="week"}init(a){super.init(a),this.engine=new xb(this.context.adapter,this.context.config.theme.cellHeight,this.context.config.view.showWeekends,this.context.config.view.firstDayOfWeek,this.context.config.dateFormats),this.renderer=new Cb(this.engine,this.context.adapter,this.context.config.theme,this.context.config.dateFormats,this.context.config.onStyleEvent,this.context.config.onRenderEvent,this.context.config.view.maxEventsPerRow,this.context.config.onRenderMoreEventsPopover)}render(a,e,t){this.renderer.render(a,this.context.currentDate,this.timeViewType,e,this.context.dragController,this.context.requestRender,this.context.config.onEventClick,t==null?void 0:t.preservedScrollTop,this.context.config.view.dayFilter,this.context.config.view.timeFilter,this.context.config.view.timeFormatter)}getEngine(){return this.engine}getRenderer(){return this.renderer}};PN.meta={type:"time",label:"Time",shortLabel:"T",order:20};var aE=PN,IN=class extends aE{constructor(){super(...arguments),this.timeViewType="week"}getNavigationUnit(){return"week"}};IN.meta={type:"week",label:"Week",shortLabel:"W",order:20};var AN=IN,FN=class extends aE{constructor(){super(...arguments),this.timeViewType="day"}getNavigationUnit(){return"day"}getHeaderTitle(){return this.context.adapter.format(this.context.currentDate,this.context.config.dateFormats.dayHeader)}};FN.meta={type:"day",label:"Day",shortLabel:"D",order:30};var RN=FN,ON=class{constructor(a,e={}){if(this.activeView=null,typeof a=="string"){let t=document.querySelector(a);if(!t)throw new Error(`Calendar container not found: ${a}`);this.container=t}else this.container=a;if(this.config=this.mergeConfig(e),this.adapter=e.dateAdapter||new kb,this.currentDate=this.adapter.create(),this.currentViewType=this.config.view.type,this.eventManager=new yb(e.events),this.dragController=new vb(this.adapter,this.config.draggable,this.handleEventDrop.bind(this),this.handleEventResize.bind(this),this.config.theme.cellHeight,this.config.dateFormats),this.interactionController=new bb(this.adapter,this.config,this.dragController,()=>this.currentViewType,this.eventManager),this.viewRegistry=e.viewRegistry||new Rc,this.viewRegistry.size===0)throw new Error(`Calendar: No views registered. Use createCalendar() for batteries-included setup, or register views manually:
import { Calendar, ViewRegistry, MonthView, WeekView, DayView } from '@taskgenius/calendar';
const registry = new ViewRegistry();
registry.register(MonthView);
new Calendar('#app', { viewRegistry: registry });`);if(!this.viewRegistry.has(this.currentViewType)){let t=this.viewRegistry.getTypes().join(", ")||"none";throw new Error(`Calendar: View type '${this.currentViewType}' is not registered. Available views: ${t}. Either change view.type in config or register the required view.`)}this.viewContext=this.createViewContext(),this.render()}registerView(a,e){this.viewRegistry.register(a,e),this.render()}unregisterView(a){let e=this.viewRegistry.unregister(a);if(e){if(this.currentViewType===a){let t=this.viewRegistry.getTypes();t.length>0&&this.setView(t[0])}this.render()}return e}getRegisteredViews(){return this.viewRegistry.getAll()}hasView(a){return this.viewRegistry.has(a)}getViewRegistry(){return this.viewRegistry}setView(a){var e,t;if(!this.viewRegistry.has(a)){console.warn(`View type '${a}' is not registered. Ignoring.`);return}this.activeView&&this.activeView.onUnmount(),this.currentViewType=a,(t=(e=this.config).onViewChange)==null||t.call(e,a),this.render()}getView(){return this.currentViewType}getActiveView(){return this.activeView}addEvent(a){this.eventManager.addEvent(a),this.render()}removeEvent(a){this.eventManager.removeEvent(a),this.render()}updateEvent(a,e){this.eventManager.updateEvent(a,e),this.render()}getEvents(){return this.eventManager.getEvents()}setEvents(a){this.eventManager.setEvents(a),this.render()}next(){var a,e;let t=this.getNavigationUnit();this.currentDate=this.adapter.add(this.currentDate,1,t),this.viewContext.currentDate=this.currentDate,(e=(a=this.config).onDateChange)==null||e.call(a,this.toDate(this.currentDate)),this.render()}prev(){var a,e;let t=this.getNavigationUnit();this.currentDate=this.adapter.add(this.currentDate,-1,t),this.viewContext.currentDate=this.currentDate,(e=(a=this.config).onDateChange)==null||e.call(a,this.toDate(this.currentDate)),this.render()}today(){var a,e;this.currentDate=this.adapter.create(),this.viewContext.currentDate=this.currentDate,(e=(a=this.config).onDateChange)==null||e.call(a,this.toDate(this.currentDate)),this.render()}goToDate(a){var e,t;this.currentDate=this.adapter.create(a),this.viewContext.currentDate=this.currentDate,(t=(e=this.config).onDateChange)==null||t.call(e,this.toDate(this.currentDate)),this.render()}getCurrentDate(){return this.adapter.format(this.currentDate,Zg.date)}destroy(){this.activeView&&this.activeView.onUnmount(),this.dragController.destroy(),this.interactionController.destroy(),ef(this.container)}refresh(){this.render()}setDraggable(a){this.config.draggable.enabled=a}isDraggable(){return this.config.draggable.enabled}createViewContext(){return{currentDate:this.currentDate,adapter:this.adapter,eventManager:this.eventManager,dragController:this.dragController,config:this.config,requestRender:()=>this.render(),goToDate:a=>{if(typeof a=="string"||a instanceof Date)this.goToDate(a);else{let e=this.toDate(a);this.goToDate(e)}},getCurrentView:()=>this.currentViewType}}render(){var a;let e=this.container.querySelector(".tg-calendar"),t=e==null?void 0:e.querySelector(".tg-view-container"),r=((a=this.activeView)==null?void 0:a.getMeta().type)===this.currentViewType,i=null,s=this.container.querySelector(".tg-time-grid-container");if(s&&(i=s.scrollTop),e&&t&&r&&this.activeView){this.viewContext.currentDate=this.currentDate;let p=e.querySelector(".tg-title");p&&(p.textContent=this.getHeaderTitle()),e.querySelectorAll(".tg-view-btn").forEach(h=>{let g=h;g.dataset.viewType===this.currentViewType?g.classList.add("tg-active"):g.classList.remove("tg-active")}),ef(t),this.activeView.render(t,this.eventManager.getEvents(),{preservedScrollTop:i});return}ef(this.container);let o=be("div","tg-calendar");this.applyTheme(o);let l=this.getOrCreateView();l&&(this.viewContext.currentDate=this.currentDate);let d=this.renderHeader();o.appendChild(d);let u=be("div","tg-view-container");l&&l.render(u,this.eventManager.getEvents(),{preservedScrollTop:i}),o.appendChild(u),this.container.appendChild(o),this.interactionController.init(o)}getOrCreateView(){if(this.activeView&&this.activeView.getMeta().type===this.currentViewType)return this.activeView;this.activeView&&this.activeView.onUnmount();let a=this.viewRegistry.create(this.currentViewType);return a?(a.init(this.viewContext),a.onMount(),this.activeView=a,a):(console.error(`Failed to create view: ${this.currentViewType}`),null)}renderHeader(){let a=be("div","tg-header"),e=be("h1","tg-title");e.textContent=this.getHeaderTitle(),a.appendChild(e);let t=be("div","tg-view-switch"),r=this.viewRegistry.getAll();for(let d of r){let u=be("button","tg-view-btn");u.textContent=d.shortLabel||d.label.charAt(0),u.title=d.label,u.dataset.viewType=d.type,this.currentViewType===d.type&&u.classList.add("tg-active"),u.onclick=()=>this.setView(d.type),t.appendChild(u)}a.appendChild(t);let i=be("div","tg-nav"),s=be("button","tg-nav-btn");s.textContent="Previous",s.onclick=()=>this.prev(),i.appendChild(s);let o=be("button","tg-nav-btn tg-today");o.textContent="Today",o.onclick=()=>this.today(),i.appendChild(o);let l=be("button","tg-nav-btn");return l.textContent="Next",l.onclick=()=>this.next(),i.appendChild(l),a.appendChild(i),a}getHeaderTitle(){if(this.activeView)return this.activeView.getHeaderTitle();let a=this.currentViewType==="day"?this.config.headerFormat.day:this.config.headerFormat.month;return this.adapter.format(this.currentDate,a)}getNavigationUnit(){if(this.activeView)return this.activeView.getNavigationUnit();switch(this.currentViewType){case"month":return"month";case"week":return"week";case"day":return"day";default:return"month"}}toDate(a){return new Date(this.adapter.year(a),this.adapter.month(a),this.adapter.date(a),this.adapter.hour(a),this.adapter.minute(a))}handleEventDrop(a,e,t){var r,i;a.id,a.title,a.start,a.end,e.toISOString(),t.toISOString(),(i=(r=this.config).onEventDrop)==null||i.call(r,a,e,t);let s=this.adapter.format(this.adapter.create(e),Zg.dateTime),o=this.adapter.format(this.adapter.create(t),Zg.dateTime);this.eventManager.updateEvent(a.id,{start:s,end:o})}handleEventResize(a,e,t){var r,i;(i=(r=this.config).onEventResize)==null||i.call(r,a,e,t);let s=this.adapter.format(this.adapter.create(e),Zg.dateTime),o=this.adapter.format(this.adapter.create(t),Zg.dateTime);this.eventManager.updateEvent(a.id,{start:s,end:o})}mergeConfig(a){var _,V,K,te,ce,pe,Ne,He,Be;var e,t,r,i,s,o,l,d,u,p,m,h,g,f,k,v,y,b,w,T,x,C,S,D,E,R,I;let H={date:((e=a.dateFormats)==null?void 0:e.date)||Jg.date,dateTime:((t=a.dateFormats)==null?void 0:t.dateTime)||Jg.dateTime,time:((r=a.dateFormats)==null?void 0:r.time)||Jg.time,monthHeader:((i=a.dateFormats)==null?void 0:i.monthHeader)||((s=a.headerFormat)==null?void 0:s.month)||Jg.monthHeader,dayHeader:((o=a.dateFormats)==null?void 0:o.dayHeader)||((l=a.headerFormat)==null?void 0:l.day)||Jg.dayHeader},U=(d=a.view)==null?void 0:d.dayFilter;!U&&((u=a.view)==null?void 0:u.showWeekends)===!1&&(U=(We,lt)=>!lt.isWeekend);let q={type:((p=a.view)==null?void 0:p.type)||"week",showDateHeader:(_=(m=a.view)==null?void 0:m.showDateHeader)!=null?_:!0,showWeekNumbers:(V=(h=a.view)==null?void 0:h.showWeekNumbers)!=null?V:!1,firstDayOfWeek:(K=(g=a.view)==null?void 0:g.firstDayOfWeek)!=null?K:0,showWeekends:(te=(f=a.view)==null?void 0:f.showWeekends)!=null?te:!0};((k=a.view)==null?void 0:k.maxEventsPerRow)!==void 0&&(q.maxEventsPerRow=a.view.maxEventsPerRow),U&&(q.dayFilter=U),(v=a.view)!=null&&v.timeFilter&&(q.timeFilter=a.view.timeFilter),(y=a.view)!=null&&y.timeFormatter&&(q.timeFormatter=a.view.timeFormatter);let L={view:q,draggable:{enabled:(ce=(b=a.draggable)==null?void 0:b.enabled)!=null?ce:!0,snapMinutes:(pe=(w=a.draggable)==null?void 0:w.snapMinutes)!=null?pe:15,ghostOpacity:(Ne=(T=a.draggable)==null?void 0:T.ghostOpacity)!=null?Ne:.5,dateOnly:(He=(x=a.draggable)==null?void 0:x.dateOnly)!=null?He:!1},theme:{primaryColor:((C=a.theme)==null?void 0:C.primaryColor)||"#3b82f6",cellHeight:((S=a.theme)==null?void 0:S.cellHeight)||60,fontSize:{header:((E=(D=a.theme)==null?void 0:D.fontSize)==null?void 0:E.header)||"14px",event:((I=(R=a.theme)==null?void 0:R.fontSize)==null?void 0:I.event)||"12px"}},showEventCounts:(Be=a.showEventCounts)!=null?Be:!1,dateFormats:H,headerFormat:{month:H.monthHeader,day:H.dayHeader}};return a.onEventClick&&(L.onEventClick=a.onEventClick),a.onEventDoubleClick&&(L.onEventDoubleClick=a.onEventDoubleClick),a.onEventContextMenu&&(L.onEventContextMenu=a.onEventContextMenu),a.onEventDrop&&(L.onEventDrop=a.onEventDrop),a.onEventResize&&(L.onEventResize=a.onEventResize),a.onViewChange&&(L.onViewChange=a.onViewChange),a.onDateChange&&(L.onDateChange=a.onDateChange),a.onDateClick&&(L.onDateClick=a.onDateClick),a.onDateDoubleClick&&(L.onDateDoubleClick=a.onDateDoubleClick),a.onDateContextMenu&&(L.onDateContextMenu=a.onDateContextMenu),a.onTimeSlotClick&&(L.onTimeSlotClick=a.onTimeSlotClick),a.onTimeSlotDoubleClick&&(L.onTimeSlotDoubleClick=a.onTimeSlotDoubleClick),a.onTimeSlotContextMenu&&(L.onTimeSlotContextMenu=a.onTimeSlotContextMenu),a.onDateRangeSelect&&(L.onDateRangeSelect=a.onDateRangeSelect),a.onTimeRangeSelect&&(L.onTimeRangeSelect=a.onTimeRangeSelect),a.onRenderDateCell&&(L.onRenderDateCell=a.onRenderDateCell),a.onStyleEvent&&(L.onStyleEvent=a.onStyleEvent),a.onRenderMoreEventsPopover&&(L.onRenderMoreEventsPopover=a.onRenderMoreEventsPopover),a.onRenderEvent&&(L.onRenderEvent=a.onRenderEvent),L}applyTheme(a){DN(a,this.config.theme)}};var vu=class{constructor(a){this.fns=a}create(a){return a?a instanceof Date?new Date(a):this.fns.parseISO(a):new Date}parse(a,e){return e?this.fns.parse(a,e,new Date):this.fns.parseISO(a)}format(a,e){let t=e.replace(/YYYY/g,"yyyy").replace(/DD/g,"dd").replace(/\bD\b/g,"d");return this.fns.format(a,t)}year(a){return this.fns.getYear(a)}month(a){return this.fns.getMonth(a)}date(a){return this.fns.getDate(a)}day(a){return this.fns.getDay(a)}hour(a){return this.fns.getHours(a)}minute(a){return this.fns.getMinutes(a)}setHour(a,e){return this.fns.setHours(a,e)}setMinute(a,e){return this.fns.setMinutes(a,e)}add(a,e,t){switch(t){case"year":return this.fns.addYears(a,e);case"month":return this.fns.addMonths(a,e);case"week":return this.fns.addWeeks(a,e);case"day":return this.fns.addDays(a,e);case"hour":return this.fns.addHours(a,e);case"minute":return this.fns.addMinutes(a,e);default:return a}}diff(a,e,t){switch(t){case"year":return this.fns.differenceInYears(a,e);case"month":return this.fns.differenceInMonths(a,e);case"week":return this.fns.differenceInWeeks(a,e);case"day":return this.fns.differenceInDays(a,e);case"hour":return this.fns.differenceInHours(a,e);case"minute":return this.fns.differenceInMinutes(a,e);default:return 0}}startOf(a,e){switch(e){case"year":return this.fns.startOfYear(a);case"month":return this.fns.startOfMonth(a);case"week":return this.fns.startOfWeek(a);case"day":return this.fns.startOfDay(a);case"hour":return this.fns.startOfHour(a);case"minute":return this.fns.startOfMinute(a);default:return a}}endOf(a,e){switch(e){case"year":return this.fns.endOfYear(a);case"month":return this.fns.endOfMonth(a);case"week":return this.fns.endOfWeek(a);case"day":return this.fns.endOfDay(a);case"hour":return this.fns.endOfHour(a);case"minute":return this.fns.endOfMinute(a);default:return a}}isBefore(a,e,t){return t?this.fns.isBefore(this.startOf(a,t),this.startOf(e,t)):this.fns.isBefore(a,e)}isAfter(a,e,t){return t?this.fns.isAfter(this.startOf(a,t),this.startOf(e,t)):this.fns.isAfter(a,e)}isSame(a,e,t){return t?this.fns.isEqual(this.startOf(a,t),this.startOf(e,t)):this.fns.isEqual(a,e)}};function rE(){return(n,a)=>!a.isWeekend}function iE(n){return(a,e)=>!n.includes(e.dayOfWeek)}function Sb(n=8,a=18){return e=>e>=n&&e<a}var tf=class extends ON{constructor(a,e={}){var s,o;var t;let r=(s=e.viewRegistry)!=null?s:new Rc,i=(o=(t=e.view)==null?void 0:t.type)!=null?o:"week";(r.size===0||!r.has(i))&&(r.has("month")||r.register(MN),r.has("week")||r.register(AN),r.has("day")||r.register(RN)),super(a,{...e,viewRegistry:r})}};function JG(n){let a=ZG(n);if(!a.start)return null;let e=so(a.start),t=!a.end||so(a.end),r=e&&t,i=NN(a.start,r),s=a.end?NN(a.end,r):i;return{id:n.id,title:n.content,start:i,end:s,allDay:r,color:e9(n),metadata:{originalTask:n,priority:n.metadata.priority,tags:n.metadata.tags,project:n.metadata.project}}}function LN(n){return n.map(a=>JG(a)).filter(a=>a!==null)}function ZG(n){let a=n.metadata.enhancedDates,e=a!=null&&a.startDateTime?a.startDateTime.getTime():n.metadata.startDate,t=a!=null&&a.dueDateTime?a.dueDateTime.getTime():n.metadata.dueDate,r=a!=null&&a.scheduledDateTime?a.scheduledDateTime.getTime():n.metadata.scheduledDate,i=1800*1e3;if(a!=null&&a.startDateTime&&(a!=null&&a.endDateTime))return{start:a.startDateTime.getTime(),end:a.endDateTime.getTime()};if(a!=null&&a.startDateTime&&!(a!=null&&a.endDateTime)){let o=a.startDateTime.getTime();return t&&t>o?{start:o,end:t}:{start:o,end:o+i}}if(a!=null&&a.dueDateTime&&!(a!=null&&a.startDateTime)){let o=a.dueDateTime.getTime();return e&&e<o?{start:e,end:o}:{start:o-i,end:o}}if(a!=null&&a.scheduledDateTime&&!(a!=null&&a.startDateTime)&&!(a!=null&&a.dueDateTime)){let o=a.scheduledDateTime.getTime();return{start:o,end:o+i}}if(e&&!t&&!r&&!so(e))return{start:e,end:e+i};if(t&&!e&&!r&&!so(t))return{start:t-i,end:t};if(r&&!e&&!t&&!so(r))return{start:r,end:r+i};if(e&&t&&e!==t&&e<t)return{start:e,end:t};if(e&&r&&e!==r&&e<r)return{start:e,end:r};if(r&&t&&r!==t&&r<t)return{start:r,end:t};let s=t||r||e;return s?{start:s}:{start:0}}function e9(n){var e;if(n.completed)return"var(--text-muted)";if(n.metadata.cancelledDate)return"var(--text-faint)";switch((e=n.metadata.priority)!=null?e:3){case 1:return"var(--color-red)";case 2:return"var(--color-orange)";case 3:return"var(--color-yellow)";case 4:return"var(--color-green)";case 5:return"var(--color-blue)";default:return"var(--interactive-accent)"}}function NN(n,a){let e=new Date(n);return a?to(e,"yyyy-MM-dd"):to(e,"yyyy-MM-dd HH:mm")}function yu(n){var a,e;return(e=(a=n.metadata)==null?void 0:a.originalTask)!=null?e:null}function jN(n){let{startDate:a,dueDate:e,scheduledDate:t}=n.metadata;return!!(a||e||t)}z();var vs=require("obsidian");var uo=require("obsidian");function HN(n){if(n.completed)return"grey"}var nE=class extends uo.Component{constructor(e){super();this.params=e;this.debounceHover=(0,uo.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}`,"tg-event-block"]}),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,this.eventEl.dataset.eid=this.event.id}onload(){super.onload(),this.applyStyles(),this.setTooltip(),this.renderByViewType(),this.registerEventListeners()}applyStyles(){let e=HN(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",`${Cr(this.event.title)||"(No title)"}
Status: ${this.event.status}${this.event.metadata.dueDate?`
Due: ${(0,uo.moment)(this.event.metadata.dueDate).format("YYYY-MM-DD")}`:""}${this.event.metadata.startDate?`
Start: ${(0,uo.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=gt(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 la(this.app,t,this.event.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.event.metadata.source==="file-source"?this.event.originalMarkdown: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,uo.moment)(this.event.start).format("h:mma");this.eventEl.createDiv({cls:"calendar-event-time",text:r})}let e=gt(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 la(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,uo.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=gt(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 la(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 BN(n){let a=new nE(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 af=class extends Ln{constructor(){super(...arguments);this.plugin=null;this.app=null;this.viewOptions={};this.daysToShow=7;this.showEmptyDays=!1;this.dayHeaderFormat="dddd, MMMM D";this.childComponents=[]}setPluginContext(e,t){this.plugin=e,this.app=t}setOptions(e){this.viewOptions=e,e.daysToShow!==void 0&&(this.daysToShow=e.daysToShow),e.showEmptyDays!==void 0&&(this.showEmptyDays=e.showEmptyDays),e.dayHeaderFormat!==void 0&&(this.dayHeaderFormat=e.dayHeaderFormat)}render(e,t,r){this.cleanupChildren(),e.empty(),e.addClass("view-agenda","tg-agenda-view");let i=this.convertEvents(t),s=this.context.adapter.create(this.context.currentDate),o=(0,vs.moment)(s).startOf("day"),l=o.clone().add(this.daysToShow-1,"days").endOf("day"),d=this.filterAndSortEvents(i,o,l),u=this.groupEventsByDay(d);if(Object.keys(u).length===0&&!this.showEmptyDays){this.renderEmptyState(e,o,l);return}this.renderDays(e,u,o,l)}convertEvents(e){return e.map(t=>{var r;return{...t,start:new Date(t.start),end:t.end?new Date(t.end):void 0,allDay:(r=t.allDay)!=null?r:!0,metadata:t.metadata}})}filterAndSortEvents(e,t,r){return e.filter(i=>(0,vs.moment)(i.start).isBetween(t,r,void 0,"[]")).sort((i,s)=>(0,vs.moment)(i.start).valueOf()-(0,vs.moment)(s.start).valueOf())}groupEventsByDay(e){let t={};return e.forEach(r=>{let i=(0,vs.moment)(r.start).format("YYYY-MM-DD");t[i]||(t[i]=[]),t[i].push(r)}),t}renderEmptyState(e,t,r){e.createDiv("agenda-empty-state").setText(`No upcoming events from ${t.format("MMM D")} to ${r.format("MMM D, YYYY")}.`)}renderDays(e,t,r,i){let s=r.clone();for(;s.isSameOrBefore(i,"day");){let o=s.format("YYYY-MM-DD"),l=t[o]||[];(l.length>0||this.showEmptyDays)&&this.renderDaySection(e,s.clone(),l),s.add(1,"day")}}renderDaySection(e,t,r){let i=e.createDiv("agenda-day-section"),o=i.createDiv("agenda-day-date-column").createDiv("agenda-day-header");o.textContent=t.format(this.dayHeaderFormat),t.isSame((0,vs.moment)(),"day")&&o.addClass("is-today");let l=i.createDiv("agenda-day-events-column");if(r.length===0)l.createDiv("agenda-empty-day").setText("No events");else{let d=l.createDiv("agenda-events-list");this.renderEvents(d,r)}}renderEvents(e,t){[...t].sort((i,s)=>{let o=i.start?(0,vs.moment)(i.start).valueOf():0,l=s.start?(0,vs.moment)(s.start).valueOf():0;return o-l}).forEach(i=>{let s=e.createDiv("agenda-event-item");if(this.app){let{eventEl:o,component:l}=BN({event:i,viewType:"agenda",app:this.app,onEventClick:this.viewOptions.onEventClick,onEventHover:this.viewOptions.onEventHover,onEventContextMenu:this.viewOptions.onEventContextMenu,onEventComplete:this.viewOptions.onEventComplete});l.load(),this.childComponents.push(l),s.appendChild(o)}else s.textContent=i.title,i.color&&(s.style.borderLeftColor=i.color)})}cleanupChildren(){this.childComponents.forEach(e=>e.unload()),this.childComponents=[]}getNavigationUnit(){return"week"}getHeaderTitle(){let e=this.context.adapter.create(this.context.currentDate),t=(0,vs.moment)(e),r=t.clone().add(this.daysToShow-1,"days");return t.isSame(r,"month")?`${t.format("MMM D")} - ${r.format("D, YYYY")}`:`${t.format("MMM D")} - ${r.format("MMM D, YYYY")}`}onUnmount(){this.cleanupChildren(),super.onUnmount()}};af.meta={type:"agenda",label:"Agenda",shortLabel:"A",order:40};var _r=require("obsidian");var rf=class extends Ln{constructor(){super(...arguments);this.plugin=null;this.app=null;this.viewOptions={};this.cleanupFns=[]}setPluginContext(e,t){this.plugin=e,this.app=t}setOptions(e){this.viewOptions=e}setOverrideConfig(e){this.overrideConfig=e}render(e,t,r){this.cleanupEventListeners();let i=this.context.adapter.create(this.context.currentDate),s=(0,_r.moment)(i).year();e.empty(),e.addClass("view-year","tg-year-view");let o=this.convertEvents(t),l=e.createDiv("calendar-year-grid"),d=(0,_r.moment)({year:s,month:0,day:1}),u=(0,_r.moment)({year:s,month:11,day:31}),p=this.filterEventsForYear(o,d,u),{firstDayOfWeek:m,hideWeekends:h}=this.getEffectiveSettings();h?e.addClass("hide-weekends"):e.removeClass("hide-weekends");for(let g=0;g<12;g++)this.renderMiniMonth(l,s,g,p,m,h)}convertEvents(e){return e.map(t=>{var r;return{...t,start:new Date(t.start),end:t.end?new Date(t.end):void 0,allDay:(r=t.allDay)!=null?r:!0,metadata:t.metadata}})}filterEventsForYear(e,t,r){return e.filter(i=>{let s=(0,_r.moment)(i.start),o=i.end?(0,_r.moment)(i.end):s;return s.isSameOrBefore(r.endOf("day"))&&o.isSameOrAfter(t.startOf("day"))})}getEffectiveSettings(){var r,i,s,o,l,d,u,p,m,h;let e=0,t=!1;if(this.plugin){let f=xt(this.plugin,"calendar").specificConfig;e=(o=(s=(i=(r=this.overrideConfig)==null?void 0:r.firstDayOfWeek)!=null?i:this.viewOptions.firstDayOfWeek)!=null?s:f.firstDayOfWeek)!=null?o:0,t=(p=(u=(d=(l=this.overrideConfig)==null?void 0:l.hideWeekends)!=null?d:this.viewOptions.hideWeekends)!=null?u:f==null?void 0:f.hideWeekends)!=null?p:!1}else e=(m=this.viewOptions.firstDayOfWeek)!=null?m:0,t=(h=this.viewOptions.hideWeekends)!=null?h:!1;return{firstDayOfWeek:e,hideWeekends:t}}renderMiniMonth(e,t,r,i,s,o){let l=e.createDiv("calendar-mini-month"),d=(0,_r.moment)({year:t,month:r,day:1}),u=l.createDiv("mini-month-header");u.textContent=d.format("MMMM"),u.style.cursor="pointer";let p=f=>{this.viewOptions.onMonthClick&&this.viewOptions.onMonthClick(f,d.valueOf())};u.addEventListener("click",p),this.cleanupFns.push(()=>u.removeEventListener("click",p));let m=f=>{this.viewOptions.onMonthHover&&this.viewOptions.onMonthHover(f,d.valueOf())};u.addEventListener("mouseenter",m),this.cleanupFns.push(()=>u.removeEventListener("mouseenter",m));let h=l.createDiv("mini-month-body"),g=this.calculateDaysWithEvents(d,i);this.renderMiniMonthGrid(h,d,g,s,o)}calculateDaysWithEvents(e,t){let r=new Set,i=e.clone().startOf("month"),s=e.clone().endOf("month");return t.forEach(o=>{var d,u;[o.start,(d=o.metadata)==null?void 0:d.scheduledDate,(u=o.metadata)==null?void 0:u.dueDate].forEach(p=>{if(p){let m=(0,_r.moment)(p);m.isBetween(i,s,"day","[]")&&r.add(m.date())}})}),r}renderMiniMonthGrid(e,t,r,i,s){e.empty(),e.addClass("mini-month-grid"),this.renderWeekdayHeaders(e,i,s);let{gridStart:o,gridEnd:l}=this.calculateGridBoundaries(t,i,s);this.renderDayCells(e,t,o,l,r,s),this.setupGridEventListeners(e)}renderWeekdayHeaders(e,t,r){let i=e.createDiv("mini-weekday-header"),s=_r.moment.weekdaysMin(!0),o=[...s.slice(t),...s.slice(0,t)];(r?o.filter((d,u)=>{let p=(t+u)%7;return p!==0&&p!==6}):o).forEach(d=>{i.createDiv("mini-weekday").textContent=d})}calculateGridBoundaries(e,t,r){let i=e.clone().startOf("month"),s=e.clone().endOf("month"),o,l;if(r){o=i.clone();let d=(i.weekday()-t+7)%7;for(o.subtract(d,"days");o.day()===0||o.day()===6;)o.add(1,"day");l=s.clone();let u=(t+4-s.weekday()+7)%7;for(l.add(u,"days");l.day()===0||l.day()===6;)l.subtract(1,"day")}else{let d=(i.weekday()-t+7)%7;o=i.clone().subtract(d,"days");let u=(t+6-s.weekday()+7)%7;l=s.clone().add(u,"days")}return{gridStart:o,gridEnd:l}}renderDayCells(e,t,r,i,s,o){let l=r.clone();for(;l.isSameOrBefore(i,"day");){let d=l.day()===0||l.day()===6;if(o&&d){l.add(1,"day");continue}let u=e.createEl("div",{cls:"mini-day-cell",attr:{"data-date":l.format("YYYY-MM-DD")}}),p=l.date(),m=l.isSame(t,"month");u.textContent=String(p),m||u.addClass("is-other-month"),l.isSame((0,_r.moment)(),"day")&&u.addClass("is-today"),m&&s.has(p)&&u.addClass("has-events"),u.style.cursor=m?"pointer":"default",l.add(1,"day")}}setupGridEventListeners(e){let t=i=>{let o=i.target.closest(".mini-day-cell");if(o){let l=o.getAttribute("data-date");l&&this.viewOptions.onDayClick&&this.viewOptions.onDayClick(i,(0,_r.moment)(l).valueOf(),{behavior:"open-task-view"})}};e.addEventListener("click",t),this.cleanupFns.push(()=>e.removeEventListener("click",t));let r=this.createDebouncedHoverHandler();e.addEventListener("mouseover",r),this.cleanupFns.push(()=>e.removeEventListener("mouseover",r))}createDebouncedHoverHandler(){return(0,_r.debounce)(e=>{let r=e.target.closest(".mini-day-cell");if(r){let i=r.getAttribute("data-date");i&&this.viewOptions.onDayHover&&this.viewOptions.onDayHover(e,(0,_r.moment)(i).valueOf())}},200)}cleanupEventListeners(){this.cleanupFns.forEach(e=>e()),this.cleanupFns=[]}getNavigationUnit(){return"year"}getHeaderTitle(){let e=this.context.adapter.create(this.context.currentDate);return(0,_r.moment)(e).format("YYYY")}onUnmount(){this.cleanupEventListeners(),super.onUnmount()}};rf.meta={type:"year",label:"Year",shortLabel:"Y",order:50};var sn=class extends Rt.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,Rt.moment)();this.tgCalendar=null;this.viewRegistry=new Rc;this.badgeEventsCache=new Map;this.configOverride=null;this.onEventClick=(e,t)=>{var r,i;(i=(r=this.params)==null?void 0:r.onTaskSelected)==null||i.call(r,t)};this.onEventHover=(e,t)=>{};this.onDayClick=(e,t,r)=>{let i=new Date(t);this.currentViewMode==="year"?(this.setView("day"),this.currentDate=(0,Rt.moment)(i),this.render()):r.behavior==="open-quick-capture"&&new ft(this.app,this.plugin,{dueDate:i},!0).open()};this.onDayHover=(e,t)=>{};this.onMonthClick=(e,t)=>{this.setView("month"),this.currentDate=(0,Rt.moment)(new Date(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.initializeViewRegistry()}initializeViewRegistry(){this.viewRegistry.register(af),this.viewRegistry.register(rf)}onload(){super.onload(),this.processTasks(),this.render(),this.registerEvent(this.app.workspace.on("task-genius:calendar-views-changed",()=>{this.handleCalendarViewsChanged()}))}handleCalendarViewsChanged(){var e,t,r,i;if(this.isCustomView(this.currentViewMode)){let s=this.getCustomViewConfig(this.currentViewMode),o=((i=(r=(t=(e=this.plugin.workspaceManager)==null?void 0:e.getActiveWorkspace())==null?void 0:t.settings)==null?void 0:r.hiddenModules)==null?void 0:i.calendarViews)||[];(!s||!s.enabled||o.includes(this.currentViewMode))&&(this.currentViewMode="month",this.saveCurrentViewMode())}this.render()}onunload(){super.onunload(),this.tgCalendar&&(this.tgCalendar.destroy(),this.tgCalendar=null),this.containerEl.empty()}updateTasks(e){this.tasks=e,this.badgeEventsCache.clear(),this.processTasks(),this.renderCurrentView()}setView(e){this.currentViewMode!==e&&(this.currentViewMode=e,this.saveCurrentViewMode(),this.render())}saveCurrentViewMode(){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.tgCalendar?e==="prev"?this.tgCalendar.prev():this.tgCalendar.next():this.render()}goToToday(){this.currentDate=(0,Rt.moment)(),this.tgCalendar?this.tgCalendar.today():this.render()}setTasks(e){this.updateTasks(e)}setConfigOverride(e){this.configOverride=e!=null?e:null,this.render()}getBadgeEventsForDate(e){let t=this.formatDateKey(e);if(this.badgeEventsCache.has(t))return this.badgeEventsCache.get(t)||[];let r=[];return this.tasks.forEach(i=>{var d,u,p;let s=((d=i.source)==null?void 0:d.type)==="ics",o=s?i:null,l=((p=(u=o==null?void 0:o.icsEvent)==null?void 0:u.source)==null?void 0:p.showType)==="badge";if(s&&l&&(o!=null&&o.icsEvent)){let m=new Date(o.icsEvent.dtstart);this.isSameDay(m,e)&&r.push({...i,title:i.content,start:o.icsEvent.dtstart,end:o.icsEvent.dtend,allDay:o.icsEvent.allDay,color:o.icsEvent.source.color,badge:!0})}}),this.badgeEventsCache.set(t,r),r}render(){this.renderHeader(),this.renderCurrentView()}renderHeader(){this.headerEl.empty();let e=this.headerEl.createDiv("calendar-nav"),t=new Rt.ButtonComponent(e.createDiv());t.buttonEl.addClass("calendar-nav-button","prev-button"),t.setIcon("chevron-left"),t.onClick(()=>this.navigate("prev"));let r=new Rt.ButtonComponent(e.createDiv());r.buttonEl.addClass("calendar-nav-button","today-button"),r.setButtonText(c("Today")),r.onClick(()=>this.goToToday());let i=new Rt.ButtonComponent(e.createDiv());i.buttonEl.addClass("calendar-nav-button","next-button"),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"),l=[{id:"year",label:c("Year"),shortLabel:"Y",title:c("Year")},{id:"month",label:c("Month"),shortLabel:"M",title:c("Month")},{id:"week",label:c("Week"),shortLabel:"W",title:c("Week")},{id:"day",label:c("Day"),shortLabel:"D",title:c("Day")},{id:"agenda",label:c("Agenda"),shortLabel:"A",title:c("Agenda")}],d=this.getEnabledCustomViews(),u=o.createDiv("calendar-segmented-control"),p=null;l.forEach((m,h)=>{let g=u.createEl("button",{cls:"calendar-segment-btn",attr:{"aria-label":m.title,"data-view":m.id}});g.createSpan({cls:"calendar-segment-short",text:m.shortLabel}),g.createSpan({cls:"calendar-segment-full",text:m.label}),m.id===this.currentViewMode&&(g.addClass("is-active"),p=g),g.onclick=()=>{this.setView(m.id)}}),d.length>0&&(u.createDiv("calendar-segment-separator"),d.forEach(m=>{let h=u.createEl("button",{cls:"calendar-segment-btn calendar-segment-custom",attr:{"data-view":m.id,"aria-label":m.name}}),g=h.createSpan({cls:"calendar-segment-icon"});(0,Rt.setIcon)(g,m.icon),h.createSpan({cls:"calendar-segment-short",text:m.name.charAt(0).toUpperCase()}),m.id===this.currentViewMode&&(h.addClass("is-active"),p=h),h.onclick=()=>{this.setView(m.id)}})),o.createEl("div",{cls:"calendar-view-switcher-selector"},m=>{let h=new Rt.DropdownComponent(m);l.forEach(g=>{h.addOption(g.id,g.label)}),d.length>0&&d.forEach(g=>{h.addOption(g.id,`\u2B27 ${g.name}`)}),h.onChange(g=>this.setView(g)).setValue(this.currentViewMode)})}updateActiveIndicator(e,t,r){let i=e.getBoundingClientRect(),s=r.getBoundingClientRect();t.style.width=`${s.width}px`,t.style.transform=`translateX(${s.left-i.left}px)`}getEnabledCustomViews(){var r,i,s,o;let e=this.plugin.settings.customCalendarViews||[],t=((o=(s=(i=(r=this.plugin.workspaceManager)==null?void 0:r.getActiveWorkspace())==null?void 0:i.settings)==null?void 0:s.hiddenModules)==null?void 0:o.calendarViews)||[];return e.filter(l=>l.enabled&&!t.includes(l.id)).sort((l,d)=>l.order-d.order)}getCustomViewConfig(e){return(this.plugin.settings.customCalendarViews||[]).find(r=>r.id===e)||null}isCustomView(e){return!["year","month","week","day","agenda"].includes(e)}renderCurrentView(){switch(this.viewContainerEl.empty(),this.tgCalendar&&(this.tgCalendar.destroy(),this.tgCalendar=null),this.viewContainerEl.removeClass("view-year","view-month","view-week","view-day","view-agenda"),this.viewContainerEl.addClass(`view-${this.currentViewMode}`),this.currentViewMode){case"month":case"week":case"day":case"agenda":case"year":this.renderTGCalendarView();break;default:this.isCustomView(this.currentViewMode)&&this.renderCustomCalendarView(this.currentViewMode);break}}renderCustomCalendarView(e){var o,l,d,u,p,m,h;let t=this.getCustomViewConfig(e);if(!t){this.currentViewMode="month",this.saveCurrentViewMode(),this.renderTGCalendarView();return}if(!t.enabled){this.currentViewMode="month",this.saveCurrentViewMode(),this.renderTGCalendarView();return}if((((u=(d=(l=(o=this.plugin.workspaceManager)==null?void 0:o.getActiveWorkspace())==null?void 0:l.settings)==null?void 0:d.hiddenModules)==null?void 0:u.calendarViews)||[]).includes(e)){this.currentViewMode="month",this.saveCurrentViewMode(),this.renderTGCalendarView();return}let i=t.baseViewType==="agenda"||t.baseViewType==="year",s=this.buildCustomViewCalendarConfig(t);if(this.tgCalendar=new tf(this.viewContainerEl,s),i){this.tgCalendar.setView(t.baseViewType);let g=this.tgCalendar.getActiveView();if(g&&("setPluginContext"in g&&g.setPluginContext(this.plugin,this.app),"setOptions"in g)){let f=t.calendarConfig;t.baseViewType==="agenda"&&g.setOptions({daysToShow:(p=f.daysToShow)!=null?p:7,showEmptyDays:(m=f.showEmptyDays)!=null?m:!1,onEventClick:this.onEventClick,onEventHover:this.onEventHover,onEventContextMenu:this.onEventContextMenu,onEventComplete:this.onEventComplete}),t.baseViewType==="year"&&g.setOptions({firstDayOfWeek:f.firstDayOfWeek,hideWeekends:((h=f.dayFilter)==null?void 0:h.type)==="hideWeekends",onDayClick:this.onDayClick,onDayHover:this.onDayHover,onMonthClick:this.onMonthClick,onMonthHover:this.onMonthHover})}this.tgCalendar.refresh()}this.tgCalendar.goToDate(this.currentDate.toDate())}buildCustomViewCalendarConfig(e){var d,u,p,m,h,g,f;let t=e.calendarConfig,r;if(t.dayFilter)switch(t.dayFilter.type){case"hideWeekends":r=rE();break;case"hideWeekdays":r=iE([1,2,3,4,5]);break;case"customDays":t.dayFilter.hiddenDays&&t.dayFilter.hiddenDays.length>0&&(r=iE(t.dayFilter.hiddenDays));break}let i;(d=t.timeFilter)!=null&&d.enabled&&(e.baseViewType==="week"||e.baseViewType==="day")&&(t.timeFilter.type==="workingHours"?i=Sb(9,18):i=Sb(t.timeFilter.startHour,t.timeFilter.endHour));let s=e.baseViewType==="agenda"||e.baseViewType==="year",l={view:{type:s?"month":e.baseViewType,showWeekNumbers:(u=t.showWeekNumbers)!=null?u:!1,showDateHeader:!0,firstDayOfWeek:this.getEffectiveFirstDayOfWeek(e),dayFilter:r,timeFilter:i},viewRegistry:s?this.viewRegistry:void 0,dateAdapter:new vu(oy),events:this.convertTasksToTGEvents(),showEventCounts:(p=t.showEventCounts)!=null?p:!0,dateFormats:{date:"yyyy-MM-dd",dateTime:"yyyy-MM-dd HH:mm",time:"HH:mm",monthHeader:(h=(m=t.dateFormats)==null?void 0:m.monthHeader)!=null?h:"yyyy M",dayHeader:(f=(g=t.dateFormats)==null?void 0:g.dayHeader)!=null?f:"yyyy M d"},draggable:{enabled:!0,snapMinutes:15,ghostOpacity:.5},theme:{primaryColor:"var(--interactive-accent)",cellHeight:60,fontSize:{header:"var(--font-ui-small)",event:"var(--font-ui-smaller)"}},onEventClick:k=>this.handleTGEventClick(k),onEventContextMenu:(k,v,y)=>this.handleTGEventContextMenu(k,v,y),onEventDrop:(k,v,y)=>this.handleTGEventDrop(k,v,y),onEventResize:(k,v,y)=>this.handleTGEventResize(k,v,y),onDateClick:k=>this.handleDateClick(k),onDateDoubleClick:k=>this.handleDateDoubleClick(k),onDateContextMenu:(k,v,y)=>this.handleDateContextMenu(k,v,y),onTimeSlotClick:k=>this.handleTimeSlotClick(k),onTimeSlotDoubleClick:k=>this.handleTimeSlotDoubleClick(k),onDateRangeSelect:(k,v)=>this.handleDateRangeSelect(k,v),onTimeRangeSelect:(k,v)=>this.handleTimeRangeSelect(k,v),onRenderDateCell:k=>this.handleTGRenderDateCell(k),onRenderEvent:k=>this.handleTGRenderEvent(k)};return e.baseViewType==="month"&&t.maxEventsPerRow&&(l.maxEventsPerRow=t.maxEventsPerRow),l}renderTGCalendarView(){var s,o;let e=this.getEffectiveCalendarConfig(),t=this.currentViewMode==="agenda"||this.currentViewMode==="year",i={view:{type:t?"month":this.currentViewMode,showWeekNumbers:!1,showDateHeader:!0,firstDayOfWeek:this.getEffectiveFirstDayOfWeek(),dayFilter:e.hideWeekends?rE():void 0,timeFilter:e.showWorkingHoursOnly&&(this.currentViewMode==="week"||this.currentViewMode==="day")?Sb((s=e.workingHoursStart)!=null?s:9,(o=e.workingHoursEnd)!=null?o:18):void 0},dateAdapter:new vu(oy),events:this.convertTasksToTGEvents(),showEventCounts:!0,dateFormats:{date:"yyyy-MM-dd",dateTime:"yyyy-MM-dd HH:mm",time:"HH:mm",monthHeader:"yyyy M",dayHeader:"yyyy M d"},draggable:{enabled:!0,snapMinutes:15,ghostOpacity:.5},theme:{primaryColor:"var(--interactive-accent)",cellHeight:60,fontSize:{header:"var(--font-ui-small)",event:"var(--font-ui-smaller)"}},viewRegistry:this.viewRegistry,onEventClick:l=>this.handleTGEventClick(l),onEventContextMenu:(l,d,u)=>this.handleTGEventContextMenu(l,d,u),onEventDrop:(l,d,u)=>this.handleTGEventDrop(l,d,u),onEventResize:(l,d,u)=>this.handleTGEventResize(l,d,u),onDateClick:l=>this.handleDateClick(l),onDateDoubleClick:l=>this.handleDateDoubleClick(l),onDateContextMenu:(l,d,u)=>this.handleDateContextMenu(l,d,u),onTimeSlotClick:l=>this.handleTimeSlotClick(l),onTimeSlotDoubleClick:l=>this.handleTimeSlotDoubleClick(l),onDateRangeSelect:(l,d)=>this.handleDateRangeSelect(l,d),onTimeRangeSelect:(l,d)=>this.handleTimeRangeSelect(l,d),onRenderDateCell:l=>this.handleTGRenderDateCell(l),onRenderEvent:l=>this.handleTGRenderEvent(l)};if(this.tgCalendar=new tf(this.viewContainerEl,i),t){let l=this.tgCalendar.getActiveView();this.tgCalendar.setView(this.currentViewMode);let d=this.tgCalendar.getActiveView();d&&("setPluginContext"in d&&d.setPluginContext(this.plugin,this.app),"setOptions"in d&&(this.currentViewMode==="agenda"&&d.setOptions({onEventClick:this.onEventClick,onEventHover:this.onEventHover,onEventContextMenu:this.onEventContextMenu,onEventComplete:this.onEventComplete}),this.currentViewMode==="year"&&(d.setOptions({firstDayOfWeek:e.firstDayOfWeek,hideWeekends:e.hideWeekends,onDayClick:this.onDayClick,onDayHover:this.onDayHover,onMonthClick:this.onMonthClick,onMonthHover:this.onMonthHover}),"setOverrideConfig"in d&&d.setOverrideConfig(e)))),this.tgCalendar.refresh()}this.tgCalendar.goToDate(this.currentDate.toDate())}handleTGEventClick(e){var r,i;let t=yu(e);t&&((i=(r=this.params)==null?void 0:r.onTaskSelected)==null||i.call(r,t))}handleTGRenderEvent(e){e.event.id,e.viewType,e.defaultRender();let{event:t,el:r}=e;if(r.querySelector(".task-list-item-checkbox"))return;let i=yu(t);if(!i)return;let s=gt(i.status||" ",i,r);r.firstChild&&r.firstChild!==s&&r.insertBefore(s,r.firstChild),this.registerDomEvent(s,"click",async o=>{o.stopPropagation();let l=i.completed?" ":"x";this.plugin.writeAPI&&(await this.plugin.writeAPI.updateTaskStatus({taskId:i.id,status:l,completed:!i.completed})).success&&(s.checked=!i.completed,s.dataset.task=l,i.completed||this.app.workspace.trigger("task-genius:task-completed",i),setTimeout(()=>{this.processTasks(),this.renderCurrentView()},100))})}handleTGEventContextMenu(e,t,r){let i=yu(e);if(!i){console.warn("Context menu: Could not find original task from event");return}let s={clientX:t,clientY:r,preventDefault:()=>{},stopPropagation:()=>{}};this.onEventContextMenu(s,i)}async handleTGEventDrop(e,t,r){var h;let i=yu(e);if(!i){new Rt.Notice(c("Failed to update task: Task not found"));return}if(((h=i.source)==null?void 0:h.type)==="ics"){new Rt.Notice(c("Cannot move external calendar events. Please update them in the original calendar.")),setTimeout(()=>{this.processTasks(),this.renderCurrentView()},100);return}let o=t instanceof Date?t:new Date(t),l=r!=null?r:t,d=l instanceof Date?l:new Date(l),u=new Date(e.start),p=e.end?new Date(e.end):u;if(Number.isNaN(o.getTime())||Number.isNaN(d.getTime())||Number.isNaN(u.getTime())||Number.isNaN(p.getTime())){console.warn("Calendar: Invalid date detected during drag/drop",{event:e,newStart:t,newEnd:r});return}let m=e.allDay===!0;try{let g={metadata:{}},f=[];if(m){let v=Ht(o),y=Ht(d),b=Ht(u),w=Ht(p),T=ns(v,b),x=ns(y,w);if(T===0&&x===0)return;T===x?(i.metadata.dueDate&&(g.metadata.dueDate=jt(Ht(new Date(i.metadata.dueDate)),T).getTime(),f.push("due date")),i.metadata.scheduledDate&&(g.metadata.scheduledDate=jt(Ht(new Date(i.metadata.scheduledDate)),T).getTime(),f.push("scheduled date")),i.metadata.startDate&&(g.metadata.startDate=jt(Ht(new Date(i.metadata.startDate)),T).getTime(),f.push("start date")),f.length===0&&(g.metadata.dueDate=v.getTime(),f.push("due date"))):T!==0&&T!==x?(g.metadata.startDate=v.getTime(),f.push("start date"),!i.metadata.dueDate&&ns(d,o)>0&&(g.metadata.dueDate=y.getTime(),f.push("due date"))):x!==0&&T!==x&&(g.metadata.dueDate=y.getTime(),f.push("due date"),!i.metadata.startDate&&ns(d,o)>0&&(g.metadata.startDate=v.getTime(),f.push("start date")))}else{let v=o.getTime()-u.getTime(),y=d.getTime()-p.getTime();if(v===0&&y===0)return;v===y?(i.metadata.dueDate&&(g.metadata.dueDate=i.metadata.dueDate+v,f.push("due date")),i.metadata.scheduledDate&&(g.metadata.scheduledDate=i.metadata.scheduledDate+v,f.push("scheduled date")),i.metadata.startDate&&(g.metadata.startDate=i.metadata.startDate+v,f.push("start date")),f.length===0&&(g.metadata.dueDate=o.getTime(),f.push("due date"))):v!==0&&v!==y?(g.metadata.startDate=o.getTime(),f.push("start date"),!i.metadata.dueDate&&d.getTime()!==o.getTime()&&(g.metadata.dueDate=d.getTime(),f.push("due date"))):y!==0&&v!==y&&(g.metadata.dueDate=d.getTime(),f.push("due date"),!i.metadata.startDate&&d.getTime()!==o.getTime()&&(g.metadata.startDate=o.getTime(),f.push("start date")))}if(!this.plugin.writeAPI){new Rt.Notice(c("Task update system not available"));return}this.applyOptimisticEventUpdate(e.id,o,d);let k=await this.plugin.writeAPI.updateTask({taskId:i.id,updates:g});k.success?new Rt.Notice(c("Task date updated successfully")):(console.error("Calendar: Failed to update task after drag:",k.error),new Rt.Notice(c("Failed to update task")),this.processTasks(),this.renderCurrentView())}catch(g){console.error("Calendar: Error updating task after drag:",g),new Rt.Notice(c("Failed to update task")),this.processTasks(),this.renderCurrentView()}}async handleTGEventResize(e,t,r){var S;let i=yu(e);if(!i){new Rt.Notice(c("Failed to update task: Task not found"));return}if(((S=i.source)==null?void 0:S.type)==="ics"){new Rt.Notice("In current version, cannot resize external calendar events"),setTimeout(()=>{this.processTasks(),this.renderCurrentView()},100);return}let o=t instanceof Date?t:new Date(t),l=r instanceof Date?r:new Date(r),d=new Date(e.start),u=e.end?new Date(e.end):d,p=e.allDay===!0,m=p?Ht(o):o,h=p?Ht(l):l,g=p?Ht(d):d,f=p?Ht(u):u,k=m.getTime()!==g.getTime(),v=h.getTime()!==f.getTime();if(!k&&!v)return;let y={metadata:{}},b=[],w=m.getTime(),T=h.getTime(),x=(D,E,R)=>{y.metadata[D]===void 0&&(y.metadata[D]=E,b.push(R))};if(k&&x("startDate",w,"start date"),v&&x("dueDate",T,"due date"),i.metadata.startDate||x("startDate",w,"start date"),i.metadata.dueDate||x("dueDate",T,"due date"),b.length===0)return;if(!this.plugin.writeAPI){new Rt.Notice(c("Task update system not available"));return}this.applyOptimisticEventUpdate(e.id,m,h);let C=await this.plugin.writeAPI.updateTask({taskId:i.id,updates:y});C.success?new Rt.Notice(c("Task time updated: ")+b.join(", ")):(console.error("Calendar: Failed to resize task:",C.error),new Rt.Notice(c("Failed to update task")),this.processTasks(),this.renderCurrentView())}applyOptimisticEventUpdate(e,t,r){let i=this.events.findIndex(s=>s.id===e);i!==-1&&(this.events[i]={...this.events[i],start:t,end:r}),this.tgCalendar&&this.tgCalendar.updateEvent(e,{start:t.toISOString(),end:r.toISOString()})}handleTGRenderDateCell(e){let{date:t,cellEl:r}=e,i=this.getTasksForDate(t),s=this.getBadgeEventsForDate(t);if(s.length>0){let l=r.querySelector(".tg-date-header");if(l){let d=l.createDiv("calendar-badges-container");s.forEach(u=>{let p=d.createEl("div",{cls:"calendar-badge"});u.color&&(p.style.backgroundColor=u.color),p.textContent=u.content})}}setTimeout(()=>{r.querySelectorAll(".tg-event").forEach(d=>{if(d.querySelector(".task-checkbox-overlay"))return;let u=d.dataset.eventId;if(!u)return;let p=i.find(g=>g.id===u);if(!p)return;let h=d.createDiv({cls:"task-checkbox-overlay"}).createEl("input",{cls:"task-list-item-checkbox",type:"checkbox",attr:{"data-task":p.status||" "}});h.checked=p.status!==" "&&p.status!=="?",this.registerDomEvent(h,"click",async g=>{g.stopPropagation();let f=p.completed?" ":"x";this.plugin.writeAPI&&(await this.plugin.writeAPI.updateTaskStatus({taskId:p.id,status:f,completed:!p.completed})).success&&(h.checked=!p.completed,h.dataset.task=f,p.completed||this.app.workspace.trigger("task-genius:task-completed",p),setTimeout(()=>{this.processTasks(),this.renderCurrentView()},100))})})},50);let o=new Date;if(o.setHours(0,0,0,0),t<o&&i.some(l=>!l.completed)){let l=r.querySelector(".tg-date-number");l&&l.addClass("past-due")}}handleDateClick(e){}handleDateDoubleClick(e){new ft(this.app,this.plugin,{dueDate:e},!0).open()}handleDateContextMenu(e,t,r){}handleTimeSlotClick(e){}handleTimeSlotDoubleClick(e){new ft(this.app,this.plugin,{dueDate:e},!0).open()}handleDateRangeSelect(e,t){new ft(this.app,this.plugin,{startDate:e,dueDate:t},!0).open()}handleTimeRangeSelect(e,t){new ft(this.app,this.plugin,{startDate:e,dueDate:t},!0).open()}async processTasks(){this.events=[],this.badgeEventsCache.clear(),this.tasks.forEach(e=>{var l,d,u,p,m,h;let t=((l=e.source)==null?void 0:l.type)==="ics",r=t?e:null,i=((u=(d=r==null?void 0:r.icsEvent)==null?void 0:d.source)==null?void 0:u.showType)==="badge";if(t&&i)return;let s=null,o=!0;if(t&&(r!=null&&r.icsEvent)?(s=r.icsEvent.dtstart.getTime(),o=r.icsEvent.allDay):s=e.metadata.dueDate||e.metadata.scheduledDate||e.metadata.startDate||null,s){let g=new Date(s),f=o?Ht(g):g,k,v=f;if(t&&((p=r==null?void 0:r.icsEvent)!=null&&p.dtend))k=r.icsEvent.dtend;else if(e.metadata.startDate&&e.metadata.dueDate&&e.metadata.startDate!==e.metadata.dueDate){let b=Ht(new Date(e.metadata.startDate)),w=Ht(new Date(e.metadata.dueDate));v0(b,w)&&(k=jt(w,1),v=b)}let y;t&&((h=(m=r==null?void 0:r.icsEvent)==null?void 0:m.source)!=null&&h.color)?y=r.icsEvent.source.color:y=e.completed?"grey":void 0,this.events.push({...e,title:e.content,start:v,end:k,allDay:o,color:y})}}),this.events.sort((e,t)=>e.start.getTime()-t.start.getTime())}convertTasksToTGEvents(){let e=this.tasks.filter(t=>jN(t));return LN(e)}getTasksForDate(e){let t=this.normalizeDateToDay(e).getTime();return this.tasks.filter(r=>!!(r.metadata.dueDate&&this.normalizeDateToDay(new Date(r.metadata.dueDate)).getTime()===t||r.metadata.scheduledDate&&this.normalizeDateToDay(new Date(r.metadata.scheduledDate)).getTime()===t||r.metadata.startDate&&this.normalizeDateToDay(new Date(r.metadata.startDate)).getTime()===t))}getViewUnit(){if(this.isCustomView(this.currentViewMode)){let e=this.getCustomViewConfig(this.currentViewMode);if(e)switch(e.baseViewType){case"month":return"month";case"week":return"week";case"day":return"day"}}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"}}getEffectiveFirstDayOfWeek(e){var i;if(((i=e==null?void 0:e.calendarConfig)==null?void 0:i.firstDayOfWeek)!==void 0)return e.calendarConfig.firstDayOfWeek;let t=this.getEffectiveCalendarConfig();if(t.firstDayOfWeek!==void 0){let s=t.firstDayOfWeek;if(s>=0&&s<=6)return s}let r=Rt.moment.localeData().firstDayOfWeek();return r>=0&&r<=6?r:0}getStartOfWeekWithConfig(e,t){let r=this.getEffectiveFirstDayOfWeek(t),i=e.clone(),o=(i.day()-r+7)%7;return i.subtract(o,"days").startOf("day")}getEndOfWeekWithConfig(e,t){return this.getStartOfWeekWithConfig(e,t).clone().add(6,"days").endOf("day")}getCurrentDateDisplay(){if(this.isCustomView(this.currentViewMode)){let e=this.getCustomViewConfig(this.currentViewMode);if(e)switch(e.baseViewType){case"month":return""+this.currentDate.format("MMMM/YYYY");case"week":{let r=this.getStartOfWeekWithConfig(this.currentDate,e),i=this.getEndOfWeekWithConfig(this.currentDate,e);return r.month()!==i.month()?`${r.format("MMM D")} - ${i.format("MMM D, YYYY")}`:`${r.format("MMM D")} - ${i.format("D, YYYY")}`}case"day":return""+this.currentDate.format("dddd, MMMM D, YYYY")}}switch(this.currentViewMode){case"year":return this.currentDate.format("YYYY");case"month":return this.currentDate.format("MMMM/YYYY");case"week":{let e=this.getStartOfWeekWithConfig(this.currentDate),t=this.getEndOfWeekWithConfig(this.currentDate);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 e=this.currentDate.clone().add(6,"days");return`${this.currentDate.format("MMM D")} - ${e.format("MMM D, YYYY")}`}default:return this.currentDate.format("MMMM YYYY")}}getEffectiveCalendarConfig(){var t,r;let e=(t=this.plugin.settings.viewConfiguration.find(i=>i.id===this.viewId))==null?void 0:t.specificConfig;return{...e!=null?e:{},...(r=this.configOverride)!=null?r:{}}}formatDateKey(e){let t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),i=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${i}`}normalizeDateToDay(e){let t=new Date(e);return t.setHours(0,0,0,0),t}isSameDay(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}precomputeBadgeEventsForCurrentView(){}invalidateBadgeEventsCache(){this.badgeEventsCache.clear()}};var sf=require("obsidian");var bu=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 VN=require("obsidian"),Db=class extends VN.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:d,shouldDrawMinorTick:u,formatMajorTick:p,formatMinorTick:m,formatDayTick:h}=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 g=this.svgEl.createSvg("g",{cls:"gantt-header-content"});g.setAttribute("transform",`translate(${-s}, 0)`),g.createSvg("rect",{attr:{x:0,y:0,width:r,height:o,class:"gantt-header-bg"}});let f=30,k=l.addDays(this.params.visibleStartDate,-f),v=l.addDays(this.params.visibleEndDate,f);k=new Date(Math.max(k.getTime(),e.getTime())),v=new Date(Math.min(v.getTime(),t.getTime()));let y=l.startOfDay(k),b={},w={},T={};for(;y<=v;){let C=l.dateToX(y,e,this.params.dayWidth),S=l.addDays(y,1),E=l.dateToX(S,e,this.params.dayWidth)-C;if(d(y)){g.createSvg("line",{attr:{x1:C,y1:0,x2:C,y2:o,class:"gantt-header-tick-major"}});let R=p(y);if(R&&E>10){let I=`${y.getFullYear()}-${y.getMonth()}`;b[I]||(b[I]={x:C+5,label:R})}}if(u(y)){g.createSvg("line",{attr:{x1:C,y1:o*.5,x2:C,y2:o,class:"gantt-header-tick-minor"}});let R=m(y);if(R&&E>2){if(i==="Day"||i==="Week"){let I=`${y.getFullYear()}-W${l.getWeekNumber(y)}`;w[I]||(w[I]={x:C+5,label:R})}else if(i==="Month"){let I=y.getDate().toString(),H=`${y.getFullYear()}-${y.getMonth()}-${y.getDate()}`;T[H]||(T[H]={x:C+E/2,label:I})}}}if(i==="Day"){g.createSvg("line",{attr:{x1:C,y1:o*.7,x2:C,y2:o,class:"gantt-header-tick-day"}});let R=h(y);if(R&&E>2){let I=`${y.getFullYear()}-${y.getMonth()}-${y.getDate()}`;T[I]||(T[I]={x:C+E/2,label:R})}}if(y>v)break;y=S}Object.values(b).forEach(C=>{g.createSvg("text",{attr:{x:C.x,y:o*.35,class:"gantt-header-label-major"}}).textContent=C.label}),Object.values(w).forEach(C=>{g.createSvg("text",{attr:{x:C.x,y:o*.65,class:"gantt-header-label-minor"}}).textContent=C.label}),Object.values(T).forEach(C=>{g.createSvg("text",{attr:{x:C.x,y:o*.85,class:"gantt-header-label-day","text-anchor":"middle"}}).textContent=C.label});let x=l.startOfDay(new Date);if(x>=e&&x<=t){let C=l.dateToX(x,e,this.params.dayWidth);g.createSvg("line",{attr:{x1:C,y1:0,x2:C,y2:o,class:"gantt-header-today-marker"}})}}};var WN=require("obsidian");var Eb=class extends WN.Component{constructor(e,t){super();this.params=null;this.dateHelper=new bu;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:d,rowHeight:u,dateHelper:p,shouldDrawMajorTick:m,shouldDrawMinorTick:h}=this.params,g=30,f=p.addDays(r,-g),k=p.addDays(i,g);f=new Date(Math.max(f.getTime(),e.getTime())),k=new Date(Math.min(k.getTime(),t.getTime()));let v=p.startOfDay(f);for(;v<=k;){let b=p.dateToX(v,e,this.params.dayWidth);if(m(v)?this.svgGroupEl.createSvg("line",{attr:{x1:b,y1:0,x2:b,y2:o,class:"gantt-grid-line-major"}}):(h(v)||d==="Day")&&this.svgGroupEl.createSvg("line",{attr:{x1:b,y1:0,x2:b,y2:o,class:"gantt-grid-line-minor"}}),v>k)break;v=p.addDays(v,1)}for(let b=u;b<=o;b+=u)this.svgGroupEl.createSvg("line",{attr:{x1:0,y1:b,x2:s,y2:b,class:"gantt-grid-line-horizontal"}});let y=p.startOfDay(new Date);if(y>=e&&y<=t){let b=p.dateToX(y,e,this.params.dayWidth);this.svgGroupEl.createSvg("line",{attr:{x1:b,y1:0,x2:b,y2:o,class:"gantt-grid-today-marker"}})}}};var zN=require("obsidian");var t9=24,a9=.6,r9=10,nf=5,Mb=class extends zN.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=t9,taskBarHeightRatio:d=a9,milestoneSize:u=r9}=this.params,p=e.task,m=this.taskGroupEl.createSvg("g",{cls:"gantt-task-item"});m.setAttribute("data-task-id",p.id);let h=()=>r(p),g=y=>i(y,p);this.addEventListener(m,"click",h),this.addEventListener(m,"contextmenu",g);let f=l*d,k=e.y-f/2,v=null;if(e.isMilestone){let y=e.startX,b=e.y,w=u/2;if(v=m.createSvg("circle",{attr:{cx:y,cy:b,r:w,class:"gantt-task-milestone"}}),p.status&&p.status.trim()&&v.classList.add(`status-${p.status.trim()}`),p.metadata.priority){let T=ri(p.metadata.priority);T&&v.classList.add(`priority-${T}`)}if(s&&p.content)if(o){let T=m.createSvg("foreignObject",{attr:{x:y+w+nf,y:b-8,width:300,height:16,class:"gantt-milestone-label-container"}}),x=document.createElementNS("http://www.w3.org/1999/xhtml","div");x.style.pointerEvents="none",T.appendChild(x);let C=new la(this.app,x,p.filePath);this.addChild(C),C.render(p.content)}else{let T=m.createSvg("text",{attr:{x:y+w+nf,y:b,class:"gantt-milestone-label","dominant-baseline":"middle"}});T.textContent=p.content,T.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:k,width:e.width,height:f,rx:3,ry:3,class:"gantt-task-bar"}}),p.status&&p.status.trim()&&v.classList.add(`status-${p.status.trim()}`),p.metadata.priority){let y=ri(p.metadata.priority);y&&v.classList.add(`priority-${y}`)}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 b=m.createSvg("foreignObject",{attr:{x:e.startX+nf,y:e.y-f/2-2,width:e.width-nf*2,height:f+4,class:"gantt-task-label-fo"}});b.style.pointerEvents="none";let w=b.createDiv({cls:"gantt-task-label-markdown"});if(o){let T=p.filePath||"";w.empty();let x=new la(this.app,w,T,!0);this.addChild(x),x.update(p.content)}else w.textContent=p.content,w.style.lineHeight=`${f}px`,w.style.whiteSpace="nowrap",w.style.overflow="hidden",w.style.textOverflow="ellipsis"}else{let b=m.createSvg("text",{attr:{x:e.startX+e.width+nf,y:e.y,class:"gantt-task-label-external","dominant-baseline":"middle","text-anchor":"start"}});b.textContent=p.content,b.style.pointerEvents="none"}}}};var _N=require("obsidian");z();var Pb=class extends _N.Component{constructor(a,e){super(),this.containerEl=a,this.scrollToDateCallback=e}onload(){let a=this.containerEl.createEl("button",{text:c("Today"),cls:"gantt-filter-today-button"});this.registerDomEvent(a,"click",()=>{this.scrollToDateCallback(new Date)})}};var wu=24,UN=40,i9=50,n9=10,s9=200,o9=4,on=class extends sf.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=i9;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 bu;this.configOverride=null;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(n9,Math.min(s9,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 d=0;l&&(d=this.dateHelper.dateToX(l,this.startDate,this.dayWidth)-s),this.prepareTasksForRender();let u=this.scrollContainerEl.clientWidth;d=Math.max(0,Math.min(d,this.totalWidth-u)),this.debouncedRender(),requestAnimationFrame(()=>{if(!this.scrollContainerEl)return;this.scrollContainerEl.scrollLeft=d;let p=d/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,sf.debounce)(this.renderInternal,this.config.debounceRenderMs),this.debouncedHeaderUpdate=(0,sf.debounce)(this.updateHeaderComponent,16)}onload(){this.applyEffectiveConfig(),this.createBaseSVG(),this.filterComponent=this.addChild(new fu({container:this.filterContainerEl,options:Xg(this.tasks),onChange:e=>{this.applyFiltersAndRender(e)},components:[new Pb(this.filterContainerEl,e=>this.scrollToDate(e))]},this.plugin)),this.headerContainerEl&&(this.timelineHeaderComponent=this.addChild(new Db(this.app,this.headerContainerEl))),this.gridGroupEl&&(this.gridBackgroundComponent=this.addChild(new Eb(this.app,this.gridGroupEl))),this.taskGroupEl&&(this.taskRendererComponent=this.addChild(new Mb(this.app,this.taskGroupEl))),this.registerDomEvent(this.scrollContainerEl,"scroll",this.handleScroll),this.registerDomEvent(this.containerEl,"wheel",this.handleWheel,{passive:!1}),this.applyEffectiveConfig()}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=[]}setConfigOverride(e){this.configOverride=e!=null?e:null,this.applyEffectiveConfig(),this.debouncedRender()}getEffectiveGanttConfig(){var r;let e=this.plugin.settings.viewConfiguration.find(i=>i.id===this.viewId),t={};if(e&&e.specificConfig&&e.specificConfig.viewType==="gantt")t=e.specificConfig;else{let i=this.plugin.settings.viewConfiguration.find(s=>s.id==="gantt");t=(i==null?void 0:i.specificConfig)||{}}return{...t!=null?t:{},...(r=this.configOverride)!=null?r:{}}}applyEffectiveConfig(){let e=this.getEffectiveGanttConfig();typeof e.showTaskLabels=="boolean"&&(this.config.showTaskLabels=e.showTaskLabels),typeof e.useMarkdownRenderer=="boolean"&&(this.config.useMarkdownRenderer=e.useMarkdownRenderer)}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 d=new Date(o).getTime();isNaN(d)||(t=Math.min(t,d))}else if(s.metadata.createdDate){let d=new Date(s.metadata.createdDate).getTime();isNaN(d)||(t=Math.min(t,d))}if(l){let d=new Date(l).getTime();if(!isNaN(d)){let u=!s.metadata.startDate&&s.metadata.dueDate;r=Math.max(r,u?d:this.dateHelper.addDays(new Date(d),1).getTime())}}if(o&&!l){let d=new Date(o).getTime();isNaN(d)||(r=Math.max(r,this.dateHelper.addDays(new Date(d),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*wu+wu/2,l,d,u=!1,p=i.metadata.startDate||i.metadata.scheduledDate,m=i.metadata.dueDate;if(p){let g=new Date(p);isNaN(g.getTime())||(l=this.dateHelper.dateToX(g,this.startDate,this.dayWidth))}if(m){let g=new Date(m);isNaN(g.getTime())||(d=this.dateHelper.dateToX(this.dateHelper.addDays(g,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 g=m?new Date(m):p?new Date(p):null;g?(l=this.dateHelper.dateToX(g,this.startDate,this.dayWidth),d=l,u=!0):(l=void 0,d=void 0)}else!p&&!m?(l=void 0,d=void 0):p&&!m&&l!==void 0&&(d=this.dateHelper.dateToX(this.dateHelper.addDays(new Date(p),1),this.startDate,this.dayWidth),u=!1);let h=l!==void 0&&d!==void 0&&!u?Math.max(1,d-l):void 0;return{task:i,y:o,startX:l,endX:d,width:h,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*wu,t*wu);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 h=new Date(i).getTime(),g=new Date(s).getTime();if(h!==g)return h-g}else{if(i)return-1;if(s)return 1}if(o&&l){let h=new Date(o).getTime(),g=new Date(l).getTime();if(h!==g)return h-g}else{if(o)return-1;if(l)return 1}let d=((p=t.content)==null?void 0:p.trim())||null,u=((m=r.content)==null?void 0:m.trim())||null;return!d&&!u?0:d?u?d.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% - ${UN}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=[],d=300,u=o9/2;for(let m of this.preparedTasks){let h=m.startX,g=m.isMilestone?m.startX:m.startX+((p=m.width)!=null?p:0);g>s-d&&h<o+d&&l.push(m);let k=5,v=m.y-r-u;g<s-k?this.leftIndicatorEl.createDiv({cls:"gantt-single-indicator",attr:{style:`top: ${v+45}px;`,title:m.task.content,"data-task-id":m.task.id}}):h>o+k&&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 g=m.target.getAttribute("data-task-id");if(g){let f=this.tasks.find(k=>k.id===g);f&&this.scrollToDate(new Date(f.metadata.dueDate||f.metadata.startDate||f.metadata.scheduledDate))}}),this.registerDomEvent(this.rightIndicatorEl,"click",m=>{let g=m.target.getAttribute("data-task-id");if(g){let f=this.tasks.find(k=>k.id===g);f&&this.scrollToDate(new Date(f.metadata.startDate||f.metadata.dueDate||f.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:wu,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:wu,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:UN,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=vd[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 ZN=require("obsidian");var pi=require("obsidian");var JN=require("obsidian");var ln=require("obsidian");z();var YN=require("obsidian");var fl=require("obsidian");z();var $N=require("obsidian");z();var Ib=class extends $N.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(c("Configure On Completion Action"))}onOpen(){let{contentEl:e}=this;e.empty();let t=e.createDiv({cls:"oncompletion-modal-content"}),r={initialValue:this.currentValue,onChange:d=>{this.currentValue=d},onValidationChange:(d,u)=>{this.isValid=d,this.updateSaveButtonState()}};this.configurator=new rl(t,this.plugin,r),this.configurator.onload();let i=e.createDiv({cls:"oncompletion-modal-buttons"}),s=i.createEl("button",{text:c("Save"),cls:"mod-cta"});s.addEventListener("click",()=>this.handleSave()),i.createEl("button",{text:c("Cancel")}).addEventListener("click",()=>this.handleCancel());let l=i.createEl("button",{text:c("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 Ab=class extends fl.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,fl.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=Cr(this.task.content);if(!t&&this.task.originalMarkdown){let r=this.task.originalMarkdown.replace(/^\s*[-*+]\s*\[[^\]]*\]\s*/,"");t=Cr(r).trim()}!t&&this.task.content&&(t=Cr(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=cs(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,fl.setIcon)(t,"plus"),this.registerDomEvent(t,"click",r=>{r.stopPropagation(),this.showMetadataMenu(t)})}createProjectEditor(e,t){let r=qt(this.task),i=Yi(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||typeof this.task.metadata.project!="string"||!this.task.metadata.project.trim())){let l=this.task.metadata.tgProject,d=e.createDiv({cls:"project-source-indicator inline-indicator"}),u="",p="";switch(l.type){case"path":u=c("Auto from path"),p="\u{1F4C1}";break;case"metadata":u=c("Auto from metadata"),p="\u{1F4C4}";break;case"config":u=c("Auto from config"),p="\u2699\uFE0F";break;default:u=c("Auto-assigned"),p="\u{1F517}"}d.createEl("span",{cls:"indicator-icon",text:p}),d.createEl("span",{cls:"indicator-text",text:u}),i?(d.addClass("readonly-indicator"),s.disabled=!0,s.title=c("This project is automatically assigned and cannot be changed")):(d.addClass("override-indicator"),s.title=c("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 xr(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 Zr(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 Jr(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=ao(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||c("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 Ib(this.app,this.plugin,{initialValue:t||this.task.metadata.onCompletion||"",onSave:i=>{var l,d;this.task.metadata.onCompletion=i||void 0;let s=e.querySelector(".inline-oncompletion-config-button");s&&(s.textContent=i||c("Configure...")),(l=this.debouncedSave)==null||l.call(this);let o=(d=e.closest(".inline-metadata-editor"))==null?void 0:d.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 fl.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:[],d=Array.isArray(o)?o:[];if(l.length!==d.length)return!0;for(let u=0;u<l.length;u++)if(l[u]!==d[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=ri(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 Tu=class extends YN.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 Ab(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 lf=require("obsidian");z();var qN=require("obsidian");Rp();var Fb=class extends qN.Modal{constructor(e,t,r){super(e);this.onDateSelected=null;this.plugin=t,this.dateType=r}onOpen(){let{contentEl:e}=this;e.empty(),e.addClass("bulk-date-picker-modal");let t=e.createEl("h3",{text:`Set ${this.dateType} for selected tasks`});t.style.marginBottom="var(--size-4-3)",this.datePickerComponent=new $s(e,this.app,this.plugin,void 0,this.getDateEmoji()),this.datePickerComponent.onload(),this.datePickerComponent.setOnDateChange(r=>{if(this.onDateSelected){let i=new Date(r).getTime();this.onDateSelected(i)}this.close()})}onClose(){let{contentEl:e}=this;this.datePickerComponent&&this.datePickerComponent.onunload(),e.empty()}getDateEmoji(){switch(this.dateType){case"dueDate":return"\u{1F4C5}";case"startDate":return"\u{1F6EB}";case"scheduledDate":return"\u23F3";default:return"\u{1F4C5}"}}};var of=require("obsidian"),l9=[{label:"Tomorrow",days:1},{label:"+3 days",days:3},{label:"+5 days",days:5},{label:"+1 week",days:7},{label:"+2 weeks",days:14},{label:"+1 month",days:30}],Rb=class extends of.Modal{constructor(e,t,r){super(e);this.onOffsetSelected=null;this.plugin=t,this.dateType=r}onOpen(){let{contentEl:e}=this;e.empty(),e.addClass("bulk-date-offset-modal");let t=e.createEl("h3",{text:`Postpone ${this.dateType} for selected tasks`});t.style.marginBottom="var(--size-4-3)";let r=e.createEl("p",{text:"Choose how many days to postpone the selected tasks:",cls:"modal-description"});r.style.marginBottom="var(--size-4-3)",r.style.color="var(--text-muted)";let i=e.createDiv({cls:"bulk-offset-button-container"});l9.forEach(u=>{new of.ButtonComponent(i).setButtonText(u.label).setCta().onClick(()=>{this.onOffsetSelected&&this.onOffsetSelected(u.days),this.close()})});let s=e.createDiv({cls:"bulk-offset-custom-section"});s.style.marginTop="var(--size-4-6)",s.style.paddingTop="var(--size-4-3)",s.style.borderTop="1px solid var(--background-modifier-border)";let o=s.createEl("label",{text:"Custom offset (days):"});o.show(),o.style.marginBottom="var(--size-2-3)";let l=s.createDiv();l.style.display="flex",l.style.gap="var(--size-2-3)";let d=l.createEl("input",{type:"number",placeholder:"Enter days"});d.style.flex="1",d.value="1",d.min="-365",d.max="365",new of.ButtonComponent(l).setButtonText("Apply").setCta().onClick(()=>{let u=parseInt(d.value)||0;u!==0&&(this.onOffsetSelected&&this.onOffsetSelected(u),this.close())})}onClose(){let{contentEl:e}=this;e.empty()}};async function Ob(n,a,e,t,r){let i=new lf.Menu,s=t.getSelectedCount();i.addItem(o=>{o.setTitle(`${s} tasks selected`),o.setDisabled(!0)}),i.addSeparator(),c9(i,e,t,r),d9(i,a,e,t,r),u9(i,e,t,r),await p9(i,e,t,r),i.addSeparator(),m9(i,e,t,r),i.addSeparator(),h9(i,t),i.showAtMouseEvent(n)}function c9(n,a,e,t){n.addItem(r=>{r.setIcon("square-pen"),r.setTitle(c("Bulk change status"));let i=r.setSubmenu(),s=nl(a.settings);for(let[o,l]of s)i.addItem(d=>{d.titleEl.createEl("span",{cls:"status-option-checkbox"},u=>{gt(o,{},u)}),d.titleEl.createEl("span",{cls:"status-option",text:l}),d.onClick(async()=>{await g9(o,l,a,e,t)})})})}function d9(n,a,e,t,r){n.addItem(i=>{i.setIcon("calendar"),i.setTitle(c("Bulk set date"));let s=i.setSubmenu(),o=s.addItem(u=>(u.setTitle(c("Set specific date")),u.setSubmenu()));o.addItem(u=>{u.setTitle(c("Due date")),u.onClick(async()=>{await sE("dueDate",a,e,t,r)})}),o.addItem(u=>{u.setTitle(c("Start date")),u.onClick(async()=>{await sE("startDate",a,e,t,r)})}),o.addItem(u=>{u.setTitle(c("Scheduled date")),u.onClick(async()=>{await sE("scheduledDate",a,e,t,r)})});let l=s.addItem(u=>(u.setTitle(c("Postpone by...")),u.setSubmenu()));l.addItem(u=>{u.setTitle(c("Due date")),u.onClick(async()=>{await oE("dueDate",a,e,t,r)})}),l.addItem(u=>{u.setTitle(c("Start date")),u.onClick(async()=>{await oE("startDate",a,e,t,r)})}),l.addItem(u=>{u.setTitle(c("Scheduled date")),u.onClick(async()=>{await oE("scheduledDate",a,e,t,r)})}),s.addSeparator();let d=s.addItem(u=>(u.setTitle(c("Clear dates")),u.setSubmenu()));d.addItem(u=>{u.setTitle(c("Clear due date")),u.onClick(async()=>{await lE("dueDate",e,t,r)})}),d.addItem(u=>{u.setTitle(c("Clear start date")),u.onClick(async()=>{await lE("startDate",e,t,r)})}),d.addItem(u=>{u.setTitle(c("Clear scheduled date")),u.onClick(async()=>{await lE("scheduledDate",e,t,r)})})})}function u9(n,a,e,t){n.addItem(r=>{r.setIcon("alert-triangle"),r.setTitle(c("Bulk set priority"));let i=r.setSubmenu();for(let s=1;s<=5;s++)i.addItem(o=>{o.setTitle(`${"!".repeat(s)} Priority ${s}`),o.onClick(async()=>{await v9(s,a,e,t)})});i.addSeparator(),i.addItem(s=>{s.setTitle(c("Clear priority")),s.onClick(async()=>{await y9(a,e,t)})})})}async function p9(n,a,e,t){let r=await x9(a);n.addItem(i=>{i.setIcon("folder"),i.setTitle(c("Bulk move to project"));let s=i.setSubmenu();if(r.length===0){s.addItem(o=>{o.setTitle(c("No projects available")),o.setDisabled(!0)});return}r.forEach(o=>{s.addItem(l=>{l.setTitle(o),l.onClick(async()=>{await b9(o,a,e,t)})})}),s.addSeparator(),s.addItem(o=>{o.setTitle(c("Clear project")),o.onClick(async()=>{await w9(a,e,t)})})})}function m9(n,a,e,t){n.addItem(r=>{r.setIcon("trash"),r.setTitle(c("Bulk delete")),r.onClick(async()=>{let i=e.getSelectedCount();await new Promise(o=>{new oa(a,{title:c("Confirm bulk delete"),message:c("Are you sure you want to delete {{count}} tasks?",{interpolation:{count:i.toString()}}),confirmText:c("Delete"),cancelText:c("Cancel"),onConfirm:l=>o(l)}).open()})&&await T9(a,e,t)})})}function h9(n,a){n.addItem(e=>{e.setTitle(c("Clear selection")),e.setIcon("x"),e.onClick(()=>{a.clearSelection(),a.exitSelectionMode("user_action")})})}async function g9(n,a,e,t,r){let i=t.getSelectedTasks(),s=await kl(i,o=>{let l=e.settings.taskStatuses.completed.split("|").includes(n.toLowerCase()),d={status:n,completed:l};return l&&!o.completed?d.metadata={...o.metadata,completedDate:Date.now()}:!l&&o.completed&&(d.metadata={...o.metadata,completedDate:void 0}),d},e);po(s,`Changed status to "${a}"`),t.exitSelectionMode("operation_complete"),r()}async function sE(n,a,e,t,r){let i=new Fb(a,e,n);i.onDateSelected=async s=>{await f9(n,s,e,t,r)},i.open()}async function oE(n,a,e,t,r){let i=new Rb(a,e,n);i.onOffsetSelected=async s=>{await k9(n,s,e,t,r)},i.open()}async function f9(n,a,e,t,r){let i=t.getSelectedTasks(),s=await kl(i,o=>({metadata:{...o.metadata,[n]:a}}),e);po(s,`Set ${n}`),t.exitSelectionMode("operation_complete"),r()}async function k9(n,a,e,t,r){let i=t.getSelectedTasks(),s=await kl(i,d=>{var g;let u=(g=d.metadata)==null?void 0:g[n],p=u?new Date(u):new Date,h=jt(p,a).getTime();return{metadata:{...d.metadata,[n]:h}}},e),o=a>0?"Postponed":"Advanced",l=Math.abs(a)===1?"day":"days";po(s,`${o} ${n} by ${Math.abs(a)} ${l}`),t.exitSelectionMode("operation_complete"),r()}async function lE(n,a,e,t){let r=e.getSelectedTasks(),i=await kl(r,s=>({metadata:{...s.metadata,[n]:void 0}}),a);po(i,`Cleared ${n}`),e.exitSelectionMode("operation_complete"),t()}async function v9(n,a,e,t){let r=e.getSelectedTasks(),i=await kl(r,s=>({metadata:{...s.metadata,priority:n}}),a);po(i,`Set priority to ${n}`),e.exitSelectionMode("operation_complete"),t()}async function y9(n,a,e){let t=a.getSelectedTasks(),r=await kl(t,i=>({metadata:{...i.metadata,priority:void 0}}),n);po(r,"Cleared priority"),a.exitSelectionMode("operation_complete"),e()}async function b9(n,a,e,t){let r=e.getSelectedTasks(),i=await kl(r,s=>({metadata:{...s.metadata,project:n}}),a);po(i,`Moved to project "${n}"`),e.exitSelectionMode("operation_complete"),t()}async function w9(n,a,e){let t=a.getSelectedTasks(),r=await kl(t,i=>({metadata:{...i.metadata,project:void 0}}),n);po(r,"Cleared project"),a.exitSelectionMode("operation_complete"),e()}async function T9(n,a,e){let t=a.getSelectedTasks(),r=0,i=0,s=[];for(let l of t)try{if(!n.writeAPI)throw new Error("WriteAPI not available");let d=await n.writeAPI.deleteTask({taskId:l.id,deleteChildren:!1});d.success?r++:(i++,s.push({taskId:l.id,taskContent:l.content,error:d.error||"Unknown error"}))}catch(d){i++,s.push({taskId:l.id,taskContent:l.content,error:d.message||"Unknown error"})}let o={successCount:r,failCount:i,errors:s,totalCount:t.length};po(o,"Deleted tasks"),a.exitSelectionMode("operation_complete"),e()}async function kl(n,a,e){if(!e.writeAPI)return{successCount:0,failCount:n.length,errors:n.map(o=>({taskId:o.id,taskContent:o.content,error:"WriteAPI not available"})),totalCount:n.length};let t=[],r=new Map;for(let o of n){let l=a(o);t.push({taskId:o.id,updates:l}),r.set(o.id,o.content)}let i=await e.writeAPI.updateTasksSequentially(t),s=i.errors.map(o=>({...o,taskContent:o.taskContent||r.get(o.taskId)||o.taskContent}));return{...i,errors:s}}function po(n,a){n.failCount===0?new lf.Notice(`\u2713 ${a}: ${n.successCount} tasks updated successfully`):(new lf.Notice(`\u26A0 ${a}: ${n.successCount} succeeded, ${n.failCount} failed`),n.errors.length>0&&console.error("Bulk operation errors:",n.errors))}async function x9(n){try{return(await ud(n,!0)).projects}catch(a){return console.warn("Could not get projects from cached data:",a),[]}}var Nb=require("obsidian"),C9={TODO:" ",DOING:"-","IN-PROGRESS":">",DONE:"x"},xu=class extends Nb.Component{constructor({task:e,plugin:t,onStatusChange:r,canInteract:i}){super();this.element=null;this.statusTextEl=null;this.isProcessing=!1;this.task=e,this.plugin=t,this.onStatusChange=r,this.canInteract=i}render(e){this.element&&this.element.detach(),this.element=e.createEl("span",{cls:"task-status-indicator",attr:{role:"button",tabindex:"0"}}),this.statusTextEl=this.element.createSpan({cls:"task-status-indicator__text"}),this.registerDomEvent(this.element,"click",t=>{t.preventDefault(),t.stopPropagation(),this.handleCycleRequest()}),this.registerDomEvent(this.element,"contextmenu",t=>{t.preventDefault(),t.stopPropagation(),this.handleContextMenu(t)}),this.registerDomEvent(this.element,"keydown",t=>{t instanceof KeyboardEvent&&((t.key==="Enter"||t.key===" ")&&(t.preventDefault(),this.handleCycleRequest()),t.key==="ContextMenu"&&(t.preventDefault(),this.handleContextMenu(t)),t.shiftKey&&t.key==="F10"&&(t.preventDefault(),this.handleContextMenu(t)))}),this.refreshDisplay()}updateTask(e){this.task=e,this.refreshDisplay()}cycle(){this.handleCycleRequest()}handleCycleRequest(){if(this.isProcessing||!this.isInteractionAllowed())return;let e=this.buildStatusContext();!e.hasCycle||!e.nextStatus||this.applyStatus(e.nextStatus).catch(()=>{})}handleContextMenu(e){if(this.isProcessing)return;let t=this.buildStatusContext();if(t.config.cycle.length===0)return;let r=new Nb.Menu,i=t.statusName?this.normalizeStatus(t.statusName):void 0;for(let s of t.config.cycle){let o=this.normalizeStatus(s);r.addItem(l=>{l.setTitle(s),i&&i===o&&l.setChecked(!0),l.onClick(()=>{this.applyStatus(s).catch(()=>{})})})}if(e instanceof MouseEvent)r.showAtMouseEvent(e);else if(this.element){let s=this.element.getBoundingClientRect();r.showAtPosition({x:s.left,y:s.bottom})}}async applyStatus(e){if(this.isProcessing||!this.isInteractionAllowed())return;let t=this.getStatusConfig(),r=this.getMarkForStatus(e,t);if(r===void 0){console.warn("[TaskStatusIndicator] Mark not found for status:",e);return}let i=this.task,s=this.buildUpdatedTask(r);this.task=s,this.isProcessing=!0,this.refreshDisplay();try{this.onStatusChange&&await this.onStatusChange(i,s)}catch(o){throw console.error("[TaskStatusIndicator] Failed to change task status",o),this.task=i,this.refreshDisplay(),o}finally{this.isProcessing=!1,this.refreshDisplay()}}refreshDisplay(){if(!this.element||!this.statusTextEl)return;let e=this.buildStatusContext(),t=e.nextStatus?`, next: ${e.nextStatus}`:"";this.statusTextEl.setText(e.displayName),this.element.setAttribute("data-status",e.statusSlug),this.element.setAttribute("data-status-mark",e.currentMark),this.element.setAttribute("aria-label",`Status: ${e.displayName}${t}`);let r=!e.hasCycle||!this.isInteractionAllowed()||this.isProcessing;this.element.setAttribute("aria-disabled",String(r)),this.element.setAttribute("aria-busy",this.isProcessing?"true":"false"),this.element.setAttribute("data-processing",this.isProcessing?"true":"false"),this.element.setAttribute("data-completed",e.isCompleted?"true":"false"),this.element.toggleClass("is-processing",this.isProcessing),this.element.toggleClass("is-disabled",r),this.element.toggleClass("is-completed",e.isCompleted)}buildStatusContext(){var l;let e=this.getStatusConfig(),t=this.getCurrentMark(e),r=this.findStatusNameForMark(t,e),i=(l=r!=null?r:this.deriveStatusLabelFromMark(t))!=null?l:t.trim().length>0?t:"Not Started",s=this.getActiveCycle(e),o=this.getNextStatus(r,s,e);return{config:e,currentMark:t,statusName:r,displayName:i,nextStatus:o,statusSlug:this.slugifyStatus(i),isCompleted:this.isCompletedMark(t),hasCycle:s.length>0}}getStatusConfig(){let e=this.plugin.settings,t=Array.isArray(e.taskStatusCycle)&&e.taskStatusCycle.length>0,r=e.taskStatusMarks&&Object.keys(e.taskStatusMarks).length>0?e.taskStatusMarks:C9;return{cycle:t?[...e.taskStatusCycle]:Object.keys(r),marks:{...r},excludeMarksFromCycle:Array.isArray(e.excludeMarksFromCycle)?[...e.excludeMarksFromCycle]:[]}}getCurrentMark(e){var i;let t=(i=this.task.status)!=null?i:"",r=this.normalizeStatus(t);for(let[,s]of Object.entries(e.marks))if(s&&(s===t||s.toLowerCase()===t.toLowerCase()))return s;for(let[s,o]of Object.entries(e.marks))if(this.normalizeStatus(s)===r)return o;return t.length===1,t}getMarkForStatus(e,t){let r=this.normalizeStatus(e);for(let[i,s]of Object.entries(t.marks))if(this.normalizeStatus(i)===r)return s}findStatusNameForMark(e,t){let r=e.toLowerCase();for(let[i,s]of Object.entries(t.marks))if(s===e||s.toLowerCase()===r||this.normalizeStatus(i)===this.normalizeStatus(e))return i}deriveStatusLabelFromMark(e){if(!e)return;let t=this.plugin.settings.taskStatuses;if(!t)return;let r=e.toLowerCase();for(let[i,s]of Object.entries(t))if(s.split("|").map(l=>l.trim()).filter(Boolean).some(l=>l===e||l.toLowerCase()===r))return this.formatStatusKey(i)}getActiveCycle(e){let t=e.excludeMarksFromCycle.map(r=>this.normalizeStatus(r));return e.cycle.filter(r=>!t.includes(this.normalizeStatus(r)))}getNextStatus(e,t,r){if(t.length===0)return;let i=e?this.normalizeStatus(e):void 0,s=-1;if(i)s=t.findIndex(l=>this.normalizeStatus(l)===i);else{let l=this.task.status;if(l)for(let d=0;d<t.length;d++){let u=t[d],p=this.getMarkForStatus(u,r);if(p===l||p&&p.toLowerCase()===l.toLowerCase()){s=d;break}}}let o=(s+1)%t.length;return t[o]}normalizeStatus(e){return e.trim().toLowerCase()}slugifyStatus(e){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"unknown"}formatStatusKey(e){return e.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/[-_]+/g," ").split(" ").filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}isCompletedMark(e){var t;if(!e)return!1;try{let r=e.toLowerCase();if(String(((t=this.plugin.settings.taskStatuses)==null?void 0:t.completed)||"x").split("|").map(l=>l.trim().toLowerCase()).filter(Boolean).includes(r))return!0;let o=this.plugin.settings.taskStatuses;if(o){for(let[l,d]of Object.entries(o))if(d.split("|").map(p=>p.trim().toLowerCase()).filter(Boolean).includes(r))return l.toLowerCase()==="completed"}}catch(r){console.error("[TaskStatusIndicator] Failed to evaluate completed mark",r)}return!1}buildUpdatedTask(e){let t={...this.task.metadata},r=this.isCompletedMark(e);r?t.completedDate||(t.completedDate=Date.now()):t.completedDate&&delete t.completedDate;let i=typeof this.task.originalMarkdown=="string"?this.task.originalMarkdown.replace(/\[(.)]/,`[${e}]`):this.task.originalMarkdown;return{...this.task,status:e,completed:r,originalMarkdown:i,metadata:t}}isInteractionAllowed(){return!(this.canInteract&&!this.canInteract())}};var ci=class ci extends ln.Component{constructor(e,t,r,i,s){super();this.task=e;this.viewMode=t;this.app=r;this.plugin=i;this.statusIndicator=null;this.checkboxInput=null;this.timerEl=null;this.hasActiveTimerInterval=!1;this.selectionManager=null;this.isTaskSelectedState=!1;this.selectionManager=s||null,this.element=createEl("div",{cls:"task-item",attr:{"data-task-id":this.task.id}}),this.settings=this.plugin.settings,ci.editorManager||(ci.editorManager=new Tu(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=ci.editorManager)==null||i.releaseEditor(this.task.id)},onMetadataEditFinished:(t,r,i)=>{var s;this.task=r,this.updateTaskDisplay(),(s=ci.editorManager)==null||s.releaseEditor(this.task.id)},useEmbeddedEditor:!0};return ci.editorManager.getEditor(this.task,e)}isCurrentlyEditing(){var e;return((e=ci.editorManager)==null?void 0:e.hasActiveEditor(this.task.id))||!1}onload(){this.selectionManager&&(this.registerEvent(this.app.workspace.on("task-genius:selection-changed",()=>{this.updateSelectionVisualState()})),ln.Platform.isMobile&&this.selectionManager.longPressDetector.startDetection(this.element,{onLongPress:()=>{var e;(e=this.selectionManager)==null||e.enterSelectionMode(),this.handleMultiSelect()}})),this.registerDomEvent(this.element,"contextmenu",e=>{if(this.task,this.selectionManager&&this.selectionManager.getSelectedCount()>1){e.preventDefault(),e.stopPropagation(),Ob(e,this.app,this.plugin,this.selectionManager,()=>{}).catch(t=>{console.error("Failed to show bulk operations menu:",t)});return}this.onTaskContextMenu&&this.onTaskContextMenu(e,this.task)}),this.renderTaskItem(),this.updateSelectionVisualState()}renderTaskItem(){this.statusIndicator&&(this.removeChild(this.statusIndicator),this.statusIndicator=null),this.checkboxInput=null,this.element.empty(),this.task.completed&&this.element.classList.add("task-completed");let e=createEl("div",{cls:"task-checkbox"},r=>{let i=gt(this.task.status,this.task,r);this.checkboxInput=i,this.registerDomEvent(i,"click",s=>{s.stopPropagation(),!this.plugin.settings.enableIndicatorWithCheckbox&&this.statusIndicator?this.statusIndicator.cycle():(this.onTaskCompleted&&this.onTaskCompleted(this.task),this.task.status===" "&&(i.checked=!0,i.dataset.task="x"))})});if(this.element.appendChild(e),this.statusIndicator=new xu({task:this.task,plugin:this.plugin,canInteract:()=>!this.isCurrentlyEditing(),onStatusChange:async(r,i)=>{var s;this.onTaskUpdate&&await this.onTaskUpdate(r,i),this.updateTask(i),this.checkboxInput&&(this.checkboxInput.dataset.task=i.status,this.checkboxInput.checked=i.completed),(s=this.statusIndicator)==null||s.updateTask(i)}}),this.addChild(this.statusIndicator),this.statusIndicator.load(),this.plugin.settings.enableIndicatorWithCheckbox){let r=this.element.createDiv({cls:"task-status-indicator-wrapper"});this.statusIndicator.render(r)}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();let t=this.task.metadata.priority;if(t){let r;if(typeof t=="number")r=t;else switch(t){case"low":r=2;break;case"medium":r=3;break;case"high":r=4;break;case"highest":r=5;break;case"lowest":r=1;break;default:r=parseInt(t,10)||1;break}let i=ci.PRIORITY_CONFIG.find(d=>d.value===r),s=["task-priority"];i&&s.push(`priority-${i.class}`),this.plugin.settings.enableInlineEditor&&s.push("task-priority-clickable");let o=createDiv({cls:s}),l="!".repeat(r);if(o.textContent=l,this.plugin.settings.enableInlineEditor){let d=c("Click to set priority");o.setAttribute("aria-label",d),this.registerDomEvent(o,"click",u=>{u.stopPropagation(),this.isCurrentlyEditing()||this.showPriorityMenu(o)})}this.element.appendChild(o)}else if(this.plugin.settings.enableInlineEditor){let r=this.element.createEl("div",{cls:"add-priority-btn",attr:{"aria-label":c("Click to set priority"),role:"button"}});this.registerDomEvent(r,"click",i=>{i.stopPropagation(),this.isCurrentlyEditing()||this.showPriorityMenu(r)})}this.registerDomEvent(this.element,"click",r=>{if(this.selectionManager&&r.shiftKey){r.stopPropagation(),this.handleMultiSelect();return}if(this.selectionManager&&this.selectionManager.isSelectionMode){r.stopPropagation(),this.handleMultiSelect();return}this.onTaskSelected&&this.onTaskSelected(this.task)})}renderMetadata(){var e;this.timerEl=null,this.metadataEl.empty(),this.viewMode==="working-on"&&((e=this.plugin.settings.taskTimer)!=null&&e.enabled)&&this.renderTimerMetadata(),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()}renderTimerMetadata(){var t;let e=(t=this.task.metadata)==null?void 0:t.id;if(e)try{let r=new Ft(this.plugin.settings.taskTimer),i=r.getTimerByFileAndBlock(this.task.filePath,e);if(!i)return;let s=r.getCurrentDuration(i.taskId),o=r.formatDuration(s);this.timerEl=this.metadataEl.createDiv({cls:"task-timer-meta"}),this.timerEl.createSpan({cls:"task-timer-duration",text:"\u23F1 "+o}),this.timerEl.createSpan({cls:"task-timer-status",text:` (${c(i.status==="running"?"Running":"Paused")})`}),i.status==="running"&&this.startTimerUpdateInterval()}catch(r){console.warn("[TaskListItem] Failed to render timer metadata",r)}}startTimerUpdateInterval(){this.hasActiveTimerInterval||(this.hasActiveTimerInterval=!0,this.registerInterval(window.setInterval(()=>{this.updateTimerDisplay()},1e3)))}updateTimerDisplay(){var t;let e=(t=this.task.metadata)==null?void 0:t.id;if(!(!e||!this.timerEl))try{let r=new Ft(this.plugin.settings.taskTimer),i=r.getTimerByFileAndBlock(this.task.filePath,e);if(!i){let u=this.timerEl.querySelector(".task-timer-status");u&&(u.textContent=` (${c("Stopped")})`,u.addClass("task-timer-stopped"));return}let s=r.getCurrentDuration(i.taskId),o=r.formatDuration(s),l=this.timerEl.querySelector(".task-timer-duration");l&&(l.textContent="\u23F1 "+o);let d=this.timerEl.querySelector(".task-timer-status");d&&(d.textContent=` (${c(i.status==="running"?"Running":"Paused")})`,d.removeClass("task-timer-stopped"))}catch(r){console.warn("[TaskListItem] Failed to update timer display",r)}}renderDateMetadata(e,t){let r=this.metadataEl.createEl("div",{cls:["task-date",`task-${e}-date`]}),i=new Date(t),s=new Date(i);s.setHours(0,0,0,0);let o="",l="";if(e==="due"){let d=new Date;d.setHours(0,0,0,0);let u=new Date(d);u.setDate(u.getDate()+1),s.getTime()<d.getTime()?(o=c("Overdue")+(this.settings.useRelativeTimeForDate?" | "+ss(i):""),l="task-overdue"):s.getTime()===d.getTime()?(o=this.settings.useRelativeTimeForDate&&ss(i)||"Today",l="task-due-today"):s.getTime()===u.getTime()?(o=this.settings.useRelativeTimeForDate&&ss(i)||"Tomorrow",l="task-due-tomorrow"):o=i.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}else o=this.settings.useRelativeTimeForDate?ss(i):i.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"});l&&r.classList.add(l),r.textContent=o,r.setAttribute("aria-label",i.toLocaleDateString()),this.plugin.settings.enableInlineEditor&&this.registerDomEvent(r,"click",d=>{if(d.stopPropagation(),!this.isCurrentlyEditing()){let u=this.formatDateForInput(i),p=e==="due"?"dueDate":e==="scheduled"?"scheduledDate":e==="start"?"startDate":e==="cancelled"?"cancelledDate":e==="completed"?"completedDate":null;p&&this.getInlineEditor().showMetadataEditor(r,p,u)}})}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,ln.setIcon)(t,"plus"),this.registerDomEvent(t,"click",r=>{r.stopPropagation(),this.showMetadataMenu(t)})}showMetadataMenu(e){let t=this.getInlineEditor(),r=new ln.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 d=e.parentElement.createDiv({cls:"temp-metadata-editor-container"});t.showMetadataEditor(d,o.key)})})}),r.showAtPosition({x:e.getBoundingClientRect().left,y:e.getBoundingClientRect().bottom})}showPriorityMenu(e){let t=new ln.Menu;ci.PRIORITY_CONFIG.forEach(i=>{t.addItem(s=>{s.setTitle(c(i.key)).setIcon(i.icon).onClick(async()=>{await this.updateTaskPriority(i.value)})})}),t.addItem(i=>{i.setTitle(c("Clear priority")).setIcon("minus").onClick(async()=>{await this.updateTaskPriority(null)})});let r=e.getBoundingClientRect();t.showAtPosition({x:r.left,y:r.bottom})}async updateTaskPriority(e){let t={...this.task.metadata};e===null?delete t.priority:t.priority=e;let r={...this.task,metadata:t};try{this.onTaskUpdate&&await this.onTaskUpdate(this.task,r),this.updateTask(r)}catch(i){console.error("Failed to update task priority:",i)}}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 la(this.app,this.contentEl,this.task.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.task.originalMarkdown||"\u200B"),this.registerContentClickHandler(),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=this.detectMultiLineContent();this.contentMetadataContainer.toggleClass("multi-line-content",e),this.contentMetadataContainer.toggleClass("single-line-content",!e)}detectMultiLineContent(){if(!this.contentEl)return!0;let e=this.contentEl.textContent||"";if(e.includes(`
`)||e.includes("\r"))return!0;let t=window.getComputedStyle(this.contentEl),r=parseFloat(t.fontSize)||16,i=parseFloat(t.lineHeight)||r*1.4,o=this.contentEl.scrollHeight>i*1.1;return this.contentEl.querySelector("br, div, p, ul, ol, li, blockquote")?!0:o}registerContentClickHandler(){this.registerDomEvent(this.contentEl,"click",async e=>{ln.Keymap.isModifier(e,"Shift")||(ln.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){var d;let t=this.task;this.task=e;let r=!1,i=!1,s=t.originalMarkdown!==e.originalMarkdown||t.content!==e.content,o=JSON.stringify(t.metadata)!==JSON.stringify(e.metadata),l=t.completed!==e.completed;this.checkboxInput&&(this.checkboxInput.dataset.task=e.status,this.checkboxInput.checked=!!e.completed),(d=this.statusIndicator)==null||d.updateTask(e),l&&this.element.toggleClass("task-completed",e.completed),s&&this.renderMarkdown(),o&&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")}handleMultiSelect(){this.selectionManager&&(this.selectionManager.toggleSelection(this.task.id),this.updateSelectionVisualState())}updateSelectionVisualState(){if(!this.selectionManager)return;let e=this.selectionManager.isTaskSelected(this.task.id);this.isTaskSelectedState=e,e?this.element.classList.add("task-item-selected"):this.element.classList.remove("task-item-selected")}onunload(){var e;this.timerEl=null,(e=ci.editorManager)!=null&&e.hasActiveEditor(this.task.id)&&ci.editorManager.releaseEditor(this.task.id),this.statusIndicator&&(this.removeChild(this.statusIndicator),this.statusIndicator=null),this.checkboxInput=null,this.element.detach()}};ci.editorManager=null,ci.PRIORITY_CONFIG=[{value:5,key:"Highest",icon:"triangle",class:"highest"},{value:4,key:"High",icon:"alert-triangle",class:"high"},{value:3,key:"Medium",icon:"minus",class:"medium"},{value:2,key:"Low",icon:"chevron-down",class:"low"},{value:1,key:"Lowest",icon:"chevrons-down",class:"lowest"}];var Oc=ci;var ui=require("obsidian");z();var vl=require("obsidian");z();var GN=(l=>(l.Overdue="overdue",l.DueSoon="due_soon",l.InProgress="/",l.Incomplete=" ",l.Forwarded=">",l.Question="?",l.Completed="x",l.Cancelled="-",l))(GN||{});function S9(n){let a=n.match(/^(\s*)/);return a?a[1].length:0}function D9(n,a=0,e,t,r){let i=n.split(`
`),s=[],o={},l=[];return i.forEach((d,u)=>{let p=a+u,m=al(e,d,p+1,t,r);if(m){let h=S9(d),g=m.status,f=new Date;f.setHours(0,0,0,0);let k=f.getTime();!m.completed&&m.status!=="-"&&m.metadata.dueDate&&m.metadata.dueDate<k?g="overdue":g=(Object.values(GN).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:h,children:[],calculatedStatus:g,metadata:m.metadata};for(o[p]=v;l.length>0&&h<=l[l.length-1].indentation;)l.pop();if(l.length>0){let y=l[l.length-1];y.children.push(v),v.parent=y}else s.push(v);l.push(v)}}),s}function KN(n){var p,m,h,g;let a={},e=1;a.overdue=e++;let{cycle:t,marks:r,excludeMarksFromCycle:i}=ca(n),s=(((p=n.taskStatuses)==null?void 0:p.completed)||"x|X").split("|"),o=(((m=n.taskStatuses)==null?void 0:m.abandoned)||"-").split("|"),l=[],d=[],u=[];for(let f of t){let k=r[f];k&&!i.includes(f)&&(s.includes(k)?d.push(k):o.includes(k)?u.push(k):(k in a||(a[k]=e++),l.push(k)))}d.forEach(f=>{f in a||(a[f]=98)}),u.forEach(f=>{f in a||(a[f]=99)});for(let f in n.taskStatuses)(n.taskStatuses[f]||"").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[" "]=(h=a[" "])!=null?h:10),"x"in a||(a.x=(g=a.x)!=null?g:98),a}function QN(n,a,e,t){var m,h,g,f;let r=(k,v)=>{if(k==null)return;let y=k[v];return y!=null?y:k.metadata?k.metadata[v]:void 0},i=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}),s={status:(k,v,y)=>{var C,S;let b=k.calculatedStatus||k.status||"",w=v.calculatedStatus||v.status||"",T=(C=t[b])!=null?C:1e3,x=(S=t[w])!=null?S:1e3;if(typeof T=="number"&&typeof x=="number"){let D=T-x;return y==="asc"?D:-D}else return console.warn(`Non-numeric status order values detected: ${T}, ${x}`),0},completed:(k,v,y)=>{let b=!!k.completed,w=!!v.completed;if(b===w)return 0;let T=b?1:-1;return y==="asc"?T:-T},priority:(k,v,y)=>{let b=r(k,"priority"),w=r(v,"priority"),T=b!=null&&b>0,x=w!=null&&w>0;if(!T&&!x)return 0;if(T)if(x){let C=b-w;return y==="asc"?C:-C}else return-1;else return 1},dueDate:(k,v,y)=>o("dueDate",k,v,y),startDate:(k,v,y)=>o("startDate",k,v,y),scheduledDate:(k,v,y)=>o("scheduledDate",k,v,y),createdDate:(k,v,y)=>o("createdDate",k,v,y),completedDate:(k,v,y)=>o("completedDate",k,v,y),content:(k,v,y)=>{var x,C;let b=((x=k.content)==null?void 0:x.trim())||null,w=((C=v.content)==null?void 0:C.trim())||null;if(!b&&!w)return 0;if(!b)return 1;if(!w)return-1;let T=i.compare(b,w);return y==="asc"?T:-T},tags:(k,v,y)=>{let b=r(k,"tags"),w=r(v,"tags"),T=Array.isArray(b)&&b.length>0?b.join(", "):null,x=Array.isArray(w)&&w.length>0?w.join(", "):null;if(!T&&!x)return 0;if(!T)return 1;if(!x)return-1;let C=i.compare(T,x);return y==="asc"?C:-C},project:(k,v,y)=>{var x,C;let b=((x=r(k,"project"))==null?void 0:x.trim())||null,w=((C=r(v,"project"))==null?void 0:C.trim())||null;if(!b&&!w)return 0;if(!b)return 1;if(!w)return-1;let T=i.compare(b,w);return y==="asc"?T:-T},context:(k,v,y)=>{var x,C;let b=((x=r(k,"context"))==null?void 0:x.trim())||null,w=((C=r(v,"context"))==null?void 0:C.trim())||null;if(!b&&!w)return 0;if(!b)return 1;if(!w)return-1;let T=i.compare(b,w);return y==="asc"?T:-T},recurrence:(k,v,y)=>{var x,C;let b=((x=r(k,"recurrence"))==null?void 0:x.trim())||null,w=((C=r(v,"recurrence"))==null?void 0:C.trim())||null;if(!b&&!w)return 0;if(!b)return 1;if(!w)return-1;let T=i.compare(b,w);return y==="asc"?T:-T},filePath:(k,v,y)=>{var x,C;let b=((x=k.filePath)==null?void 0:x.trim())||null,w=((C=v.filePath)==null?void 0:C.trim())||null;if(!b&&!w)return 0;if(!b)return 1;if(!w)return-1;let T=i.compare(b,w);return y==="asc"?T:-T},lineNumber:(k,v,y)=>(k.line||0)-(v.line||0)};function o(k,v,y,b){let w=r(v,k),T=r(y,k),x=w!=null,C=T!=null,S=0;if(!x&&!C)S=0;else if(!x)S=1;else if(!C)S=-1;else{let D=w,E=T,R=Date.now(),I=D<R,H=E<R;I&&H?S=D-E:I&&!H?S=-1:!I&&H?S=1:S=D-E}return b==="asc"?S:-S}for(let k of e)if(k.field in s){let v=s[k.field],y=v(n,a,k.order);if(y!==0)return y}let l=(m=n.filePath)!=null?m:"",d=(h=a.filePath)!=null?h:"";if(l!==d)return l.localeCompare(d);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=(g=n.id)!=null?g:"",p=(f=a.id)!=null?f:"";return u!==p?u.localeCompare(p):0}function E9(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 pa(n,a,e){let t=KN(e),r=n.map(i=>i.calculatedStatus?i:{...i,calculatedStatus:i.status||""});return r.sort((i,s)=>QN(i,s,a,t)),r}function XN(n,a,e){let t=KN(e);n.sort((r,i)=>QN(r,i,a,t));for(let r of n)r.children&&r.children.length>0&&(r.children=XN(r.children,a,e));return n}function cE(n,a,e=!1){let t=a.app,r=t.workspace.getActiveFile();if(!r)return new vl.Notice("Sort Tasks: No active file found."),null;let i=r.path,s=t.metadataCache.getFileCache(r);if(!s)return new vl.Notice("Sort Tasks: Metadata cache not available."),null;let o=n.state.doc,l=a.settings,d=l.preferMetadataFormat,u=l.sortCriteria||xe.sortCriteria;if(!l.sortTasks||!u||u.length===0)return new vl.Notice(c("Task sorting is disabled or no sort criteria are defined in settings.")),null;let p=0,m=o.lines-1,h="full document";if(e)h="full document (forced)";else{let E=n.state.selection.main.head,R=o.lineAt(E).number-1,I=s.headings||[],H=null,U=o.lines;for(let q=I.length-1;q>=0;q--)if(I[q].position.start.line<=R){H=I[q],p=H.position.start.line;for(let L=q+1;L<I.length;L++)if(I[L].level<=H.level){U=I[L].position.start.line;break}h=`heading section "${H.heading}"`;break}H?m=U-1:(p=0,m=o.lines-1,h="full document (cursor not in heading)"),m<p&&(m=p)}let g=o.line(p+1).from,f=o.line(m+1).to;if(g>f)return new vl.Notice(`Sort Tasks: Invalid range calculated for ${h}.`),null;let k=o.sliceString(g,f),v=D9(k,p,i,d,a);if(v.length===0){let E=`Sort Tasks: No tasks found in the ${h} (Lines ${p+1}-${m+1}) to sort.`;return new vl.Notice(E),null}let y=E9(v);for(let E=0;E<y.length;E++)y[E]=XN(y[E],u,l);v.length=0;for(let E of y)for(let R of E)v.push(R);let b=k.split(`
`),w=[...b],T=new Set,x=new Set;for(let E of v){let R=E.lineNumber-p;R>=0&&R<b.length&&x.add(R)}for(let E of y){let H=function(q){I.push(q.originalMarkdown);let L=q.lineNumber-p;if(L>=0&&L<b.length&&T.add(L),q.children&&q.children.length>0)for(let _ of q.children)H(_)},R=Number.MAX_SAFE_INTEGER;for(let q of E){let L=q.lineNumber-p;L>=0&&L<b.length&&L<R&&(R=L)}if(R===Number.MAX_SAFE_INTEGER)continue;let I=[];for(let q of E)q.parent||H(q);let U=R;for(let q of I)w[U++]=q}let C=[];for(let E=0;E<w.length;E++)(!x.has(E)||T.has(E))&&C.push(w[E]);let S=C.join(`
`);if(k===S){let E=`Sort Tasks: Tasks are already sorted in the ${h} (Lines ${p+1}-${m+1}).`;return new vl.Notice(E),null}let D=`Sort Tasks: Sorted tasks in the ${h} (Lines ${p+1}-${m+1}).`;return new vl.Notice(D),S}var di=class di extends ui.Component{constructor(e,t,r,i=0,s=[],o,l,d){super();this.app=r;this.childTasks=s;this.plugin=l;this.isSelected=!1;this.isExpanded=!0;this.indentLevel=0;this.childComponents=[];this.statusIndicator=null;this.timerEl=null;this.hasActiveTimerInterval=!1;this.selectionManager=null;this.isTaskSelectedState=!1;this.task=e,this.viewMode=t,this.indentLevel=i,this.taskMap=o,this.selectionManager=d||null,di.editorManager||(di.editorManager=new Tu(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.selectionManager&&(this.registerEvent(this.app.workspace.on("task-genius:selection-changed",()=>{this.updateSelectionVisualState()})),ui.Platform.isMobile&&this.selectionManager.longPressDetector.startDetection(this.element,{onLongPress:()=>{var e;(e=this.selectionManager)==null||e.enterSelectionMode(),this.handleMultiSelect()}})),this.registerDomEvent(this.element,"contextmenu",e=>{if(e.preventDefault(),e.stopPropagation(),this.selectionManager&&this.selectionManager.getSelectedCount()>1){Ob(e,this.app,this.plugin,this.selectionManager,()=>{}).catch(t=>{console.error("Failed to show bulk operations menu:",t)});return}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=>{if(e.target===this.parentContainer||this.parentContainer.contains(e.target))if(e.target.classList.contains("task-checkbox"))e.stopPropagation(),this.toggleTaskCompletion();else if(e.target.classList.contains("task-expand-toggle"))e.stopPropagation();else{if(this.selectionManager&&e.shiftKey){e.stopPropagation(),this.handleMultiSelect();return}if(this.selectionManager&&this.selectionManager.isSelectionMode){e.stopPropagation(),this.handleMultiSelect();return}this.selectTask()}}),this.updateSelectionVisualState()}renderTaskContent(){if(this.statusIndicator&&(this.removeChild(this.statusIndicator),this.statusIndicator=null),this.parentContainer.empty(),this.parentContainer.classList.toggle("completed",this.task.completed),this.parentContainer.classList.toggle("selected",this.isSelected),this.indentLevel>0){let s=this.parentContainer.createDiv({cls:"task-indent"});s.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,ui.setIcon)(this.toggleEl,this.isExpanded?"chevron-down":"chevron-right"),this.registerDomEvent(this.toggleEl,"click",s=>{s.stopPropagation(),this.toggleExpand()}));let e=this.parentContainer.createDiv({cls:"task-checkbox"},s=>{let o=gt(this.task.status,this.task,s);this.registerDomEvent(o,"click",l=>{l.stopPropagation(),!this.plugin.settings.enableIndicatorWithCheckbox&&this.statusIndicator?this.statusIndicator.cycle():(this.onTaskCompleted&&this.onTaskCompleted(this.task),this.task.status===" "&&(o.checked=!0,o.dataset.task="x"))})});if(this.statusIndicator=new xu({task:this.task,plugin:this.plugin,canInteract:()=>!this.isCurrentlyEditing(),onStatusChange:async(s,o)=>{this.onTaskUpdate&&await this.onTaskUpdate(s,o),this.updateTask(o)}}),this.addChild(this.statusIndicator),this.statusIndicator.load(),this.plugin.settings.enableIndicatorWithCheckbox){let s=this.parentContainer.createDiv({cls:"task-status-indicator-wrapper"});this.statusIndicator.render(s)}let 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"});this.renderMetadata(r);let i=this.task.metadata.priority;if(i){let s;if(typeof i=="number")s=i;else switch(i){case"low":s=2;break;case"medium":s=3;break;case"high":s=4;break;case"highest":s=5;break;case"lowest":s=1;break;default:s=parseInt(i,10)||1;break}let o=ri(s),l=["task-priority"];o&&l.push(`priority-${o}`),this.plugin.settings.enableInlineEditor&&l.push("task-priority-clickable");let d=createDiv({cls:l}),u="!".repeat(s);if(d.textContent=u,this.plugin.settings.enableInlineEditor){let p=c("Click to set priority");d.setAttribute("aria-label",p),this.registerDomEvent(d,"click",m=>{m.stopPropagation(),this.isCurrentlyEditing()||this.showPriorityMenu(d)})}r.appendChild(d)}else if(this.plugin.settings.enableInlineEditor){let s=r.createDiv({cls:"add-priority-btn",attr:{"aria-label":c("Click to set priority"),role:"button"}});this.registerDomEvent(s,"click",o=>{o.stopPropagation(),this.isCurrentlyEditing()||this.showPriorityMenu(s)})}}renderMetadata(e){var t;this.timerEl=null,e.empty(),this.viewMode==="working-on"&&((t=this.plugin.settings.taskTimer)!=null&&t.enabled)&&this.renderTimerMetadata(e),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 d,u,p,m;let i=e.createEl("div",{cls:["task-date",`task-${t}-date`]}),s=new Date(r),o="",l="";if(t==="due"){let h=new Date;h.setHours(0,0,0,0);let g=new Date(h);g.setDate(g.getDate()+1),s.getTime()<h.getTime()?(o=c("Overdue")+((d=this.plugin.settings)!=null&&d.useRelativeTimeForDate?" | "+ss(s):""),l="task-overdue"):s.getTime()===h.getTime()?(o=(u=this.plugin.settings)!=null&&u.useRelativeTimeForDate&&ss(s)||"Today",l="task-due-today"):s.getTime()===g.getTime()?(o=(p=this.plugin.settings)!=null&&p.useRelativeTimeForDate&&ss(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?ss(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",h=>{if(h.stopPropagation(),!this.isCurrentlyEditing()){let g=this.getInlineEditor(),f=this.formatDateForInput(s),k=t==="due"?"dueDate":t==="scheduled"?"scheduledDate":t==="start"?"startDate":t==="cancelled"?"cancelledDate":t==="completed"?"completedDate":null;k&&g.showMetadataEditor(i,k,f)}})}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 d=this.getInlineEditor(),u=((l=this.task.metadata.tags)==null?void 0:l.join(", "))||"";d.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,ui.setIcon)(r,"plus"),this.registerDomEvent(r,"click",i=>{i.stopPropagation(),this.showMetadataMenu(r)})}renderTimerMetadata(e){var r;let t=(r=this.task.metadata)==null?void 0:r.id;if(t)try{let i=new Ft(this.plugin.settings.taskTimer),s=i.getTimerByFileAndBlock(this.task.filePath,t);if(!s)return;let o=i.getCurrentDuration(s.taskId),l=i.formatDuration(o);this.timerEl=e.createDiv({cls:"task-timer-meta"}),this.timerEl.createSpan({cls:"task-timer-duration",text:"\u23F1 "+l}),this.timerEl.createSpan({cls:"task-timer-status",text:` (${c(s.status==="running"?"Running":"Paused")})`}),s.status==="running"&&this.startTimerUpdateInterval()}catch(i){console.warn("[TaskTreeItem] Failed to render timer metadata",i)}}startTimerUpdateInterval(){this.hasActiveTimerInterval||(this.hasActiveTimerInterval=!0,this.registerInterval(window.setInterval(()=>{this.updateTimerDisplay()},1e3)))}updateTimerDisplay(){var t;let e=(t=this.task.metadata)==null?void 0:t.id;if(!(!e||!this.timerEl))try{let r=new Ft(this.plugin.settings.taskTimer),i=r.getTimerByFileAndBlock(this.task.filePath,e);if(!i){let u=this.timerEl.querySelector(".task-timer-status");u&&(u.textContent=` (${c("Stopped")})`,u.addClass("task-timer-stopped"));return}let s=r.getCurrentDuration(i.taskId),o=r.formatDuration(s),l=this.timerEl.querySelector(".task-timer-duration");l&&(l.textContent="\u23F1 "+o);let d=this.timerEl.querySelector(".task-timer-status");d&&(d.textContent=` (${c(i.status==="running"?"Running":"Paused")})`,d.removeClass("task-timer-stopped"))}catch(r){console.warn("[TaskTreeItem] Failed to update timer display",r)}}showMetadataMenu(e){let t=this.getInlineEditor(),r=new ui.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 d=e.parentElement.createDiv({cls:"temp-metadata-editor-container"});t.showMetadataEditor(d,o.key)})})}),r.showAtPosition({x:e.getBoundingClientRect().left,y:e.getBoundingClientRect().bottom})}showPriorityMenu(e){let t=new ui.Menu;di.PRIORITY_CONFIG.forEach(i=>{t.addItem(s=>{s.setTitle(c(i.key)).setIcon(i.icon).onClick(async()=>{await this.updateTaskPriority(i.value)})})}),t.addItem(i=>{i.setTitle(c("Clear priority")).setIcon("minus").onClick(async()=>{await this.updateTaskPriority(null)})});let r=e.getBoundingClientRect();t.showAtPosition({x:r.left,y:r.bottom})}async updateTaskPriority(e){let t={...this.task.metadata};e===null?delete t.priority:t.priority=e;let r={...this.task,metadata:t};try{this.onTaskUpdate&&await this.onTaskUpdate(this.task,r),this.updateTask(r)}catch(i){console.error("Failed to update task priority:",i)}}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 la(this.app,this.contentEl,this.task.filePath),this.addChild(this.markdownRenderer),this.markdownRenderer.render(this.task.originalMarkdown),this.registerContentClickHandler(),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=this.detectMultiLineContent();this.contentMetadataContainer.toggleClass("multi-line-content",e),this.contentMetadataContainer.toggleClass("single-line-content",!e)}detectMultiLineContent(){if(!this.contentEl)return!0;let e=this.contentEl.textContent||"";if(e.includes(`
`)||e.includes("\r"))return!0;let t=window.getComputedStyle(this.contentEl),r=parseFloat(t.fontSize)||16,i=parseFloat(t.lineHeight)||r*1.4,o=this.contentEl.scrollHeight>i*1.1;return this.contentEl.querySelector("br, div, p, ul, ol, li, blockquote")?!0:o}registerContentClickHandler(){this.registerDomEvent(this.contentEl,"click",async e=>{ui.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=xt(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=pa([...i],s,this.plugin.settings):i=[...i].sort((o,l)=>{var y,b,w,T,x,C,S,D;let d=o.completed,u=l.completed;if(d!==u)return d?1:-1;let p=(y=o.metadata.priority)!=null?y:0,m=(b=l.metadata.priority)!=null?b:0;if(p!==m)return m-p;let h=(w=o.metadata.dueDate)!=null?w:1/0,g=(T=l.metadata.dueDate)!=null?T:1/0;if(h!==g)return h-g;let k=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}).compare((x=o.content)!=null?x:"",(C=l.content)!=null?C:"");if(k!==0)return k;let v=(o.filePath||"").localeCompare(l.filePath||"");return v!==0?v:((S=o.line)!=null?S:0)-((D=l.line)!=null?D:0)}),i.forEach(o=>{let l=[];this.taskMap.forEach(u=>{u.metadata.parent===o.id&&l.push(u)});let d=new di(o,this.viewMode,this.app,this.indentLevel+1,l,this.taskMap,this.plugin,this.selectionManager||void 0);d.onTaskSelected=u=>{this.onTaskSelected&&this.onTaskSelected(u)},d.onTaskCompleted=u=>{this.onTaskCompleted&&this.onTaskCompleted(u)},d.onToggleExpand=(u,p)=>{this.onToggleExpand&&this.onToggleExpand(u,p)},d.onTaskContextMenu=(u,p)=>{this.onTaskContextMenu&&this.onTaskContextMenu(u,p)},d.onTaskUpdate=async(u,p)=>{this.onTaskUpdate&&await this.onTaskUpdate(u,p)},this.addChild(d),d.load(),this.childrenContainer.appendChild(d.element),this.childComponents.push(d)})}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,ui.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){var r;let t=this.task;if(this.task=e,this.renderTaskContent(),(r=this.statusIndicator)==null||r.updateTask(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)){let i=this.parentContainer.querySelector(".task-metadata");i&&this.renderMetadata(i)}}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,ui.setIcon)(this.toggleEl,this.isExpanded?"chevron-down":"chevron-right"),this.isExpanded?this.childrenContainer.show():this.childrenContainer.hide())}handleMultiSelect(){this.selectionManager&&(this.selectionManager.toggleSelection(this.task.id),this.updateSelectionVisualState())}updateSelectionVisualState(){var t,r,i,s;if(!this.selectionManager)return;let e=this.selectionManager.isTaskSelected(this.task.id);this.isTaskSelectedState=e,e?((t=this.element)==null||t.classList.add("task-item-selected"),(r=this.parentContainer)==null||r.classList.add("task-item-selected")):((i=this.element)==null||i.classList.remove("task-item-selected"),(s=this.parentContainer)==null||s.classList.remove("task-item-selected"))}onunload(){var e;this.timerEl=null,(e=di.editorManager)!=null&&e.hasActiveEditor(this.task.id)&&di.editorManager.releaseEditor(this.task.id),this.statusIndicator&&(this.removeChild(this.statusIndicator),this.statusIndicator=null),this.childComponents.forEach(t=>{t.unload()}),this.element&&this.element.parentNode&&this.element.remove()}};di.editorManager=null,di.PRIORITY_CONFIG=[{value:5,key:"Highest",icon:"triangle",class:"highest"},{value:4,key:"High",icon:"alert-triangle",class:"high"},{value:3,key:"Medium",icon:"minus",class:"medium"},{value:2,key:"Low",icon:"chevron-down",class:"low"},{value:1,key:"Lowest",icon:"chevrons-down",class:"lowest"}];var Nc=di;z();var Ur=class extends JN.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=c("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 Oc(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(d=>d.id)),s=(d,u,p)=>{u.has(d.id)&&p.add(d.id),d.metadata.children&&d.metadata.children.forEach(m=>{let h=t.get(m);h&&s(h,u,p)})},o=[],l=new Set;for(let d of e)if(!l.has(d.id)&&(!d.metadata.parent||!i.has(d.metadata.parent))){let u=d;if(d.metadata.parent){let p=d;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((d,u)=>d.line-u.line),o.forEach(d=>{let u=[];d.metadata.children&&d.metadata.children.forEach(m=>{let h=t.get(m);h?u.push(h):console.warn(`Child task ${m} (parent: ${d.id}) not found in allTasksMap.`)}),u.sort((m,h)=>m.line-h.line);let p=new Nc(d,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,h)=>{this.onTaskUpdate&&await this.onTaskUpdate(m,h)},p.onTaskContextMenu=(m,h)=>{this.onTaskContextMenu&&this.onTaskContextMenu(m,h)},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()}};z();function M9(n){return n.settings.defaultViewMode==="tree"}function P9(n,a){let e=n.loadLocalStorage(`task-genius:view-mode:${a}`);return e==null?null:e==="tree"}function cn(n,a,e){let t=e?"tree":"list";n.saveLocalStorage(`task-genius:view-mode:${a}`,t)}function dn(n,a,e){let t=P9(n,e);return t!==null?t:M9(a)}var Lb=class extends pi.Component{constructor(e,t,r,i){super();this.parentEl=e;this.app=t;this.plugin=r;this.config=i;this.taskRenderer=null;this.sourceTasks=[];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:c(this.config.leftColumnTitle)}),r=this.leftHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-multi-select-btn`});if((0,pi.setIcon)(r,"list-plus"),r.setAttribute("aria-label",c("Toggle multi-select")),this.registerDomEvent(r,"click",()=>{this.toggleMultiSelect()}),pi.Platform.isPhone){let i=this.leftHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-sidebar-close`});new pi.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`}),pi.Platform.isPhone&&this.rightHeaderEl.createEl("div",{cls:`${this.config.classNamePrefix}-sidebar-toggle`},s=>{new pi.ExtraButtonComponent(s).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})}),this.rightHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-task-title`}).setText(c(this.config.rightColumnDefaultTitle)),this.rightHeaderEl.createDiv({cls:`${this.config.classNamePrefix}-task-count`}).setText(`0 ${c("tasks")}`);let i=this.rightHeaderEl.createDiv({cls:"view-toggle-btn"});(0,pi.setIcon)(i,"list"),i.setAttribute("aria-label",c("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 Ur(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,t){this.sourceTasks=e,this.allTasks=t&&t.length>0?t:e,this.allTasksMap=new Map(this.allTasks.map(r=>[r.id,r])),this.buildItemsIndex(),this.renderItemsList(),this.selectedItems.items.length>0?this.updateSelectedTasks():(this.cleanupRenderers(),this.renderEmptyTaskList(c(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(c(this.config.emptyStateText));return}}else this.selectedItems.items=[e];this.updateSelectedTasks(),pi.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(c(this.config.emptyStateText))))}initializeViewMode(){var r;let e=this.config.classNamePrefix.replace("-","");this.isTreeView=dn(this.app,this.plugin,e);let t=(r=this.rightColumnEl)==null?void 0:r.querySelector(".view-toggle-btn");t&&(0,pi.setIcon)(t,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.rightColumnEl.querySelector(".view-toggle-btn");e&&(0,pi.setIcon)(e,this.isTreeView?"git-branch":"list");let t=this.config.classNamePrefix.replace("-","");cn(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=c(this.config.rightColumnDefaultTitle);this.selectedItems.items.length===1?e=String(this.selectedItems.items[0]):this.selectedItems.items.length>1&&(e=`${this.selectedItems.items.length} ${c(this.config.multiSelectText)}`);let t=`${this.filteredTasks.length} ${c("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,c("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))}};z();var un=class extends Lb{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:I9(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=c("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===c("None")?"999":e.padStart(3,"0"):["dueDate","startDate","scheduledDate"].includes(this.propertyKey)&&e===c("None")?"9999-12-31":e}getPropertyValues(e){switch(this.propertyKey){case"tags":return e.metadata.tags||[];case"project":let t=qt(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 ls(e)}renderItemsList(){if(this.itemsListEl.empty(),this.sortedPropertyValues.length===0){this.itemsListEl.createDiv({cls:"task-property-empty-state"}).setText(c("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,ZN.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 d=l.ctrlKey||l.metaKey;this.handleItemSelection(e,d),this.renderItemsList()})}}formatDisplayValue(e){if(this.propertyKey==="priority")switch(e){case"1":return c("High Priority");case"2":return c("Medium Priority");case"3":return c("Low Priority");default:return e}if(["dueDate","startDate","scheduledDate","cancelledDate"].includes(this.propertyKey)){let t=this.formatDate(Date.now());if(e===t)return c("Today")}return e}updateSelectedTasks(){if(this.filteredTasks=[],this.selectedItems.items.length===0){this.cleanupRenderers(),this.renderEmptyTaskList(c(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[d,u]of this.propertyValueMap)u.some(p=>p.id===e.id)&&t.push(d);for(let d of t){let u=this.propertyValueMap.get(d)||[];this.propertyValueMap.set(d,u.filter(p=>p.id!==e.id)),((o=this.propertyValueMap.get(d))==null?void 0:o.length)===0&&(this.propertyValueMap.delete(d),this.sortedPropertyValues=this.sortedPropertyValues.filter(p=>p!==d))}let r=this.getPropertyValues(e);for(let d of r){let u=String(d);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(d=>d.id===e.id);i>=0&&(this.filteredTasks[i]=e);let s=this.allTasks.findIndex(d=>d.id===e.id);s>=0&&(this.allTasks[s]=e),this.renderItemsList(),this.filteredTasks.length>0&&this.renderTaskList()}getViewId(){return this.viewId||""}};function I9(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 sr=require("obsidian");var cf=require("obsidian");z();var df=class extends cf.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,cf.setIcon)(r,"chevron-left");let i=t.createDiv({cls:"calendar-nav-btn"});(0,cf.setIcon)(i,"chevron-right");let s=t.createDiv({cls:"calendar-today-btn"});s.setText(c("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 T=0;T<this.options.firstDayOfWeek;T++)r.push(r.shift());(this.options.showWeekends?r:r.filter(T=>T!=="Sat"&&T!=="Sun")).forEach(T=>{let x=this.calendarGridEl.createDiv({cls:"calendar-day-header",text:T});(T==="Sat"||T==="Sun")&&!this.options.showWeekends&&x.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(),d=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(),h=new Date;h.setHours(0,0,0,0);let g=this.selectedDate.getDate(),f=this.selectedDate.getMonth(),k=this.selectedDate.getFullYear();for(let T=0;T<d;T++){let x=m-d+T+1,C=new Date(p,u,x),S=x===g&&u===f&&p===k;this.addCalendarDay(C,!1,S,!1,!1)}for(let T=1;T<=l;T++){let x=new Date(this.displayedYear,this.displayedMonth,T),C=x.getTime()===h.getTime(),S=T===g&&this.displayedMonth===f&&this.displayedYear===k,D=x<h,E=x>h;this.addCalendarDay(x,C,S,D,E,!0)}let y=42-(d+l),b=this.displayedMonth===11?0:this.displayedMonth+1,w=this.displayedMonth===11?this.displayedYear+1:this.displayedYear;for(let T=1;T<=y;T++){let x=new Date(w,b,T),C=T===g&&b===f&&w===k;this.addCalendarDay(x,!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 d=this.getTasksForDate(e),u={date:e,tasks:d,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&&d.length>0){let h=p.createDiv({cls:"calendar-day-count",text:d.length.toString()});d.some(f=>f.metadata.priority&&f.metadata.priority>=2)&&h.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()}};z();var pn=class extends sr.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.configOverride=null;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)}setConfigOverride(e){this.configOverride=e!=null?e:null,this.rebuildCalendarWithEffectiveOptions()}getEffectiveForecastConfig(){var t,r;let e=(t=this.plugin.settings.viewConfiguration.find(i=>i.id==="forecast"))==null?void 0:t.specificConfig;return{...e!=null?e:{},...(r=this.configOverride)!=null?r:{}}}rebuildCalendarWithEffectiveOptions(){var r,i;if(!this.calendarContainerEl)return;this.calendarComponent&&this.removeChild(this.calendarComponent),this.calendarContainerEl.empty();let e=this.getEffectiveForecastConfig(),t={firstDayOfWeek:(r=e.firstDayOfWeek)!=null?r:0,showWeekends:!((i=e.hideWeekends)!=null&&i),showTaskCounts:!0};this.calendarComponent=new df(this.calendarContainerEl,t),this.addChild(this.calendarComponent),this.calendarComponent.load(),this.calendarComponent.setCurrentDate(this.currentDate),this.calendarComponent.selectDate(this.selectedDate),this.calendarComponent.setTasks(this.allTasks),this.calendarComponent.onDateSelected=(s,o)=>{let l=new Date(s);l.setHours(0,0,0,0),this.selectedDate=l,this.updateDueSoonSection(),this.refreshDateSectionsUI(),sr.Platform.isPhone&&this.toggleLeftColumnVisibility(!1)}}createForecastHeader(){this.forecastHeaderEl=this.taskContainerEl.createDiv({cls:"forecast-header"}),sr.Platform.isPhone&&this.forecastHeaderEl.createEl("div",{cls:"forecast-sidebar-toggle"},s=>{new sr.ExtraButtonComponent(s).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})});let e=this.forecastHeaderEl.createDiv({cls:"forecast-title-container"});this.titleEl=e.createDiv({cls:"forecast-title",text:c("Forecast")}),e.createDiv({cls:"forecast-count"}).setText(c("0 tasks, 0 projects"));let i=this.forecastHeaderEl.createDiv({cls:"forecast-actions"}).createDiv({cls:"view-toggle-btn"});(0,sr.setIcon)(i,"list"),i.setAttribute("aria-label",c("Toggle list/tree view")),this.registerDomEvent(i,"click",()=>{this.toggleViewMode()})}initializeViewMode(){var t;this.isTreeView=dn(this.app,this.plugin,"forecast");let e=(t=this.forecastHeaderEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,sr.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.forecastHeaderEl.querySelector(".view-toggle-btn");e&&(0,sr.setIcon)(e,this.isTreeView?"git-branch":"list"),cn(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:c("Focusing on Work")}}),t=this.focusBarEl.createEl("button",{cls:"unfocus-button",text:c("Unfocus")});this.registerDomEvent(t,"click",()=>{e.value=""})}createLeftColumn(e){var i,s;if(this.leftColumnEl=e.createDiv({cls:"forecast-left-column"}),sr.Platform.isPhone){let o=this.leftColumnEl.createDiv({cls:"forecast-sidebar-close"});new sr.ExtraButtonComponent(o).setIcon("x").onClick(()=>{this.toggleLeftColumnVisibility(!1)})}this.createStatsBar(this.leftColumnEl),this.calendarContainerEl=this.leftColumnEl.createDiv({cls:"forecast-calendar-section"});let t=this.getEffectiveForecastConfig(),r={firstDayOfWeek:(i=t.firstDayOfWeek)!=null?i:0,showWeekends:!((s=t.hideWeekends)!=null&&s),showTaskCounts:!0};this.calendarComponent=new df(this.calendarContainerEl,r),this.addChild(this.calendarComponent),this.calendarComponent.load(),this.createDueSoonSection(this.leftColumnEl),this.calendarComponent.onDateSelected=(o,l)=>{let d=new Date(o);d.setHours(0,0,0,0),this.selectedDate=d,this.updateDueSoonSection(),this.refreshDateSectionsUI(),sr.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}`}),d=l.createDiv({cls:"stat-count",text:s.toString()}),u=l.createDiv({cls:"stat-label",text:i});return this.registerDomEvent(l,"click",()=>{this.focusTaskList(o),sr.Platform.isPhone&&this.toggleLeftColumnVisibility(!1)}),l};t("past-due",c("Past Due"),0,"past-due"),t("today",c("Today"),0,"today"),t("future",c("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} ${c("tasks")}, ${r} ${c("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=pa(this.pastTasks,r,this.plugin.settings),this.todayTasks=pa(this.todayTasks,r,this.plugin.settings),this.futureTasks=pa(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(c("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?c("Task"):c("Tasks")}`),this.registerDomEvent(s,"click",()=>{this.calendarComponent.selectDate(i.date),sr.Platform.isPhone&&this.toggleLeftColumnVisibility(!1)})}),t.length===0&&this.dueSoonContainerEl.createDiv({cls:"due-soon-empty"}).setText(c("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(d=>d.id===i.id)||e.get(l).push(i)}}),Array.from(e.keys()).sort().forEach(i=>{let[s,o,l]=i.split("-").map(Number),d=new Date(s,o-1,l),u=e.get(i);new Date(this.currentDate).setHours(0,0,0,0);let m=this.formatSectionTitleForDate(d);this.dateSections.push({title:m,date:d,tasks:u,isExpanded:this.shouldExpandFutureSection(d,this.currentDate)})}),this.pastTasks.length>0&&this.dateSections.unshift({title:c("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(c("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,sr.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,sr.setIcon)(o,e.isExpanded?"chevron-down":"chevron-right"),e.isExpanded?u.show():u.hide()}),e.renderer=new Ur(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,c("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:c("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 h;this.dateSections=[];let e=new Date(this.selectedDate).setHours(0,0,0,0),t=this.allTasks.filter(g=>this.getRelevantDate(g)!==void 0),r=t.filter(g=>this.getRelevantDate(g)<e),i=t.filter(g=>this.getRelevantDate(g)===e),s=t.filter(g=>this.getRelevantDate(g)>e),o=(h=this.plugin.settings.viewConfiguration.find(g=>g.id==="forecast"))==null?void 0:h.sortCriteria,l,d,u;o&&o.length>0?(l=pa(r,o,this.plugin.settings),d=pa(i,o,this.plugin.settings),u=pa(s,o,this.plugin.settings)):(l=this.sortTasksByPriorityAndRelevantDate(r),d=this.sortTasksByPriorityAndRelevantDate(i),u=this.sortTasksByPriorityAndRelevantDate(s)),d.length>0&&this.dateSections.push({title:this.formatSectionTitleForDate(this.selectedDate),date:new Date(this.selectedDate),tasks:d,isExpanded:!0}),l.length>0&&this.dateSections.unshift({title:c("Past Due"),date:new Date(0),tasks:l,isExpanded:!0});let p=new Map;if(u.forEach(g=>{let f=this.getRelevantDate(g),k=new Date(f),v=`${k.getFullYear()}-${String(k.getMonth()+1).padStart(2,"0")}-${String(k.getDate()).padStart(2,"0")}`;p.has(v)||p.set(v,[]),p.get(v).some(y=>y.id===g.id)||p.get(v).push(g)}),Array.from(p.keys()).sort().forEach(g=>{let[f,k,v]=g.split("-").map(Number),y=new Date(f,k-1,v),b=p.get(g),w=this.formatSectionTitleForDate(y);this.dateSections.push({title:w,date:y,tasks:b,isExpanded:this.shouldExpandFutureSection(y,this.selectedDate)})}),o&&o.length>0){let g=o.find(k=>k.field==="dueDate"),f=o.find(k=>k.field==="scheduledDate");g&&g.order==="desc"?this.dateSections.reverse():f&&f.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=c("Today")+", ":s===1&&(i=c("Tomorrow")+", ");let o=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][e.getDay()],l=this.formatDate(e);return s===0?c("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 i2=require("obsidian");var r2=require("obsidian");z();var va=require("obsidian");z();var jb=class extends va.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,d=new Set;o.forEach(u=>{u.project&&l.add(u.project),u.context&&d.add(u.context)}),r=Array.from(l).sort(),i=Array.from(d).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 Zr(this.app,e,this.plugin),i.availableChoices=r.tags;break;case"project":i=new xr(this.app,e,this.plugin),i.availableChoices=r.projects;break;case"context":i=new Jr(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(d=>{d.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,va.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,h)=>{s.has(h)||l.push(h)}),l.length>0){let m=document.createDocumentFragment();l.forEach(h=>{let g=this.activeRows.get(h);g&&g.parentNode&&(this.activeRows.delete(h),m.appendChild(g),this.returnRowToPool(g))})}let u=this.bodyEl.querySelector(".virtual-scroll-spacer-top")?1:0,p=[];if(e.forEach((m,h)=>{let g=this.activeRows.get(m.id),f=u+h;g?(this.updateRow(g,m,t.has(m.id)),Array.from(this.bodyEl.children).indexOf(g)!==f&&p.push({element:g,index:f})):(g=this.getRowFromPool(),this.activeRows.set(m.id,g),this.updateRow(g,m,t.has(m.id)),p.push({element:g,index:f}))}),p.length>0){p.sort((h,g)=>h.index-g.index);let m=Array.from(this.bodyEl.children);p.forEach(({element:h,index:g})=>{let f=m[g];f&&f!==h?this.bodyEl.insertBefore(h,f):f||this.bodyEl.appendChild(h)})}}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 h=t.cells[m],g=p[m];if(!g)return!0;if(h.editable&&(h.columnId==="content"||h.columnId==="project"||h.columnId==="context")){let f=g.querySelector("input"),k=f?f.value:g.textContent||"",v=h.displayValue||"";if(k.trim()!==v.trim())return!0}else if(h.columnId==="tags"){let f=Array.isArray(h.value)?h.value:[],k=g.textContent||"",v=f.join(", ");if(k.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":"",d=document.createDocumentFragment();t.cells.forEach((u,p)=>{let m=this.columns[p];if(!m)return;let h=document.createElement("td");h.className="task-table-cell",h.dataset.columnId=u.columnId,h.dataset.rowId=t.id,h.style.cssText=`width:${m.width}px;min-width:${Math.min(m.width,50)}px;${m.align?`text-align:${m.align};`:""}`,o&&(h.classList.add("task-table-subtask-cell"),l&&(h.style.opacity=l)),m.id==="rowNumber"?this.renderTreeStructure(h,t,u,m):this.renderCellContent(h,u,m,t),u.className&&h.classList.add(u.className),d.appendChild(h)}),e.appendChild(d)}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,va.setIcon)(l,t.expanded?"chevron-down":"chevron-right"),this.registerDomEvent(l,"click",d=>{d.stopPropagation(),this.toggleRowExpansion(t.id)}),l.title=t.expanded?c("Collapse"):c("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,va.setIcon)(l,t.expanded?"chevron-down":"chevron-right"),this.registerDomEvent(l,"click",d=>{d.stopPropagation(),this.toggleRowExpansion(t.id)}),l.title=t.expanded?c("Collapse subtasks"):c("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,va.setIcon)(i,"check-circle"),r.addClass("completed");break;case"/":case">":(0,va.setIcon)(i,"clock"),r.addClass("in-progress");break;case"-":(0,va.setIcon)(i,"x-circle"),r.addClass("abandoned");break;case"?":(0,va.setIcon)(i,"help-circle"),r.addClass("planned");break;default:(0,va.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=c("Click to change status")}openStatusMenu(e,t){let r=e.dataset.rowId;if(!r)return;let i=new va.Menu,s=nl(this.plugin.settings);for(let[l,d]of s)i.addItem(u=>{u.titleEl.createEl("span",{cls:"status-option-checkbox"},p=>{let m=p.createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"});m.dataset.task=l,l!==" "&&(m.checked=!0)}),u.titleEl.createEl("span",{cls:"status-option",text:d}),u.onClick(()=>{if(this.onCellChange){let p=l.toLowerCase()==="x";this.onCellChange(r,t.columnId,l)}})});let o=e.getBoundingClientRect();i.showAtPosition({x:o.left,y:o.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,va.setIcon)(s,"triangle"),s.addClass("highest"),o.textContent=c("Highest")):i===4?((0,va.setIcon)(s,"alert-triangle"),s.addClass("high"),o.textContent=c("High")):i===3?((0,va.setIcon)(s,"minus"),s.addClass("medium"),o.textContent=c("Medium")):i===2?((0,va.setIcon)(s,"chevron-down"),s.addClass("low"),o.textContent=c("Low")):i===1&&((0,va.setIcon)(s,"chevrons-down"),s.addClass("lowest"),o.textContent=c("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=c("Click to set priority")}openPriorityMenu(e,t){let r=e.dataset.rowId;if(!r)return;let i=new va.Menu;i.addItem(o=>{o.setTitle(c("No priority")).setIcon("circle").onClick(()=>{this.onCellChange&&this.onCellChange(r,t.columnId,null)})}),i.addItem(o=>{o.setTitle(c("Lowest")).setIcon("chevrons-down").onClick(()=>{this.onCellChange&&this.onCellChange(r,t.columnId,1)})}),i.addItem(o=>{o.setTitle(c("Low")).setIcon("chevron-down").onClick(()=>{this.onCellChange&&this.onCellChange(r,t.columnId,2)})}),i.addItem(o=>{o.setTitle(c("Medium")).setIcon("minus").onClick(()=>{this.onCellChange&&this.onCellChange(r,t.columnId,3)})}),i.addItem(o=>{o.setTitle(c("High")).setIcon("alert-triangle").onClick(()=>{this.onCellChange&&this.onCellChange(r,t.columnId,4)})}),i.addItem(o=>{o.setTitle(c("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 d=r.createSpan("task-table-date-relative");o===0?(d.textContent=c("Today"),d.addClass("today")):o===1?(d.textContent=c("Tomorrow"),d.addClass("tomorrow")):o===-1?(d.textContent=c("Yesterday"),d.addClass("yesterday")):o<0?(d.textContent=c("Overdue"),d.addClass("overdue")):o<=7&&(d.textContent=`${o}d`,d.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=c("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 d=new Date(t.value),u=d.getFullYear(),p=String(d.getMonth()+1).padStart(2,"0"),m=String(d.getDate()).padStart(2,"0");s=`${u}-${p}-${m}`}let o=new Ks(this.app,this.plugin,s);o.onDateSelected=d=>{this.onDateChange&&this.onDateChange(r,i,d)};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||[]],d=!1,u=()=>{!d&&this.app&&(d=!0,this.setupAutoComplete(s,"tags"))};this.registerDomEvent(s,"blur",()=>{let p=s.value.trim(),m=p?p.split(",").map(h=>h.trim()).filter(h=>h.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,h;e.addClass("task-table-text");let i=t.columnId==="content",s=t.columnId==="project",o,l,d=!1;if(s&&((p=(u=r==null?void 0:r.task)==null?void 0:u.metadata)!=null&&p.tgProject)?(l=qt(r.task)||"",o=l,d=Yi(r.task)):i?(o=Cr(t.value||t.displayValue),l=o):(o=t.displayValue,l=t.value||""),t.editable&&!d){let g=e.createEl("input","task-table-text-input");g.type="text",g.value=o,g.style.cssText="border:none;background:transparent;width:100%;padding:0;font:inherit;";let f=i?o:l,k=!1,v=()=>{!k&&this.app&&(k=!0,t.columnId==="project"?this.setupAutoComplete(g,"project"):t.columnId==="context"&&this.setupAutoComplete(g,"context"))};this.registerDomEvent(g,"blur",()=>{let y=g.value.trim();f!==y&&this.saveCellValue(e,t,y)}),this.registerDomEvent(g,"keydown",y=>{y.key==="Enter"&&(g.blur(),y.preventDefault()),y.stopPropagation()}),(t.columnId==="project"||t.columnId==="context")&&(this.registerDomEvent(g,"focus",v),this.registerDomEvent(g,"input",v)),this.registerDomEvent(g,"click",y=>{y.stopPropagation(),requestAnimationFrame(()=>g.focus())})}else e.textContent=o,t.columnId==="filePath"&&(this.registerDomEvent(e,"click",g=>{g.stopPropagation();let f=this.plugin.app.vault.getFileByPath(t.value);f&&this.plugin.app.workspace.getLeaf(!0).openFile(f)}),e.title=c("Click to open file"));if(s&&((h=(m=r==null?void 0:r.task)==null?void 0:m.metadata)!=null&&h.tgProject)&&(!r.task.metadata.project||typeof r.task.metadata.project!="string"||!r.task.metadata.project.trim())){let g=r.task.metadata.tgProject,f=e.createDiv({cls:"project-source-indicator table-indicator"}),k="",v="";switch(g.type){case"path":k="\u{1F4C1}",v=c("Auto-assigned from path")+`: ${g.source}`;break;case"metadata":k="\u{1F4C4}",v=c("Auto-assigned from file metadata")+`: ${g.source}`;break;case"config":k="\u2699\uFE0F",v=c("Auto-assigned from config file")+`: ${g.source}`;break;default:k="\u{1F517}",v=c("Auto-assigned")+`: ${g.source}`}f.innerHTML=`<span class="indicator-icon">${k}</span>`,f.title=v,d?(f.addClass("readonly-indicator"),e.addClass("readonly-cell")):f.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=c("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,va.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,va.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&&typeof i.metadata.project=="string"&&i.metadata.project.trim()&&r.add(i.metadata.project);break;case"context":i.metadata.context&&typeof i.metadata.context=="string"&&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,va.setIcon)(r,i),r.title=t.expanded?t.level>0?c("Collapse"):c("Collapse subtasks"):t.level>0?c("Expand"):c("Expand subtasks")}}};var e2=require("obsidian");z();var Hb=class extends e2.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:c("Not Started")},{value:"/",label:c("In Progress")},{value:"x",label:c("Completed")},{value:"-",label:c("Abandoned")},{value:"?",label:c("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:c("No Priority")},{value:"1",label:c("High Priority")},{value:"2",label:c("Medium Priority")},{value:"3",label:c("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:c("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 Ks(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=c("Enter tags separated by commas"),e&&Array.isArray(e)&&(t.value=e.join(", ")),new Zr(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=c("Enter project name"),new xr(this.app,t,this.plugin),t}createContextInput(e){let t=this.createTextInput(e,!1);return t.className+=" task-table-context-input",t.placeholder=c("Enter context"),new Jr(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{[c("Not Started")]:" ",[c("Completed")]:"x",[c("In Progress")]:"/",[c("Abandoned")]:"-",[c("Planned")]:"?"}[r]||" ";case"priority":return{[c("High")]:1,[c("Medium")]:2,[c("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=c("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 t2=require("obsidian");z();var uf=class extends t2.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?pa(t,s,this.pluginSettings):this.fallbackSort(t)}else{let s=[{field:this.currentSortField,order:this.currentSortOrder}];r=pa(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 d,u,p,m,h,g;let i=((d=r.metadata.priority)!=null?d: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=((h=t.content)==null?void 0:h.trim())||"",l=((g=r.content)==null?void 0:g.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,d,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 h=r.metadata||{};s=h.startDate,o=this.formatDate(h.startDate);break;case"scheduledDate":let g=r.metadata||{};s=g.scheduledDate,o=this.formatDate(g.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=((d=r.metadata.estimatedTime)==null?void 0:d.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{" ":c("Not Started"),x:c("Completed"),X:c("Completed"),"/":c("In Progress"),">":c("In Progress"),"-":c("Abandoned"),"?":c("Planned")}[e]||e}formatPriority(e){return e?{5:c("Highest"),4:c("High"),3:c("Medium"),2:c("Low"),1:c("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 a2=require("obsidian"),Bb=class extends a2.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),d=Math.abs(this.viewport.endIndex-s),u=l>=o||d>=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 Lc=require("obsidian");z();var Vb=class extends Lc.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,Lc.setIcon)(r,"list-checks");let i=t.createSpan("task-count-text");i.textContent=this.getTaskCountText(),i.dataset.countElement="true"}getTaskCountText(){return this.taskCount===0?c("No tasks"):this.taskCount===1?c("1 task"):`${this.taskCount} ${c("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,Lc.setIcon)(s,"eye");let o=this.columnBtn.createSpan("column-text");o.textContent=c("Columns");let l=this.columnBtn.createSpan("dropdown-arrow");(0,Lc.setIcon)(l,"chevron-down"),this.columnBtn.title=c("Toggle column visibility");let d=i.createDiv("column-dropdown-menu");d.toggle(!1),this.registerDomEvent(this.columnBtn,"click",u=>{u.stopPropagation();let p=!d.isShown();d.toggle(p)}),this.registerDomEvent(document,"click",()=>{d.toggle(!1)}),this.updateColumnDropdown(d)}updateTreeModeButton(){if(!this.treeModeBtn)return;let e=this.treeModeBtn.querySelector(".tree-mode-icon");e&&(e.empty(),(0,Lc.setIcon)(e,this.isTreeMode?"git-branch":"list"),this.treeModeBtn.title=this.isTreeMode?c("Switch to List Mode"):c("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 Wb=class extends r2.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:c("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:c("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:c("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:c("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:c("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:c("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:c("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:c("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:c("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:c("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:c("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:c("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:c("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 Vb(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=c("Loading..."),this.loadingEl.toggle(!1)}initializeChildComponents(){this.renderer=new jb(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 Hb(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 uf(this.columns,this.plugin.settings),this.addChild(this.treeManager)),this.config.enableLazyLoading&&(this.virtualScroll=new Bb(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=pa(this.filteredTasks,e,this.plugin.settings),this.filteredTasks,this.filteredTasks}}refreshDisplay(){if(this.isTreeView&&!this.treeManager&&(this.treeManager=new uf(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 d=e.metadata||{};i=d.dueDate,s=this.formatDate(d.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{" ":c("Not Started"),x:c("Completed"),X:c("Completed"),"/":c("In Progress"),">":c("In Progress"),"-":c("Abandoned"),"?":c("Planned")}[e]||e}formatPriority(e){return e?{5:c("Highest"),4:c("High"),3:c("Medium"),2:c("Low"),1:c("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":Yi(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:c("Status"),visible:this.config.visibleColumns.includes("status")},{id:"content",title:c("Content"),visible:this.config.visibleColumns.includes("content")},{id:"priority",title:c("Priority"),visible:this.config.visibleColumns.includes("priority")},{id:"dueDate",title:c("Due Date"),visible:this.config.visibleColumns.includes("dueDate")},{id:"startDate",title:c("Start Date"),visible:this.config.visibleColumns.includes("startDate")},{id:"scheduledDate",title:c("Scheduled Date"),visible:this.config.visibleColumns.includes("scheduledDate")},{id:"createdDate",title:c("Created Date"),visible:this.config.visibleColumns.includes("createdDate")},{id:"completedDate",title:c("Completed Date"),visible:this.config.visibleColumns.includes("completedDate")},{id:"tags",title:c("Tags"),visible:this.config.visibleColumns.includes("tags")},{id:"project",title:c("Project"),visible:this.config.visibleColumns.includes("project")},{id:"context",title:c("Context"),visible:this.config.visibleColumns.includes("context")},{id:"recurrence",title:c("Recurrence"),visible:this.config.visibleColumns.includes("recurrence")},{id:"filePath",title:c("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(d=>d.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(d=>d.id===e);l!==-1&&(this.filteredTasks[l]=s),this.refreshDisplay()}};var zb=class extends i2.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 Wb(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 mo=require("obsidian");var mf=require("obsidian");var yl=require("obsidian");z();var pf=class extends yl.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 la(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=gt(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":c("More actions")}});(0,yl.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 la(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=ri(i),o=["tg-quadrant-card-priority"];s&&o.push(`priority-${s}`);let l=e.createDiv({cls:o}),d="!".repeat(i);l.textContent=d}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 yl.Menu;e.addItem(o=>{o.setTitle(c("Open in file")).setIcon("external-link").onClick(()=>{this.openTaskInFile()})}),e.addItem(o=>{o.setTitle(c("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(c("Remove urgent tag")).setIcon("zap-off").onClick(()=>{this.removeTagFromTask("#urgent")})}):e.addItem(o=>{o.setTitle(c("Mark as urgent")).setIcon("zap").onClick(()=>{this.addTagToTask("#urgent")})}),r?e.addItem(o=>{o.setTitle(c("Remove important tag")).setIcon("star-off").onClick(()=>{this.removeTagFromTask("#important")})}):e.addItem(o=>{o.setTitle(c("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 yl.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(){let a=this.task.content||"",e=[],t=0;for(;t<a.length;){let r=a.indexOf("#",t);if(r===-1)break;let i=0,s=r-1;for(;s>=0&&a[s]==="\\";)i++,s--;if(i%2===1){t=r+1;continue}let o=r+1;for(;o<a.length;){let l=a[o],d=l.charCodeAt(0);if(!(d>=48&&d<=57||d>=65&&d<=90||d>=97&&d<=122||l==="/"||l==="-"||l==="_"||d>127))break;o++}o>r+1?(e.push(a.substring(r,o)),t=o):t=r+1}return e}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}(?:\s+\d{1,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 c("Overdue by")+" "+i+" "+c("days")}else return r===0?c("Due today"):r===1?c("Due tomorrow"):r<=7?c("Due in")+" "+r+" "+c("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()}};z();var _b=class extends mf.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,mf.setIcon)(e,"loader-2");let t=this.loadMoreEl.createDiv("tg-quadrant-load-more-message");t.textContent=c("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 pf(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?c("task"):c("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 d=new pf(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(d),this.cardComponents.push(d),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,d=e.clientHeight,u=o+d>=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,mf.setIcon)(t,"inbox");let r=e.createDiv("tg-quadrant-empty-message");r.textContent=this.getEmptyStateMessage()}getEmptyStateMessage(){switch(this.quadrant.id){case"urgent-important":return c("No crisis tasks - great job!");case"not-urgent-important":return c("No planning tasks - consider adding some goals");case"urgent-not-important":return c("No interruptions - focus time!");case"not-urgent-not-important":return c("No time wasters - excellent focus!");default:return c("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 c("Handle immediately. These are critical tasks that need your attention now.");case"not-urgent-important":return c("Schedule and plan. These tasks are key to your long-term success.");case"urgent-not-important":return c("Delegate if possible. These tasks are urgent but don't require your specific skills.");case"not-urgent-not-important":return c("Eliminate or minimize. These tasks may be time wasters.");default:return c("Review and categorize these tasks appropriately.")}}setupManualScrollListener(){this.handleScroll=this.handleScroll.bind(this)}prepareDragOperation(){this.hasMoreTasks&&this.renderedTasks.length<this.pageSize*2&&this.loadMoreTasks()}};z();var hf=[{id:"urgent-important",title:c("Urgent & Important"),description:c("Do First - Crisis & emergencies"),priorityEmoji:"\u{1F53A}",urgentTag:"#urgent",importantTag:"#important",className:"quadrant-urgent-important"},{id:"not-urgent-important",title:c("Not Urgent & Important"),description:c("Schedule - Planning & development"),priorityEmoji:"\u23EB",importantTag:"#important",className:"quadrant-not-urgent-important"},{id:"urgent-not-important",title:c("Urgent & Not Important"),description:c("Delegate - Interruptions & distractions"),priorityEmoji:"\u{1F53C}",urgentTag:"#urgent",className:"quadrant-urgent-not-important"},{id:"not-urgent-not-important",title:c("Not Urgent & Not Important"),description:c("Eliminate - Time wasters"),priorityEmoji:"\u{1F53D}",className:"quadrant-not-urgent-not-important"}],Cu=class extends mo.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.configOverride=null;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(){var i,s;let e=this.plugin.settings.viewConfiguration.find(o=>o.id===this.currentViewId);if(e&&e.specificConfig&&e.specificConfig.viewType==="quadrant")return{...e.specificConfig,...(i=this.configOverride)!=null?i:{}};let t=this.plugin.settings.viewConfiguration.find(o=>o.id==="quadrant");return{...(t==null?void 0:t.specificConfig)||{urgentTag:"#urgent",importantTag:"#important",urgentThresholdDays:3},...(s=this.configOverride)!=null?s:{}}}onload(){super.onload(),this.render()}setConfigOverride(e){this.configOverride=e!=null?e:null,this.cleanup(),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=c("Matrix");let i=e.createDiv("tg-quadrant-controls").createDiv("tg-quadrant-sort"),s=[{field:"priority",order:"desc",label:c("Priority (High to Low)")},{field:"priority",order:"asc",label:c("Priority (Low to High)")},{field:"dueDate",order:"asc",label:c("Due Date (Earliest First)")},{field:"dueDate",order:"desc",label:c("Due Date (Latest First)")},{field:"createdDate",order:"desc",label:c("Created Date (Newest First)")},{field:"createdDate",order:"asc",label:c("Created Date (Oldest First)")}],o=new mo.DropdownComponent(i);s.forEach(d=>{let u=`${d.field}-${d.order}`;o.addOption(u,d.label)});let l=`${this.sortOption.field}-${this.sortOption.order}`;o.setValue(l),o.onChange(d=>{let[u,p]=d.split("-"),m=s.find(h=>h.field===u&&h.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"),hf.forEach(e=>{let t=this.columnContainerEl.createDiv(`tg-quadrant-column ${e.className}`),r=new _b(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=!mo.Platform.isDesktop||"ontouchstart"in window||navigator.maxTouchPoints>0,s=new Pr(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=hf.find(p=>p.id===o),d=s.getAttribute("data-quadrant-id"),u=hf.find(p=>p.id===d);l&&u&&(o!==d?(`${r}${d}${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 d=o.filter(p=>!l.includes(p));if(t.urgentTag&&(d.includes(t.urgentTag)||d.push(t.urgentTag)),t.importantTag&&(d.includes(t.importantTag)||d.push(t.importantTag)),s.metadata.tags=d,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} ${c("Task moved to")} ${t.title}`;new mo.Notice(r,2e3)}showErrorFeedback(e,t){console.error("Task update error:",t);let r=`\u26A0\uFE0F ${c("Failed to update task")}`;new mo.Notice(r,3e3)}categorizeTasksByQuadrant(e){let t=new Map;return hf.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,d=this.quadrantConfig.importantPriorityThreshold||3;t=o>=l,r=o>=d}else{let o=e.content.toLowerCase(),l=((s=e.metadata)==null?void 0:s.tags)||[],d=(this.quadrantConfig.urgentTag||"#urgent").toLowerCase(),u=o.includes(d)||l.includes(d),p=this.isTaskUrgent(e);t=u||p;let m=(this.quadrantConfig.importantTag||"#important").toLowerCase(),h=o.includes(m)||l.includes(m),g=this.isTaskImportant(e);r=h||g}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,d]of o){let u=s.get(l);if(!u||this.hasTaskContentChanged(u,d))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,d,u,p,m,h,g,f;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=((d=i.metadata)==null?void 0:d.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=((h=i.metadata)==null?void 0:h.startDate)||0;break;case"createdDate":s=((g=r.metadata)==null?void 0:g.createdDate)||0,o=((f=i.metadata)==null?void 0:f.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 hf.forEach(r=>{var i;t[r.id]=((i=e.get(r.id))==null?void 0:i.length)||0}),t}};var dE=class{static createComponent(a,e,t,r,i,s){var l,d;let o=xt(r,e);switch(a){case"kanban":return new nn(t,r,i,[],{onTaskStatusUpdate:s.onTaskStatusUpdate,onTaskSelected:s.onTaskSelected,onTaskCompleted:s.onTaskCompleted,onTaskContextMenu:s.onTaskContextMenu},e);case"calendar":return new sn(t,r,i,[],{onTaskSelected:s.onTaskSelected,onTaskCompleted:s.onTaskCompleted,onEventContextMenu:s.onEventContextMenu},e);case"gantt":return new on(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 un(i,t,r,o.specificConfig,e):null;case"forecast":return new pn(i,t,r,{onTaskSelected:s.onTaskSelected,onTaskCompleted:s.onTaskCompleted,onTaskContextMenu:s.onTaskContextMenu,onTaskUpdate:s.onTaskUpdate});case"table":return((d=o.specificConfig)==null?void 0:d.viewType)==="table"?new zb(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 Cu(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}}},ys=class extends Ub.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=xt(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=dE.createComponent(i,e,this.app,this.plugin,this.parentEl,this.handlers);return s&&(s instanceof Ub.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=xt(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 Ub.Component&&this.parentComponent.removeChild(e),e.unload&&e.unload()}),this.components.clear()}getAllComponents(){return this.components.entries()}onunload(){this.cleanup()}};var n2=require("obsidian");var Su=require("obsidian"),$b=class n extends Su.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,Su.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,Su.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,Su.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 Yb=class extends n2.Component{constructor(e,t,r){super();this.parentEl=e;this.config=t;this.app=r;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 $b(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)};this.app.saveLocalStorage(this.config.stateKey,JSON.stringify(e))}restoreTreeState(){if(this.config.stateKey)try{let e=this.app.loadLocalStorage(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())}};var Du=require("obsidian"),uE=class extends Du.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(){Du.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)}},pE=(n,{progressBar:a,data:e,view:t})=>{let r=t.state.field(Du.editorInfoField);r&&new uE(n,e,r,a)};function go(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",d="\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}${d} ${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,d).replace(/{{PLANNED_SYMBOL}}/g,u):m=`[${n.completed}/${n.total}]`;break;case"range-based":if(a!=null&&a.settings.customizeProgressRanges){let h=a.settings.progressRanges.find(g=>e>=g.min&&e<=g.max);h?m=h.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,(h,g)=>{try{return new Function("data",`return ${g}`)(s)}catch(f){return console.error("Error evaluating expression:",g,f),h}}),m}var gf=class extends mi.WidgetType{constructor(e,t,r,i,s,o,l,d=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=d;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=go({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,d,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 h;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(),(h=this.plugin)!=null&&h.settings.supportHoverToShowProgressInfo&&(m.onmouseover=()=>{pE(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"||((d=this.plugin)==null?void 0:d.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=go({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 s2(n,a){return mi.ViewPlugin.fromClass(class{constructor(e){this.view=e;this.progressDecorations=mi.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(nA(a,e))return{progress:mi.Decoration.none};for(let i of e.visibleRanges){let s,o,l;try{s=new cd(t.doc,"^[\\t|\\s]*([-*+]|\\d+\\.)\\s\\[(.)\\]",{},i.from,i.to)}catch(d){console.debug(d);continue}if(a!=null&&a.settings.addTaskProgressBarToHeading){try{o=new cd(t.doc,"^(#){1,6} ",{},i.from,i.to)}catch(d){console.debug(d);continue}this.processHeadings(o,r,e)}if(a!=null&&a.settings.addProgressBarToNonTaskBullet){try{l=new cd(t.doc,"^[\\t|\\s]*([-*+]|\\d+\\.)\\s(?!\\[.\\])",{},i.from,i.to)}catch(d){console.debug(d);continue}this.processNonTaskBullets(l,r,e)}this.processBullets(s,r,e)}return{progress:mi.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 d=this.extractTasksFromRange(l,r.state,!1);if(d.total===0)continue;let u=mi.Decoration.widget({widget:new gf(n,a,r,o.to,o.to,d.completed,d.total,d.inProgress||0,d.abandoned||0,d.notStarted||0,d.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 d=(0,ho.syntaxTree)(r.state).resolveInner(o+1).type.prop(ho.tokenClassNodeProp);if(["hmd-codeblock","hmd-frontmatter"].find(y=>d==null?void 0:d.split(" ").includes(y)))continue;let p=r.state.doc.lineAt(o),m=this.getDocumentText(r.state.doc,p.from,p.to),h=a!=null&&a.settings.allowCustomProgressGoal?bC(m):null;if(!m||!/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/.test(m))continue;let g=this.calculateRangeForTransform(r.state,p.to);if(!g)continue;let f=this.getDocumentText(r.state.doc,g.from,g.to);if(!f||f.length===1)continue;let k=this.extractTasksFromRange(g,r.state,!0,h);if(k.total===0)continue;let v=mi.Decoration.widget({widget:new gf(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(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 d=(0,ho.syntaxTree)(r.state).resolveInner(o+1).type.prop(ho.tokenClassNodeProp);if(["hmd-codeblock","hmd-frontmatter"].find(v=>d==null?void 0:d.split(" ").includes(v)))continue;let p=r.state.doc.lineAt(o);if(!this.getDocumentText(r.state.doc,p.from,p.to))continue;let h=this.calculateRangeForTransform(r.state,p.to);if(!h)continue;let g=this.getDocumentText(r.state.doc,h.from,h.to);if(!g||g.length===1)continue;let f=this.extractTasksFromRange(h,r.state,!0);if(f.total===0)continue;let k=mi.Decoration.widget({widget:new gf(n,a,r,p.to,p.to,f.completed,f.total,f.inProgress||0,f.abandoned||0,f.notStarted||0,f.planned||0),side:1});t.push(k.range(p.to,p.to))}}extractTasksFromRange(e,t,r,i){let s=this.getDocumentTextArray(t.doc,e.from,e.to);return this.calculateTasksNum(s,r,i)}getDocumentText(e,t,r){try{return e.sliceString(t,r)}catch(i){return console.error("Error getting document text:",i),null}}getDocumentTextArray(e,t,r){let i=this.getDocumentText(e,t,r);return i?i.split(`
`):[]}calculateRangeForTransform(e,t){let r=e.doc.lineAt(t),i=(0,ho.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)||"",d=((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 h=d.split("|"),g=l.split(""),f=h.filter(k=>!g.includes(k)).join("|");return new RegExp(u+p+"\\[("+f+")\\]")}else return new RegExp(u+p+"\\[("+d+")\\]")}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,d,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":(((d=(l=a==null?void 0:a.settings.taskStatuses)==null?void 0:l.abandoned)==null?void 0:d.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,d,u,p,m,h,g,f,k,v;return(((d=(l=a==null?void 0:a.settings.taskStatuses)==null?void 0:l.completed)==null?void 0:d.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":(((h=(m=a==null?void 0:a.settings.taskStatuses)==null?void 0:m.abandoned)==null?void 0:h.split("|"))||[">"]).includes(e)?"abandoned":(((f=(g=a==null?void 0:a.settings.taskStatuses)==null?void 0:g.planned)==null?void 0:f.split("|"))||["?"]).includes(e)?"planned":(((v=(k=a==null?void 0:a.settings.taskStatuses)==null?void 0:k.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,ho.syntaxTree)(e).iterate({to:t,enter:l=>{if(l.type.name.startsWith("header")&&l.from<t&&l.from>o){o=l.from;let d=e.doc.lineAt(l.from);s=e.doc.sliceString(d.from,d.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,y;if(!e||e.length===0)return{completed:0,total:0,inProgress:0,abandoned:0,notStarted:0,planned:0};if(e.length>1&&t){let b=((v=e[0].match(/^[\s|\t]*/))==null?void 0:v[0])||"",w=((y=e[1].match(/^[\s|\t]*/))==null?void 0:y[0])||"";if(b===w)return{completed:0,total:0,inProgress:0,abandoned:0,notStarted:0,planned:0}}let i=0,s=0,o=0,l=0,d=0,u=0,p=0,m=this.getTabSize(),h=[];if(!(a!=null&&a.settings.countSubLevel)&&t&&e[0]){let b=e[0].match(/^[\s|\t]*/);b&&(p=b[0].length/m)}let g=this.createTotalTaskRegex(!1,p,m),f=this.createTotalTaskRegex(!0),k=(a==null?void 0:a.settings.allowCustomProgressGoal)&&r!==null;for(let b=0;b<e.length;b++)if(b!==0){if(t){let w=e[b],T=w.trim();if(!(a!=null&&a.settings.countSubLevel)){let x=w.match(/^[\s|\t]*/);if((x?x[0].length/m:0)!==p+1)continue}if(T&&w.match(g)&&!this.shouldExcludeTask(T)){u++;let x=this.getTaskStatus(T),C=T.match(/\[(.)]/);C&&C[1]&&h.push({mark:C[1],status:x,lineText:T});let S=bC(T);x==="completed"?(k||i++,k&&S!==null&&(i+=S)):x==="inProgress"?(k||s++,k&&S!==null&&(s+=S)):x==="abandoned"?(k||o++,k&&S!==null&&(o+=S)):x==="planned"?(k||d++,k&&S!==null&&(d+=S)):x==="notStarted"&&(k||l++,k&&S!==null&&(l+=S))}}else if(a!=null&&a.settings.addTaskProgressBarToHeading){let w=e[b],T=w.trim();if(!(a!=null&&a.settings.countSubLevel)){let x=w.match(/^[\s|\t]*/);if((x?x[0].length/m:0)!==0)continue}if(T&&w.match(f)&&!this.shouldExcludeTask(T)){u++;let x=this.getTaskStatus(T),C=T.match(/\[(.)]/);C&&C[1]&&h.push({mark:C[1],status:x,lineText:T}),x==="completed"?i++:x==="inProgress"?s++:x==="abandoned"?o++:x==="planned"?d++:x==="notStarted"&&l++}}}return k&&t&&(u=r||0),i=Math.min(i,u),s=Math.min(s,u-i),o=Math.min(o,u-i-s),d=Math.min(d,u-i-s-o),l=u-i-s-o-d,{completed:i,total:u,inProgress:s,abandoned:o,notStarted:l,planned:d}}},{provide:e=>[mi.EditorView.decorations.of(t=>{var r;return((r=t.plugin(e))==null?void 0:r.progressDecorations)||mi.Decoration.none})]})}var Hn=require("@codemirror/view"),Qb=require("@codemirror/state"),ws=require("obsidian");var qb=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 Eu=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 jn=require("@codemirror/view"),bs=require("obsidian"),Mu=require("@codemirror/state"),Kb=require("@codemirror/language");z();var It=Mu.Annotation.define(),o2={TODO:" ",DOING:"-","IN-PROGRESS":">",DONE:"x"},Gb=class extends jn.WidgetType{constructor(e,t,r,i,s,o,l,d){super();this.app=e;this.plugin=t;this.view=r;this.from=i;this.to=s;this.currentState=o;this.currentMark=l;this.listPrefix=d;this.cycle=[];this.marks={};let u=this.getStatusConfig();this.cycle=u.cycle,this.marks=u.marks,this.isLivePreview=r.state.field(bs.editorLivePreviewField),this.bulletText=d.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 d=t[this.currentState]||" ";l.setAttribute("data-task-state",d),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(),Uo(this.plugin)){u.click();return}if(bs.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 bs.Menu,h=this.marks[this.currentState]||" ";if(this.plugin.settings.statusCycles&&this.plugin.settings.statusCycles.length>0){let g=im(h,this.plugin.settings.statusCycles);if(g.length>0){m.addItem(k=>{k.setTitle(c("Cycle to next:")),k.setDisabled(!0)});for(let k of g){let v=En(h,[k]);v&&m.addItem(y=>{let b=k.priority===0;y.setTitle(`${k.name}: ${v.statusName}`),y.onClick(()=>{this.setTaskState(v.statusName)}),y.setChecked(b)})}m.addSeparator(),m.addItem(k=>{k.setTitle(c("Or choose any:")),k.setDisabled(!0)});let f=py(this.plugin.settings.statusCycles);for(let k of Array.from(f))m.addItem(v=>{let y=k===this.currentState;v.setTitle(k),v.setDisabled(y),v.setChecked(y),v.onClick(()=>{this.setTaskState(k)})})}else for(let f of this.cycle)m.addItem(k=>{k.setTitle(f),k.onClick(()=>{this.setTaskState(f)})})}else for(let g of this.cycle)m.addItem(f=>{f.setTitle(g),f.onClick(()=>{this.setTaskState(g)})});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=" ";if(this.plugin.settings.statusCycles&&this.plugin.settings.statusCycles.length>0){let o=this.plugin.settings.statusCycles.filter(d=>d.enabled).sort((d,u)=>d.priority-u.priority),l=!1;for(let d of o)if(e in d.marks){i=d.marks[e],l=!0;break}l||(i=this.marks[e]||" ")}else i=this.marks[e]||" ";let s=t.replace(/\[(.)]/,`[${i}]`);this.view.dispatch({changes:{from:this.from,to:this.to,insert:s},annotations:It.of("taskStatusChange")})}getStatusConfig(){return this.plugin.settings.enableTaskStatusSwitcher?ca(this.plugin.settings,this.currentMark):{cycle:Object.keys(o2),marks:o2,excludeMarksFromCycle:[],isMultiCycle:!1}}cycleTaskState(){var m,h,g,f;let e=this.view.state.doc.sliceString(this.from,this.to),t=e.match(/\[(.)]/);if(!t)return;let r=t[1],{cycle:i,marks:s,excludeMarksFromCycle:o}=this.getStatusConfig(),l=i.filter(k=>!o.includes(k)),d,u;if(this.plugin.settings.statusCycles&&this.plugin.settings.statusCycles.length>0){let k=En(r,this.plugin.settings.statusCycles);if(k)u=k.statusName,d=k.mark;else if(l.length>0)u=l[0],d=s[u]||" ";else{let v=this.view.state.field(bs.editorInfoField);v&&((h=(m=v==null?void 0:v.editor)==null?void 0:m.cm)==null||h.dispatch({selection:Mu.EditorSelection.range(this.to+1,this.to+1)})),this.app.commands.executeCommandById("editor:toggle-checklist-status");return}}else{if(l.length===0){let y=this.view.state.field(bs.editorInfoField);y&&((f=(g=y==null?void 0:y.editor)==null?void 0:g.cm)==null||f.dispatch({selection:Mu.EditorSelection.range(this.to+1,this.to+1)})),this.app.commands.executeCommandById("editor:toggle-checklist-status");return}let k=-1;for(let y=0;y<l.length;y++){let b=l[y];if(s[b]===r){k=y;break}}k===-1&&(k=0);let v=(k+1)%l.length;u=l[v],d=s[u]||" "}let p=e.replace(/\[(.)]/,`[${d}]`);this.view.dispatch({changes:{from:this.from,to:this.to,insert:p},annotations:It.of("taskStatusChange"),selection:Mu.EditorSelection.range(this.to+1,this.to+1)})}};function l2(n,a){class e{constructor(i){this.decorations=jn.Decoration.none;this.lastUpdate=0;this.updateThreshold=50;this.match=new jn.MatchDecorator({regexp:/^(\s*)((?:[-*+]|\d+[.)])\s)(\[(.)]\s)/g,decorate:(i,s,o,l,d)=>{if(!this.shouldRender(d,s,o))return;let u=l[4],p=l[2],m=p.trim(),g=l[3].trim(),f=this.isLivePreview(d.state),{cycle:k,marks:v,excludeMarksFromCycle:y}=ca(a.settings,u),b=k.filter(T=>!y.includes(T));if(b.length===0&&!a.settings.enableCustomTaskMarks&&!(a.settings.statusCycles&&a.settings.statusCycles.length>0))return;let w=Object.keys(v).find(T=>v[T]===u)||b[0];if(!f&&a.settings.enableTextMarkInSourceMode){let T=s+l[1].length+p.length,x=T+g.length;i(T,x,jn.Decoration.replace({widget:new Gb(n,a,d,T,x,w,u,m)}))}else i(s+l[1].length,s+l[1].length+p.length+g.length,jn.Decoration.replace({widget:new Gb(n,a,d,s+l[1].length,s+l[1].length+p.length+g.length,w,u,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=jn.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(bs.editorLivePreviewField)}shouldRender(i,s,o){let d=(0,Kb.syntaxTree)(i.state).resolveInner(s+1).type.prop(Kb.tokenClassNodeProp);if(d){let m=d.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 d=r.view.state.selection;for(let p of d.ranges)if(!(p.to<=i||p.from>=s))return!1;return!0}})};return jn.ViewPlugin.fromClass(e,t)}var fE=Qb.Facet.define({combine:n=>n[0]||null}),mE=class extends Hn.WidgetType{constructor(e,t,r,i,s,o,l,d){super();this.state=e;this.settings=t;this.timerManager=r;this.lineFrom=i;this.lineTo=s;this.filePath=o;this.plugin=l;this.existingBlockId=d;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=Eu.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=Eu.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=Eu.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(ws.editorEditorField,!1);if(e)return e;if((i=this.plugin)!=null&&i.app){let l=this.plugin.app.workspace.getActiveViewOfType(ws.MarkdownView);if(l!=null&&l.editor){let d=l.editor;if(d.cm)return d.cm;if(d.cm6)return d.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 d=l.closest(".cm-editor");if(d&&d.cmView)return d.cmView.view}}return console.error("[TaskTimer] Could not find EditorView through any method"),null}updateTaskStatus(e){var d,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=(d=this.plugin)==null?void 0:d.app)==null?void 0:u.workspace)==null?void 0:p.getActiveViewOfType(ws.MarkdownView);if(!(m!=null&&m.editor)||!m.file||m.file.path!==this.filePath)return!1;let h=t.number-1;return m.editor.setLine(h,o),!0}return l.dispatch({changes:{from:t.from,to:t.to,insert:o},annotations:It.of("taskTimer")}),!0}startTimer(){var e,t,r,i,s,o,l,d,u;try{let p=this.getTaskId();if(!p){let m=this.timerManager.generateBlockId(this.settings.blockRefPrefix),h=this.getEditorView();if(h){let g=this.state.doc.lineAt(this.lineFrom),f=g.text,k=` ^${m}`,y=(((r=(t=(e=this.plugin)==null?void 0:e.settings)==null?void 0:t.taskStatuses)==null?void 0:r.inProgress)||">|/").split("|")[0]||"/",b=f.replace(/\[([^\]]+)\]/,`[${y}]`).trimEnd()+k;`${g.number}`;try{h.dispatch({changes:{from:g.from,to:g.to,insert:b},annotations:It.of("taskTimer")}),this.existingBlockId=m,`${m}`,this.timerManager.startTimer(this.filePath,m),this.startRealtimeUpdates(),this.updateTimerState();return}catch(w){console.error("[TaskTimer] Error dispatching change:",w);return}}else{console.error("[TaskTimer] No EditorView available");let g=this.state.field(ws.editorInfoField);if(g!=null&&g.editor){let f=this.state.doc.lineAt(this.lineFrom),k=f.text,y=(((o=(s=(i=this.plugin)==null?void 0:i.settings)==null?void 0:s.taskStatuses)==null?void 0:o.inProgress)||">|/").split("|")[0]||"/",b=k.replace(/\[([^\]]+)\]/,`[${y}]`).trimEnd()+` ^${m}`;try{g.editor.replaceRange(b,{line:f.number-1,ch:0},{line:f.number-1,ch:k.length}),this.existingBlockId=m,`${m}`,this.timerManager.startTimer(this.filePath,m),this.startRealtimeUpdates(),this.updateTimerState(),this.refreshUI();return}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 f=(((u=(d=(l=this.plugin)==null?void 0:l.settings)==null?void 0:d.taskStatuses)==null?void 0:u.inProgress)||">|/").split("|")[0]||"/";this.updateTaskStatus(`[${f}]`)}`${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 d=this.timerManager.completeTimer(o),u=this.getEditorView();if(u){let p=this.state.doc.lineAt(this.lineFrom),m=p.text,g=(((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",f=m.replace(/\[([^\]]+)\]/,`[${g}]`),k=f.match(/\s*\^[\w-]+\s*$/);if(k){let v=f.length-k[0].length;f=f.slice(0,v)+` (${d})`+f.slice(v)}else f=f.replace(/\s*$/,` (${d})`);try{u.dispatch({changes:{from:p.from,to:p.to,insert:f}})}catch(v){console.error("[TaskTimer] Error updating task:",v);let y=this.state.field(ws.editorInfoField);y!=null&&y.editor&&y.editor.replaceRange(f,{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(),`${d}`}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)}},A9=Qb.StateField.define({create(n){return c2(n)},update(n,a){let e=a.isUserEvent("undo")||a.isUserEvent("redo");return a.docChanged||a.effects.length>0||e?(a.docChanged&&F9(a),c2(a.state)):n},provide:n=>Hn.EditorView.decorations.from(n)});function c2(n){var d,u,p,m,h;let a=n.facet(fE);if(!((d=a==null?void 0:a.settings)!=null&&d.enabled))return Hn.Decoration.none;let e=n.field(ws.editorInfoField);if(!(e!=null&&e.app))return Hn.Decoration.none;let t=e.app.workspace.getActiveFile();if(!t)return Hn.Decoration.none;if(t.path,!new qb(a.settings,a.metadataCache).isTaskTimerEnabled(t))return t.path,Hn.Decoration.none;let i=new Ft(a.settings),s=[],o=n.doc;o.lines;let l=1/0;for(let g=1;g<=o.lines;g++){let k=o.line(g).text;if(hE(k)){let v=((u=k.match(/^(\s*)/))==null?void 0:u[1].length)||0;v<l&&(l=v)}}for(let g=1;g<=o.lines;g++){let f=o.line(g),k=f.text;if(hE(k)&&(k.trim(),(((p=k.match(/^(\s*)/))==null?void 0:p[1].length)||0)===l)){let b=k.match(/^\s*[-*+]\s+\[([^\]]+)\]/);if(b){let x=b[1],C=((h=(m=a==null?void 0:a.plugin)==null?void 0:m.settings)==null?void 0:h.taskStatuses)||{completed:"x|X",abandoned:"-"};if(C.completed.split("|").includes(x)||C.abandoned.split("|").includes(x)&&!gE(k))continue}let w=gE(k),T=Hn.Decoration.widget({widget:new mE(n,a.settings,i,f.from,f.to,t.path,a.plugin,w),side:-1,block:!0});s.push(T.range(f.from))}}return s.length,Hn.Decoration.set(s,!0)}function hE(n){return/^\s*[-*+]\s+\[[^\]]*\]/.test(n)}function gE(n){let a=n.match(/\^([a-zA-Z0-9\-_]+)/);return a?a[1]:void 0}function F9(n){var s;let a=n.state.facet(fE);if(!((s=a==null?void 0:a.settings)!=null&&s.enabled)||!a.plugin)return;let e=n.state.field(ws.editorInfoField);if(!(e!=null&&e.app))return;let t=e.app.workspace.getActiveFile();if(!t)return;let r=new Ft(a.settings),i=n.state.doc;n.changes.iterChangedRanges((o,l,d,u)=>{var h,g;let p=i.lineAt(d).number,m=i.lineAt(u).number;for(let f=p;f<=m;f++){if(f>i.lines)continue;let v=i.line(f).text;if(!hE(v))continue;let y=gE(v);if(!y)continue;let b=v.match(/^\s*[-*+]\s+\[([^\]]+)\]/);if(!b)continue;let w=b[1],T=((g=(h=a==null?void 0:a.plugin)==null?void 0:h.settings)==null?void 0:g.taskStatuses)||{completed:"x|X",inProgress:">|/",abandoned:"-",notStarted:" "},x=T.inProgress.split("|"),C=T.abandoned.split("|"),S=T.completed.split("|"),D=T.notStarted.split("|"),E=`taskTimer_${t.path}#${y}`,R=r.getTimerState(E);`${w}${E}`,x.includes(w)?!R||R.status==="idle"?r.startTimer(t.path,y):R.status==="paused"?r.resumeTimer(E):R.status:C.includes(w)?R&&R.status==="running"?r.pauseTimer(E):R&&R.status:S.includes(w)?R&&(R.status==="running"||R.status==="paused")&&`${r.completeTimer(E)}`:D.includes(w)&&R&&r.resetTimer(E)}})}function d2(n){let a={settings:n.settings.taskTimer,metadataCache:n.app.metadataCache,plugin:n};return[fE.of(a),A9]}var Xb=require("obsidian");function kE(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 R9(n){if(!n)return null;let a=n.match(dd);return a?Number(a[2]):null}function u2(n){if(!n)return null;let a=kE(n);return a?R9(a):null}function p2(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=kE(n);if(!e)return null;let t=e.match(dd);if(!t)return null;let r=parseInt(t[2],10);return n.setAttribute("data-custom-goal",r.toString()),r}function m2(n){if(!n)return!1;let a=kE(n);return a?!!a.match(dd):!1}function vE(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 yE(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 d=o.getBoundingClientRect().top,u=l.getBoundingClientRect().top;return d-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 bE(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 ff(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 wE(n,a,e){n.settings.addTaskProgressBarToHeading&&a.forEach((t,r)=>{if(!r||t.length===0)return;let i={parentElement:r,childrenElement:t},s=new ff(n,i,e).onload();r.appendChild(s)})}function h2({plugin:n,element:a,ctx:e}){var t,r;if(!iA(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 d=i.lineStart;d>=0;d--){let u=s[d];if(u.match(/^(#{1,6})\s+(.+)$/)){o=u.trim(),l=d;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],d=l.match(/^(#{1,6})\s/);if(!d)return;let u=d[1].length,p=!1;for(let h of s.slice(i.lineStart)){let g=h.match(/^(#{1,6})\s/);if(g){let f=g[1].length;if(p&&f<=u)break}p||(p=!0),o.push(h)}if((r=n.settings.showProgressBarBasedOnHeading)!=null&&r.trim()&&!n.settings.showProgressBarBasedOnHeading.split(",").map(g=>g.trim()).includes(l.trim())){a.addClass("no-progress-bar");return}let m=o.filter(h=>h.trim().match(/^([-*+]|\\d+\\.)\s*\[(.)\]/)!==null);if(m.length>0){let h=[];for(let k of m){let v=createEl("li",{cls:"task-list-item"}),y=k.match(/\[(.)\]/);if(y&&y[1]){let w=y[1];v.setAttribute("data-task",w);let T=createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"});n.settings.taskStatuses.completed.split("|").includes(w)&&(T.checked=!0),v.prepend(T)}let b=k.replace(/^([-*+]|\\d+\\.)\s*\[(.)\]\s*/,"");v.appendChild(createSpan({text:b})),h.push(v)}let g={parentElement:a.children[0],childrenElement:h},f=new ff(n,g,"normal",{sectionInfo:i,ctx:e,element:a}).onload();a.children[0].appendChild(f)}}}if(a.find("ul.contains-task-list")){let i=a.findAll(".task-list-item"),s=vE(i);if(bE(n,s,"normal"),n.settings.addTaskProgressBarToHeading){let o=yE(a);wE(n,o,"normal")}}else if(a.find("ol.contains-task-list")){let i=a.findAll(".task-list-item"),s=vE(i);if(bE(n,s,"normal"),n.settings.addTaskProgressBarToHeading){let o=yE(a);wE(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=vE(s);if(bE(n,o,"dataview"),n.settings.addTaskProgressBarToHeading){let l=yE(i);wE(n,l,"dataview")}i.setAttribute("data-task-progress-bar","true")}}}var ff=class extends Xb.Component{constructor(e,t,r,i){super();this.type=r;this.debounceUpdateFromModifiedFile=(0,Xb.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 f,k,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=[],d=s[i.lineStart].match(/^(#{1,6})\s/);if(!d){this.unload();return}let u=d[1].length,p=!1;for(let y of s.slice(i.lineStart)){let b=y.match(/^(#{1,6})\s/);if(b){let w=b[1].length;if(p&&w<=u)break}p||(p=!0),o.push(y)}let m=o.filter(y=>y.trim().match(/^([-*+]|\\d+\\.)\s*\[(.)\]/)!==null);if(m.length===0){this.unload();return}let h=[];for(let y of m){let b=createEl("li",{cls:"task-list-item"}),w=y.match(/\[(.)\]/);if(w&&w[1]){let x=w[1];b.setAttribute("data-task",x);let C=createEl("input",{cls:"task-list-item-checkbox",type:"checkbox"});this.plugin.settings.taskStatuses.completed.split("|").includes(x)&&(C.checked=!0),b.prepend(C)}let T=y.replace(/^([-*+]|\\d+\\.)\s*\[(.)\]\s*/,"");b.appendChild(createSpan({text:T})),h.push(b)}if(this.group.childrenElement=h,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 y=this.progressBarEl.parentElement;(f=this.progressBarEl)==null||f.detach(),this.onunload();let b=this.onload();this.progressBarEl.remove(),y.appendChild(b),(((k=this.plugin)==null?void 0:k.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,d,u,p,m;return(((o=(s=this.plugin)==null?void 0:s.settings.taskStatuses.inProgress)==null?void 0:o.split("|"))||["-","/"]).includes(e)?"inProgress":(((d=(l=this.plugin)==null?void 0:l.settings.taskStatuses.abandoned)==null?void 0:d.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,d,u,p,m;return(((o=(s=this.plugin)==null?void 0:s.settings.taskStatuses.inProgress)==null?void 0:o.split("|"))||["-","/"]).includes(e)?"inProgress":(((d=(l=this.plugin)==null?void 0:l.settings.taskStatuses.abandoned)==null?void 0:d.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,d,u,p,m,h,g,f,k,v,y;return(((d=(l=this.plugin)==null?void 0:l.settings.taskStatuses.completed)==null?void 0:d.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":(((h=(m=this.plugin)==null?void 0:m.settings.taskStatuses.abandoned)==null?void 0:h.split("|"))||[">"]).includes(e)?"abandoned":(((f=(g=this.plugin)==null?void 0:g.settings.taskStatuses.planned)==null?void 0:f.split("|"))||["?"]).includes(e)?"planned":(((v=(k=this.plugin)==null?void 0:k.settings.taskStatuses.notStarted)==null?void 0:v.split("|"))||[" "]).includes(e)?"notStarted":((y=this.plugin)==null?void 0:y.settings.countOtherStatusesAs)||"notStarted"}determineTaskStatus(e){var l,d,u,p,m,h,g,f,k;return((l=this.plugin)==null?void 0:l.settings.taskStatuses.completed.split("|")).includes(e)?"completed":((u=(d=this.plugin)==null?void 0:d.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":((g=(h=this.plugin)==null?void 0:h.settings.taskStatuses.planned)==null?void 0:g.split("|")).includes(e)?"planned":(((k=(f=this.plugin)==null?void 0:f.settings.taskStatuses.notStarted)==null?void 0:k.split("|")).includes(e),"notStarted")}isCompletedTaskFromDataTask(e){var r,i,s,o;return(r=this.plugin)!=null&&r.settings.useOnlyCountMarks?((i=this.plugin)==null?void 0:i.settings.onlyCountTaskMarks.split("|")).includes(e):(s=this.plugin)!=null&&s.settings.excludeTaskMarks&&this.plugin.settings.excludeTaskMarks.includes(e)?!1:((o=this.plugin)==null?void 0:o.settings.taskStatuses.completed.split("|")).includes(e)}isCompletedTask(e){var s,o,l,d;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:((d=this.plugin)==null?void 0:d.settings.taskStatuses.completed.split("|")).includes(r)}updateCompletedAndTotalDataview(){var d,u,p,m;let e=0,t=0,r=0,i=0,s=0,o=0,l=new Map;for(let h of this.group.childrenElement){let g=h.parentElement;g&&(l.has(g)||l.set(g,[]),(d=l.get(g))==null||d.push(h))}for(let h of this.group.childrenElement){let g=h.querySelector(".task-list-item-checkbox");if(!g)continue;if(!((u=this.plugin)!=null&&u.settings.countSubLevel)){let k=h.parentElement;if(k&&k.classList.contains("task-list-item"))continue;if(this.group.parentElement.matches("h1, h2, h3, h4, h5, h6")){let v=h.closest("li");if(v){let y=v.parentElement;if((p=y==null?void 0:y.parentElement)==null?void 0:p.closest("li"))continue}}}o++;let f=h.getAttribute("data-task");if(f){let k=this.getTaskStatusFromDataTask(f);this.isCompletedTaskFromDataTask(f)?e++:k==="inProgress"?t++:k==="abandoned"?r++:k==="planned"?i++:k==="notStarted"&&s++}else{let k=((m=h.textContent)==null?void 0:m.trim())||"",v=k.match(/\[(.)]/);if(v&&v[1]){let y=this.getTaskStatus(k);this.isCompletedTask(k)?e++:y==="inProgress"?t++:y==="abandoned"?r++:y==="planned"?i++:y==="notStarted"&&s++}else g.checked?e++:s++}}this.completed=e,this.inProgress=t,this.abandoned=r,this.planned=i,this.notStarted=s,this.total=o}countTasks(e){var d,u,p;let t=0,r=0,i=0,s=0,o=0,l=0;for(let m of e){let h=null,g=((d=this.plugin)==null?void 0:d.settings.allowCustomProgressGoal)&&m2((u=m.parentElement)==null?void 0:u.parentElement),f=m.querySelector(".task-list-item-checkbox");if(!f)continue;let k=m.getAttribute("data-task");if(k){let v=this.getTaskStatusFromDataTask(k);g&&(h=u2(m)),this.isCompletedTaskFromDataTask(k)?(g||t++,h!==null&&(t+=h)):v==="inProgress"?(g||r++,g&&h!==null&&(r+=h)):v==="abandoned"?(g||i++,g&&h!==null&&(i+=h)):v==="planned"?(g||s++,g&&h!==null&&(s+=h)):v==="notStarted"&&(g||o++,g&&h!==null&&(o+=h))}else{let v=((p=m.textContent)==null?void 0:p.trim())||"",y=f,b=v.match(/\[(.)]/);if(b&&b[1]){let w=this.getTaskStatus(v);this.isCompletedTask(v)?t++:w==="inProgress"?r++:w==="abandoned"?i++:w==="planned"?s++:w==="notStarted"&&o++}else y.checked?t++:o++}l++}return{completed:t,inProgress:r,abandoned:i,planned:s,notStarted:o,total:l}}updateCompletedAndTotal(){var u,p,m,h,g;let e=0,t=new Map;for(let f of this.group.childrenElement){let k=f.parentElement;k&&(t.has(k)||t.set(k,[]),(u=t.get(k))==null||u.push(f))}let r=[];for(let f of this.group.childrenElement){if(!f.querySelector(".task-list-item-checkbox"))continue;if(r.push(f),(p=this.plugin)!=null&&p.settings.countSubLevel){if((h=this.plugin)!=null&&h.settings.countSubLevel){let y=f.findAll(".task-list-item");for(let b of y)e++,r.push(b)}}else{let y=f.parentElement;if(y&&y.classList.contains("task-list-item"))continue;if(this.group.parentElement.matches("h1, h2, h3, h4, h5, h6")){let b=f.closest("li");if(b){let w=b.parentElement;if((m=w==null?void 0:w.parentElement)==null?void 0:m.closest("li"))continue}}}let v=p2((g=f.parentElement)==null?void 0:g.parentElement);v?e=v:e++}let{completed:i,inProgress:s,abandoned:o,planned:l,notStarted:d}=this.countTasks(r);this.completed=i,this.inProgress=s,this.abandoned=o,this.planned=l,this.notStarted=d,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=go({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=go({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 Pu=require("obsidian");function g2({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 TE(n,i,s,o,e).load()}}var TE=class extends Pu.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,Pu.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 f;let e=this.ctx.getSectionInfo(this.taskItem),t=this.ctx.sourcePath?this.plugin.app.vault.getFileByPath(this.ctx.sourcePath):null;if(!t||!(t instanceof Pu.TFile))return;let r=null;if(!e){if((f=this.ctx.containerEl)!=null&&f.cmView){let k=this.ctx.containerEl.cmView;k.widget.clazz==="cm-callout"&&(r={lineStart:0,start:k.widget.start,end:k.widget.end,text:k.widget.text})}if(!r)return}let{cycle:i,marks:s,excludeMarksFromCycle:o}=ca(this.plugin.settings,this.currentMark),l=i.filter(k=>!o.includes(k)),d,u,p;if(this.plugin.settings.statusCycles&&this.plugin.settings.statusCycles.length>0){let k=En(this.currentMark,this.plugin.settings.statusCycles);if(k)u=k.statusName,d=k.mark,p=Object.keys(s).find(v=>s[v]===this.currentMark)||k.cycle.cycle[0];else if(l.length>0)p=l[0],u=l[0],d=s[u]||" ";else return}else{if(l.length===0)return;p=Object.keys(s).find(y=>s[y]===this.currentMark)||l[0];let v=(l.indexOf(p)+1)%l.length;u=l[v],d=s[u]||" "}let m=Uo(this.plugin),h=u==="DONE"&&!!m,g=p==="DONE";this.plugin.app.vault.process(t,k=>{var w;let v=k.split(`
`),y,b;if(e){let T=parseInt(this.taskItem.getAttribute("data-line")||"0");y=e.lineStart+T,b=v[y]}else if(r){let T=parseInt(((w=this.taskItem.querySelector("input"))==null?void 0:w.getAttribute("data-line"))||"0");y=k.substring(0,r.start).split(`
`).length-1+T,b=v[y]}else return k;if(h&&m){let T=m.executeToggleTaskDoneCommand(b,t.path),x=T.split(`
`);x.length===1?v[y]=T:v.splice(y,1,...x),this.currentMark=d,this.triggerMarkUpdate(d),this.originalCheckbox.checked=!0}else{let T=b;if(g&&(T=T.replace(/\s+✅\s+\d{4}-\d{2}-\d{2}/,"")),T=T.replace(/(\s*[-*+]\s*\[)(.)(])/,`$1${d}$3`),T!==b){v[y]=T,this.currentMark=d,this.triggerMarkUpdate(d);let x=this.plugin.settings.taskStatuses.completed.split("|");this.originalCheckbox.checked=x.includes(d)}}if(d==="x"||d==="X"){let T=al(t.path,b,y,this.plugin.settings.preferMetadataFormat,this.plugin);T&&this.plugin.app.workspace.trigger("task-genius:task-completed",T)}return v.join(`
`)})}getTaskStatusFromMark(e){let{cycle:t,marks:r,excludeMarksFromCycle:i}=ca(this.plugin.settings,e),s=t.filter(l=>!i.includes(l));return s.length===0&&!(this.plugin.settings.statusCycles&&this.plugin.settings.statusCycles.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.show(),super.unload()}};var kr=require("obsidian");z();var Yr=require("obsidian");z();var w2=require("obsidian");z();z();var Iu=class{constructor(a){this.plugin=a}getOnboardingConfigs(){return[this.getBeginnerConfig(),this.getAdvancedConfig(),this.getPowerUserConfig()]}getBeginnerConfig(){let a=xe.viewConfiguration.filter(e=>["inbox","forecast","projects"].includes(e.id));return{mode:"beginner",name:c("Beginner"),description:c("Basic task management with essential features"),features:[c("Basic progress bars"),c("Essential views (Inbox, Forecast, Projects)"),c("Simple task status tracking"),c("Quick task capture"),c("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:{...xe.quickCapture,enableQuickCapture:!0},workflow:{...xe.workflow,enableWorkflow:!1},rewards:{...xe.rewards,enableRewards:!1},habit:{...xe.habit,enableHabits:!1},fileParsingConfig:{...xe.fileParsingConfig,enableWorkerProcessing:!1,enableFileMetadataParsing:!1,enableTagBasedTaskParsing:!1},timelineSidebar:{...xe.timelineSidebar,enableTimelineSidebar:!1},betaTest:{enableBaseView:!1}}}}getAdvancedConfig(){let a=xe.viewConfiguration.filter(e=>["inbox","forecast","projects","tags","kanban","calendar","table"].includes(e.id));return{mode:"advanced",name:c("Advanced"),description:c("Project management with enhanced workflows"),features:[c("Full progress bar customization"),c("Extended views (Kanban, Calendar, Table)"),c("Project management features"),c("Basic workflow automation"),c("Task status switching"),c("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:{...xe.quickCapture,enableQuickCapture:!0},projectConfig:{...xe.projectConfig,enableEnhancedProject:!0},fileMetadataInheritance:{...xe.fileMetadataInheritance,enabled:!0},workflow:{...xe.workflow,enableWorkflow:!0,autoAddTimestamp:!0},autoDateManager:{...xe.autoDateManager,enabled:!0},completedTaskMover:{...xe.completedTaskMover,enableCompletedTaskMover:!0},rewards:{...xe.rewards,enableRewards:!1},habit:{...xe.habit,enableHabits:!1},fileParsingConfig:{...xe.fileParsingConfig,enableWorkerProcessing:!0,enableFileMetadataParsing:!1},timelineSidebar:{...xe.timelineSidebar,enableTimelineSidebar:!1}}}}getPowerUserConfig(){return{mode:"power",name:c("Power User"),description:c("Full-featured experience with all capabilities"),features:[c("All views and advanced configurations"),c("Complex workflow definitions"),c("Reward and habit tracking systems"),c("Performance optimizations"),c("Advanced integrations"),c("Experimental features"),c("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:xe.viewConfiguration,enableDatePicker:!0,enablePriorityPicker:!0,quickCapture:{...xe.quickCapture,enableQuickCapture:!0,enableMinimalMode:!0},projectConfig:{...xe.projectConfig,enableEnhancedProject:!0},fileMetadataInheritance:{...xe.fileMetadataInheritance,enabled:!0,inheritFromFrontmatter:!0,inheritFromFrontmatterForSubtasks:!0},workflow:{...xe.workflow,enableWorkflow:!0,autoAddTimestamp:!0,calculateSpentTime:!0},rewards:{...xe.rewards,enableRewards:!0},habit:{...xe.habit,enableHabits:!0},fileParsingConfig:{...xe.fileParsingConfig,enableWorkerProcessing:!0,enableFileMetadataParsing:!0,enableTagBasedTaskParsing:!0,enableMtimeOptimization:!0},timelineSidebar:{...xe.timelineSidebar,enableTimelineSidebar:!0},autoDateManager:{...xe.autoDateManager,enabled:!0,manageCompletedDate:!0,manageStartDate:!0},completedTaskMover:{...xe.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 d=this.deepMerge(this.plugin.settings,l);d.viewConfiguration=o,d.onboarding||(d.onboarding=xe.onboarding),d.onboarding.configMode=a,this.plugin.settings=d,await this.plugin.saveSettings(),`${a}${i.length}`}async completeOnboarding(a){this.plugin.settings.onboarding||(this.plugin.settings.onboarding={...xe.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={...xe.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={...xe.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 c("Not configured");let t=this.getOnboardingConfigs().find(i=>i.mode===a);return t?t.name:c("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,h,g,f,k;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)),d=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 ${(h=t.settings.quickCapture)!=null&&h.enableQuickCapture?"enabled":"disabled"}`),((g=t.settings.workflow)==null?void 0:g.enableWorkflow)!==((f=this.plugin.settings.workflow)==null?void 0:f.enableWorkflow)&&u.push(`Workflow ${(k=t.settings.workflow)!=null&&k.enableWorkflow?"enabled":"disabled"}`),{viewsToAdd:l,viewsToUpdate:d,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}};z();var Au=class{constructor(a){this.plugin=a}hasUserMadeChanges(){let a=this.plugin.settings,e=xe;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=xe;if(this.hasCustomViews(e)){let i=((r=e.viewConfiguration)==null?void 0:r.filter(s=>s.type==="custom").length)||0;a.push(c("Custom views created")+` (${i})`)}return this.isProgressBarCustomized(e,t)&&a.push(c("Progress bar settings modified")),this.isTaskStatusCustomized(e,t)&&a.push(c("Task status settings configured")),this.isQuickCaptureCustomized(e,t)&&a.push(c("Quick capture configured")),this.isWorkflowCustomized(e,t)&&a.push(c("Workflow settings enabled")),this.areAdvancedFeaturesEnabled(e,t)&&a.push(c("Advanced features enabled")),this.isFileParsingCustomized(e,t)&&a.push(c("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,d,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)||((d=a.betaTest)==null?void 0:d.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 O9=require("obsidian"),Fu=(f=>(f[f.INTRO=0]="INTRO",f[f.MODE_SELECT=1]="MODE_SELECT",f[f.FLUENT_OVERVIEW=2]="FLUENT_OVERVIEW",f[f.FLUENT_WS_SELECTOR=3]="FLUENT_WS_SELECTOR",f[f.FLUENT_MAIN_NAV=4]="FLUENT_MAIN_NAV",f[f.FLUENT_PROJECTS=5]="FLUENT_PROJECTS",f[f.FLUENT_OTHER_VIEWS=6]="FLUENT_OTHER_VIEWS",f[f.FLUENT_TOPNAV=7]="FLUENT_TOPNAV",f[f.FLUENT_PLACEMENT=8]="FLUENT_PLACEMENT",f[f.SETTINGS_CHECK=9]="SETTINGS_CHECK",f[f.USER_LEVEL_SELECT=10]="USER_LEVEL_SELECT",f[f.FILE_FILTER=11]="FILE_FILTER",f[f.CONFIG_PREVIEW=12]="CONFIG_PREVIEW",f[f.TASK_CREATION_GUIDE=13]="TASK_CREATION_GUIDE",f[f.COMPLETE=14]="COMPLETE",f))(Fu||{}),Jb=class{constructor(a){this.listeners=new Map;this.state={currentStep:0,skipTaskGuide:!1,isCompleting:!1,userHasChanges:!1,changesSummary:[],uiMode:"fluent",useSideLeaves:!0,...a}}getState(){return{...this.state}}getCurrentStep(){return this.state.currentStep}updateState(a){this.state={...this.state,...a},this.emit("state-updated",{state:a})}setSelectedConfig(a){this.updateState({selectedConfig:a})}setUIMode(a){this.updateState({uiMode:a})}setUseSideLeaves(a){this.updateState({useSideLeaves:a})}setSkipTaskGuide(a){this.updateState({skipTaskGuide:a})}async next(){if(!this.validateCurrentStep())return this.emit("navigation-blocked",{step:this.state.currentStep}),!1;let a=this.state.currentStep,e;switch(a){case 0:e=1;break;case 1:this.state.uiMode==="fluent"?e=2:e=9;break;case 2:e=3;break;case 3:e=4;break;case 4:e=5;break;case 5:e=6;break;case 6:e=7;break;case 7:e=8;break;case 8:e=9;break;case 9:if(this.state.settingsCheckAction==="wizard")e=10;else return this.emit("completed",{step:a}),!0;break;case 10:e=11;break;case 11:e=12;break;case 12:this.state.skipTaskGuide?e=14:e=13;break;case 13:e=14;break;case 14:return this.emit("completed",{step:a}),!0;default:return!1}return this.setStep(e),!0}async back(){let a=this.state.currentStep;if(a===0)return!1;let e;switch(a){case 1:e=0;break;case 2:e=1;break;case 3:e=2;break;case 4:e=3;break;case 5:e=4;break;case 6:e=5;break;case 7:e=6;break;case 8:e=7;break;case 9:this.state.uiMode==="fluent"?e=8:e=1;break;case 10:this.state.userHasChanges&&this.state.settingsCheckAction==="wizard"?e=9:this.state.uiMode==="fluent"?e=8:e=1;break;case 11:e=10;break;case 12:e=11;break;case 13:e=12;break;case 14:this.state.skipTaskGuide?e=12:e=13;break;default:return!1}return this.setStep(e),!0}setStep(a){this.state.currentStep=a,this.emit("step-changed",{step:a})}skip(){this.emit("completed",{step:this.state.currentStep})}validateCurrentStep(){switch(this.state.currentStep){case 0:return!0;case 1:return!!this.state.uiMode;case 9:return!!this.state.settingsCheckAction;case 10:return!!this.state.selectedConfig;case 2:case 3:case 4:case 5:case 6:case 7:case 11:case 12:case 13:case 14:default:return!0}}canGoNext(){return this.validateCurrentStep()}canGoBack(){return this.state.currentStep!==0}canSkip(){let a=this.state.currentStep;return a===14?!1:a===0||this.canGoBack()}on(a,e){this.listeners.has(a)||this.listeners.set(a,[]),this.listeners.get(a).push(e)}off(a,e){let t=this.listeners.get(a);if(t){let r=t.indexOf(e);r>-1&&t.splice(r,1)}}emit(a,e={}){let t={type:a,...e},r=this.listeners.get(a);r&&r.forEach(i=>i(t))}};var Ru=require("obsidian");z();var Zb=class extends Ru.Component{constructor(a,e,t){super(),this.container=a,this.controller=e,this.callbacks=t,this.createLayout(),this.setupListeners(),this.updateButtons()}createLayout(){this.container.empty(),this.container.toggleClass(["onboarding-view"],!0),this.headerEl=this.container.createDiv("onboarding-header"),this.contentEl=this.container.createDiv("onboarding-content"),this.footerEl=this.container.createDiv("onboarding-footer"),this.createFooterButtons(),this.container.createEl("div",{cls:"onboarding-shadow"}),this.container.createEl("div",{cls:"tg-noise-layer"})}createFooterButtons(){let a=this.footerEl.createDiv("onboarding-buttons"),e=a.createDiv("buttons-left");this.backButton=new Ru.ButtonComponent(e).setButtonText(c("Back")).onClick(()=>this.callbacks.onBack()),this.backButton.buttonEl.addClass("clickable-icon"),this.skipButton=new Ru.ButtonComponent(e).setButtonText(c("Skip setup")).onClick(()=>this.callbacks.onSkip()),this.skipButton.buttonEl.addClass("clickable-icon");let t=a.createDiv("buttons-right");this.nextButton=new Ru.ButtonComponent(t).setButtonText(c("Next")).setCta().onClick(()=>this.callbacks.onNext())}setupListeners(){this.controller.on("step-changed",()=>{this.updateButtons()}),this.controller.on("state-updated",()=>{this.updateButtons()})}updateButtons(){let a=this.controller.getCurrentStep(),e=this.controller.getState();this.skipButton.buttonEl.toggleVisibility(this.controller.canSkip()),this.backButton.buttonEl.toggleVisibility(this.controller.canGoBack());let t=a===14,r=a===9,i=a===1;this.nextButton.buttonEl.toggleVisibility(!0),r?e.settingsCheckAction==="wizard"?this.nextButton.setButtonText(c("Continue with Wizard")):e.settingsCheckAction==="keep"?this.nextButton.setButtonText(c("Keep Settings")):this.nextButton.setButtonText(c("Continue")):i&&e.uiMode==="fluent"?this.nextButton.setButtonText(c("Next to Introduction")):this.nextButton.setButtonText(t?c("Start Using Task Genius"):c("Next")),this.nextButton.setDisabled(!this.controller.canGoNext()||e.isCompleting)}getHeaderElement(){return this.headerEl}getContentElement(){return this.contentEl}getFooterElement(){return this.footerEl}clearHeader(){var a;(a=this.headerEl)==null||a.empty()}clearContent(){var a;(a=this.contentEl)==null||a.empty()}setFooterVisible(a){this.footerEl.toggleVisibility(a)}cleanup(){this.container.empty()}};z();var Ou=class{constructor(a,e,t){this.timers=[];this.container=a,this.messages=e,this.onComplete=t,this.start()}start(){this.animateSequence(0)}animateSequence(a){if(a>=this.messages.length){this.onComplete();return}let e=this.messages[a],{text:t,className:r="intro-line",speed:i=25,fadeOut:s=!1,pauseAfter:o=0,fadeOutDelay:l=600,fadeOutDuration:d=500,delayNext:u=300}=e,p=this.container.createEl("p",{cls:`intro-line ${r}`}),m=[];for(let k=0;k<t.length;k++){let v=t[k],y=p.createSpan({cls:"intro-char",text:v});v===" "&&y.addClass("intro-char-space"),m.push(y)}let h=p.createSpan({cls:"intro-cursor",text:"\u258A"}),g=0,f=()=>{if(g<m.length){let k=m[g],v=Math.random()*i*.3;k.addClass("intro-char-visible"),k.after(h),g++;let y=window.setTimeout(f,i+v);this.timers.push(y)}else{h.remove(),p.addClass("stream-complete");let k=o||0,v=window.setTimeout(()=>{if(s){let y=window.setTimeout(()=>{let b=this.container.querySelectorAll(".intro-line");b.forEach((T,x)=>{x<=a&&T.addClass("intro-line-fadeout")});let w=window.setTimeout(()=>{b.forEach((x,C)=>{C<=a&&x.remove()});let T=window.setTimeout(()=>this.animateSequence(a+1),u);this.timers.push(T)},d);this.timers.push(w)},l);this.timers.push(y)}else{let y=window.setTimeout(()=>this.animateSequence(a+1),u);this.timers.push(y)}},k);this.timers.push(v)}};f()}cleanup(){this.timers.forEach(a=>window.clearTimeout(a)),this.timers=[]}};var ew=class{static render(a,e,t,r){a.empty(),e.empty(),t.hide();let s=e.createDiv({cls:"intro-typing-wrapper"}).createDiv({cls:"intro-typing"}),o=[{text:c("Hi,"),className:"intro-line-1",speed:35},{text:c("Thank you for using Task Genius"),className:"intro-line-2",speed:25},{text:c("In the following steps, you will gradually set up Task Genius to get a more suitable environment for you"),className:"intro-line-3",speed:20,fadeOut:!0,pauseAfter:2e3,fadeOutDelay:0,fadeOutDuration:1e3,delayNext:0},{text:c("In the current version, Task Genius provides a brand new visual and interactive experience: Fluent; while also providing the option to return to the previous interface. Which one do you prefer?"),className:"intro-line-4",speed:20,pauseAfter:300}];new Ou(s,o,()=>{t.show(),r.setStep(1)})}cleanup(){var a,e;(a=this.typingAnimation)==null||a.cleanup(),(e=this.transitionMessage)==null||e.cleanup()}};z();var f2=require("obsidian"),Ts=class{constructor(a,e,t={},r){this.selectedId=null;this.cards=new Map;this.container=a,this.onSelect=r,this.render(e,t)}render(a,e){let{containerClass:t="selectable-cards-container",cardClass:r="selectable-card",showIcon:i=!0,showPreview:s=!0,showFeatures:o=!1}=e,l=this.container.createDiv({cls:t});a.forEach(d=>{let u=l.createDiv({cls:`${r} card-${String(d.id)}`}),p=u.createDiv({cls:`${r}-header`});if(i&&d.icon){let f=p.createDiv({cls:`${r}-icon`});(0,f2.setIcon)(f,d.icon)}let m=p.createDiv({cls:`${r}-title-container`}),h=m.createEl("h3",{text:d.title,cls:`${r}-title`});if(d.subtitle&&m.createEl("span",{text:d.subtitle,cls:`${r}-subtitle`}),d.badge){let f=p.createDiv({cls:`${r}-badge`,text:d.badge})}let g=u.createDiv({cls:`${r}-body`});if(s&&d.preview){let f=g.createDiv({cls:`${r}-preview`});if(typeof d.preview=="function"){let k=d.preview();f.appendChild(k)}else f.appendChild(d.preview)}if(g.createEl("p",{text:d.description,cls:`${r}-description`}),o&&d.features&&d.features.length>0){let k=g.createDiv({cls:`${r}-features`}).createEl("ul");d.features.forEach(v=>{k.createEl("li",{text:v})})}u.addEventListener("click",()=>{this.select(d.id)}),u.setAttribute("tabindex","0"),u.addEventListener("keydown",f=>{(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),this.select(d.id))}),this.cards.set(d.id,u)})}select(a){if(this.selectedId!==null){let t=this.cards.get(this.selectedId);t==null||t.removeClass("is-selected")}this.selectedId=a;let e=this.cards.get(a);e==null||e.addClass("is-selected"),this.onSelect(a)}getSelected(){return this.selectedId}setSelected(a){this.cards.has(a)&&this.select(a)}};var k2=require("obsidian"),Bn=class{static create(a,e,t={}){let{variant:r="info",icon:i,title:s,showIcon:o=!0,className:l=""}=t,d=a.createDiv({cls:`onboarding-alert onboarding-alert-${r} ${l}`});if(o){let p=i||this.VARIANT_ICONS[r],m=d.createDiv({cls:"onboarding-alert-icon"});(0,k2.setIcon)(m,p)}let u=d.createDiv({cls:"onboarding-alert-content"});return s&&u.createEl("div",{text:s,cls:"onboarding-alert-title"}),u.createEl("div",{text:e,cls:"onboarding-alert-message"}),d}};Bn.VARIANT_ICONS={info:"info",success:"check-circle",warning:"alert-triangle",error:"alert-circle"};var tw=class{static render(a,e,t){a.empty(),e.empty(),a.toggleClass("intro-typing-wrapper",!0),e.toggleClass("intro-typing-wrapper",!0),a.createEl("p",{cls:"intro-line intro-line-4",text:c("In the current version, Task Genius provides a brand new visual and interactive experience: Fluent; while also providing the option to return to the previous interface. Which one do you prefer?")});let r=t.getState().uiMode,i=[{id:"fluent",title:c("Fluent"),subtitle:c("Modern & Sleek"),description:c("New visual design with elegant animations and modern interactions"),preview:this.createFluentPreview()},{id:"legacy",title:c("Legacy"),subtitle:c("Classic & Familiar"),description:c("Keep the familiar interface and interaction style you know"),preview:this.createLegacyPreview()}],s=new Ts(e,i,{containerClass:"selectable-cards-container",cardClass:"selectable-card",showPreview:!0},o=>{t.setUIMode(o)});r&&s.setSelected(r),Bn.create(e,c("You can change this option later in interface settings"),{variant:"info",className:"mode-selection-tip"})}static createFluentPreview(){let a=createDiv({cls:["mode-preview","mode-preview-fluent"]}),r=`https://raw.githubusercontent.com/Quorafind/Obsidian-Task-Progress-Bar/master/media/fluent${document.body.classList.contains("theme-dark")?"":"-light"}.png`,i=a.createEl("img",{attr:{src:r,alt:"Fluent mode preview"}});return i.style.maxWidth="100%",i.style.maxHeight="100%",i.style.objectFit="contain",i.style.borderRadius="4px",a}static createLegacyPreview(){let a=createDiv({cls:["mode-preview","mode-preview-legacy"]}),r=`https://raw.githubusercontent.com/Quorafind/Obsidian-Task-Progress-Bar/master/media/legacy${document.body.classList.contains("theme-dark")?"":"-light"}.png`,i=a.createEl("img",{attr:{src:r,alt:"Legacy mode preview"}});return i.style.maxWidth="100%",i.style.maxHeight="100%",i.style.objectFit="contain",i.style.borderRadius="4px",a}};z();var hi=require("obsidian");z();var $r=class{static createSidebarPreview(a){a.addClass("tg-fluent-container","component-preview-sidebar");let e=a.createDiv({cls:"fluent-sidebar component-preview"}),t=e.createDiv({cls:"fluent-sidebar-header"}),s=t.createDiv().createDiv({cls:"workspace-selector"}).createDiv({cls:"workspace-selector-button"}),o=s.createDiv({cls:"workspace-info"}),l=o.createDiv({cls:"workspace-icon"});l.style.backgroundColor="#3498db",(0,hi.setIcon)(l,"layers");let d=o.createDiv({cls:"workspace-details"});d.createDiv({cls:"workspace-name-container"}).createSpan({text:c("Personal"),cls:"workspace-name"}),d.createDiv({text:c("Workspace"),cls:"workspace-label"});let p=s.createDiv({cls:"workspace-dropdown-icon"});(0,hi.setIcon)(p,"chevron-down");let m=t.createEl("button",{cls:"fluent-new-task-btn",text:c("New Task")});(0,hi.setIcon)(m.createDiv({cls:"fluent-new-task-icon"}),"plus");let h=e.createDiv({cls:"fluent-sidebar-content"}),f=h.createDiv({cls:"fluent-sidebar-section fluent-sidebar-section-primary"}).createDiv({cls:"fluent-navigation-list"});[{id:"inbox",label:c("Inbox"),icon:"inbox",badge:5},{id:"today",label:c("Today"),icon:"calendar-days",badge:3},{id:"upcoming",label:c("Upcoming"),icon:"calendar",badge:8},{id:"flagged",label:c("Flagged"),icon:"flag",badge:2}].forEach((L,_)=>{let V=f.createDiv({cls:"fluent-navigation-item",attr:{"data-view-id":L.id,tabindex:"0",role:"button"}});_===0&&V.addClass("is-active");let K=V.createDiv({cls:"fluent-navigation-icon"});(0,hi.setIcon)(K,L.icon),V.createSpan({text:L.label,cls:"fluent-navigation-label"}),L.badge&&L.badge>0&&V.createDiv({text:L.badge.toString(),cls:"fluent-navigation-badge"})});let v=h.createDiv({cls:"fluent-sidebar-section fluent-sidebar-section-projects"}),y=v.createDiv({cls:"fluent-section-header"});y.createSpan({text:c("Projects")});let b=y.createDiv({cls:"fluent-project-header-buttons"}),w=b.createDiv({cls:"fluent-tree-toggle-btn",attr:{"aria-label":c("Toggle tree/list view")}});(0,hi.setIcon)(w,"list");let T=b.createDiv({cls:"fluent-sort-project-btn",attr:{"aria-label":c("Sort projects")}});(0,hi.setIcon)(T,"arrow-up-down");let S=v.createDiv().createDiv({cls:"fluent-project-list"}).createDiv({cls:"fluent-project-scroll"});[{id:"work",name:c("Work"),color:"#3b82f6",count:12},{id:"personal",name:c("Personal"),color:"#10b981",count:5},{id:"learning",name:c("Learning"),color:"#f59e0b",count:3}].forEach(L=>{let _=S.createDiv({cls:"fluent-project-item",attr:{"data-project-id":L.id,"data-level":"0",tabindex:"0",role:"button"}}),V=_.createDiv({cls:"fluent-project-color"});V.style.backgroundColor=L.color,_.createSpan({text:L.name,cls:"fluent-project-name"}),_.createSpan({text:L.count.toString(),cls:"fluent-project-count"})});let E=h.createDiv({cls:"fluent-sidebar-section fluent-sidebar-section-other"});E.createDiv({cls:"fluent-section-header"}).createSpan({text:c("Other Views")});let I=E.createDiv({cls:"fluent-navigation-list"});[{id:"calendar",label:c("Calendar"),icon:"calendar"},{id:"gantt",label:c("Gantt"),icon:"git-branch"},{id:"tags",label:c("Tags"),icon:"tag"}].forEach(L=>{let _=I.createDiv({cls:"fluent-navigation-item",attr:{"data-view-id":L.id,tabindex:"0",role:"button"}}),V=_.createDiv({cls:"fluent-navigation-icon"});(0,hi.setIcon)(V,L.icon),_.createSpan({text:L.label,cls:"fluent-navigation-label"})});let U=a.querySelector(".fluent-sidebar"),q=L=>{let _=L.closest(".fluent-navigation-item, .fluent-project-item");if(!_)return;let V=_.parentElement;V&&(Array.from(V.children).forEach(K=>K.classList.remove("is-active")),_.classList.add("is-active"))};U.addEventListener("click",L=>{q(L.target)}),U.addEventListener("keydown",L=>{if(L.key==="Enter"||L.key===" "){let _=L.target;q(_),L.preventDefault()}})}static createTopNavigationPreview(a){a.addClass("tg-fluent-container","component-preview-topnav");let e=a.createDiv({cls:"fluent-top-navigation component-preview"}),s=e.createDiv({cls:"fluent-nav-left"}).createDiv({cls:"fluent-search-container"}).createDiv({cls:"search-input-container"}).createEl("input",{type:"text",placeholder:c("Search tasks, projects ..."),cls:"search-input",attr:{disabled:"true"}}),l=e.createDiv({cls:"fluent-nav-center"}).createDiv({cls:"fluent-view-tabs"});[{id:"list",label:c("List"),icon:"list"},{id:"kanban",label:c("Kanban"),icon:"layout-grid"},{id:"tree",label:c("Tree"),icon:"git-branch"},{id:"calendar",label:c("Calendar"),icon:"calendar"}].forEach((g,f)=>{let k=l.createEl("button",{cls:["fluent-view-tab","clickable-icon"],attr:{"data-mode":g.id}});f===0&&k.addClass("is-active");let v=k.createDiv({cls:"fluent-view-tab-icon"});(0,hi.setIcon)(v,g.icon),k.createSpan({text:g.label})});let u=e.createDiv({cls:"fluent-nav-right"}),p=u.createDiv({cls:"fluent-nav-icon-button"});(0,hi.setIcon)(p,"bell");let m=p.createDiv({cls:"fluent-notification-badge",text:"3"}),h=u.createDiv({cls:"fluent-nav-icon-button"});(0,hi.setIcon)(h,"settings")}static createContentAreaPreview(a){a.addClass("tg-fluent-container","component-preview-content");let e=a.createDiv({cls:"task-content component-preview"}),t=e.createDiv({cls:"content-header"}),r=t.createDiv({cls:"content-title",text:c("Inbox")}),i=t.createDiv({cls:"task-count",text:`5 ${c("tasks")}`}),o=t.createDiv({cls:"content-filter"}).createEl("input",{cls:"filter-input",attr:{type:"text",placeholder:c("Filter tasks..."),disabled:"true"}}),l=t.createDiv({cls:"view-toggle-btn"});(0,hi.setIcon)(l,"list"),l.setAttribute("aria-label",c("Toggle list/tree view"));let d=e.createDiv({cls:"task-list"});[{title:c("Review project proposal"),priority:"high",project:"Work"},{title:c("Update documentation"),priority:"medium",project:"Work"},{title:c("Buy groceries"),priority:"low",project:"Personal"},{title:c("Finish online course"),priority:"medium",project:"Learning"},{title:c("Schedule team meeting"),priority:"high",project:"Work"}].forEach(p=>{let m=d.createDiv({cls:"task-item"}),h=m.createDiv({cls:"task-checkbox"});(0,hi.setIcon)(h,"circle");let g=m.createDiv({cls:"task-content"});g.createSpan({text:p.title,cls:"task-title"});let f=g.createDiv({cls:"task-meta"});p.priority&&f.createSpan({cls:`task-priority priority-${p.priority}`}).createSpan({text:p.priority}),p.project&&f.createSpan({cls:"task-project"}).createSpan({text:p.project})})}static createProjectPopoverPreview(a){a.addClass("tg-fluent-container","component-preview-popover");let e=a.createDiv({cls:"project-popover component-preview"}),t=e.createDiv({cls:"popover-header"}),r=t.createSpan({cls:"project-color-large"});r.style.backgroundColor="#3b82f6";let i=t.createDiv({cls:"popover-header-content"});i.createEl("h3",{text:c("Work")}),i.createSpan({text:`12 ${c("tasks")}`,cls:"project-task-count"});let s=e.createDiv({cls:"popover-stats"});[{label:c("Active"),value:"8"},{label:c("Completed"),value:"24"},{label:c("Overdue"),value:"2"}].forEach(u=>{let p=s.createDiv({cls:"stat-item"});p.createDiv({text:u.value,cls:"stat-value"}),p.createDiv({text:u.label,cls:"stat-label"})});let l=e.createDiv({cls:"popover-actions"});[{label:c("View All"),icon:"eye"},{label:c("Add Task"),icon:"plus"},{label:c("Settings"),icon:"settings"}].forEach(u=>{let p=l.createDiv({cls:"popover-action-btn"}),m=p.createSpan();(0,hi.setIcon)(m,u.icon),p.createSpan({text:u.label})})}};var aw=class{static render(a,e,t){a.empty(),e.empty(),a.createEl("h1",{text:c("Discover Fluent Interface")}),a.createEl("p",{text:c("A quick overview of the Fluent layout and its key areas"),cls:"onboarding-subtitle"});let r=e.createDiv({cls:"component-showcase"}),i=r.createDiv({cls:"component-showcase-preview"}),s=r.createDiv({cls:"component-showcase-description"}),o=i.createDiv();$r.createSidebarPreview(o);let l=i.createDiv();$r.createTopNavigationPreview(l),s.createEl("h3",{text:c("Fluent Layout Overview")}),s.createEl("p",{text:c("Fluent groups navigation on the left and global tools at the top, keeping your content area clean and focused.")});let d=s.createEl("ul",{cls:"component-feature-list"});[c("Sidebar for switching views and managing projects"),c("Top navigation for search, view modes and quick settings"),c("Consistent styling with clear hierarchy and feedback")].forEach(u=>d.createEl("li",{text:u}))}};z();var rw=class{static render(a,e,t){a.empty(),e.empty(),a.createEl("h1",{text:c("Workspace Selector")}),a.createEl("p",{text:c("Switch and manage workspaces from the top of the sidebar"),cls:"onboarding-subtitle"});let r=e.createDiv({cls:"component-showcase"}),i=r.createDiv({cls:"component-showcase-preview focus-mode"}),s=r.createDiv({cls:"component-showcase-description"});$r.createSidebarPreview(i);let o=i.querySelector(".workspace-selector-button");o==null||o.classList.add("is-focused"),i.querySelectorAll(".fluent-sidebar-content, .fluent-navigation-list, .fluent-project-list, .fluent-section-header, .fluent-top-navigation").forEach(u=>{(!o||!u.contains(o))&&u.classList.add("is-dimmed")}),s.createEl("h3",{text:c("Manage your spaces")}),s.createEl("p",{text:c("Use the workspace selector to switch between personal, work, or any custom workspace.")});let d=s.createEl("ul",{cls:"component-feature-list"});[c("Quickly toggle between multiple workspaces"),c("Create and organize workspaces for different contexts"),c("Consistent placement at the top of the sidebar")].forEach(u=>d.createEl("li",{text:u}))}};z();var iw=class{static render(a,e,t){a.empty(),e.empty(),a.createEl("h1",{text:c("Main Navigation")}),a.createEl("p",{text:c("Access Inbox, Today, Upcoming and more from the primary section"),cls:"onboarding-subtitle"});let r=e.createDiv({cls:"component-showcase"}),i=r.createDiv({cls:"component-showcase-preview focus-mode"}),s=r.createDiv({cls:"component-showcase-description"});$r.createSidebarPreview(i);let o=i.querySelector(".fluent-sidebar-section-primary");o==null||o.classList.add("is-focused"),i.querySelectorAll(".fluent-sidebar-section-projects, .fluent-sidebar-section-other").forEach(u=>u.classList.add("is-dimmed")),s.createEl("h3",{text:c("Navigate core views")}),s.createEl("p",{text:c("Quickly jump to core views like Inbox, Today, Upcoming and Flagged.")});let d=s.createEl("ul",{cls:"component-feature-list"});[c("Unread counts and indicators keep you informed"),c("Keyboard-ready with clear selection states")].forEach(u=>d.createEl("li",{text:u}))}};z();var nw=class{static render(a,e,t){a.empty(),e.empty(),a.createEl("h1",{text:c("Projects Section")}),a.createEl("p",{text:c("Organize your work with projects and hierarchies"),cls:"onboarding-subtitle"});let r=e.createDiv({cls:"component-showcase"}),i=r.createDiv({cls:"component-showcase-preview focus-mode"}),s=r.createDiv({cls:"component-showcase-description"});$r.createSidebarPreview(i);let o=i.querySelector(".fluent-sidebar-section-projects");o==null||o.classList.add("is-focused"),i.querySelectorAll(".fluent-sidebar-section-primary, .fluent-sidebar-section-other").forEach(u=>u.classList.add("is-dimmed")),s.createEl("h3",{text:c("Project organization")}),s.createEl("p",{text:c("Group related tasks under projects. Build nested hierarchies and get quick stats.")});let d=s.createEl("ul",{cls:"component-feature-list"});[c("Color-coded projects with counts (You can change the color in the settings)"),c("Supports nested structures for complex work"),c("Right click for more options"),c("Sort projects by name or tasks count, etc.")].forEach(u=>d.createEl("li",{text:u}))}};z();var sw=class{static render(a,e,t){a.empty(),e.empty(),a.createEl("h1",{text:c("Other Views")}),a.createEl("p",{text:c("Access Calendar, Gantt and Tags from the other views section"),cls:"onboarding-subtitle"});let r=e.createDiv({cls:"component-showcase"}),i=r.createDiv({cls:"component-showcase-preview focus-mode"}),s=r.createDiv({cls:"component-showcase-description"});$r.createSidebarPreview(i);let o=i.querySelector(".fluent-sidebar-section-other");o==null||o.classList.add("is-focused"),i.querySelectorAll(".fluent-sidebar-section-primary, .fluent-sidebar-section-projects").forEach(u=>u.classList.add("is-dimmed")),s.createEl("h3",{text:c("Specialized views")}),s.createEl("p",{text:c("Quickly reach views like Calendar, Gantt, Flagged and Tags, etc.")});let d=s.createEl("ul",{cls:"component-feature-list"});[c("Compact list with clear icons"),c("Right click for more options")].forEach(u=>d.createEl("li",{text:u}))}};z();var ow=class{static render(a,e,t){a.empty(),e.empty(),a.createEl("h1",{text:c("Top Navigation")}),a.createEl("p",{text:c("Search, switch views, and access quick settings from the top bar"),cls:"onboarding-subtitle"});let r=e.createDiv({cls:"component-showcase"}),i=r.createDiv({cls:"component-showcase-preview focus-mode"}),s=r.createDiv({cls:"component-showcase-description"});$r.createTopNavigationPreview(i);let o=i.querySelector(".fluent-top-navigation");o==null||o.classList.add("is-focused"),s.createEl("h3",{text:c("Global controls")}),s.createEl("p",{text:c("Use the top bar to search across everything, switch view modes, and open notifications or settings.")});let l=s.createEl("ul",{cls:"component-feature-list"});[c("Quick view mode switching"),c("Accessible controls with clear icons")].forEach(d=>l.createEl("li",{text:d}))}};z();var lw=class{static render(a,e,t){a.empty(),e.empty(),a.createEl("h1",{text:c("Fluent Layout")}),a.createEl("p",{text:c("Choose how to display Fluent views in your workspace"),cls:"onboarding-subtitle"});let r=t.getState().useSideLeaves?"sideleaves":"inline",i=[{id:"sideleaves",title:c("Sideleaves"),subtitle:c("Multi-Column Collaboration"),description:c("Left navigation and right details as separate workspace sidebars, ideal for simultaneous browsing and editing"),preview:this.createSideleavesPreview()},{id:"inline",title:c("Inline"),subtitle:c("Single-Page Immersion"),description:c("All content in one page, focusing on the main view and reducing interface distractions"),preview:this.createInlinePreview()}];new Ts(e,i,{containerClass:"selectable-cards-container",cardClass:"selectable-card",showPreview:!0},o=>{t.setUseSideLeaves(o==="sideleaves")}).setSelected("inline"),Bn.create(e,c("You can change this option later in settings"),{variant:"info",className:"placement-selection-tip"})}static createSideleavesPreview(){let a=createEl("div");a.addClass("placement-preview","placement-preview-sideleaves");let e=a.createDiv({cls:"placement-sidebar placement-sidebar-active"});for(let o=0;o<6;o++)e.createDiv({cls:"placement-sidebar-item placement-sidebar-item-active"});let t=a.createDiv({cls:"placement-center placement-center-active"}),r=t.createDiv({cls:"placement-tab-bar"});for(let o=0;o<3;o++){let l=r.createDiv({cls:"placement-tab"});o===1&&l.addClass("placement-tab-active")}let i=t.createDiv({cls:"placement-content"});for(let o=0;o<5;o++){let l=i.createDiv({cls:"placement-content-line"});l.style.width=`${90-o*12}%`}let s=a.createDiv({cls:"placement-sidebar placement-sidebar-active"});for(let o=0;o<8;o++)s.createDiv({cls:"placement-sidebar-item placement-sidebar-item-active placement-sidebar-item-small"});return a}static createInlinePreview(){let a=createEl("div");a.addClass("placement-preview","placement-preview-inline");let e=a.createDiv({cls:"placement-sidebar placement-sidebar-inactive"});for(let o=0;o<6;o++)e.createDiv({cls:"placement-sidebar-item placement-sidebar-item-inactive"});let t=a.createDiv({cls:"placement-center placement-center-active"}),r=t.createDiv({cls:"placement-tab-bar"});for(let o=0;o<3;o++){let l=r.createDiv({cls:"placement-tab"});o===1&&l.addClass("placement-tab-active")}let i=t.createDiv({cls:"placement-content"});for(let o=0;o<5;o++){let l=i.createDiv({cls:"placement-content-line"});l.style.width=`${90-o*12}%`}let s=a.createDiv({cls:"placement-sidebar placement-sidebar-inactive"});for(let o=0;o<8;o++)s.createDiv({cls:"placement-sidebar-item placement-sidebar-item-inactive placement-sidebar-item-small"});return a}};z();var kf=class{static render(a,e,t,r){a.empty(),e.empty(),a.createEl("h1",{text:c("Select Your Experience Level")}),a.createEl("p",{text:c("Choose the configuration that best matches your task management experience"),cls:"onboarding-subtitle"});let i=r.getOnboardingConfigs(),s=t.getState().selectedConfig,o=i.map(d=>({id:d.mode,title:d.name,description:d.description,icon:this.getConfigIcon(d.mode),badge:d.mode==="beginner"?c("Recommended"):void 0,features:d.features})),l=new Ts(e,o,{containerClass:["selectable-cards-container","user-level-cards"],cardClass:"selectable-card",showIcon:!0,showFeatures:!0,showPreview:!1},d=>{t.setSelectedConfig(i.find(u=>u.mode===d))})}static getConfigIcon(a){return this.ICON_MAP[a]||"clipboard-list"}};kf.ICON_MAP={beginner:"seedling",advanced:"zap",power:"rocket"};var xs=require("obsidian");z();var Vn=require("obsidian");z();var Nu=class extends Vn.Modal{constructor(e,t,r={}){super(e);this.rulesContainer=null;this.statsContainer=null;this.plugin=t,this.options=r}onOpen(){this.modalEl.addClass("file-filter-rule-editor-modal");let{contentEl:e}=this;e.empty(),e.createEl("h2",{text:c("Edit File Filter Rules")}),e.createEl("p",{text:c("Configure which files, folders, or patterns are included during task indexing."),cls:"setting-item-description"}),new Vn.Setting(e).setName(c("Filter Mode")).setDesc(c("Whitelist: include only specified paths. Blacklist: exclude specified paths.")).addDropdown(r=>r.addOption("whitelist",c("Whitelist (Include only)")).addOption("blacklist",c("Blacklist (Exclude)")).setValue(this.plugin.settings.fileFilter.mode).onChange(async i=>{this.plugin.settings.fileFilter.mode=i,await this.plugin.saveSettings(),this.updateStats()}));let t=new Vn.Setting(e);t.settingEl.addClass("file-filter-rule-actions"),t.addButton(r=>r.setButtonText(c("Add File Rule")).setCta().onClick(()=>{this.addRule("file")})).addButton(r=>r.setButtonText(c("Add Folder Rule")).onClick(()=>{this.addRule("folder")})).addButton(r=>r.setButtonText(c("Add Pattern Rule")).onClick(()=>{this.addRule("pattern")})),this.rulesContainer=e.createDiv({cls:"file-filter-rules-container"}),this.statsContainer=e.createDiv({cls:"file-filter-stats-preview"}),new Vn.Setting(e).addButton(r=>r.setButtonText(c("Done")).setCta().onClick(()=>this.close())),this.renderRules(),this.updateStats(),this.options.autoAddRuleType&&this.addRule(this.options.autoAddRuleType).then(r=>{this.pendingRule=r})}onClose(){var e,t;if(this.pendingRule&&!this.pendingRule.path.trim()){let r=this.plugin.settings.fileFilter.rules.indexOf(this.pendingRule);r!==-1&&(this.plugin.settings.fileFilter.rules.splice(r,1),this.plugin.saveSettings())}this.pendingRule=void 0,this.contentEl.empty(),(t=(e=this.options).onClose)==null||t.call(e)}async addRule(e){let t={type:e,path:"",enabled:!0};return this.plugin.settings.fileFilter.rules.push(t),await this.plugin.saveSettings(),this.renderRules(),this.updateStats(),t}renderRules(){if(!this.rulesContainer)return;let e=this.rulesContainer;if(e.empty(),this.plugin.settings.fileFilter.rules.length===0){e.createEl("p",{text:c("No filter rules configured yet"),cls:"setting-item-description"});return}this.plugin.settings.fileFilter.rules.forEach((t,r)=>{let i=e.createDiv({cls:"file-filter-rule"}),s=i.createDiv({cls:"file-filter-rule-type"});s.createEl("label",{text:c("Type:")}),new Vn.DropdownComponent(s).addOption("file",c("File")).addOption("folder",c("Folder")).addOption("pattern",c("Pattern")).setValue(t.type).onChange(async h=>{t.type=h,await this.plugin.saveSettings(),this.renderRules(),this.updateStats()});let o=i.createDiv({cls:"file-filter-rule-scope"});o.createEl("label",{text:c("Scope:")}),new Vn.DropdownComponent(o).addOption("both",c("Both")).addOption("inline",c("Inline")).addOption("file",c("File")).setValue(t.scope||"both").onChange(async h=>{t.scope=h,await this.plugin.saveSettings()});let l=i.createDiv({cls:"file-filter-rule-path"});l.createEl("label",{text:c("Path:")});let d=l.createEl("input",{type:"text",value:t.path,placeholder:t.type==="pattern"?"*.tmp, temp/*":t.type==="folder"?"path/to/folder":"path/to/file.md"});t.type==="folder"?new ts(this.plugin.app,d,this.plugin,"single"):t.type==="file"&&new Go(d,this.plugin,h=>{t.path=h.path,d.value=h.path,this.plugin.saveSettings()}),d.addEventListener("input",async()=>{t.path=d.value,await this.plugin.saveSettings()});let u=i.createDiv({cls:"file-filter-rule-enabled"});u.createEl("label",{text:c("Enabled:")});let p=u.createEl("input",{type:"checkbox"});p.checked=t.enabled,p.addEventListener("change",async()=>{t.enabled=p.checked,await this.plugin.saveSettings(),this.updateStats()});let m=i.createEl("button",{cls:"file-filter-rule-delete mod-destructive"});(0,Vn.setIcon)(m,"trash"),m.title=c("Delete rule"),m.addEventListener("click",async()=>{this.plugin.settings.fileFilter.rules.splice(r,1),await this.plugin.saveSettings(),this.renderRules(),this.updateStats()})})}updateStats(){if(!this.statsContainer)return;let e=this.statsContainer;e.empty();let t=this.plugin.settings.fileFilter.rules.filter(i=>i.enabled).length;[{label:c("Active Rules"),value:t.toString()},{label:c("Filter Mode"),value:this.plugin.settings.fileFilter.mode==="whitelist"?c("Whitelist"):c("Blacklist")},{label:c("Status"),value:this.plugin.settings.fileFilter.enabled?c("Enabled"):c("Disabled")}].forEach(i=>{let s=e.createDiv({cls:"filter-stat-item"});s.createSpan({text:i.value,cls:"filter-stat-value"}),s.createSpan({text:i.label,cls:"filter-stat-label"})})}};var cw=class{static render(a,e,t,r){a.empty(),e.empty(),a.createEl("h1",{text:c("Optimize Performance")}),a.createEl("p",{text:c("Configure file filtering to improve indexing performance and focus on relevant content"),cls:"onboarding-subtitle"});let i=e.createDiv({cls:"component-showcase"}),s=i.createDiv({cls:"component-showcase-preview file-filter-preview"}),o=i.createDiv({cls:"component-showcase-description"});this.renderConfiguration(s,r),this.renderDescription(o,r)}static renderConfiguration(a,e){if(new xs.Setting(a).setName(c("Enable File Filter")).setDesc(c("Filter files during task indexing to improve performance")).addToggle(u=>u.setValue(e.settings.fileFilter.enabled).onChange(async p=>{var m;e.settings.fileFilter.enabled=p,await e.saveSettings(),this.render(a.parentElement,(m=a.parentElement)==null?void 0:m.parentElement,{},e)})),!e.settings.fileFilter.enabled)return;new xs.Setting(a).setName(c("Filter Mode")).setDesc(c("Whitelist: Include only specified paths | Blacklist: Exclude specified paths")).addDropdown(u=>u.addOption("whitelist",c("Whitelist (Include only)")).addOption("blacklist",c("Blacklist (Exclude)")).setValue(e.settings.fileFilter.mode).onChange(async p=>{e.settings.fileFilter.mode=p,await e.saveSettings(),this.updateStats(a,e)}));let t=a.createDiv({cls:"file-filter-config"});t.createEl("h4",{text:c("Quick Add Rules")});let r=t.createDiv({cls:"setting-item-control"});r.createEl("button",{text:c("Add File"),cls:"mod-cta"}).addEventListener("click",()=>{new Nu(e.app,e,{autoAddRuleType:"file",onClose:()=>{let p=a.querySelector(".file-filter-rules-container"),m=a.querySelector(".file-filter-stats-preview");p&&this.renderRules(p,e),m&&this.updateStats(m,e)}}).open()}),r.createEl("button",{text:c("Add Folder")}).addEventListener("click",()=>{new Nu(e.app,e,{autoAddRuleType:"folder",onClose:()=>{let p=a.querySelector(".file-filter-rules-container"),m=a.querySelector(".file-filter-stats-preview");p&&this.renderRules(p,e),m&&this.updateStats(m,e)}}).open()}),r.createEl("button",{text:c("Add Pattern")}).addEventListener("click",()=>{new Nu(e.app,e,{autoAddRuleType:"pattern",onClose:()=>{let p=a.querySelector(".file-filter-rules-container"),m=a.querySelector(".file-filter-stats-preview");p&&this.renderRules(p,e),m&&this.updateStats(m,e)}}).open()});let l=a.createDiv({cls:"file-filter-rules-container"});this.renderRules(l,e);let d=a.createDiv({cls:"file-filter-stats-preview"});this.updateStats(d,e)}static renderRules(a,e){if(a.empty(),e.settings.fileFilter.rules.length===0){a.createEl("p",{text:c("No filter rules configured yet"),cls:"setting-item-description"});return}e.settings.fileFilter.rules.forEach((t,r)=>{let i=a.createDiv({cls:"file-filter-rule"}),s=i.createDiv({cls:"file-filter-rule-type"});s.createEl("label",{text:c("Type:")}),new xs.DropdownComponent(s).addOption("file",c("File")).addOption("folder",c("Folder")).addOption("pattern",c("Pattern")).setValue(t.type).onChange(async h=>{var g;t.type=h,await e.saveSettings(),this.renderRules(a,e),this.updateStats((g=a.parentElement)==null?void 0:g.querySelector(".file-filter-stats-preview"),e)});let o=i.createDiv({cls:"file-filter-rule-scope"});o.createEl("label",{text:c("Scope:")}),new xs.DropdownComponent(o).addOption("both",c("Both")).addOption("inline",c("Inline")).addOption("file",c("File")).setValue(t.scope||"both").onChange(async h=>{t.scope=h,await e.saveSettings()});let l=i.createDiv({cls:"file-filter-rule-path"});l.createEl("label",{text:c("Path:")});let d=l.createEl("input",{type:"text",value:t.path,placeholder:t.type==="pattern"?"*.tmp, temp/*":t.type==="folder"?"path/to/folder":"path/to/file.md"});t.type==="folder"?new ts(e.app,d,e,"single"):t.type==="file"&&new Go(d,e,h=>{t.path=h.path,d.value=h.path,e.saveSettings()}),d.addEventListener("input",async()=>{t.path=d.value,await e.saveSettings()});let u=i.createDiv({cls:"file-filter-rule-enabled"});u.createEl("label",{text:c("Enabled:")});let p=u.createEl("input",{type:"checkbox"});p.checked=t.enabled,p.addEventListener("change",async()=>{var h;t.enabled=p.checked,await e.saveSettings(),this.updateStats((h=a.parentElement)==null?void 0:h.querySelector(".file-filter-stats-preview"),e)});let m=i.createEl("button",{cls:"file-filter-rule-delete mod-destructive"});(0,xs.setIcon)(m,"trash"),m.title=c("Delete rule"),m.addEventListener("click",async()=>{var h;e.settings.fileFilter.rules.splice(r,1),await e.saveSettings(),this.renderRules(a,e),this.updateStats((h=a.parentElement)==null?void 0:h.querySelector(".file-filter-stats-preview"),e)})})}static updateStats(a,e){if(!a)return;a.empty();let t=e.settings.fileFilter.rules.filter(i=>i.enabled).length;[{label:c("Active Rules"),value:t.toString()},{label:c("Filter Mode"),value:e.settings.fileFilter.mode==="whitelist"?c("Whitelist"):c("Blacklist")},{label:c("Status"),value:e.settings.fileFilter.enabled?c("Enabled"):c("Disabled")}].forEach(i=>{let s=a.createDiv({cls:"filter-stat-item"});s.createSpan({text:i.value,cls:"filter-stat-value"}),s.createSpan({text:i.label,cls:"filter-stat-label"})})}static renderDescription(a,e){a.createEl("h3",{text:c("Why File Filtering?")}),a.createEl("p",{text:c("File filtering helps you focus on relevant content while improving performance, especially in large vaults.")});let t=a.createDiv({cls:"recommended-configs"});t.createEl("h4",{text:c("Recommended Configurations")}),[{title:c("Exclude Temporary Files"),description:c("Ignore system and temporary files"),rules:[{type:"pattern",path:"*.tmp"},{type:"pattern",path:".DS_Store"},{type:"pattern",path:"*~"}]},{title:c("Exclude Archive Folder"),description:c("Skip archived content"),rules:[{type:"folder",path:"Archive"}]},{title:c("Focus on Projects"),description:c("Index only specific project folders"),rules:[{type:"folder",path:"Projects"},{type:"folder",path:"Work"}],mode:"whitelist"}].forEach(i=>{let s=t.createDiv({cls:"recommended-config-item"});s.createEl("h4",{text:i.title}),s.createEl("p",{text:i.description}),s.addEventListener("click",async()=>{var l;i.mode&&(e.settings.fileFilter.mode=i.mode),i.rules.forEach(d=>{e.settings.fileFilter.rules.some(p=>p.path===d.path&&p.type===d.type)||e.settings.fileFilter.rules.push({...d,enabled:!0})}),e.settings.fileFilter.enabled=!0,await e.saveSettings(),new xs.Notice(c("Applied recommended configuration: ")+i.title);let o=(l=a.parentElement)==null?void 0:l.querySelector(".file-filter-preview");o&&this.renderConfiguration(o,e)})})}};z();var b2=require("obsidian");z();var v2=require("obsidian"),vf=class{static render(a,e){let t=a.createDiv("config-overview");t.createEl("h3",{text:c("Selected Mode")});let r=t.createDiv("mode-card"),i=r.createDiv("mode-icon");(0,v2.setIcon)(i,this.getConfigIcon(e.mode));let s=r.createDiv("mode-content");s.createEl("h4",{text:e.name}),s.createEl("p",{text:e.description})}static getConfigIcon(a){return this.ICON_MAP[a]||"clipboard-list"}};vf.ICON_MAP={beginner:"seedling",advanced:"zap",power:"rocket"};z();var y2=require("obsidian"),dw=class{static render(a,e){let t=a.createDiv("config-views");t.createEl("h3",{text:c("Available views")});let r=t.createDiv("views-grid");e.forEach(i=>{let s=r.createDiv("view-item"),o=s.createDiv("view-icon");(0,y2.setIcon)(o,i.icon||"list"),s.createDiv("view-name").setText(i.name)})}};z();var uw=class{static render(a,e){var i,s,o,l,d;let t=a.createDiv("config-settings");t.createEl("h3",{text:c("Key settings")});let r=t.createEl("ul",{cls:"settings-summary-list"});e.settings.progressBarDisplayMode&&this.addSetting(r,c("Progress bars"),this.formatProgressBarMode(e.settings.progressBarDisplayMode)),e.settings.enableTaskStatusSwitcher!==void 0&&this.addSetting(r,c("Task status switching"),e.settings.enableTaskStatusSwitcher?c("Enabled"):c("Disabled")),((i=e.settings.quickCapture)==null?void 0:i.enableQuickCapture)!==void 0&&this.addSetting(r,c("Quick capture"),e.settings.quickCapture.enableQuickCapture?c("Enabled"):c("Disabled")),((s=e.settings.workflow)==null?void 0:s.enableWorkflow)!==void 0&&this.addSetting(r,c("Workflow management"),e.settings.workflow.enableWorkflow?c("Enabled"):c("Disabled")),((o=e.settings.rewards)==null?void 0:o.enableRewards)!==void 0&&this.addSetting(r,c("Reward system"),e.settings.rewards.enableRewards?c("Enabled"):c("Disabled")),((l=e.settings.habit)==null?void 0:l.enableHabits)!==void 0&&this.addSetting(r,c("Habit tracking"),e.settings.habit.enableHabits?c("Enabled"):c("Disabled")),((d=e.settings.fileParsingConfig)==null?void 0:d.enableWorkerProcessing)!==void 0&&this.addSetting(r,c("Performance optimization"),e.settings.fileParsingConfig.enableWorkerProcessing?c("Enabled"):c("Disabled"))}static addSetting(a,e,t){let r=a.createEl("li");r.createSpan("setting-label").setText(e+":"),r.createSpan("setting-value").setText(t)}static formatProgressBarMode(a){switch(a){case"both":return c("Enabled (both graphical and text)");default:return a}}};z();var yf=require("obsidian");var pw=class{static render(a,e,t){try{let r=t.getConfigurationPreview(e.mode),i=a.createDiv("config-changes-summary");i.createEl("h3",{text:c("Configuration Changes")}),r.userCustomViewsPreserved.length>0&&this.renderPreservedViews(i,r.userCustomViewsPreserved),r.viewsToAdd.length>0&&this.renderChangeItem(i,"plus-circle",c("New views to be added")+` (${r.viewsToAdd.length})`),r.viewsToUpdate.length>0&&this.renderChangeItem(i,"refresh-cw",c("Existing views to be updated")+` (${r.viewsToUpdate.length})`),r.settingsChanges.length>0&&this.renderSettingsChanges(i,r.settingsChanges),Bn.create(i,c("Only template settings will be applied. Your existing custom configurations will be preserved."),{variant:"info",icon:"info",className:"safety-note"})}catch(r){console.warn("Could not generate configuration preview:",r)}}static renderPreservedViews(a,e){let t=a.createDiv("preserved-views"),r=t.createDiv("preserved-header"),i=r.createSpan("preserved-icon");(0,yf.setIcon)(i,"shield-check"),r.createSpan("preserved-text").setText(c("Your custom views will be preserved")+` (${e.length})`);let s=t.createEl("ul",{cls:"preserved-views-list"});e.forEach(o=>{let l=s.createEl("li"),d=l.createSpan();(0,yf.setIcon)(d,o.icon||"list"),l.createSpan().setText(" "+o.name)})}static renderChangeItem(a,e,t){let r=a.createDiv("change-item"),i=r.createSpan("change-icon");(0,yf.setIcon)(i,e),r.createSpan("change-text").setText(t)}static renderSettingsChanges(a,e){let t=a.createDiv("settings-changes"),r=t.createSpan("change-icon");(0,yf.setIcon)(r,"settings"),t.createSpan("change-text").setText(c("Feature changes"));let i=t.createEl("ul",{cls:"settings-changes-list"});e.forEach(s=>{i.createEl("li").setText(s)})}};var mw=class{static render(a,e,t,r){a.empty(),e.empty();let i=t.getState(),s=i.selectedConfig;if(!s){t.setStep(t.getCurrentStep()-1);return}a.createEl("h1",{text:c("Review Your Configuration")}),a.createEl("p",{text:c("Review the settings that will be applied for your selected mode"),cls:"onboarding-subtitle"}),vf.render(e,s);let o=e.createDiv("config-features");o.createEl("h3",{text:c("Features to be enabled")});let l=o.createEl("ul",{cls:"enabled-features-list"});s.features.forEach(u=>{let p=l.createEl("li");p.createSpan("feature-check").setText("\u2713"),p.createSpan("feature-text").setText(u)}),s.settings.viewConfiguration&&dw.render(e,s.settings.viewConfiguration),uw.render(e,s),pw.render(e,s,r);let d=e.createDiv("config-options");new b2.Setting(d).setName(c("Include task creation guide")).setDesc(c("Show a quick tutorial on creating your first task")).addToggle(u=>{u.setValue(!i.skipTaskGuide).onChange(p=>{t.setSkipTaskGuide(!p)})}),Bn.create(e,c("You can customize any of these settings later in the plugin settings"),{variant:"info",className:"customization-note"})}};z();var jc=require("obsidian");z();var hw=class{constructor(a){this.plugin=a}render(a){a.empty(),a.createDiv("task-guide-intro").createEl("p",{text:c("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:c("Task Format Examples")});let t=e.createDiv("format-example");t.createEl("h4",{text:c("Basic Task")}),t.createEl("code",{text:"- [ ] Complete project documentation"});let r=e.createDiv("format-example");r.createEl("h4",{text:c("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:c("\u{1F4C5} = Due date, \u{1F53A} = High priority, #project/ = Docs project tag")});let s=e.createDiv("format-example");s.createEl("h4",{text:c("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:c("Mixed Format")}),o.createEl("code",{text:"- [ ] Complete project documentation \u{1F4C5} 2024-01-15 [priority:: high] @work"}),o.createDiv("format-legend").createEl("small",{text:c("Combine emoji and dataview syntax as needed")});let d=e.createDiv("status-markers");d.createEl("h4",{text:c("Task Status Markers")});let u=d.createEl("ul",{cls:"status-list"});[{marker:"[ ]",description:c("Not started")},{marker:"[x]",description:c("Completed")},{marker:"[/]",description:c("In progress")},{marker:"[?]",description:c("Planned")},{marker:"[-]",description:c("Abandoned")}].forEach(f=>{let k=u.createEl("li");k.createEl("code",{text:f.marker}),k.createSpan().setText(" - "+f.description)});let m=e.createDiv("metadata-symbols");m.createEl("h4",{text:c("Common Metadata Symbols")});let h=m.createEl("ul",{cls:"symbols-list"});[{symbol:"\u{1F4C5}",description:c("Due date")},{symbol:"\u{1F6EB}",description:c("Start date")},{symbol:"\u23F3",description:c("Scheduled date")},{symbol:"\u{1F53A}",description:c("High priority")},{symbol:"\u23EB",description:c("Higher priority")},{symbol:"\u{1F53C}",description:c("Medium priority")},{symbol:"\u{1F53D}",description:c("Lower priority")},{symbol:"\u23EC",description:c("Lowest priority")},{symbol:"\u{1F501}",description:c("Recurring task")},{symbol:"#",description:c("Project/tag")},{symbol:"@",description:c("Context")}].forEach(f=>{h.createEl("li").createSpan().setText(f.symbol+" - "+f.description)})}renderQuickCaptureDemo(a){let e=a.createDiv("quick-capture-section");e.createEl("h3",{text:c("Quick Capture")});let t=e.createDiv("demo-content");t.createEl("p",{text:c("Use quick capture panel to quickly capture tasks from anywhere in Obsidian.")}),t.createEl("button",{text:c("Try Quick Capture"),cls:"mod-cta demo-button"}).addEventListener("click",()=>{var i;try{(i=this.plugin.settings.quickCapture)!=null&&i.enableQuickCapture?new ft(this.plugin.app,this.plugin).open():new jc.Notice(c("Quick capture is now enabled in your configuration!"),3e3)}catch(s){console.error("Failed to open quick capture:",s),new jc.Notice(c("Failed to open quick capture. Please try again later."),3e3)}})}renderInteractivePractice(a){let e=a.createDiv("practice-section");e.createEl("h3",{text:c("Try It Yourself")}),e.createEl("p",{text:c("Practice creating a task with the format you prefer:")});let t;new jc.Setting(e).setName(c("Practice Task")).setDesc(c("Enter a task using any of the formats shown above")).addTextArea(s=>{t=s,s.setPlaceholder(c("- [ ] Your task here")).setValue("").then(()=>{s.inputEl.rows=3,s.inputEl.style.width="100%"})});let r=e.createDiv("practice-feedback");e.createEl("button",{text:c("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:c("Please enter a task to validate"),cls:"validation-message validation-warning"});return}if(!/^-\s*\[.\]\s*.+/.test(a)){e.createEl("div",{text:c("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"}),d=l.createSpan();(0,jc.setIcon)(d,"check"),l.createSpan().setText(" "+c("Valid task format!"));let u=[];r&&u.push(c("Emoji metadata")),i&&u.push(c("Dataview metadata")),s&&u.push(c("Project tags")),o&&u.push(c("Context")),u.length>0&&e.createEl("div",{text:c("Detected features: ")+u.join(", "),cls:"validation-message validation-info"})}};var gw=class{static render(a,e,t,r){a.empty(),e.empty(),a.createEl("h1",{text:c("Create Your First Task")}),a.createEl("p",{text:c("Learn the fastest ways to capture and format tasks inside Task Genius"),cls:"onboarding-subtitle"}),new hw(r).render(e)}};z();var CE=require("obsidian"),bf=class{static render(a,e,t){a.empty(),e.empty();let r=t.getState().selectedConfig;if(!r)return;a.createEl("h1",{text:c("Task Genius is ready!")}),a.createEl("p",{text:c("You're all set to start managing your tasks"),cls:"onboarding-subtitle"});let i=e.createDiv("completion-success");i.createDiv("success-icon").setText("\u{1F389}"),i.createEl("h2",{text:c("Congratulations!")}),i.createEl("p",{text:c("Task Genius has been configured with your selected preferences"),cls:"success-message"}),this.renderConfigSummary(e,r),this.renderQuickStart(e,r),this.renderResources(e)}static renderConfigSummary(a,e){let t=a.createDiv("completion-summary");t.createEl("h3",{text:c("Your Configuration")});let r=t.createDiv("config-summary-card"),i=r.createDiv("config-header"),s=i.createDiv("config-icon");(0,CE.setIcon)(s,this.getConfigIcon(e.mode)),i.createDiv("config-name").setText(e.name),r.createDiv("config-description").setText(e.description)}static renderQuickStart(a,e){let t=a.createDiv("quick-start-section");t.createEl("h3",{text:c("Quick Start Guide")});let r=t.createDiv("quick-start-steps");this.getQuickStartSteps(e.mode).forEach((s,o)=>{let l=r.createDiv("quick-start-step");l.createDiv("step-number").setText((o+1).toString()),l.createDiv("step-content").setText(s)})}static renderResources(a){let e=a.createDiv("resources-section");e.createEl("h3",{text:c("Helpful Resources")});let t=e.createDiv("resources-list");[{icon:"book-open",title:c("Documentation"),desc:c("Complete guide to all features"),url:"https://taskgenius.md"},{icon:"message-circle",title:c("Community"),desc:c("Get help and share tips"),url:"https://discord.gg/ARR2rHHX6b"},{icon:"settings",title:c("Settings"),desc:c("Customize Task Genius"),action:"open-settings"}].forEach(i=>{let s=t.createDiv("resource-item"),o=s.createDiv("resource-icon");(0,CE.setIcon)(o,i.icon);let l=s.createDiv("resource-content");l.createEl("h4",{text:i.title}),l.createEl("p",{text:i.desc}),i.url?(s.addEventListener("click",()=>{window.open(i.url,"_blank")}),s.addClass("resource-clickable")):i.action==="open-settings"&&(s.addEventListener("click",()=>{let d=new CustomEvent("task-genius-open-settings");document.dispatchEvent(d)}),s.addClass("resource-clickable"))})}static getQuickStartSteps(a){switch(a){case"beginner":return[c("Click the Task Genius icon in the left sidebar"),c("Start with the Inbox view to see all your tasks"),c("Use quick capture panel to quickly add your first task"),c("Try the Forecast view to see tasks by date")];case"advanced":return[c("Open Task Genius and explore the available views"),c("Set up a project using the Projects view"),c("Try the Kanban board for visual task management"),c("Use workflow stages to track task progress")];case"power":return[c("Explore all available views and their configurations"),c("Set up complex workflows for your projects"),c("Configure habits and rewards to stay motivated"),c("Integrate with external calendars and systems")];default:return[c("Open Task Genius from the left sidebar"),c("Create your first task"),c("Explore the different views available"),c("Customize settings as needed")]}}static getConfigIcon(a){return this.ICON_MAP[a]||"clipboard-list"}};bf.ICON_MAP={beginner:"edit-3",advanced:"settings",power:"zap"};z();var Hc=require("obsidian");var fw=class{static create(a,e,t={}){let{variant:r="default",className:i=""}=t;return a.createEl("span",{text:e,cls:`onboarding-badge onboarding-badge-${r} ${i}`})}};var wf=class{static render(a,e,t){a.empty(),e.empty(),this.selectedAction=null;let r=t.getState();a.createEl("h1",{text:c("You've Customized Task Genius")}),a.createEl("p",{text:c("Great! Let's decide how to proceed with your existing setup."),cls:"onboarding-subtitle"});let i=e.createDiv("settings-check-content"),s=i.createDiv("settings-check-current-card"),o=s.createDiv("settings-check-card-header"),l=o.createDiv("check-header-icon");(0,Hc.setIcon)(l,"check-circle");let d=o.createDiv("check-header-title");d.createEl("h3",{text:c("Your Current Setup")}),fw.create(d,c("Active"),{variant:"success"});let u=s.createDiv("settings-check-card-body");u.createEl("p",{text:c("You've made the following customizations:"),cls:"check-card-desc"});let p=u.createEl("ul",{cls:"settings-check-changes-list"});r.changesSummary.forEach(S=>{let D=p.createEl("li"),E=D.createSpan("change-check-icon");(0,Hc.setIcon)(E,"check"),D.createSpan({text:S})});let m=i.createDiv("settings-check-actions"),h=m.createDiv("settings-check-action-card settings-check-action-keep"),g=m.createDiv("settings-check-action-card settings-check-action-wizard"),k=g.createDiv("action-card-header").createDiv("action-card-icon");(0,Hc.setIcon)(k,"wand-2");let v=g.createDiv("action-card-content");v.createEl("h3",{text:c("Start Setup Wizard")}),v.createEl("p",{text:c("Get personalized recommendations and discover features you might have missed")});let y=v.createEl("ul",{cls:"action-card-features"});[c("Personalized configuration"),c("Feature discovery"),c("Quick setup guide")].forEach(S=>{let D=y.createEl("li"),E=D.createSpan("feature-icon");(0,Hc.setIcon)(E,"arrow-right"),D.createSpan({text:S})});let w=h.createDiv("action-card-header").createDiv("action-card-icon");(0,Hc.setIcon)(w,"shield-check");let T=h.createDiv("action-card-content");T.createEl("h3",{text:c("Keep Current Settings")}),T.createEl("p",{text:c("Continue with your existing configuration. You can always access the wizard later from settings.")});let x=T.createDiv("action-card-note"),C=x.createSpan("note-icon");(0,Hc.setIcon)(C,"info"),x.createSpan({text:c("Your customizations will be preserved")}),g.addEventListener("click",()=>{this.selectedAction!=="wizard"&&(this.selectedAction="wizard",this.updateCardSelection(g,h),t.updateState({settingsCheckAction:"wizard"}))}),h.addEventListener("click",()=>{this.selectedAction!=="keep"&&(this.selectedAction="keep",this.updateCardSelection(h,g),t.updateState({settingsCheckAction:"keep"}))})}static updateCardSelection(a,e){a.addClass("is-selected"),e.removeClass("is-selected")}};wf.selectedAction=null;z();var kw=class{constructor(a,e,t){this.container=a,this.show(t,e)}show(a,e){this.container.empty();let r=this.container.createDiv({cls:"intro-typing-wrapper"}).createDiv({cls:"intro-typing config-check-typing"}),i=[{text:c("Just a moment..."),className:"check-line check-line-1",speed:40},{text:c("Checking your current configuration"),className:"check-line check-line-2",speed:30},{text:c("Analyzing your settings"),className:"check-line check-line-3",speed:25,pauseAfter:800}];a?i.push({text:c("Great! I found your existing customizations."),className:"check-line check-line-3",speed:25,pauseAfter:400}):i.push({text:c("No previous configuration found. Let's get started!"),className:"check-line check-line-3",speed:25,pauseAfter:400}),this.typingAnimation=new Ou(r,i,()=>{window.setTimeout(()=>{e(a)},1e3)})}cleanup(){var a;(a=this.typingAnimation)==null||a.cleanup()}};var Bc="task-genius-onboarding",vw=class extends w2.ItemView{constructor(a,e,t){super(a),this.plugin=e,this.configManager=new Iu(e),this.settingsDetector=new Au(e),this.onComplete=t;let r=this.settingsDetector.hasUserMadeChanges();this.controller=new Jb({currentStep:0,userHasChanges:r,changesSummary:this.settingsDetector.getChangesSummary(),uiMode:"fluent",useSideLeaves:!0}),this.setupControllerListeners()}getViewType(){return Bc}getDisplayText(){return c("Setup")}getIcon(){return"task-genius"}async onOpen(){this.layout=new Zb(this.containerEl,this.controller,{onNext:async()=>this.handleNext(),onBack:async()=>this.handleBack(),onSkip:async()=>this.handleSkip()}),this.renderCurrentStep()}async onClose(){this.containerEl.empty()}setupControllerListeners(){this.controller.on("step-changed",()=>{this.renderCurrentStep()}),this.controller.on("completed",async()=>{await this.completeOnboarding()})}renderCurrentStep(){let a=this.controller.getCurrentStep();Fu[a],this.layout.clearHeader(),this.layout.clearContent(),requestAnimationFrame(()=>{let e=this.layout.getHeaderElement(),t=this.layout.getContentElement(),r=this.layout.getFooterElement();switch(a){case 0:ew.render(e,t,r,this.controller);break;case 1:tw.render(e,t,this.controller);break;case 2:aw.render(e,t,this.controller);break;case 3:rw.render(e,t,this.controller);break;case 4:iw.render(e,t,this.controller);break;case 5:nw.render(e,t,this.controller);break;case 6:sw.render(e,t,this.controller);break;case 7:ow.render(e,t,this.controller);break;case 8:lw.render(e,t,this.controller);break;case 9:wf.render(e,t,this.controller);break;case 10:kf.render(e,t,this.controller,this.configManager);break;case 11:cw.render(e,t,this.controller,this.plugin);break;case 12:mw.render(e,t,this.controller,this.configManager);break;case 13:gw.render(e,t,this.controller,this.plugin);break;case 14:bf.render(e,t,this.controller);break}})}async handleNext(){let a=this.controller.getCurrentStep(),e=this.controller.getState();if(a===1&&e.uiMode==="legacy"&&e.userHasChanges&&(this.layout.clearHeader(),await this.showConfigCheckTransition()),a===8&&e.userHasChanges&&(this.layout.clearHeader(),await this.showConfigCheckTransition()),a===9&&e.settingsCheckAction==="keep"){await this.configManager.skipOnboarding(),this.onComplete(),this.leaf.detach();return}if(a===10&&this.controller.canGoNext()){let r=e.selectedConfig;if(r)try{await this.applyArchitectureSelections(),await this.configManager.applyConfiguration(r.mode)}catch(i){console.error("Failed to apply configuration:",i)}}let t=await this.controller.next();Fu[this.controller.getCurrentStep()]}async showConfigCheckTransition(){return new Promise(a=>{let e=this.layout.getContentElement(),t=this.controller.getState();e.empty(),new kw(e,()=>{a()},t.userHasChanges)})}async handleBack(){await this.controller.back()}async handleSkip(){this.plugin.settings.fluentView?this.plugin.settings.fluentView.enableFluent=!0:this.plugin.settings.fluentView={enableFluent:!0},this.plugin.settings.fluentView.fluentConfig||(this.plugin.settings.fluentView.fluentConfig={enableWorkspaces:!0,defaultWorkspace:"default",maxOtherViewsBeforeOverflow:5}),await this.plugin.saveSettings(),await this.configManager.skipOnboarding(),this.onComplete(),await this.plugin.activateTaskView(),this.leaf.detach()}async applyArchitectureSelections(){let a=this.controller.getState(),e=a.uiMode==="fluent";this.plugin.settings.fluentView||(this.plugin.settings.fluentView={enableFluent:e,fluentConfig:{enableWorkspaces:!0,defaultWorkspace:"default",maxOtherViewsBeforeOverflow:5},useWorkspaceSideLeaves:!!a.useSideLeaves}),this.plugin.settings.fluentView.enableFluent=e,this.plugin.settings.fluentView||(this.plugin.settings.fluentView.fluentConfig={enableWorkspaces:!0,defaultWorkspace:"default",maxOtherViewsBeforeOverflow:5}),e&&this.plugin.settings.fluentView&&(this.plugin.settings.fluentView.useWorkspaceSideLeaves=!!a.useSideLeaves),await this.plugin.saveSettings()}async completeOnboarding(){let a=this.controller.getState(),e=a.selectedConfig;if(!(!e||a.isCompleting)){this.controller.updateState({isCompleting:!0});try{await this.configManager.completeOnboarding(e.mode),this.onComplete(),this.leaf.detach()}catch(t){console.error("Failed to complete onboarding:",t),this.controller.updateState({isCompleting:!1})}}}};function SE(n,a){new Yr.Setting(a).setName(c("About")+" Task Genius").setHeading(),new Yr.Setting(a).setName(c("Version")).setDesc(`Task Genius v${n.plugin.manifest.version}`),new Yr.Setting(a).setName(c("Changelog")).setDesc(c("Show changelog after plugin updates")).addToggle(t=>{t.setValue(n.plugin.settings.changelog.enabled).onChange(async r=>{n.plugin.settings.changelog.enabled=r,await n.plugin.saveSettings()})}),new Yr.Setting(a).setName(c("Donate")).setDesc(c("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 Yr.Setting(a).setName(c("Documentation")).setDesc(c("View the documentation for this plugin")).addButton(t=>{t.setButtonText(c("Open Documentation")).onClick(()=>{window.open("https://taskgenius.md/docs/getting-started")})}),new Yr.Setting(a).setName(c("Onboarding")).setDesc(c("Restart the welcome guide and setup wizard")).addButton(t=>{t.setButtonText(c("Restart Onboarding")).setIcon("graduation-cap").onClick(async()=>{await n.plugin.onboardingConfigManager.resetOnboarding(),typeof n.setting.close=="function"&&(n.setting.close(),n.plugin.app.workspace.getLeaf().setViewState({type:Bc}))})}),new Yr.Setting(a).setName(c("Reset All Settings")).setDesc(c("Reset all settings to their default values")).addButton(t=>{t.setButtonText(c("Reset Settings")).setIcon("refresh-cw").setWarning().onClick(()=>{new oa(n.plugin,{title:c("Reset All Settings"),message:c(`Are you sure you want to reset all settings to their default values?
This action cannot be undone.`),confirmText:c("Reset"),cancelText:c("Cancel"),onConfirm:async r=>{r&&(n.plugin.settings=Object.assign({},xe),await n.plugin.saveSettings(),n.display(),new Yr.Notice(c("All settings have been reset to their default values")))}}).open()})}),new Yr.Setting(a).setName(c("Discord")).setDesc(c("Chat with us")).addButton(t=>{t.setButtonText(c("Open Discord")).onClick(()=>{window.open("https://discord.gg/ARR2rHHX6b")})});let e=document.createDocumentFragment();e.createEl("span",{cls:"tg-icons-desc"},t=>{t.setText(c("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 Yr.Setting(a).setName(c("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,Yr.setIcon)(s,i)}let r=t.createSpan();(0,Yr.setIcon)(r,"task-genius")})}var yw=require("obsidian");z();function DE(n,a){new yw.Setting(a).setName(c("Beta Test Features")).setDesc(c("Experimental features that are currently in testing phase. These features may be unstable and could change or be removed in future updates.")).setHeading();let e=a.createDiv({cls:"beta-test-warning-banner"});e.createEl("div",{cls:"beta-warning-icon",text:"\u26A0\uFE0F"});let t=e.createDiv({cls:"beta-warning-content"});t.createEl("div",{cls:"beta-warning-title",text:c("Beta Features Warning")});let r=t.createEl("div",{cls:"beta-warning-text",text:c("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.")});new yw.Setting(a).setName(c("Beta Feedback")).setDesc(c("Help improve these features by providing feedback on your experience.")).setHeading(),new yw.Setting(a).setName(c("Report Issues")).setDesc(c("If you encounter any issues with beta features, please report them to help improve the plugin.")).addButton(i=>{i.setButtonText(c("Report Issue")).onClick(()=>{window.open("https://github.com/quorafind/obsidian-task-genius/issues")})})}var EE=require("obsidian");z();var gi=require("obsidian");var at=require("obsidian");z();var Lu=class extends at.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?c("Create new habit"):c("Edit habit")),this.modalEl.addClass("habit-edit-dialog"),this.buildForm()}buildForm(){var g;let{contentEl:e}=this;e.empty();let t=e.createDiv({cls:"habit-type-selector"});t.createDiv({cls:"habit-type-description"}).setText(c("Habit type"));let i=t.createDiv({cls:"habit-type-grid"});[{id:"daily",name:c("Daily habit"),icon:"calendar-check",description:c("Simple daily check-in habit")},{id:"count",name:c("Count habit"),icon:"bar-chart",description:c("Record numeric values, e.g., how many cups of water")},{id:"mapping",name:c("Mapping habit"),icon:"smile",description:c("Use different values to map, e.g., emotion tracking")},{id:"scheduled",name:c("Scheduled habit"),icon:"calendar",description:c("Habit with multiple events")}].forEach(f=>{let k=i.createDiv({cls:`habit-type-item ${f.id===this.habitType?"selected":""}`,attr:{"data-type":f.id}}),v=k.createDiv({cls:"habit-type-icon"},b=>{(0,at.setIcon)(b,f.icon)}),y=k.createDiv({cls:"habit-type-text"});y.createDiv({cls:"habit-type-name",text:f.name}),y.createDiv({cls:"habit-type-desc",text:f.description}),k.addEventListener("click",()=>{document.querySelectorAll(".habit-type-item").forEach(b=>{b.removeClass("selected")}),k.addClass("selected"),this.habitType=f.id,this.buildTypeSpecificForm()})});let o=e.createDiv({cls:"habit-common-form"}),l=((g=this.habitData)==null?void 0:g.id)||this.generateId(),d;new at.Setting(o).setName(c("Habit name")).setDesc(c("Display name of the habit")).addText(f=>{var k;d=f,f.setValue(((k=this.habitData)==null?void 0:k.name)||""),f.inputEl.addClass("habit-name-input")});let u;new at.Setting(o).setName(c("Description")).setDesc(c("Optional habit description")).addText(f=>{var k;u=f,f.setValue(((k=this.habitData)==null?void 0:k.description)||""),f.inputEl.addClass("habit-desc-input")});let p;new at.Setting(o).setName(c("Icon")).addButton(f=>{try{f.setIcon(this.iconInput||"circle-check")}catch(k){console.error("Error setting icon:",k);try{f.setIcon("circle-check")}catch(v){console.error("Failed to set default icon:",v)}}$o(f,{containerEl:this.modalEl,plugin:this.plugin,onIconSelected:k=>{this.iconInput=k;try{(0,at.setIcon)(f.buttonEl,k||"circle-check")}catch(v){console.error("Error setting icon:",v);try{(0,at.setIcon)(f.buttonEl,"circle-check")}catch(y){console.error("Failed to set default icon:",y)}}this.iconInput=k}})});let m=e.createDiv({cls:"habit-type-form"}),h=e.createDiv({cls:"habit-edit-buttons"},f=>{new at.ButtonComponent(f).setWarning().setButtonText(c("Cancel")).onClick(()=>{this.close()}),new at.ButtonComponent(f).setCta().setButtonText(c("Save")).onClick(()=>{let k=d.getValue().trim();if(!k){new at.Notice(c("Please enter a habit name"));return}let v={id:l,name:k,description:u.getValue()||void 0,icon:this.iconInput||"circle-check",type:this.habitType},y=this.getTypeSpecificData();y&&(v={...v,...y},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 at.Setting(e).setName(c("Property name")).setDesc(c("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 at.Setting(e).setName(c("Completion text")).setDesc(c("(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 at.Setting(e).setName(c("Property name")).setDesc(c("The property name in daily note front matter to store count values")).addText(d=>{r=d,d.setValue((t==null?void 0:t.property)||""),d.inputEl.addClass("habit-property-input")}),new at.Setting(e).setName(c("Minimum value")).setDesc(c("(Optional) Minimum value for the count")).addText(d=>{var u;i=d,d.setValue(((u=t==null?void 0:t.min)==null?void 0:u.toString())||""),d.inputEl.type="number",d.inputEl.addClass("habit-min-input")}),new at.Setting(e).setName(c("Maximum value")).setDesc(c("(Optional) Maximum value for the count")).addText(d=>{var u;s=d,d.setValue(((u=t==null?void 0:t.max)==null?void 0:u.toString())||""),d.inputEl.type="number",d.inputEl.addClass("habit-max-input")}),new at.Setting(e).setName(c("Unit")).setDesc(c("(Optional) Unit for the count, such as 'cups', 'times', etc.")).addText(d=>{o=d,d.setValue((t==null?void 0:t.countUnit)||""),d.inputEl.addClass("habit-unit-input")}),new at.Setting(e).setName(c("Notice threshold")).setDesc(c("(Optional) Trigger a notification when this value is reached")).addText(d=>{l=d,d.setValue((t==null?void 0:t.notice)||""),d.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 at.Setting(e).setName(c("Property name")).setDesc(c("The property name in daily note front matter to store mapping values")).addText(d=>{r=d,d.setValue((t==null?void 0:t.property)||""),d.inputEl.addClass("habit-property-input")}),new at.Setting(e).setName(c("Value mapping")).setDesc(c("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=(d,u)=>{let p=i.createDiv({cls:"habit-mapping-row"}),m=p.createEl("input",{type:"number",value:d.toString(),cls:"habit-mapping-key"});p.createSpan({text:"\u2192",cls:"habit-mapping-arrow"});let h=p.createEl("input",{type:"text",value:u,cls:"habit-mapping-value"});new at.ExtraButtonComponent(p).setIcon("trash").setTooltip(c("Delete")).onClick(()=>{p.remove();let g=this.mappingInputs.findIndex(f=>f.keyInput===m&&f.valueInput===h);g>-1&&this.mappingInputs.splice(g,1)}),this.mappingInputs.push({keyInput:m,valueInput:h})};Object.entries(s).forEach(([d,u])=>{o(parseInt(d),u)}),e.createEl("button",{cls:"habit-add-mapping-button",text:c("Add new mapping")}).addEventListener("click",()=>{let d=0;this.mappingInputs.forEach(u=>{let p=parseInt(u.keyInput.value);!isNaN(p)&&p>d&&(d=p)}),o(d+1,"")}),this.mappingPropertyInput=r}buildScheduledHabitForm(e){let t=this.habitData;new at.Setting(e).setName(c("Scheduled events")).setDesc(c("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=(d={name:"",details:""},u="")=>{let p=r.createDiv({cls:"habit-event-row"}),m=p.createEl("input",{type:"text",value:d.name,cls:"habit-event-name",placeholder:c("Event name")}),h=p.createEl("input",{type:"text",value:d.details,cls:"habit-event-details",placeholder:c("Event details")}),g=p.createEl("input",{type:"text",value:u,cls:"habit-event-property",placeholder:c("Property name")});new at.ExtraButtonComponent(p).setIcon("trash").setTooltip(c("Delete")).onClick(()=>{p.remove();let f=this.eventInputs.findIndex(k=>k.nameInput===m&&k.detailsInput===h&&k.propertyInput===g);f>-1&&this.eventInputs.splice(f,1)}),this.eventInputs.push({nameInput:m,detailsInput:h,propertyInput:g})};i.length>0?i.forEach(d=>{let u=s[d.name]||"";o(d,u)}):o(),e.createEl("button",{cls:"habit-add-event-button",text:c("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 at.Notice(c("Please enter a property name")),null)}getCountHabitData(){if(!this.countInputs)return null;let e=this.countInputs.property.getValue().trim();if(!e)return new at.Notice(c("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 at.Notice(c("Please enter a property name")),null;if(this.mappingInputs.length===0)return new at.Notice(c("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 at.Notice(c("Mapping key must be a number")),null;if(!s)return new at.Notice(c("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 at.Notice(c("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 at.Notice(c("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)}};z();var bw=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 gi.ButtonComponent(e).setButtonText(c("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:c("No habits yet")}),a.createEl("p",{text:c("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,gi.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:c("Daily habit"),count:c("Count habit"),mapping:c("Mapping habit"),scheduled:c("Scheduled habit")},d=o.createEl("div",{cls:"habit-item-type",text:l[r.type]||r.type});i.createDiv({cls:"habit-item-actions"},u=>{new gi.ExtraButtonComponent(u).setTooltip(c("Edit")).setIcon("edit").onClick(()=>{this.openHabitEditDialog(r)}),new gi.ExtraButtonComponent(u).setTooltip(c("Delete")).setIcon("trash").onClick(()=>{this.deleteHabit(r)})})})}openHabitEditDialog(a){new Lu(this.app,this.plugin,a||null,async 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);await this.plugin.saveSettings(),await((r=this.plugin.habitManager)==null?void 0:r.initializeHabits()),this.render(),new gi.Notice(a?c("Habit updated"):c("Habit added"))}).open()}deleteHabit(a){let e=a.name,t=new gi.Modal(this.app);t.titleEl.setText(c("Delete habit")),t.contentEl.createDiv().setText(c("Are you sure you want to delete the habit ")+`"${e}"?`+c("This action cannot be undone.")),t.contentEl.createDiv({cls:"habit-delete-modal-buttons"},i=>{new gi.ButtonComponent(i).setButtonText(c("Cancel")).setClass("habit-cancel-button").onClick(()=>{t.close()}),new gi.ButtonComponent(i).setWarning().setButtonText(c("Delete")).setClass("habit-delete-button-confirm").onClick(async()=>{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(d=>d.id===a.id);o>-1&&(s.splice(o,1),await this.plugin.saveSettings(),await((l=this.plugin.habitManager)==null?void 0:l.initializeHabits()),this.render(),new gi.Notice(c("Habit deleted"))),t.close()})}),t.open()}};function ME(n,a){new EE.Setting(a).setName(c("Habit")).setDesc(c("Configure habit settings, including adding new habits, editing existing habits, and managing habit completion.")).setHeading(),new EE.Setting(a).setName(c("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"});N9(n,e)}function N9(n,a){new bw(n.plugin,a)}var ye=require("obsidian");z();var ju=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),d=!0;if(o&&l){switch(e.groupingStrategy){case"first-only":d=l.events[0].uid===s.uid;break;case"summary":d=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;d=u||p;break;default:d=!0}e.showInForecast||(d=!1)}i.push({...s,isHoliday:o,holidayGroup:l,showInForecast:d})}),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,d=r.summary;return e.groupingStrategy==="summary"&&l?e.groupDisplayFormat?d=e.groupDisplayFormat.replace("{title}",r.summary).replace("{count}",t.length.toString()).replace("{startDate}",this.formatDate(s)).replace("{endDate}",this.formatDate(o)):d=`${r.summary} (${t.length} days)`:e.groupingStrategy==="range"&&l&&(d=`${r.summary} - ${this.formatDateRange(s,o)}`),{id:`holiday-group-${r.uid}-${t.length}`,title:d,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 Wn=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}};Wn.WEBCAL_REGEX=/^webcal:\/\//i,Wn.URL_VALIDATION_REGEX=/^https?:\/\/[^\s/$.?#].[^\s]*$/i;var Tf=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 ye.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,ye.setIcon)(s,"arrow-left")}),i.buttonEl.createEl("span",{cls:"header-button-text",text:c("Back to main settings")})}e.createEl("h2",{text:c("ICS Calendar Integration")}),e.createEl("p",{text:c("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:"+ "+c("Add New Calendar Source")});r.onclick=()=>{new ww(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:c("Global Settings")}),new ye.Setting(a).setName(c("Enable Background Refresh")).setDesc(c("Automatically refresh calendar sources in the background")).addToggle(e=>{e.setValue(this.config.enableBackgroundRefresh).onChange(t=>{this.config.enableBackgroundRefresh=t,this.saveSettings()})}),new ye.Setting(a).setName(c("Global Refresh Interval")).setDesc(c("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 ye.Setting(a).setName(c("Maximum Cache Age")).setDesc(c("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 ye.Setting(a).setName(c("Network Timeout")).setDesc(c("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 ye.Setting(a).setName(c("Max Events Per Source")).setDesc(c("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 ye.Setting(a).setName(c("Default Event Color")).setDesc(c("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:c("Calendar Sources")}),this.config.sources.length===0){a.createDiv("ics-empty-state").createEl("p",{text:c("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?c("ICS Enabled"):c("ICS Disabled")),o.addClass(e.enabled?"status-enabled":"status-disabled");let l=r.createDiv("ics-source-details");if(l.createEl("div",{text:`${c("URL")}: ${this.truncateUrl(e.url)}`,title:e.url}),l.createEl("div",{text:`${c("Refresh")}: ${e.refreshInterval}${c("min")}`}),e.color){let k=l.createEl("div");k.createSpan({text:`${c("Color")}: `}),k.createEl("span",{attr:{style:`display: inline-block; width: 12px; height: 12px; background: ${e.color}; border-radius: 2px; margin-left: 4px; vertical-align: middle;`}}),k.createSpan({text:` ${e.color}`})}let d=r.createDiv("ics-source-actions"),u=d.createDiv("primary-actions"),p=u.createEl("button",{text:c("Edit"),cls:"mod-cta",title:c("Edit this calendar source")});p.onclick=()=>{new ww(this.plugin.app,k=>{this.config.sources[t]=k,this.saveAndRefresh()},e).open()};let m=u.createEl("button",{text:c("Sync"),attr:{"aria-label":c("Sync this calendar source now")}});m.onclick=async()=>{m.disabled=!0,m.addClass("syncing"),m.setText("\u27F3 "+c("Syncing..."));try{let k=this.plugin.getIcsManager();if(k){let v=await k.syncSource(e.id);v.success?(new ye.Notice(c("Sync completed successfully")),m.removeClass("syncing"),m.addClass("success"),setTimeout(()=>m.removeClass("success"),2e3)):(new ye.Notice(c("Sync failed: ")+v.error),m.removeClass("syncing"),m.addClass("error"),setTimeout(()=>m.removeClass("error"),2e3))}}catch(k){new ye.Notice(c("Sync failed: ")+k.message),m.removeClass("syncing"),m.addClass("error"),setTimeout(()=>m.removeClass("error"),2e3)}finally{m.disabled=!1,m.setText(c("Sync"))}};let h=d.createDiv("secondary-actions"),g=h.createEl("button",{text:e.enabled?c("Disable"):c("Enable"),title:e.enabled?c("Disable this source"):c("Enable this source")});g.onclick=()=>{this.config.sources[t].enabled=!this.config.sources[t].enabled,this.saveAndRefresh()};let f=h.createEl("button",{text:c("Delete"),cls:"mod-warning",title:c("Delete this calendar source")});f.onclick=()=>{confirm(c("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()}},ww=class extends ye.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?c("Edit ICS Source"):c("Add ICS Source")}),new ye.Setting(a).setName(c("ICS Source Name")).setDesc(c("Display name for this calendar source")).addText(s=>{s.setPlaceholder(c("My Calendar")).setValue(this.source.name).onChange(o=>{this.source.name=o})}),new ye.Setting(a).setName(c("ICS URL")).setDesc(c("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,d;if(this.source.url=o,Wn.isWebcalUrl(o)){let u=Wn.convertWebcalUrl(o);if(u.success){let p=Wn.getConversionDescription(u),m=(l=s.inputEl.parentElement)==null?void 0:l.querySelector(".setting-item-description");m&&(m.textContent=`${c("URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)")} - ${p}`)}}else{let u=(d=s.inputEl.parentElement)==null?void 0:d.querySelector(".setting-item-description");u&&(u.textContent=c("URL to the ICS/iCal file (supports http://, https://, and webcal:// protocols)"))}})}),new ye.Setting(a).setName(c("ICS Enabled")).setDesc(c("Whether this source is active")).addToggle(s=>{s.setValue(this.source.enabled).onChange(o=>{this.source.enabled=o})}),new ye.Setting(a).setName(c("Refresh Interval")).setDesc(c("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 ye.Setting(a).setName(c("Color")).setDesc(c("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 ye.Setting(a).setName(c("Show Type")).setDesc(c("How to display events from this source in calendar views")).addDropdown(s=>{s.addOption("event",c("Event")).addOption("badge",c("Badge")).setValue(this.source.showType).onChange(o=>{this.source.showType=o})}),new ye.Setting(a).setName(c("Show All-Day Events")).setDesc(c("Include all-day events from this source")).addToggle(s=>{s.setValue(this.source.showAllDayEvents).onChange(o=>{this.source.showAllDayEvents=o})}),new ye.Setting(a).setName(c("Show Timed Events")).setDesc(c("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:c("Authentication (Optional)")}),new ye.Setting(e).setName(c("Authentication Type")).setDesc(c("Type of authentication required")).addDropdown(s=>{var o;s.addOption("none",c("ICS Auth None")).addOption("basic",c("Basic Auth")).addOption("bearer",c("Bearer Token")).addOption("custom",c("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:c("Save"),cls:"mod-cta"});r.onclick=()=>{this.validateSource()&&(this.onSave(this.source),this.close())};let i=t.createEl("button",{text:c("Cancel")});i.onclick=()=>{this.close()}}displayTextReplacements(a){let e=a.createDiv();e.createEl("h3",{text:c("Text Replacements")}),e.createEl("p",{text:c("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:c("No text replacement rules configured"),cls:"setting-item-description"}):this.source.textReplacements.forEach((o,l)=>{let d=t.createDiv("text-replacement-rule"),u=d.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?c("Enabled"):c("Disabled")}),h=d.createDiv("text-replacement-details");h.createEl("div",{text:`${c("Target")}: ${o.target}`}),h.createEl("div",{text:`${c("Pattern")}: ${o.pattern}`,cls:"text-replacement-pattern"}),h.createEl("div",{text:`${c("Replacement")}: ${o.replacement}`,cls:"text-replacement-replacement"});let g=d.createDiv("text-replacement-actions"),f=g.createEl("button",{text:c("Edit"),cls:"mod-cta"});f.onclick=()=>{new Tw(this.app,y=>{this.source.textReplacements[l]=y,r()},o).open()};let k=g.createEl("button",{text:o.enabled?c("Disable"):c("Enable")});k.onclick=()=>{this.source.textReplacements[l].enabled=!o.enabled,r()};let v=g.createEl("button",{text:c("Delete"),cls:"mod-warning"});v.onclick=()=>{confirm(c("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:"+ "+c("Add Text Replacement Rule")});s.onclick=()=>{new Tw(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 ye.Setting(a).setName(c("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 ye.Setting(a).setName(c("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 ye.Setting(a).setName(c("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 ye.Setting(a).setName(c("Custom Headers")).setDesc(c("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:c("Holiday Configuration")}),e.createEl("p",{text:c("Configure how holiday events are detected and displayed"),cls:"setting-item-description"}),this.source.holidayConfig||(this.source.holidayConfig=ju.getDefaultConfig()),new ye.Setting(e).setName(c("Enable Holiday Detection")).setDesc(c("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:c("Status Mapping")}),e.createEl("p",{text:c("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 ye.Setting(e).setName(c("Enable Status Mapping")).setDesc(c("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 ye.Setting(a).setName(c("Grouping Strategy")).setDesc(c("How to handle consecutive holiday events")).setClass("holiday-setting").addDropdown(i=>{i.addOption("none",c("Show All Events")).addOption("first-only",c("Show First Day Only")).addOption("summary",c("Show Summary")).addOption("range",c("Show First and Last")).setValue(this.source.holidayConfig.groupingStrategy).onChange(s=>{this.source.holidayConfig.groupingStrategy=s})}),new ye.Setting(a).setName(c("Maximum Gap Days")).setDesc(c("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 ye.Setting(a).setName(c("Show in Forecast")).setDesc(c("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 ye.Setting(a).setName(c("Show in Calendar")).setDesc(c("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:c("Detection Patterns")}),new ye.Setting(t).setName(c("Summary Patterns")).setDesc(c("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 ye.Setting(t).setName(c("Keywords")).setDesc(c("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 ye.Setting(t).setName(c("Categories")).setDesc(c("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 ye.Setting(a).setName(c("Group Display Format")).setDesc(c("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 ye.Setting(a).setName(c("Override ICS Status")).setDesc(c("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:c("Timing Rules")}),new ye.Setting(t).setName(c("Past Events Status")).setDesc(c("Status for events that have already ended")).addDropdown(s=>{s.addOption(" ",c("Status Incomplete")).addOption("x",c("Status Complete")).addOption("-",c("Status Cancelled")).addOption("/",c("Status In Progress")).addOption("?",c("Status Question")).setValue(this.source.statusMapping.timingRules.pastEvents).onChange(o=>{this.source.statusMapping.timingRules.pastEvents=o})}),new ye.Setting(t).setName(c("Current Events Status")).setDesc(c("Status for events happening today")).addDropdown(s=>{s.addOption(" ",c("Status Incomplete")).addOption("x",c("Status Complete")).addOption("-",c("Status Cancelled")).addOption("/",c("Status In Progress")).addOption("?",c("Status Question")).setValue(this.source.statusMapping.timingRules.currentEvents).onChange(o=>{this.source.statusMapping.timingRules.currentEvents=o})}),new ye.Setting(t).setName(c("Future Events Status")).setDesc(c("Status for events in the future")).addDropdown(s=>{s.addOption(" ",c("Status Incomplete")).addOption("x",c("Status Complete")).addOption("-",c("Status Cancelled")).addOption("/",c("Status In Progress")).addOption("?",c("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:c("Property Rules")}),r.createEl("p",{text:c("Optional rules based on event properties (higher priority than timing rules)"),cls:"setting-item-description"}),this.source.statusMapping.propertyRules||(this.source.statusMapping.propertyRules={}),new ye.Setting(r).setName(c("Holiday Status")).setDesc(c("Status for events detected as holidays")).addDropdown(s=>{var o;s.addOption("",c("Use timing rules")).addOption(" ",c("Status Incomplete")).addOption("x",c("Status Complete")).addOption("-",c("Status Cancelled")).addOption("/",c("Status In Progress")).addOption("?",c("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 ye.Setting(r).setName(c("Category Mapping")).setDesc(c("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(([d,u])=>`${d}:${u}`).join(`
`);s.setValue(l).onChange(d=>{let u={},p=d.split(`
`).filter(m=>m.trim());for(let m of p){let[h,g]=m.split(":").map(f=>f.trim());h&&g&&(u[h]=g)}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 ye.Notice(c("Please enter a name for the source")),!1;if(!this.source.url.trim())return new ye.Notice(c("Please enter a URL for the source")),!1;let a=Wn.convertWebcalUrl(this.source.url);return a.success?!0:(new ye.Notice(c("Please enter a valid URL")+": "+a.error),!1)}generateId(){return`ics-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}},Tw=class extends ye.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?c("Edit Text Replacement Rule"):c("Add Text Replacement Rule")}),new ye.Setting(a).setName(c("Rule Name")).setDesc(c("Descriptive name for this replacement rule")).addText(f=>{f.setPlaceholder(c("Remove Meeting Prefix")).setValue(this.rule.name).onChange(k=>{this.rule.name=k})}),new ye.Setting(a).setName(c("Enabled")).setDesc(c("Whether this rule is active")).addToggle(f=>{f.setValue(this.rule.enabled).onChange(k=>{this.rule.enabled=k})}),new ye.Setting(a).setName(c("Target Field")).setDesc(c("Which field to apply the replacement to")).addDropdown(f=>{f.addOption("summary",c("Summary/Title")).addOption("description",c("Description")).addOption("location",c("Location")).addOption("all",c("All Fields")).setValue(this.rule.target).onChange(k=>{this.rule.target=k})});let e,t,r=f=>{if(t)try{if(this.rule.pattern&&f){let k=new RegExp(this.rule.pattern,this.rule.flags||"g"),v=f.replace(k,this.rule.replacement),y=t.querySelector(".test-result");y&&(y.textContent=v,y.style.color=v!==f?"#4caf50":"#666")}else{let k=t.querySelector(".test-result");k&&(k.textContent=f||"",k.style.color="#666")}}catch(k){let v=t.querySelector(".test-result");v&&(v.textContent="Invalid regex pattern",v.style.color="#f44336")}};new ye.Setting(a).setName(c("Pattern (Regular Expression)")).setDesc(c("Regular expression pattern to match. Use parentheses for capture groups.")).addText(f=>{f.setPlaceholder("^Meeting: ").setValue(this.rule.pattern).onChange(k=>{this.rule.pattern=k,e&&e.getValue()&&r(e.getValue())})}),new ye.Setting(a).setName(c("Replacement")).setDesc(c("Text to replace matches with. Use $1, $2, etc. for capture groups.")).addText(f=>{f.setPlaceholder("").setValue(this.rule.replacement).onChange(k=>{this.rule.replacement=k,e&&e.getValue()&&r(e.getValue())})}),new ye.Setting(a).setName(c("Regex Flags")).setDesc(c("Regular expression flags (e.g., 'g' for global, 'i' for case-insensitive)")).addText(f=>{f.setPlaceholder("g").setValue(this.rule.flags||"").onChange(k=>{this.rule.flags=k,e&&e.getValue()&&r(e.getValue())})});let i=a.createDiv();i.createEl("h3",{text:c("Examples")});let s=i.createEl("ul"),o=s.createEl("li");o.createEl("strong",{text:c("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:c("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 d=s.createEl("li");d.createEl("strong",{text:c("Swap words")+": "}),d.createSpan({text:"Pattern: "}),d.createEl("code",{text:"(\\w+) with (\\w+)"}),d.createSpan({text:", Replacement: "}),d.createEl("code",{text:"$2 and $1"});let u=a.createDiv();u.createEl("h3",{text:c("Test Rule")}),t=u.createDiv("test-output"),t.createEl("strong",{text:c("Output: ")});let p=t.createEl("span",{cls:"test-result"});new ye.Setting(u).setName(c("Test Input")).setDesc(c("Enter text to test the replacement rule")).addText(f=>{e=f,f.setPlaceholder("Meeting: Weekly Standup").onChange(k=>{r(k)})});let m=a.createDiv("modal-button-container"),h=m.createEl("button",{text:c("Save"),cls:"mod-cta"});h.onclick=()=>{this.validateRule()&&(this.onSave(this.rule),this.close())};let g=m.createEl("button",{text:c("Cancel")});g.onclick=()=>{this.close()}}validateRule(){if(!this.rule.name.trim())return new ye.Notice(c("Please enter a name for the rule")),!1;if(!this.rule.pattern.trim())return new ye.Notice(c("Please enter a pattern")),!1;try{new RegExp(this.rule.pattern,this.rule.flags||"g")}catch(a){return new ye.Notice(c("Invalid regular expression pattern")),!1}return!0}generateId(){return`rule-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}};var Cs=require("obsidian");z();function PE(n,a){var l;new Cs.Setting(a).setName(c("User Interface")).setDesc(c("Choose your preferred interface style and configure how Task Genius displays in your workspace.")).setHeading(),new Cs.Setting(a).setName(c("Interface Mode")).setDesc(c("Select between the modern Fluent interface or the classic Legacy interface.")).setHeading();let e=a.createDiv({cls:"interface-mode-selection"}),t=(l=n.plugin.settings.fluentView)!=null&&l.enableFluent?"fluent":"legacy",r=[{id:"fluent",title:c("Fluent"),subtitle:c("Modern & Sleek"),description:c("New visual design with elegant animations and modern interactions"),preview:L9()},{id:"legacy",title:c("Legacy"),subtitle:c("Classic & Familiar"),description:c("Keep the familiar interface and interaction style you know"),preview:j9()}];new Ts(e,r,{containerClass:"selectable-cards-container",cardClass:"selectable-card",showPreview:!0},async d=>{n.plugin.settings.fluentView||(n.plugin.settings.fluentView={enableFluent:!1}),n.plugin.settings.fluentView.enableFluent=d==="fluent",await n.plugin.saveSettings(),o()}).setSelected(t);let s=a.createDiv({cls:"fluent-specific-settings"}),o=()=>{var d;s.empty(),(d=n.plugin.settings.fluentView)!=null&&d.enableFluent&&(new Cs.Setting(s).setName(c("Fluent Interface Settings")).setDesc(c("Configure options specific to the Fluent interface.")).setHeading(),new Cs.Setting(s).setName(c("Interface Style")).setDesc(c("Select the interface style to use.")).addDropdown(u=>{var p;u.addOption("modern",c("Modern")),u.addOption("classic",c("Classic")),u.setValue(((p=n.plugin.settings.fluentView)==null?void 0:p.interfaceStyle)||"modern").onChange(async m=>{n.plugin.settings.fluentView||(n.plugin.settings.fluentView={enableFluent:!1,interfaceStyle:"modern",useWorkspaceSideLeaves:!1,fluentConfig:{enableWorkspaces:!0,defaultWorkspace:"default",maxOtherViewsBeforeOverflow:5}}),n.plugin.settings.fluentView.interfaceStyle=m,await n.plugin.saveSettings(),new Cs.Notice(c("Saved. Reopen the view to apply."))})}),new Cs.Setting(s).setName(c("Use workspace side leaves")).setDesc(c("Use left/right workspace side leaves for Sidebar and Details. When enabled, the main fluent view won't render in-view sidebar or details.")).addToggle(u=>{var m,h;let p=(h=(m=n.plugin.settings.fluentView)==null?void 0:m.useWorkspaceSideLeaves)!=null?h:!1;u.setValue(p).onChange(async g=>{n.plugin.settings.fluentView||(n.plugin.settings.fluentView={enableFluent:!1}),n.plugin.settings.fluentView.fluentConfig||(n.plugin.settings.fluentView.fluentConfig={enableWorkspaces:!0,defaultWorkspace:"default"}),n.plugin.settings.fluentView.useWorkspaceSideLeaves=g,await n.plugin.saveSettings(),new Cs.Notice(c("Saved. Reopen the view to apply."))})}),new Cs.Setting(s).setName(c("Max other views before overflow")).setDesc(c("Number of 'Other Views' to show before grouping the rest into an overflow menu (ellipsis)")).addText(u=>{var m,h,g;let p=(g=(h=(m=n.plugin.settings.fluentView)==null?void 0:m.fluentConfig)==null?void 0:h.maxOtherViewsBeforeOverflow)!=null?g:5;u.setPlaceholder("5").setValue(String(p)).onChange(async f=>{let k=parseInt(f,10);!isNaN(k)&&k>=1&&k<=50&&(n.plugin.settings.fluentView||(n.plugin.settings.fluentView={enableFluent:!1}),n.plugin.settings.fluentView.fluentConfig||(n.plugin.settings.fluentView.fluentConfig={enableWorkspaces:!0,defaultWorkspace:"default"}),n.plugin.settings.fluentView.fluentConfig.maxOtherViewsBeforeOverflow=k,await n.plugin.saveSettings())})}))};o()}function L9(){let n=createDiv({cls:["mode-preview","mode-preview-fluent"]}),t=`https://raw.githubusercontent.com/Quorafind/Obsidian-Task-Progress-Bar/master/media/fluent${document.body.classList.contains("theme-dark")?"":"-light"}.png`,r=n.createEl("img",{attr:{src:t,alt:"Fluent mode preview"}});return r.style.maxWidth="100%",r.style.maxHeight="100%",r.style.objectFit="contain",r.style.borderRadius="4px",n}function j9(){let n=createDiv({cls:["mode-preview","mode-preview-legacy"]}),t=`https://raw.githubusercontent.com/Quorafind/Obsidian-Task-Progress-Bar/master/media/legacy${document.body.classList.contains("theme-dark")?"":"-light"}.png`,r=n.createEl("img",{attr:{src:t,alt:"Legacy mode preview"}});return r.style.maxWidth="100%",r.style.maxHeight="100%",r.style.objectFit="contain",r.style.borderRadius="4px",n}var Ot=require("obsidian");z();function AE(n,a){new Ot.Setting(a).setName(c("Progress bar")).setDesc(c("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 Ot.Setting(a).setName(c("Progress display mode")).setDesc(c("Choose how to display task progress")).addDropdown(t=>t.addOption("none",c("No progress indicators")).addOption("graphical",c("Graphical progress bar")).addOption("text",c("Text progress indicator")).addOption("both",c("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 Ot.Setting(a).setName(c("Enable progress bar in reading mode")).setDesc(c("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 Ot.Setting(a).setName(c("Support hover to show progress info")).setDesc(c("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 Ot.Setting(a).setName(c("Add progress bar to non-task bullet")).setDesc(c("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 Ot.Setting(a).setName(c("Add progress bar to Projects view")).setDesc(c("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 Ot.Setting(a).setName(c("Add progress bar to Heading")).setDesc(c("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 Ot.Setting(a).setName(c("Count sub children of current Task")).setDesc(c("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 Ot.Setting(a).setName(c("Use custom goal for progress bar")).setDesc(c("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")&&H9(n,a),new Ot.Setting(a).setName(c("Hide progress bars")).setHeading(),new Ot.Setting(a).setName(c("Hide progress bars based on conditions")).setDesc(c("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 Ot.Setting(a).setName(c("Hide by tags")).setDesc(c('Specify tags that will hide progress bars (comma-separated, without #). Example: "no-progress-bar,hide-progress"')).addText(t=>t.setPlaceholder(xe.hideProgressBarTags).setValue(n.plugin.settings.hideProgressBarTags).onChange(async r=>{n.plugin.settings.hideProgressBarTags=r,n.applySettingsUpdate()})),new Ot.Setting(a).setName(c("Hide by folders")).setDesc(c('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 Ot.Setting(a).setName(c("Hide by metadata")).setDesc(c('Specify frontmatter metadata that will hide progress bars. Example: "hide-progress-bar: true"')).addText(t=>t.setPlaceholder(xe.hideProgressBarMetadata).setValue(n.plugin.settings.hideProgressBarMetadata).onChange(async r=>{n.plugin.settings.hideProgressBarMetadata=r,n.applySettingsUpdate()})),new Ot.Setting(a).setName(c("Show progress bars based on heading")).setDesc(c("Toggle this to enable showing progress bars based on heading.")).addText(t=>t.setPlaceholder(c("# heading")).setValue(n.plugin.settings.showProgressBarBasedOnHeading).onChange(async r=>{n.plugin.settings.showProgressBarBasedOnHeading=r,n.applySettingsUpdate()}))))}function H9(n,a){if(new Ot.Setting(a).setName(c("Progress format")).setDesc(c("Choose how to display the task progress")).addDropdown(e=>{e.addOption("percentage",c("Percentage (75%)")).addOption("bracketPercentage",c("Bracketed percentage ([75%])")).addOption("fraction",c("Fraction (3/4)")).addOption("bracketFraction",c("Bracketed fraction ([3/4])")).addOption("detailed",c("Detailed ([3\u2713 1\u27F3 0\u2717 1? / 5])")).addOption("custom",c("Custom format")).addOption("range-based",c("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:c("Use placeholders like {{COMPLETED}}, {{TOTAL}}, {{PERCENT}}, etc.")}),e.createEl("div",{cls:"custom-format-placeholder-info",text:c("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:c("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 Ot.Setting(a).setName(c("Custom format")).setDesc(e);let t=a.createDiv({cls:"custom-format-preview-container"}),r=t.createDiv({cls:"custom-format-preview-label",text:c("Preview:")}),i=t.createDiv({cls:"custom-format-preview-content"});IE(n,a,n.plugin.settings.customFormat||"[{{COMPLETED}}/{{TOTAL}}]");let s=a.createEl("div",{cls:"custom-format-textarea-container"},d=>{let u=new Ot.TextAreaComponent(d);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(),IE(n,a,p)})});new Ot.Setting(a).setName(c("Expression examples")).setDesc(c("Examples of advanced formats using expressions")).setHeading();let o=a.createEl("div",{cls:"expression-examples"});[{name:c("Text Progress Bar"),code:'[${="=".repeat(Math.floor(data.percentages.completed/10)) + " ".repeat(10-Math.floor(data.percentages.completed/10))}] {{PERCENT}}%'},{name:c("Emoji Progress Bar"),code:'${="\u2B1B".repeat(Math.floor(data.percentages.completed/10)) + "\u2B1C".repeat(10-Math.floor(data.percentages.completed/10))} {{PERCENT}}%'},{name:c("Color-coded Status"),code:"{{COMPLETED}}/{{TOTAL}} ${=data.percentages.completed < 30 ? '\u{1F534}' : data.percentages.completed < 70 ? '\u{1F7E0}' : '\u{1F7E2}'}"},{name:c("Status with Icons"),code:"[{{COMPLETED_SYMBOL}}:{{COMPLETED}} {{IN_PROGRESS_SYMBOL}}:{{IN_PROGRESS}} {{PLANNED_SYMBOL}}:{{PLANNED}} / {{TOTAL}}]"}].forEach(d=>{let u=o.createEl("div",{cls:"expression-example-item"});u.createEl("div",{cls:"expression-example-name",text:d.name});let p=u.createEl("code",{cls:"expression-example-code",text:d.code}),m=u.createEl("div",{cls:"expression-example-preview"}),h={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 f=T2(n,d.code,h);m.setText(`${c("Preview")}: ${f}`)}catch(f){m.setText(`${c("Preview")}: Error`),m.addClass("expression-preview-error")}u.createEl("button",{cls:"expression-example-use",text:c("Use")}).addEventListener("click",()=>{n.plugin.settings.customFormat=d.code,n.applySettingsUpdate();let f=a.querySelectorAll("textarea");for(let k of Array.from(f))if(k.placeholder==="[{{COMPLETED}}/{{TOTAL}}]"){k.value=d.code;break}IE(n,a,d.code)})})}else(n.plugin.settings.displayMode==="range-based"||!n.plugin.settings.displayMode)&&(new Ot.Setting(a).setName(c("Show percentage")).setDesc(c("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 Ot.Setting(a).setName(c("Customize progress ranges")).setDesc(c("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&&B9(n,a)))}function B9(n,a){new Ot.Setting(a).setName(c("Progress Ranges")).setDesc(c("Define progress ranges and their corresponding text representations.")).setHeading(),n.plugin.settings.progressRanges.forEach((t,r)=>{new Ot.Setting(a).setName(`${c("Range")} ${r+1}: ${t.min}%-${t.max}%`).setDesc(`${c("Use")} {{PROGRESS}} ${c("as a placeholder for the percentage value")}`).addText(i=>i.setPlaceholder(`${c("Template text with")} {{PROGRESS}} ${c("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 Ot.Setting(a).setName(c("Add new range")).setDesc(c("Add a new progress percentage range with custom text"));let e=new Ot.Setting(a);e.infoEl.detach(),e.addText(t=>t.setPlaceholder(c("Min percentage (0-100)")).setValue("").onChange(async r=>{})).addText(t=>t.setPlaceholder(c("Max percentage (0-100)")).setValue("").onChange(async r=>{})).addText(t=>t.setPlaceholder(c("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 Ot.Setting(a).setName(c("Reset to defaults")).setDesc(c("Reset progress ranges to default values")).addButton(t=>{t.setButtonText(c("Reset")).onClick(async()=>{n.plugin.settings.progressRanges=[{min:0,max:20,text:c("Just started {{PROGRESS}}%")},{min:20,max:40,text:c("Making progress {{PROGRESS}}%")},{min:40,max:60,text:c("Half way {{PROGRESS}}%")},{min:60,max:80,text:c("Good progress {{PROGRESS}}%")},{min:80,max:100,text:c("Almost there {{PROGRESS}}%")}],n.applySettingsUpdate(),n.display()})})}function IE(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=go(e,n.plugin);return n.plugin.settings.customFormat=t,r}catch(t){throw console.error("Error in renderFormatPreview:",t),t}}var ze=require("obsidian");z();function FE(n,a){var u,p;if(new ze.Setting(a).setName(c("Quick capture")).setHeading(),new ze.Setting(a).setName(c("Enable quick capture")).setDesc(c("Toggle this to enable Org-mode style quick capture panel.")).addToggle(m=>m.setValue(n.plugin.settings.quickCapture.enableQuickCapture).onChange(async h=>{n.plugin.settings.quickCapture.enableQuickCapture=h,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})),!n.plugin.settings.quickCapture.enableQuickCapture)return;new ze.Setting(a).setName(c("Target type")).setDesc(c("Choose whether to capture to a fixed file or daily note")).addDropdown(m=>m.addOption("fixed",c("Fixed file")).addOption("daily-note",c("Daily note")).setValue(n.plugin.settings.quickCapture.targetType).onChange(async h=>{n.plugin.settings.quickCapture.targetType=h,n.applySettingsUpdate(),setTimeout(()=>{n.display()},100)})),n.plugin.settings.quickCapture.targetType==="fixed"&&new ze.Setting(a).setName(c("Target file")).setDesc(c("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(m=>m.setValue(n.plugin.settings.quickCapture.targetFile).onChange(async h=>{n.plugin.settings.quickCapture.targetFile=h,n.applySettingsUpdate()})),n.plugin.settings.quickCapture.targetType==="daily-note"&&(new ze.Setting(a).setName(c("Sync with Daily Notes plugin")).setDesc(c("Automatically sync settings from the Daily Notes plugin")).addButton(m=>m.setButtonText(c("Sync now")).onClick(async()=>{var h;try{let g=n.app.internalPlugins.plugins["daily-notes"];if(g&&g.enabled){let f=((h=g.instance)==null?void 0:h.options)||{};n.plugin.settings.quickCapture.dailyNoteSettings={format:f.format||"YYYY-MM-DD",folder:f.folder||"",template:f.template||""},await n.plugin.saveSettings(),setTimeout(()=>{n.display()},200),new ze.Notice(c("Daily notes settings synced successfully"))}else new ze.Notice(c("Daily Notes plugin is not enabled"))}catch(g){console.error("Failed to sync daily notes settings:",g),new ze.Notice(c("Failed to sync daily notes settings"))}})),new ze.Setting(a).setName(c("Daily note format")).setDesc(c("Date format for daily notes (e.g., YYYY-MM-DD)")).addText(m=>{var h;return m.setValue(((h=n.plugin.settings.quickCapture.dailyNoteSettings)==null?void 0:h.format)||"YYYY-MM-DD").onChange(async g=>{n.plugin.settings.quickCapture.dailyNoteSettings.format=g,n.applySettingsUpdate()})}),new ze.Setting(a).setName(c("Daily note folder")).setDesc(c("Folder path for daily notes (leave empty for root)")).addText(m=>{var h;return m.setValue(((h=n.plugin.settings.quickCapture.dailyNoteSettings)==null?void 0:h.folder)||"").onChange(async g=>{n.plugin.settings.quickCapture.dailyNoteSettings.folder=g,n.applySettingsUpdate()})}),new ze.Setting(a).setName(c("Daily note template")).setDesc(c("Template file path for new daily notes (optional)")).addText(m=>{var h;return m.setValue(((h=n.plugin.settings.quickCapture.dailyNoteSettings)==null?void 0:h.template)||"").onChange(async g=>{n.plugin.settings.quickCapture.dailyNoteSettings.template=g,n.applySettingsUpdate()})})),new ze.Setting(a).setName(c("Target heading")).setDesc(c("Optional heading to append content under (leave empty to append to file)")).addText(m=>m.setValue(n.plugin.settings.quickCapture.targetHeading||"").onChange(async h=>{n.plugin.settings.quickCapture.targetHeading=h,n.applySettingsUpdate()})),new ze.Setting(a).setName(c("Placeholder text")).setDesc(c("Placeholder text to display in the capture panel")).addText(m=>m.setValue(n.plugin.settings.quickCapture.placeholder).onChange(async h=>{n.plugin.settings.quickCapture.placeholder=h,n.applySettingsUpdate()})),new ze.Setting(a).setName(c("Append to file")).setDesc(c("How to add captured content to the target location")).addDropdown(m=>m.addOption("append",c("Append")).addOption("prepend",c("Prepend")).addOption("replace",c("Replace")).setValue(n.plugin.settings.quickCapture.appendToFile).onChange(async h=>{n.plugin.settings.quickCapture.appendToFile=h,n.applySettingsUpdate()})),new ze.Setting(a).setName(c("Auto-add task prefix")).setDesc(c("Automatically add task checkbox prefix to captured content")).addToggle(m=>{var h;return m.setValue((h=n.plugin.settings.quickCapture.autoAddTaskPrefix)!=null?h:!0).onChange(async g=>{n.plugin.settings.quickCapture.autoAddTaskPrefix=g,n.applySettingsUpdate(),setTimeout(()=>{n.display()},100)})}),n.plugin.settings.quickCapture.autoAddTaskPrefix&&new ze.Setting(a).setName(c("Task prefix format")).setDesc(c("The prefix to add before captured content (e.g., '- [ ]' for task, '- ' for list item)")).addText(m=>m.setValue(n.plugin.settings.quickCapture.taskPrefix||"- [ ]").onChange(async h=>{n.plugin.settings.quickCapture.taskPrefix=h||"- [ ]",n.applySettingsUpdate()})),new ze.Setting(a).setName(c("Enhanced")).setHeading(),new ze.Setting(a).setName(c("Keep open after capture")).setDesc(c("Keep the modal open after capturing content")).addToggle(m=>m.setValue(n.plugin.settings.quickCapture.keepOpenAfterCapture||!1).onChange(async h=>{n.plugin.settings.quickCapture.keepOpenAfterCapture=h,n.applySettingsUpdate()})),new ze.Setting(a).setName(c("Remember last mode")).setDesc(c("Remember the last used quick capture mode")).addToggle(m=>{var h;return m.setValue((h=n.plugin.settings.quickCapture.rememberLastMode)!=null?h:!0).onChange(async g=>{n.plugin.settings.quickCapture.rememberLastMode=g,n.applySettingsUpdate()})}),(u=n.plugin.settings.taskTimer)!=null&&u.enabled&&(new ze.Setting(a).setName(c("Timer Integration")).setHeading(),new ze.Setting(a).setName(c("Auto-start timer")).setDesc(c("Automatically start the timer when creating a new task via quick capture (checkbox mode only)")).addToggle(m=>{var h;return m.setValue((h=n.plugin.settings.quickCapture.autoStartTimer)!=null?h:!1).onChange(async g=>{n.plugin.settings.quickCapture.autoStartTimer=g,n.applySettingsUpdate()})})),new ze.Setting(a).setName(c("File Creation Mode")).setHeading();let e=(p=n.plugin.settings.quickCapture).createFileMode||(p.createFileMode={defaultFolder:"",useTemplate:!1,templateFile:""});if(new ze.Setting(a).setName(c("Default folder for new files")).setDesc(c("Used by File mode (requires FileSource). Leave empty for vault root.")).addText(m=>m.setValue(e.defaultFolder||"").onChange(async h=>{e.defaultFolder=h,n.applySettingsUpdate()})),new ze.Setting(a).setName(c("Use template for new files")).setDesc(c("When File mode is used, create the new note from a template and then insert the captured content.")).addToggle(m=>m.setValue(e.useTemplate||!1).onChange(async h=>{e.useTemplate=h,n.applySettingsUpdate(),setTimeout(()=>{n.display()},100)})),e.useTemplate){let m=(e.templateFolder||"").trim(),h=m?n.app.vault.getAbstractFileByPath(m):null,g=h instanceof ze.TFolder,f=[];if(g){let k=v=>{for(let y of v.children)y instanceof ze.TFolder?k(y):y instanceof ze.TFile&&y.extension.toLowerCase()==="md"&&f.push(y)};k(h),f.sort((v,y)=>v.path.localeCompare(y.path))}new ze.Setting(a).setName(c("Template folder")).setDesc(g||!m?c("Folder that contains Quick Capture templates for File mode."):c("Selected folder was not found in the vault.")).addText(k=>{k.setPlaceholder(c("Templates/Quick Capture")).setValue(e.templateFolder||"").onChange(async v=>{let y=e.templateFolder||"",b=v.trim();e.templateFolder=b,y!==b&&(e.templateFile=""),n.applySettingsUpdate(),setTimeout(()=>{n.display()},100)}),new ts(n.app,k.inputEl,n.plugin,"single")}),new ze.Setting(a).setName(c("Template note")).setDesc(m?g?f.length>0?c("Choose the note that should be copied; {{CONTENT}} placeholders are replaced, otherwise the captured text is appended."):c("No markdown notes were found in the selected folder."):c("Template folder is invalid; update the folder to continue."):c("Select a template folder above to enable the dropdown.")).addDropdown(k=>{k.addOption("",c("None"));let v=e.templateFile||"";v&&!f.some(y=>y.path===v)&&k.addOption(v,v);for(let y of f)k.addOption(y.path,y.basename);k.setValue(e.templateFile||""),k.onChange(async y=>{e.templateFile=y,n.applySettingsUpdate()}),(!f.length||!g)&&(k.selectEl.disabled=!0)})}new ze.Setting(a).setName(c("Write content tags to frontmatter")).setDesc(c("If enabled, #tags in the editor content are written into YAML frontmatter tags (merged and deduplicated)")).addToggle(m=>m.setValue(e.writeContentTagsToFrontmatter||!1).onChange(async h=>{e.writeContentTagsToFrontmatter=h,n.applySettingsUpdate()})),new ze.Setting(a).setName(c("Default file name template")).setDesc(c("Used by File mode to prefill the file name input (supports date templates like {{DATE:YYYY-MM-DD}})")).addText(m=>m.setValue(n.plugin.settings.quickCapture.defaultFileNameTemplate||"{{DATE:YYYY-MM-DD}} - Task").onChange(async h=>{n.plugin.settings.quickCapture.defaultFileNameTemplate=h,n.applySettingsUpdate()})),new ze.Setting(a).setName(c("Quick Name Templates")).setDesc(c("Manage file name templates for quick selection in File mode"));let t=[{name:"Daily Note",template:"{{DATE:YYYY-MM-DD}}"},{name:"Meeting",template:"{{DATE:YYYY-MM-DD}} - Meeting"},{name:"Task",template:"{{DATE:YYYY-MM-DD}} - Task"},{name:"Project",template:"Project - {{DATE:YYYY-MM}}"},{name:"Notes",template:"Notes - {{DATE:YYYY-MM-DD-HHmm}}"}],r=n.plugin.settings.quickCapture.fileNameTemplates,i,s=!1;Array.isArray(r)?r.some(h=>!h||typeof h!="object"||typeof h.template!="string")?(i=r.map(h=>{if(typeof h=="string")return{name:h,template:h};let g=h.template,f=typeof g=="string"?g:"",k=h.name;return{name:typeof k=="string"&&k.length>0?k:f,template:f}}),s=!0):i=r:(i=t.map(m=>({...m})),s=!0),s&&(n.plugin.settings.quickCapture.fileNameTemplates=i,n.applySettingsUpdate());let o=a.createDiv({cls:"file-name-templates-container"}),l=()=>{n.plugin.settings.quickCapture.fileNameTemplates=i,n.applySettingsUpdate()},d=()=>{o.empty(),i.forEach((m,h)=>{let g=new ze.Setting(o);g.addText(f=>{f.setValue(m.name||"").setPlaceholder(c("Enter file name...")).onChange(async k=>{m.name=k,l()})}),g.addText(f=>{f.setValue(m.template||"").setPlaceholder(c("Enter template...")).onChange(async k=>{m.template=k,l()})}),g.addExtraButton(f=>f.setIcon("trash").setTooltip(c("Remove")).onClick(async()=>{i.splice(h,1),l(),d()}))}),new ze.Setting(o).addButton(m=>m.setButtonText(c("Add Template")).onClick(async()=>{i.push({name:"",template:"{{DATE:YYYY-MM-DD}} - Task"}),l(),d()}))};d(),new ze.Setting(a).setName(c("Minimal Mode")).setHeading(),new ze.Setting(a).setName(c("Enable minimal mode")).setDesc(c("Enable simplified single-line quick capture with inline suggestions")).addToggle(m=>m.setValue(n.plugin.settings.quickCapture.enableMinimalMode).onChange(async h=>{n.plugin.settings.quickCapture.enableMinimalMode=h,n.applySettingsUpdate(),setTimeout(()=>{n.display()},100)})),n.plugin.settings.quickCapture.enableMinimalMode&&(n.plugin.settings.quickCapture.minimalModeSettings||(n.plugin.settings.quickCapture.minimalModeSettings={suggestTrigger:"/"}),new ze.Setting(a).setName(c("Suggest trigger character")).setDesc(c("Character to trigger the suggestion menu")).addText(m=>m.setValue(n.plugin.settings.quickCapture.minimalModeSettings.suggestTrigger).onChange(async h=>{n.plugin.settings.quickCapture.minimalModeSettings.suggestTrigger=h||"/",n.applySettingsUpdate()})))}var Ir=require("obsidian");DC();function RE(n,a){if(new Ir.Setting(a).setName(wt("Rewards")).setDesc(wt("Configure rewards for completing tasks. Define items, their occurrence chances, and conditions.")).setHeading(),new Ir.Setting(a).setName(wt("Enable rewards")).setDesc(wt("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 Ir.Setting(a).setName(wt("Reward display type")).setDesc(wt("Choose how rewards are displayed when earned.")).addDropdown(o=>{o.addOption("modal",wt("Modal dialog")).addOption("notice",wt("Notice (Auto-accept)")).setValue(n.plugin.settings.rewards.showRewardType||"modal").onChange(async l=>{n.plugin.settings.rewards.showRewardType=l,n.applySettingsUpdate()})}),new Ir.Setting(a).setName(wt("Occurrence levels")).setDesc(wt("Define different levels of reward rarity and their probability.")).setHeading();let e=a.createDiv({cls:"rewards-levels-container"}),t=(0,Ir.debounce)((o,l,d,u)=>{let p=parseInt(d,10);!isNaN(p)&&p>=0&&p<=100?(n.plugin.settings.rewards.occurrenceLevels[u].chance=p,n.applySettingsUpdate()):(new Ir.Notice(wt("Chance must be between 0 and 100.")),o.setValue(l.chance.toString()))},1e3),r=(0,Ir.debounce)((o,l)=>{n.plugin.settings.rewards.occurrenceLevels[l].name=o.trim(),n.applySettingsUpdate()},1e3);n.plugin.settings.rewards.occurrenceLevels.forEach((o,l)=>{let d=new Ir.Setting(e).setClass("rewards-level-row").addText(u=>u.setPlaceholder(wt("Level Name (e.g., common)")).setValue(o.name).onChange(p=>{r(p,l)})).addText(u=>u.setPlaceholder(wt("Chance (%)")).setValue(o.chance.toString()).onChange(p=>{t(u,o,p,l)})).addButton(u=>u.setIcon("trash").setTooltip(wt("Delete Level")).setClass("mod-warning").onClick(()=>{n.plugin.settings.rewards.occurrenceLevels.splice(l,1),n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)}))}),new Ir.Setting(e).addButton(o=>o.setButtonText(wt("Add occurrence level")).setCta().onClick(()=>{let l={name:wt("New Level"),chance:0};n.plugin.settings.rewards.occurrenceLevels.push(l),n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})),new Ir.Setting(a).setName(wt("Reward items")).setDesc(wt("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(wt("No levels defined")),n.plugin.settings.rewards.rewardItems.forEach((o,l)=>{let d=new Ir.Setting(i).setClass("rewards-item-row").addTextArea(u=>u.setPlaceholder(wt("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=wt("Inventory (-1 for \u221E)"),u.setPlaceholder(wt("Inventory (-1 for \u221E)")).setValue(o.inventory.toString()).onChange(p=>{let m=parseInt(p,10);isNaN(m)?(new Ir.Notice(wt("Invalid inventory number.")),u.setValue(o.inventory.toString())):(n.plugin.settings.rewards.rewardItems[l].inventory=m,n.applySettingsUpdate())})}).addText(u=>u.setPlaceholder(wt("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(wt("Image url (optional)")).setValue(o.imageUrl||"").onChange(p=>{n.plugin.settings.rewards.rewardItems[l].imageUrl=p.trim()||void 0,n.applySettingsUpdate()}),new tv(n.app,u.inputEl,n.plugin)}).addButton(u=>u.setIcon("trash").setTooltip(wt("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:wt("No reward items defined yet."),cls:"setting-item-description"}),new Ir.Setting(i).addButton(o=>o.setButtonText(wt("Add reward item")).setCta().onClick(()=>{var d;let l={id:`reward-${Date.now()}-${Math.random().toString(36).substring(2,7)}`,name:wt("New Reward"),occurrence:((d=n.plugin.settings.rewards.occurrenceLevels[0])==null?void 0:d.name)||"default",inventory:-1};n.plugin.settings.rewards.rewardItems.push(l),n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)}))}var or=require("obsidian");z();var Nt=require("obsidian"),qr=require("@codemirror/state"),fo=require("@codemirror/view");function xw(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 d=((t=a.metadata)==null?void 0:t.tags)||a.tags;Array.isArray(d)&&l.push(d.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}z();var Wc=qr.StateEffect.define(),Ii=qr.StateEffect.define(),LE=qr.StateEffect.define(),xf=qr.StateField.define({create:()=>!1,update(n,a){var e;for(let t of a.effects)t.is(Wc)&&(e=a.state.field(Nt.editorInfoField))!=null&&e.file&&(n=t.value);return n},provide:n=>fo.showPanel.from(n,a=>a?Y9:null)}),OE=qr.StateField.define({create:()=>({...mn}),update(n,a){for(let e of a.effects)e.is(Ii)&&(n=e.value);return n}}),W9=qr.StateField.define({create:n=>!1,update(n,a){return n||(setTimeout(()=>{let e=a.state.field(Nt.editorInfoField),t=a.state.field(Nt.editorEditorField);if(e&&t&&(e!=null&&e.file)){if(e.filterAction)return!0;let r=a.state.facet(HE),i=e==null?void 0:e.addAction("filter",c("Filter Tasks"),s=>{let o=new Nt.Menu;Vc(t)&&jE(t,r)&&o.addItem(d=>{d.setTitle(c("Reset")).onClick(()=>{t==null||t.dispatch({effects:Ii.of(mn)}),Ss(t,r),t.dispatch({effects:Wc.of(!1)})})}),o.addItem(d=>{d.setTitle(t.state.field(xf)?c("Hide filter panel"):c("Show filter panel")).onClick(()=>{t==null||t.dispatch({effects:Wc.of(!t.state.field(xf))})})}),o.addSeparator(),r&&r.settings.taskFilter.presetTaskFilters&&r.settings.taskFilter.presetTaskFilters.forEach(d=>{o.addItem(u=>{u.setTitle(d.name).onClick(()=>{t&&(t.dispatch({effects:Ii.of({...d.options})}),Ss(t,r))})})}),o.showAtMouseEvent(s)});r.register(()=>{i.detach(),e.filterAction=null}),e.filterAction=i}},0),!0)}}),z9=qr.StateField.define({create:()=>[],update(n,a){for(let e of a.effects)if(e.is(LE))return e.value;return a.docChanged&&(n=n.map(e=>({from:a.changes.mapPos(e.from),to:a.changes.mapPos(e.to)}))),n}}),mn={includeCompleted:!0,includeInProgress:!0,includeAbandoned:!0,includeNotStarted:!0,includePlanned:!0,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"},_9=qr.Facet.define({combine:n=>{let a={...mn};for(let e of n)Object.assign(a,e);return a}});function Cf(n){let a={...mn};return Object.keys(mn).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 Cw(n,a){return n[a]}function U9(n){let a;if(n.priority){let t=x2(n.priority);t!==null&&(a=t)}let e;if(n.date){let t=(0,Nt.moment)(n.date,[Nt.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 jE(n,a){let e=Vc(n);return!Object.keys(mn).every(r=>e[r]===mn[r])}function $9(n,a,e,t){let r=Vc(n),i=(0,Nt.debounce)((C,S)=>{Ss(C,S)},2e3);a.createEl("div",{cls:"task-filter-header-container"}).createEl("span",{cls:"task-filter-title",text:c("Filter Tasks")});let o=a.createEl("div",{cls:"task-filter-options"}),l=o.createEl("div",{cls:"task-filter-preset-container"}),d=t.settings.taskFilter.presetTaskFilters||[],u=null;d.length>0&&new Nt.Setting(l).setName(c("Preset filters")).setDesc(c("Select a saved filter preset to apply")).addDropdown(C=>{C.addOption("",c("Select a preset...")),u=C,d.forEach(S=>{C.addOption(S.id,S.name)}),C.onChange(S=>{if(S){let D=d.find(E=>E.id===S);D&&(r={...D.options},n.dispatch({effects:Ii.of({...r})}),T(),Ss(n,t))}else r={...mn},n.dispatch({effects:Ii.of({...r})}),T(),Ss(n,t)})});let p=o.createEl("div",{cls:"task-filter-section"}),m=null;new Nt.Setting(p).setName(c("Query")).setDesc(c("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(Cw(e,"advancedFilterQuery")).onChange(S=>{r.advancedFilterQuery=S,n.dispatch({effects:Ii.of({...r})}),i(n,t)}),C.inputEl.addEventListener("keydown",S=>{S.key==="Enter"?Nt.Keymap.isModEvent(S)?(r.filterMode="EXCLUDE",n.dispatch({effects:Ii.of({...r})}),i(n,t)):(r.filterMode="INCLUDE",n.dispatch({effects:Ii.of({...r})}),i(n,t)):S.key==="Escape"&&n.dispatch({effects:Wc.of(!1)})}),C.inputEl.toggleClass("task-filter-query-input",!0)});let h=o.createEl("div",{cls:"task-filter-section"}),g=null;new Nt.Setting(h).setName(c("Filter Mode")).setDesc(c("Choose whether to include or exclude tasks that match the filters")).addDropdown(C=>{g=C,C.addOption("INCLUDE",c("Show matching tasks")).addOption("EXCLUDE",c("Hide matching tasks")).setValue(Cw(e,"filterMode")).onChange(S=>{r.filterMode=S,n.dispatch({effects:Ii.of({...r})}),Ss(n,t)})});let f=o.createEl("div",{cls:"task-filter-section"});new Nt.Setting(f).setName(c("Checkbox Status")).setHeading();let k=[{id:"Completed",label:c("Completed")},{id:"InProgress",label:c("In Progress")},{id:"Abandoned",label:c("Abandoned")},{id:"NotStarted",label:c("Not Started")},{id:"Planned",label:c("Planned")}],v={};for(let C of k){let S=`include${C.id}`;new Nt.Setting(f).setName(C.label).addToggle(D=>{v[S]=D,D.setValue(Cw(e,S)).onChange(E=>{r[S]=E,n.dispatch({effects:Ii.of({...r})}),Ss(n,t)})})}let y=o.createEl("div",{cls:"task-filter-section"});new Nt.Setting(y).setName(c("Include Related Tasks")).setHeading();let b=[{id:"ParentTasks",label:c("Parent Tasks")},{id:"ChildTasks",label:c("Child Tasks")},{id:"SiblingTasks",label:c("Sibling Tasks")}],w={};for(let C of b){let S=`include${C.id}`;new Nt.Setting(y).setName(C.label).addToggle(D=>{w[S]=D,D.setValue(Cw(e,S)).onChange(E=>{r[S]=E,n.dispatch({effects:Ii.of({...r})}),Ss(n,t)})})}new Nt.Setting(a).addButton(C=>{C.setCta(),C.setButtonText(c("Apply")).onClick(()=>{Ss(n,t)})}).addButton(C=>{C.setCta(),C.setButtonText(c("Save")).onClick(()=>{if(jE(n,t)){let S=Vc(n),D={id:Date.now().toString()+Math.random().toString(36).substr(2,9),name:c("New Preset"),options:{...S}};t.settings.taskFilter.presetTaskFilters.push(D),t.saveSettings(),new Nt.Notice(c("Preset saved"))}else new Nt.Notice(c("No changes to save"))})}).addButton(C=>{C.buttonEl.toggleClass("mod-destructive",!0),C.setButtonText(c("Reset")).onClick(()=>{G9(n),m&&m.inputEl&&(m.inputEl.value=""),r={...mn},n.dispatch({effects:Ii.of({...r})}),T(),u&&u.setValue(""),Ss(n,t)})}).addButton(C=>{C.buttonEl.toggleClass("mod-destructive",!0),C.setButtonText(c("Close")).onClick(()=>{n.dispatch({effects:Wc.of(!1)})})});function T(){let C=Vc(n);m&&m.setValue(C.advancedFilterQuery),g&&g.setValue(C.filterMode);for(let S of k){let D=`include${S.id}`;v[D]&&v[D].setValue(C[D])}for(let S of b){let D=`include${S.id}`;w[D]&&w[D].setValue(C[D])}}return{focusInput:()=>{m&&m.inputEl&&m.inputEl.focus()}}}function Y9(n){let a=createDiv({cls:"task-filter-panel"}),e=n.state.facet(HE),t=Vc(n),{focusInput:r}=$9(n,a,t,e);return{dom:a,top:!0,mount:()=>{r()},update:i=>{},destroy:()=>{}}}function Ss(n,a){var d,u;let e=Vc(n),t=K9(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 h=!0;if(e.advancedFilterQuery.trim()!=="")try{let g=e.advancedFilterQuery;h=xw(g,U9(p))}catch(g){console.error("Error evaluating advanced filter:",g)}h&&(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 h=m.parentTask;for(;h;){if(e.includeCompleted&&h.status==="completed"||e.includeInProgress&&h.status==="inProgress"||e.includeAbandoned&&h.status==="abandoned"||e.includeNotStarted&&h.status==="notStarted"||e.includePlanned&&h.status==="planned"){let g=t.indexOf(h);g!==-1&&r.add(g)}h=h.parentTask}}if(e.includeChildTasks){let h=g=>{for(let f of g.childTasks)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 k=t.indexOf(f);k!==-1&&(r.add(k),h(f))}};h(m)}if(e.includeSiblingTasks&&m.parentTask){for(let h of m.parentTask.childTasks)if(h!==m&&(e.includeCompleted&&h.status==="completed"||e.includeInProgress&&h.status==="inProgress"||e.includeAbandoned&&h.status==="abandoned"||e.includeNotStarted&&h.status==="notStarted"||e.includePlanned&&h.status==="planned")){let g=t.indexOf(h);g!==-1&&r.add(g)}}}}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:LE.of(s)}),(u=(d=n.state.field(Nt.editorInfoField))==null?void 0:d.filterAction)==null||u.toggleClass("task-filter-active",jE(n,a)),C2(n,s)}function C2(n,a=[]){let e=a.map(t=>fo.Decoration.replace({inclusive:!0,block:!0}).range(t.from,t.to));e.length>0?n.dispatch({effects:NE.of(fo.Decoration.none.update({add:e,filter:()=>!1}))}):n.dispatch({effects:NE.of(fo.Decoration.none)})}var NE=qr.StateEffect.define(),q9=qr.StateField.define({create(){return fo.Decoration.none},update(n,a){n=n.map(a.changes);for(let e of a.effects)e.is(NE)&&(n=e.value);return n},provide(n){return fo.EditorView.decorations.from(n)}}),hGe=qr.Facet.define({combine:n=>n[0]}),HE=qr.Facet.define({combine:n=>n[0]});function S2(n){return[xf,OE,z9,W9,q9,_9.of(mn),HE.of(n)]}function Vc(n){if(n.state.field(OE,!1)){let a=n.state.field(OE);return Cf(a)}return{...mn}}function G9(n){var a,e;n.dispatch({effects:[Ii.of({...mn}),LE.of([])]}),(e=(a=n.state.field(Nt.editorInfoField))==null?void 0:a.filterAction)==null||e.toggleClass("task-filter-active",!1),C2(n,[])}function K9(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("|"),d=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,h=/\d{4}-\d{2}-\d{2}(?:\s+\d{1,2}:\d{2})?|\d{2}\.\d{2}\.\d{4}|\d{2}\/\d{2}\/\d{4}/g;for(let g=1;g<=e.lines;g++){let f=e.line(g),k=f.text;u.lastIndex=0;let v;if(v=u.exec(k)){let y=v[1].length,b=v[4],w=v[5],T;i.includes(b)?T="completed":s.includes(b)?T="inProgress":o.includes(b)?T="abandoned":d.includes(b)?T="planned":T="notStarted",p.lastIndex=0;let x=p.exec(w),C=x?x[0]:void 0;m.lastIndex=0;let S=[],D;for(;(D=m.exec(w))!==null;)S.push(D[0]);h.lastIndex=0;let E=h.exec(w),R=E?E[0]:void 0,I={from:f.from,to:f.to,text:w,status:T,indentation:y,childTasks:[],priority:C,date:R,tags:S};for(;r.length>0&&r[r.length-1].indentation>=y;)r.pop();if(r.length>0){let H=r[r.length-1];I.parentTask=H,H.childTasks.push(I)}t.push(I),r.push(I)}}return t}function bl(){return Date.now().toString()+Math.random().toString(36).substr(2,9)}var Sw=class extends or.Modal{constructor(e,t,r){super(e);this.preset=t;this.onSave=r;this.preset&&this.preset.options&&(this.preset.options=Cf(this.preset.options))}onOpen(){let{contentEl:e}=this;e.empty(),this.titleEl.setText(c("Edit Filter: ")+this.preset.name),new or.Setting(e).setName(c("Filter name")).addText(i=>{i.setValue(this.preset.name).onChange(s=>{this.preset.name=s})}),new or.Setting(e).setName(c("Checkbox Status")).setDesc(c("Include or exclude tasks based on their status"));let t=[{id:"includeCompleted",name:c("Include Completed Tasks")},{id:"includeInProgress",name:c("Include In Progress Tasks")},{id:"includeAbandoned",name:c("Include Abandoned Tasks")},{id:"includeNotStarted",name:c("Include Not Started Tasks")},{id:"includePlanned",name:c("Include Planned Tasks")}];for(let i of t)new or.Setting(e).setName(i.name).addToggle(s=>{s.setValue(this.preset.options[i.id]).onChange(o=>{this.preset.options[i.id]=o})});new or.Setting(e).setName(c("Related Tasks")).setDesc(c("Include parent, child, and sibling tasks in the filter"));let r=[{id:"includeParentTasks",name:c("Include Parent Tasks")},{id:"includeChildTasks",name:c("Include Child Tasks")},{id:"includeSiblingTasks",name:c("Include Sibling Tasks")}];for(let i of r)new or.Setting(e).setName(i.name).addToggle(s=>{s.setValue(this.preset.options[i.id]).onChange(o=>{this.preset.options[i.id]=o})});new or.Setting(e).setName(c("Advanced Filter")).setDesc(c("Use boolean operations: AND, OR, NOT. Example: 'text content AND #tag1'")),new or.Setting(e).setName(c("Filter query")).setDesc(c("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 or.Setting(e).setName(c("Filter Mode")).setDesc(c("Choose whether to show or hide tasks that match the filters")).addDropdown(i=>{i.addOption("INCLUDE",c("Show matching tasks")).addOption("EXCLUDE",c("Hide matching tasks")).setValue(this.preset.options.filterMode||"INCLUDE").onChange(s=>{this.preset.options.filterMode=s})}),new or.Setting(e).addButton(i=>{i.setButtonText(c("Save")).setCta().onClick(()=>{this.onSave(),this.close()})}).addButton(i=>{i.setButtonText(c("Cancel")).onClick(()=>{this.close()})})}onClose(){let{contentEl:e}=this;e.empty()}};function BE(n,a){new or.Setting(a).setName(c("Task Filter")).setHeading(),new or.Setting(a).setName(c("Enable Task Filter")).setDesc(c("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 or.Setting(a).setName(c("Preset Filters")).setDesc(c("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:c("No preset filters created yet. Click 'Add New Preset' to create one.")}),r.forEach((s,o)=>{let l=e.createDiv({cls:"preset-filter-row"}),d=new or.Setting(l).setName(`${c("Preset")} #${o+1}`).addText(u=>{u.setValue(s.name).setPlaceholder(c("Preset name")).onChange(p=>{s.name=p,n.applySettingsUpdate()})});d.addExtraButton(u=>{u.setIcon("pencil").setTooltip(c("Edit Filter")).onClick(()=>{new Sw(n.app,s,()=>{n.applySettingsUpdate(),t()}).open()})}),d.addExtraButton(u=>{u.setIcon("trash").setTooltip(c("Remove")).onClick(()=>{r.splice(o,1),n.applySettingsUpdate(),t()})})});let i=e.createDiv();new or.Setting(i).addButton(s=>{s.setButtonText(c("Add New Preset")).setCta().onClick(()=>{let o={id:bl(),name:c("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 Sw(n.app,o,()=>{n.applySettingsUpdate(),t()}).open(),t()})}).addButton(s=>{s.setButtonText(c("Reset to Default Presets")).onClick(()=>{let o=new or.Modal(n.app);o.titleEl.setText(c("Reset to Default Presets")),o.contentEl.createDiv().setText(c("This will replace all your current presets with the default set. Are you sure?"));let d=o.contentEl.createDiv({cls:"tg-modal-button-container modal-button-container"}),u=d.createEl("button");u.setText(c("Cancel")),u.addEventListener("click",()=>{o.close()});let p=d.createEl("button");p.setText(c("Reset")),p.addClass("mod-warning"),p.addEventListener("click",()=>{Q9(n),t(),o.close()}),o.open()})})};t()}function Q9(n){n.plugin.settings.taskFilter.presetTaskFilters=[];let a=[{id:bl(),name:c("Incomplete tasks"),options:{includeCompleted:!1,includeInProgress:!0,includeAbandoned:!1,includeNotStarted:!0,includePlanned:!0,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"}},{id:bl(),name:c("In progress tasks"),options:{includeCompleted:!1,includeInProgress:!0,includeAbandoned:!1,includeNotStarted:!1,includePlanned:!1,includeParentTasks:!0,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"}},{id:bl(),name:c("Completed tasks"),options:{includeCompleted:!0,includeInProgress:!1,includeAbandoned:!1,includeNotStarted:!1,includePlanned:!1,includeParentTasks:!1,includeChildTasks:!0,includeSiblingTasks:!1,advancedFilterQuery:"",filterMode:"INCLUDE"}},{id:bl(),name:c("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 Ze=require("obsidian");z();function VE(n,a){if(new Ze.Setting(a).setName(c("Task Gutter")).setDesc(c("Configure the task gutter.")).setHeading(),new Ze.Setting(a).setName(c("Enable task gutter")).setDesc(c("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 Ze.Setting(a).setName(c("Completed Task Mover")).setHeading(),new Ze.Setting(a).setName(c("Enable completed task mover")).setDesc(c("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 Ze.Setting(a).setName(c("Task marker type")).setDesc(c("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 Ze.Setting(a).setName(c("Version marker text")).setDesc(c("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 Ze.Setting(a).setName(c("Date marker text")).setDesc(c("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 Ze.Setting(a).setName(c("Custom marker text")).setDesc(c("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 Ze.Setting(a).setName(c("Treat abandoned tasks as completed")).setDesc(c("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 Ze.Setting(a).setName(c("Complete all moved tasks")).setDesc(c("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 Ze.Setting(a).setName(c("With current file link")).setDesc(c("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 Ze.Setting(a).setName(c("Enable auto-move for completed tasks")).setDesc(c("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 Ze.Setting(a).setName(c("Default target file")).setDesc(c("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 Ze.Setting(a).setName(c("Default insertion mode")).setDesc(c("Where to insert completed tasks in the target file")).addDropdown(t=>{t.addOption("beginning",c("Beginning of file")).addOption("end",c("End of file")).addOption("after-heading",c("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 Ze.Setting(a).setName(c("Default heading name")).setDesc(c("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 Ze.Setting(a).setName(c("Incomplete Task Mover")).setHeading(),new Ze.Setting(a).setName(c("Enable incomplete task mover")).setDesc(c("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 Ze.Setting(a).setName(c("Incomplete task marker type")).setDesc(c("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 Ze.Setting(a).setName(c("Incomplete version marker text")).setDesc(c("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 Ze.Setting(a).setName(c("Incomplete date marker text")).setDesc(c("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 Ze.Setting(a).setName(c("Incomplete custom marker text")).setDesc(c("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 Ze.Setting(a).setName(c("With current file link for incomplete tasks")).setDesc(c("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 Ze.Setting(a).setName(c("Enable auto-move for incomplete tasks")).setDesc(c("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 Ze.Setting(a).setName(c("Default target file for incomplete tasks")).setDesc(c("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 Ze.Setting(a).setName(c("Default insertion mode for incomplete tasks")).setDesc(c("Where to insert incomplete tasks in the target file")).addDropdown(t=>{t.addOption("beginning",c("Beginning of file")).addOption("end",c("End of file")).addOption("after-heading",c("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 Ze.Setting(a).setName(c("Default heading name for incomplete tasks")).setDesc(c("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 Ze.Setting(a).setName(c("Task Sorting")).setDesc(c("Configure how tasks are sorted in the document.")).setHeading(),new Ze.Setting(a).setName(c("Enable Task Sorting")).setDesc(c("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 Ze.Setting(a).setName(c("Sort Criteria")).setDesc(c("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:c("No sort criteria defined. Add criteria below."),cls:"setting-item-description"}),r.forEach((i,s)=>{let o=new Ze.Setting(e).setClass("sort-criterion-row").addDropdown(l=>{l.addOption("status",c("Status")).addOption("priority",c("Priority")).addOption("dueDate",c("Due Date")).addOption("startDate",c("Start Date")).addOption("scheduledDate",c("Scheduled Date")).addOption("content",c("Content")).addOption("lineNumber",c("Line Number")).setValue(i.field).onChange(d=>{n.plugin.settings.sortCriteria[s].field=d,n.applySettingsUpdate()})}).addDropdown(l=>{l.addOption("asc",c("Ascending")).addOption("desc",c("Descending")).setValue(i.order).onChange(d=>{n.plugin.settings.sortCriteria[s].order=d,n.applySettingsUpdate()}),i.field==="priority"?l.selectEl.title=c("Ascending: High -> Low -> None. Descending: None -> Low -> High"):["dueDate","startDate","scheduledDate"].includes(i.field)?l.selectEl.title=c("Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier"):i.field==="status"?l.selectEl.title=c("Ascending respects status order (Overdue first). Descending reverses it."):l.selectEl.title=c("Ascending: A-Z. Descending: Z-A")});o.addExtraButton(l=>{l.setIcon("arrow-up").setTooltip(c("Move Up")).setDisabled(s===0).onClick(()=>{if(s>0){let d=n.plugin.settings.sortCriteria.splice(s,1)[0];n.plugin.settings.sortCriteria.splice(s-1,0,d),n.applySettingsUpdate(),t()}})}),o.addExtraButton(l=>{l.setIcon("arrow-down").setTooltip(c("Move Down")).setDisabled(s===r.length-1).onClick(()=>{if(s<r.length-1){let d=n.plugin.settings.sortCriteria.splice(s,1)[0];n.plugin.settings.sortCriteria.splice(s+1,0,d),n.applySettingsUpdate(),t()}})}),o.addExtraButton(l=>{l.setIcon("trash").setTooltip(c("Remove Criterion")).onClick(()=>{n.plugin.settings.sortCriteria.splice(s,1),n.applySettingsUpdate(),t()}),l.extraSettingsEl.addClass("mod-warning")})}),new Ze.Setting(e).addButton(i=>{i.setButtonText(c("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(c("Reset to Defaults")).onClick(()=>{n.plugin.settings.sortCriteria=[...xe.sortCriteria],n.applySettingsUpdate(),t()})})};t()}new Ze.Setting(a).setName(c("On Completion")).setHeading(),new Ze.Setting(a).setName(c("Enable OnCompletion")).setDesc(c("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 Ze.Setting(a).setName(c("Default Archive File")).setDesc(c("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 Ze.Setting(a).setName(c("Default Archive Section")).setDesc(c("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 Ze.Setting(a).setName(c("Show Advanced Options")).setDesc(c("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 Ye=require("obsidian");z();var Ew={};_a(Ew,{allStatusCollections:()=>Dw,anuppuccinSupportedStatuses:()=>X9,auraSupportedStatuses:()=>J9,borderSupportedStatuses:()=>Z9,ebullientworksSupportedStatuses:()=>e7,itsSupportedStatuses:()=>t7,lytModeSupportedStatuses:()=>a7,minimalSupportedStatuses:()=>r7,thingsSupportedStatuses:()=>i7});function X9(){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 J9(){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 Z9(){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 e7(){return[[" ","Unchecked","notStarted"],["x","Checked","completed"],["-","Cancelled","abandoned"],["/","In Progress","inProgress"],[">","Deferred","planned"],["!","Important","notStarted"],["?","Question","planned"],["r","Review","notStarted"]]}function t7(){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 a7(){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 r7(){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 i7(){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 Dw=["AnuPpuccin","Aura","Border","Ebullientworks","ITS","LYTMode","Minimal","Things"];var Hu=require("obsidian");z();var hn=class extends Hu.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 Hu.ButtonComponent(a).setButtonText(c("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 Hu.ButtonComponent(a).setButtonText(c("Save")).setCta().onClick(()=>{let e=this.currentValues.map(t=>t.trim()).filter(t=>t.length>0);this.params.onSave(e),this.close()}),new Hu.ButtonComponent(a).setButtonText(c("Cancel")).onClick(()=>{this.close()})}renderList(){if(this.listContainer.empty(),this.currentValues.length===0){this.listContainer.createDiv({cls:"list-config-empty"}).createEl("p",{text:c("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||c("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":c("Delete item"),title:c("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()}};function WE(n,a){if(new Ye.Setting(a).setName(c("Checkbox Status Settings")).setDesc(c("Configure checkbox status settings")).setHeading(),Uo(n.plugin)){let r=a.createDiv({cls:"tasks-compatibility-warning"});r.createEl("div",{cls:"tasks-warning-icon",text:"\u26A0\uFE0F"});let i=r.createDiv({cls:"tasks-warning-content"});i.createEl("div",{cls:"tasks-warning-title",text:c("Tasks Plugin Detected")});let s=i.createEl("div",{cls:"tasks-warning-text"});s.createEl("span",{text:c("Current status management and date management may conflict with the Tasks plugin. Please check the ")});let o=s.createEl("a",{text:c("compatibility documentation"),href:"https://taskgenius.md/docs/compatibility"});o.setAttribute("target","_blank"),o.setAttribute("rel","noopener noreferrer"),s.createEl("span",{text:c(" for more information.")})}new Ye.Setting(a).setName(c("Auto complete parent checkbox")).setDesc(c("Toggle this to allow this plugin to auto complete parent checkbox when all child tasks are completed.")).addToggle(r=>r.setValue(n.plugin.settings.autoCompleteParent).onChange(async i=>{n.plugin.settings.autoCompleteParent=i,n.applySettingsUpdate()})),new Ye.Setting(a).setName(c("Mark parent as 'In Progress' when partially complete")).setDesc(c("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(r=>r.setValue(n.plugin.settings.markParentInProgressWhenPartiallyComplete).onChange(async i=>{n.plugin.settings.markParentInProgressWhenPartiallyComplete=i,n.applySettingsUpdate()})),new Ye.Setting(a).setName(c("Checkbox Status Settings")).setDesc(c("Select a predefined checkbox status collection or customize your own")).setHeading().addDropdown(r=>{r.addOption("custom","Custom");for(let i of Dw)r.addOption(i,i);r.setValue("custom"),r.onChange(async i=>{if(i==="custom")return;let s=new Ye.Modal(n.app);s.titleEl.setText(`Apply ${i} Theme?`),s.contentEl.createDiv().setText(`This will override your current checkbox status settings with the ${i} theme. Do you want to continue?`);let l=s.contentEl.createDiv({cls:"tg-modal-button-container modal-button-container"}),d=l.createEl("button");d.setText(c("Cancel")),d.addEventListener("click",()=>{r.setValue("custom"),s.close()});let u=l.createEl("button");u.setText(c("Apply Theme")),u.addClass("mod-cta"),u.addEventListener("click",async()=>{s.close();try{let p=i.toLowerCase()+"SupportedStatuses",m=Ew[p];if(typeof m=="function"){let h=m(),g=n.plugin.settings.taskStatusCycle,f=n.plugin.settings.taskStatusMarks,k=n.plugin.settings.excludeMarksFromCycle;g.length=0,Object.keys(f).forEach(y=>delete f[y]),k.length=0;for(let[y,b,w]of h){let T=b.split("/")[0].trim();g.includes(T)||g.push(T),f[T]=y,y!==" "&&y!=="x"&&k.push(T)}let v={completed:[],inProgress:[],abandoned:[],notStarted:[],planned:[]};for(let[y,b,w]of h)w in v&&v[w].push(y);for(let y of Object.keys(v))y in n.plugin.settings.taskStatuses&&v[y]&&v[y].length>0&&(n.plugin.settings.taskStatuses[y]=v[y].join("|"));n.applySettingsUpdate(),n.display()}}catch(p){console.error("Failed to apply checkbox status theme:",p)}}),s.open()})});let t=(r,i)=>{let s=createFragment();s.createEl("span",{cls:"tg-status-icon"},o=>{(0,Ye.setIcon)(o,i.icon)}),s.createEl("span",{cls:"tg-status-text"},o=>{o.setText(c(i.title))}),new Ye.Setting(a).setName(s).setDesc(c(i.description)).addButton(o=>{let l=()=>{let p=n.plugin.settings.taskStatuses[r].split("|");return i.preserveEmpty?p:p.filter(m=>m.length>0)},d=()=>{let u=l();u.length===0?o.setButtonText(c("Configure Symbols")):o.setButtonText(c("{{count}} symbol(s) configured",{interpolation:{count:u.length.toString()}}))};d(),o.onClick(()=>{new hn(n.plugin,{title:c("{{status}} Task Symbols",{interpolation:{status:c(i.title)}}),description:c(i.description),placeholder:i.placeholder,values:l(),onSave:async u=>{n.plugin.settings.taskStatuses[r]=u.join("|")||xe.taskStatuses[r],await n.applySettingsUpdate(),d(),n.plugin.taskGeniusIconManager&&n.plugin.taskGeniusIconManager.update()}}).open()})})};t("completed",{title:"Completed",description:"Configure symbols that represent completed tasks in square brackets",placeholder:"x",icon:"completed"}),t("planned",{title:"Planned",description:"Configure symbols that represent planned tasks in square brackets",placeholder:"?",icon:"planned"}),t("inProgress",{title:"In Progress",description:"Configure symbols that represent tasks in progress in square brackets",placeholder:"/",icon:"inProgress"}),t("abandoned",{title:"Abandoned",description:"Configure symbols that represent abandoned tasks in square brackets",placeholder:"-",icon:"abandoned"}),t("notStarted",{title:"Not Started",description:'Configure symbols that represent not started tasks in square brackets. Default is space " "',placeholder:" ",icon:"notStarted",preserveEmpty:!0}),new Ye.Setting(a).setName(c("Count other statuses as")).setDesc(c('Select the status to count other statuses as. Default is "Not Started".')).addDropdown(r=>{r.addOption("notStarted","Not Started"),r.addOption("abandoned","Abandoned"),r.addOption("planned","Planned"),r.addOption("completed","Completed"),r.addOption("inProgress","In Progress"),r.setValue(n.plugin.settings.countOtherStatusesAs||"notStarted"),r.onChange(i=>{n.plugin.settings.countOtherStatusesAs=i,n.applySettingsUpdate()})}),new Ye.Setting(a).setName(c("Task Counting Settings")).setDesc(c("Configure which task markers to count or exclude")).setHeading(),new Ye.Setting(a).setName(c("Exclude specific task markers")).setDesc(c('Specify task markers to exclude from counting. Example: "?|/"')).addText(r=>r.setPlaceholder("").setValue(n.plugin.settings.excludeTaskMarks).onChange(async i=>{n.plugin.settings.excludeTaskMarks=i,n.applySettingsUpdate()})),new Ye.Setting(a).setName(c("Only count specific task markers")).setDesc(c("Toggle this to only count specific task markers")).addToggle(r=>r.setValue(n.plugin.settings.useOnlyCountMarks).onChange(async i=>{n.plugin.settings.useOnlyCountMarks=i,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})),n.plugin.settings.useOnlyCountMarks&&new Ye.Setting(a).setName(c("Specific task markers to count")).setDesc(c('Specify which task markers to count. Example: "x|X|>|/"')).addText(r=>r.setPlaceholder(xe.onlyCountTaskMarks).setValue(n.plugin.settings.onlyCountTaskMarks).onChange(async i=>{i.length===0?n.plugin.settings.onlyCountTaskMarks=xe.onlyCountTaskMarks:n.plugin.settings.onlyCountTaskMarks=i,n.applySettingsUpdate()})),new Ye.Setting(a).setName(c("Checkbox Switcher")).setHeading(),new Ye.Setting(a).setName(c("Enable checkbox status switcher")).setDesc(c("Enable/disable the ability to cycle through task states by clicking.")).addToggle(r=>{r.setValue(n.plugin.settings.enableTaskStatusSwitcher).onChange(async i=>{n.plugin.settings.enableTaskStatusSwitcher=i,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})}),n.plugin.settings.enableTaskStatusSwitcher&&new Ye.Setting(a).setName(c("Show indicator with checkbox")).setDesc(c("Show the status indicator directly next to the checkbox. When enabled, a indicator will be shown next to the checkbox.")).addToggle(r=>r.setValue(n.plugin.settings.enableIndicatorWithCheckbox).onChange(async i=>{n.plugin.settings.enableIndicatorWithCheckbox=i,n.applySettingsUpdate()})),n.plugin.settings.enableTaskStatusSwitcher&&(new Ye.Setting(a).setName(c("Task mark display style")).setDesc(c("Choose how task marks are displayed: default checkboxes, custom text marks, or Task Genius icons.")).addDropdown(r=>{r.addOption("default",c("Default checkboxes")),r.addOption("textmarks",c("Custom text marks")),r.addOption("icons",c("Task Genius icons"));let i="default";n.plugin.settings.enableTaskGeniusIcons?i="icons":n.plugin.settings.enableCustomTaskMarks&&(i="textmarks"),r.setValue(i),r.onChange(async s=>{n.plugin.settings.enableCustomTaskMarks=!1,n.plugin.settings.enableTaskGeniusIcons=!1,s==="textmarks"?n.plugin.settings.enableCustomTaskMarks=!0:s==="icons"&&(n.plugin.settings.enableTaskGeniusIcons=!0),n.applySettingsUpdate(),n.plugin.taskGeniusIconManager&&n.plugin.taskGeniusIconManager.update(),setTimeout(()=>{n.display()},200)})}),n.plugin.settings.enableCustomTaskMarks&&new Ye.Setting(a).setName(c("Enable text mark in source mode")).setDesc(c("Make the text mark in source mode follow the checkbox status cycle when clicked.")).addToggle(r=>{r.setValue(n.plugin.settings.enableTextMarkInSourceMode).onChange(async i=>{n.plugin.settings.enableTextMarkInSourceMode=i,n.applySettingsUpdate()})})),new Ye.Setting(a).setName(c("Enable cycle complete status")).setDesc(c("Enable/disable the ability to automatically cycle through task states when pressing a mark.")).addToggle(r=>{r.setValue(n.plugin.settings.enableCycleCompleteStatus).onChange(async i=>{n.plugin.settings.enableCycleCompleteStatus=i,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})}),n.plugin.settings.enableCycleCompleteStatus&&((!n.plugin.settings.statusCycles||n.plugin.settings.statusCycles.length===0)&&(n.plugin.settings.statusCycles=[{id:`cycle-${Date.now()}`,name:c("Default Cycle"),description:c("Migrated from legacy settings"),priority:0,cycle:[...n.plugin.settings.taskStatusCycle],marks:{...n.plugin.settings.taskStatusMarks},enabled:!0}],n.applySettingsUpdate()),new Ye.Setting(a).setName(c("Status Cycles Management")).setDesc(c("Configure multiple status cycles with different workflows. You can apply preset themes or create custom cycles.")).addDropdown(r=>{r.addOption("custom","Custom");for(let i of Dw)r.addOption(i,i);r.setValue("custom"),r.onChange(async i=>{if(i==="custom")return;let s=new Ye.Modal(n.app);s.titleEl.setText(`Add ${i} Theme as New Cycle?`),s.contentEl.createDiv().setText(c(`This will add a new status cycle based on the ${i} theme.`));let l=s.contentEl.createDiv({cls:"tg-modal-button-container modal-button-container"}),d=l.createEl("button");d.setText(c("Cancel")),d.addEventListener("click",()=>{r.setValue("custom"),s.close()});let u=l.createEl("button");u.setText(c("Add Cycle")),u.addClass("mod-cta"),u.addEventListener("click",async()=>{s.close();try{let p=i.toLowerCase()+"SupportedStatuses",m=Ew[p];if(typeof m=="function"){let h=m(),g=[],f={};for(let[y,b,w]of h){let T=b.split("/")[0].trim();g.includes(T)||g.push(T),f[T]=y}let k={id:`cycle-${Date.now()}`,name:i,description:c(`${i} theme workflow`),priority:n.plugin.settings.statusCycles.length,cycle:g,marks:f,enabled:!0};n.plugin.settings.statusCycles.push(k);let v={completed:[],inProgress:[],abandoned:[],notStarted:[],planned:[]};for(let[y,b,w]of h)w in v&&v[w].push(y);for(let y of Object.keys(v))y in n.plugin.settings.taskStatuses&&v[y]&&v[y].length>0&&(n.plugin.settings.taskStatuses[y]=v[y].join("|"));n.applySettingsUpdate(),n.display()}}catch(p){console.error("Failed to apply checkbox status theme:",p)}}),s.open()})}),n7(n,a)),new Ye.Setting(a).setName(c("Auto Date Manager")).setDesc(c("Automatically manage dates based on checkbox status changes")).setHeading(),new Ye.Setting(a).setName(c("Enable auto date manager")).setDesc(c("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(r=>r.setValue(n.plugin.settings.autoDateManager.enabled).onChange(async i=>{n.plugin.settings.autoDateManager.enabled=i,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})),n.plugin.settings.autoDateManager.enabled&&(new Ye.Setting(a).setName(c("Manage completion dates")).setDesc(c("Automatically add completion dates when tasks are marked as completed, and remove them when changed to other statuses.")).addToggle(r=>r.setValue(n.plugin.settings.autoDateManager.manageCompletedDate).onChange(async i=>{n.plugin.settings.autoDateManager.manageCompletedDate=i,n.applySettingsUpdate()})),new Ye.Setting(a).setName(c("Manage start dates")).setDesc(c("Automatically add start dates when tasks are marked as in progress, and remove them when changed to other statuses.")).addToggle(r=>r.setValue(n.plugin.settings.autoDateManager.manageStartDate).onChange(async i=>{n.plugin.settings.autoDateManager.manageStartDate=i,n.applySettingsUpdate()})),new Ye.Setting(a).setName(c("Manage cancelled dates")).setDesc(c("Automatically add cancelled dates when tasks are marked as abandoned, and remove them when changed to other statuses.")).addToggle(r=>r.setValue(n.plugin.settings.autoDateManager.manageCancelledDate).onChange(async i=>{n.plugin.settings.autoDateManager.manageCancelledDate=i,n.applySettingsUpdate()})))}function n7(n,a){new Ye.Setting(a).setName(c("Quick Templates")).setDesc(c("Quickly add common workflow patterns")).addButton(r=>{r.setButtonText(c("Add Simple Cycle")).setTooltip(c("TODO \u2194 DONE")).onClick(()=>{n.plugin.settings.statusCycles.push({id:`cycle-${Date.now()}`,name:c("Simple"),description:c("Quick TODO/DONE cycle"),priority:n.plugin.settings.statusCycles.length,cycle:["TODO","DONE"],marks:{TODO:" ",DONE:"x"},enabled:!0}),n.applySettingsUpdate(),setTimeout(()=>n.display(),200)})}).addButton(r=>{r.setButtonText(c("Add Detailed Cycle")).setTooltip(c("TODO \u2192 PLAN \u2192 IN PROGRESS \u2192 DONE")).onClick(()=>{n.plugin.settings.statusCycles.push({id:`cycle-${Date.now()}`,name:c("Detailed"),description:c("Full project workflow"),priority:n.plugin.settings.statusCycles.length,cycle:["TODO","PLAN","IN PROGRESS","DONE"],marks:{TODO:" ",PLAN:"?","IN PROGRESS":"/",DONE:"x"},enabled:!0}),n.applySettingsUpdate(),setTimeout(()=>n.display(),200)})}).addButton(r=>{r.setButtonText(c("Add Number Cycle")).setTooltip(c("1 \u2192 2 \u2192 3 \u2192 4 \u2192 5")).onClick(()=>{n.plugin.settings.statusCycles.push({id:`cycle-${Date.now()}`,name:c("Progress Tracker"),description:c("Numeric progress tracking"),priority:n.plugin.settings.statusCycles.length,cycle:["1","2","3","4","5"],marks:{1:"1",2:"2",3:"3",4:"4",5:"5"},enabled:!0}),n.applySettingsUpdate(),setTimeout(()=>n.display(),200)})});let e=a.createDiv({cls:"status-cycles-container"}),t=[...n.plugin.settings.statusCycles].sort((r,i)=>r.priority-i.priority);t.forEach((r,i)=>{let s=e.createDiv({cls:"status-cycle-card"});s.setAttribute("data-cycle-id",r.id);let o=s.createDiv({cls:"status-cycle-header"}),l=o.createDiv({cls:"status-cycle-collapse-button"});(0,Ye.setIcon)(l,"chevron-down"),l.setAttribute("title",c("Collapse/Expand")),l.addEventListener("click",()=>{s.classList.toggle("collapsed"),l.empty(),(0,Ye.setIcon)(l,s.classList.contains("collapsed")?"chevron-right":"chevron-down")});let d=o.createDiv({cls:"status-cycle-updown-buttons"}),u=d.createDiv({cls:"status-cycle-button"});(0,Ye.setIcon)(u,"chevron-up"),u.setAttribute("title",c("Move up")),i===0?u.classList.add("disabled"):u.addEventListener("click",()=>{let v=n.plugin.settings.statusCycles,y=v.findIndex(b=>b.id===r.id);if(y>0){let b=v[y-1].priority;v[y-1].priority=v[y].priority,v[y].priority=b,n.applySettingsUpdate(),setTimeout(()=>n.display(),200)}});let p=d.createDiv({cls:"status-cycle-button"});(0,Ye.setIcon)(p,"chevron-down"),p.setAttribute("title",c("Move down")),i===t.length-1?p.classList.add("disabled"):p.addEventListener("click",()=>{let v=n.plugin.settings.statusCycles,y=v.findIndex(b=>b.id===r.id);if(y<v.length-1){let b=v[y+1].priority;v[y+1].priority=v[y].priority,v[y].priority=b,n.applySettingsUpdate(),setTimeout(()=>n.display(),200)}});let m=o.createDiv({cls:"status-cycle-title"});m.setAttribute("contenteditable","true"),m.textContent=r.name,m.addEventListener("blur",()=>{var y;let v=((y=m.textContent)==null?void 0:y.trim())||"Unnamed Cycle";v!==r.name&&(r.name=v,n.applySettingsUpdate())}),m.addEventListener("keydown",v=>{v.key==="Enter"&&(v.preventDefault(),m.blur())});let h=o.createDiv({cls:"status-cycle-controls"}),g=new Ye.Setting(h).addToggle(v=>{v.setValue(r.enabled).setTooltip(c("Enable/disable this cycle")).onChange(async y=>{r.enabled=y,n.applySettingsUpdate(),setTimeout(()=>n.display(),200)})}).addExtraButton(v=>{v.setIcon("copy").setTooltip(c("Copy this cycle")).onClick(()=>{let y={id:`cycle-${Date.now()}`,name:`${r.name} (Copy)`,description:r.description,priority:n.plugin.settings.statusCycles.length,cycle:[...r.cycle],marks:{...r.marks},enabled:r.enabled,color:r.color,icon:r.icon};n.plugin.settings.statusCycles.push(y),n.applySettingsUpdate(),setTimeout(()=>n.display(),200)})}).addExtraButton(v=>{v.setIcon("trash").setTooltip(c("Delete this cycle")).onClick(()=>{let y=n.plugin.settings.statusCycles.findIndex(b=>b.id===r.id);y!==-1&&(n.plugin.settings.statusCycles.splice(y,1),n.applySettingsUpdate(),setTimeout(()=>n.display(),200))})}),f=s.createDiv({cls:"status-cycle-body"});new Ye.Setting(f).setName(c("Status sequence")).setDesc(c("Define the statuses in cycling order")).setHeading();let k=f.createDiv({cls:"status-list-container"});r.cycle.forEach((v,y)=>{let b=k.createDiv({cls:"status-row"});b.setAttribute("data-status-name",v);let w=b.createDiv({cls:"status-drag-handle"});(0,Ye.setIcon)(w,"grip-vertical"),w.setAttribute("title",c("Drag to reorder")),new Ye.Setting(b).setName(`#${y+1}`).addText(x=>{x.setValue(v).setPlaceholder(c("Status name")).onChange(C=>{let S=r.cycle[y];r.cycle[y]=C,r.marks[S]&&(r.marks[C]=r.marks[S],delete r.marks[S]),n.applySettingsUpdate()}),x.inputEl.style.width="150px"}).addText(x=>{x.setValue(r.marks[v]||" ").setPlaceholder(c("Mark")).onChange(C=>{r.marks[v]=C.charAt(0)||" ",n.applySettingsUpdate()}),x.inputEl.style.width="50px",x.inputEl.maxLength=1}).addExtraButton(x=>{x.setIcon("trash").setTooltip(c("Remove this status")).onClick(()=>{r.cycle.splice(y,1),delete r.marks[v],n.applySettingsUpdate(),setTimeout(()=>n.display(),200)})})}),new Pr(k,{animation:150,handle:".status-drag-handle",draggable:".status-row",ghostClass:"status-row-ghost",chosenClass:"status-row-chosen",dragClass:"status-row-drag",filter:".setting-item",onEnd:v=>{if(v.oldIndex!==void 0&&v.newIndex!==void 0){let y=r.cycle.splice(v.oldIndex,1)[0];r.cycle.splice(v.newIndex,0,y),n.applySettingsUpdate(),setTimeout(()=>n.display(),200)}}}),new Ye.Setting(k).addButton(v=>{v.setButtonText(c("+ Add Status")).onClick(()=>{let y=`STATUS_${r.cycle.length+1}`;r.cycle.push(y),r.marks[y]=" ",n.applySettingsUpdate(),setTimeout(()=>n.display(),200)})})}),new Ye.Setting(e).addButton(r=>{r.setButtonText(c("+ Add Custom Cycle")).setCta().onClick(()=>{n.plugin.settings.statusCycles.push({id:`cycle-${Date.now()}`,name:c("Custom Cycle"),description:"",priority:n.plugin.settings.statusCycles.length,cycle:["TODO","DONE"],marks:{TODO:" ",DONE:"x"},enabled:!0}),n.applySettingsUpdate(),setTimeout(()=>n.display(),200)})})}var Dt=require("obsidian");z();var Ie=require("obsidian");z();var Na=require("obsidian");z();var ta=require("obsidian");z();var zc=class n extends ta.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:c("Save Filter Configuration")});let e="",t="";new ta.Setting(a).setName(c("Filter Configuration Name")).setDesc(c("Enter a name for this filter configuration")).addText(r=>{r.setPlaceholder(c("Filter Configuration Name")).setValue(e).onChange(i=>{e=i})}),new ta.Setting(a).setName(c("Filter Configuration Description")).setDesc(c("Enter a description for this filter configuration (optional)")).addTextArea(r=>{r.setPlaceholder(c("Filter Configuration Description")).setValue(t).onChange(i=>{t=i}),r.inputEl.rows=3}),new ta.Setting(a).addButton(r=>{r.setButtonText(c("Save")).setCta().onClick(()=>{this.saveConfiguration(e,t)})}).addButton(r=>{r.setButtonText(c("Cancel")).onClick(()=>{this.close()})})}renderLoadMode(){let{contentEl:a}=this;a.createEl("h2",{text:c("Load Filter Configuration")});let e=this.plugin.settings.filterConfig.savedConfigs;if(e.length===0){a.createEl("p",{text:c("No saved filter configurations")}),new ta.Setting(a).addButton(s=>{s.setButtonText(c("Close")).onClick(()=>{this.close()})});return}let t="";new ta.Setting(a).setName(c("Select a saved filter configuration")).addDropdown(s=>{s.addOption("",c("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 ta.Setting(i).addButton(s=>{s.setButtonText(c("Load")).setCta().onClick(()=>{this.loadConfiguration(t)})}).addButton(s=>{s.setButtonText(c("Delete")).setWarning().onClick(()=>{this.deleteConfiguration(t)})}).addButton(s=>{s.setButtonText(c("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:`${c("Created")}: ${new Date(t.createdAt).toLocaleString()}`,cls:"filter-config-meta"}),e.createEl("p",{text:`${c("Updated")}: ${new Date(t.updatedAt).toLocaleString()}`,cls:"filter-config-meta"});let r=e.createDiv({cls:"filter-config-summary"});r.createEl("h4",{text:c("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} ${c("filter group")}${i!==1?"s":""}, ${s} ${c("filter")}${s!==1?"s":""}`}),r.createEl("p",{text:`${c("Root condition")}: ${t.filterState.rootCondition}`})}async saveConfiguration(a,e){if(!a.trim()){new ta.Notice(c("Filter configuration name is required"));return}if(!this.currentFilterState){new ta.Notice(c("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 ta.Notice(c("Filter configuration saved successfully")),this.onSave&&this.onSave(r),this.close()}catch(i){console.error("Failed to save filter configuration:",i),new ta.Notice(c("Failed to save filter configuration"))}}async loadConfiguration(a){if(!a){new ta.Notice(c("Select a saved filter configuration"));return}let e=this.plugin.settings.filterConfig.savedConfigs.find(t=>t.id===a);if(!e){new ta.Notice(c("Failed to load filter configuration"));return}try{this.onLoad&&this.onLoad(e),new ta.Notice(c("Filter configuration loaded successfully")),this.close()}catch(t){console.error("Failed to load filter configuration:",t),new ta.Notice(c("Failed to load filter configuration"))}}async deleteConfiguration(a){if(!a){new ta.Notice(c("Select a saved filter configuration"));return}let e=this.plugin.settings.filterConfig.savedConfigs.find(r=>r.id===a);if(!e){new ta.Notice(c("Failed to delete filter configuration"));return}if(await new Promise(r=>{let i=new ta.Modal(this.app);i.contentEl.createEl("h2",{text:c("Delete Filter Configuration")}),i.contentEl.createEl("p",{text:c("Are you sure you want to delete this filter configuration?")}),i.contentEl.createEl("p",{text:`"${e.name}"`,cls:"filter-config-name-highlight"}),new ta.Setting(i.contentEl).addButton(s=>{s.setButtonText(c("Delete")).setWarning().onClick(()=>{r(!0),i.close()})}).addButton(s=>{s.setButtonText(c("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 ta.Notice(c("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 ta.Notice(c("Failed to delete filter configuration"))}}onClose(){let{contentEl:a}=this;a.empty()}};var zn=class extends Na.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:c("Match"),attr:{for:"task-filter-root-condition"},cls:["compact-text","root-condition-label"]}),new Na.DropdownComponent(r).addOptions({any:c("Any"),all:c("All"),none:c("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:c("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,Na.setIcon)(l,"plus")}),o.createEl("span",{cls:"add-filter-group-btn-text",text:c("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"},d=>{(0,Na.setIcon)(d,"save"),(0,Na.setTooltip)(l,c("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"},d=>{(0,Na.setIcon)(d,"folder-open"),(0,Na.setTooltip)(l,c("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"},h=>{(0,Na.setIcon)(h,"grip-vertical")})}),i.createEl("label",{cls:["compact-text"],text:c("Match")}),new Na.DropdownComponent(i).addOptions({all:c("All"),any:c("Any"),none:c("None")}).onChange(m=>{let h=m;e.groupCondition=h,this.saveStateToLocalStorage(),this.updateFilterConjunctions(t.querySelector(".filters-list"),h)}).setValue(e.groupCondition).selectEl.toggleClass(["group-condition-select","compact-select"],!0),i.createEl("span",{cls:["compact-text"],text:c("filter in this group")});let o=r.createDiv({cls:["filter-group-header-right"]});new Na.ExtraButtonComponent(o).setIcon("copy").setTooltip(c("Duplicate filter group")).onClick(()=>{let m=this.generateId(),h=e.filters.map(f=>({...f,id:this.generateId()})),g={...e,id:m,filters:h};this.addFilterGroup(g,t)}).extraSettingsEl.addClasses(["duplicate-group-btn","clickable-icon"]),new Na.ExtraButtonComponent(o).setIcon("trash-2").setTooltip(c("Remove filter group")).onClick(()=>{let m=t.querySelector(".filters-list");m&&m.sortableInstance&&m.sortableInstance.destroy(),this.rootFilterState.filterGroups=this.rootFilterState.filterGroups.filter(g=>g.id!==e.id),this.saveStateToLocalStorage(),t.remove();let h=t.nextElementSibling;if(h&&h.classList.contains("filter-group-separator-container"))h.remove();else{let g=t.previousElementSibling;g&&g.classList.contains("filter-group-separator-container")&&g.remove()}this.updateGroupSeparators()}).extraSettingsEl.addClasses(["remove-group-btn","clickable-icon"]);let u=t.createDiv({cls:["filters-list"]});return e.filters.forEach(m=>{let h=this.createFilterItemElement(m,e);u.appendChild(h)}),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"},h=>{(0,Na.setIcon)(h,"plus")}),m.createEl("span",{cls:"add-filter-btn-text",text:c("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:c("OR")}):t.groupCondition==="none"?r.createEl("span",{cls:["filter-conjunction"],text:c("AND NOT")}):r.createEl("span",{cls:["filter-conjunction"],text:c("AND")});let i=new Na.DropdownComponent(r);i.selectEl.addClasses(["filter-property-select","compact-select"]);let s=new Na.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 g=["equals","contains","doesNotContain","startsWith","endsWith","is","isNot",">","<",">=","<="].includes(p);m==="completed"&&(p==="isTrue"||p==="isFalse")&&(g=!1),(p==="isEmpty"||p==="isNotEmpty")&&(g=!1),o.style.display=g?"block":"none",!g&&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 d;return this.registerDomEvent(o,"input",p=>{e.value=p.target.value,this.saveStateToLocalStorage(!1),clearTimeout(d),d=setTimeout(()=>{this.saveStateToLocalStorage(!0)},400)}),new Na.ExtraButtonComponent(r).setIcon("trash-2").setTooltip(c("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:c("Content"),status:c("Status"),priority:c("Priority"),dueDate:c("Due Date"),startDate:c("Start Date"),scheduledDate:c("Scheduled Date"),tags:c("Tags"),filePath:c("File Path"),project:c("Project"),completed:c("Completed")}),r.setValue(o);let l=[];switch(s.type="text",o){case"content":case"filePath":case"status":case"project":l=[{value:"contains",text:c("contains")},{value:"doesNotContain",text:c("does not contain")},{value:"is",text:c("is")},{value:"isNot",text:c("is not")},{value:"startsWith",text:c("starts with")},{value:"endsWith",text:c("ends with")},{value:"isEmpty",text:c("is empty")},{value:"isNotEmpty",text:c("is not empty")}];break;case"priority":l=[{value:"is",text:c("is")},{value:"isNot",text:c("is not")},{value:"isEmpty",text:c("is empty")},{value:"isNotEmpty",text:c("is not empty")}];break;case"dueDate":case"startDate":case"scheduledDate":s.type="date",l=[{value:"is",text:c("is")},{value:"isNot",text:c("is not")},{value:">",text:">"},{value:"<",text:"<"},{value:">=",text:">="},{value:"<=",text:"<="},{value:"isEmpty",text:c("is empty")},{value:"isNotEmpty",text:c("is not empty")}];break;case"tags":l=[{value:"contains",text:c("contains")},{value:"doesNotContain",text:c("does not contain")},{value:"isEmpty",text:c("is empty")},{value:"isNotEmpty",text:c("is not empty")}];break;case"completed":l=[{value:"isTrue",text:c("is true")},{value:"isFalse",text:c("is false")}];break;default:l=[{value:"isSet",text:c("is set")},{value:"isNotSet",text:c("is not set")},{value:"equals",text:c("equals")},{value:"contains",text:c("contains")}]}i.selectEl.empty(),l.forEach(f=>i.addOption(f.value,f.text));let d=t.condition,u=!1;l.some(f=>f.value===d)?i.setValue(d):l.length>0&&(i.setValue(l[0].value),t.condition=l[0].value,u=!0);let p=i.getValue(),h=["equals","contains","doesNotContain","startsWith","endsWith","is","isNot",">","<",">=","<="].includes(p);o==="completed"&&(p==="isTrue"||p==="isFalse")&&(h=!1),(p==="isEmpty"||p==="isNotEmpty")&&(h=!1);let g=!1;s.style.display=h?"block":"none",h?t.value!==void 0?s.value=t.value:s.value!==""&&(s.value=""):(s.value="",t.value!==void 0&&(t.value=void 0,g=!0)),(u||g)&&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=c("OR"):t==="none"?o.textContent=c("NOR"):o.textContent=c("AND")):(o.hide(),t==="any"?o.textContent=c("OR"):t==="none"?o.textContent=c("NOR"):o.textContent=c("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"}),d=l.createDiv({cls:"filter-group-separator"}),u=this.rootFilterState.rootCondition,p=c("OR");u==="all"?p=c("AND"):u==="none"&&(p=c("AND NOT")),d.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 Pr(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 this.rootFilterState?JSON.parse(JSON.stringify(this.rootFilterState)):{rootCondition:"any",filterGroups:[]}}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 zc(this.app,this.plugin,"save",this.getFilterState(),t=>{t.name}).open()}openLoadConfigModal(){if(!this.plugin)return;new zc(this.app,this.plugin,"load",void 0,void 0,t=>{this.loadFilterState(t.filterState),t.name}).open()}};var gn=class extends Ie.Modal{constructor(e,t,r,i,s,o,l){var u,p,m;super(e);this.isCopyMode=!1;this.sourceViewId=null;this.copySourceIdentifier=null;this.hasChanges=!1;this.taskFilterComponent=null;this.advancedFilterContainer=null;this.filterChangeHandler=null;this.plugin=t,this.isCreate=r===null;let d=o!=null?o:l?this.plugin.settings.viewConfiguration.find(h=>h.id===l):void 0;if(this.isCopyMode=o!==void 0||l!==void 0,this.sourceViewId=(p=(u=d==null?void 0:d.id)!=null?u:l)!=null?p:null,this.copySourceIdentifier=(m=l!=null?l:d==null?void 0:d.id)!=null?m:null,this.isCreate){let h=`custom_${Date.now()}`;if(this.isCopyMode&&d){if(this.viewConfig={...JSON.parse(JSON.stringify(d)),id:h,name:c("Copy of ")+d.name,type:"custom"},!this.viewConfig.region){let g=["habit","calendar","gantt","kanban"];this.viewConfig.region=g.includes(d.id)?"bottom":"top"}this.viewFilterRule=d.filterRules?JSON.parse(JSON.stringify(d.filterRules)):i||{}}else this.viewConfig={id:h,name:c("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 h=["habit","calendar","gantt","kanban"];this.viewConfig.region=h.includes(this.viewConfig.id)?"bottom":"top"}this.isCopyMode&&this.applyTwoColumnPresetIfNeeded(d),this.originalViewConfig=JSON.stringify(this.viewConfig),this.originalViewFilterRule=JSON.stringify(this.viewFilterRule),this.onSave=s}applyTwoColumnPresetIfNeeded(e){var i,s,o;if(!this.isCopyMode)return;let t=((i=this.viewConfig.specificConfig)==null?void 0:i.viewType)==="twocolumn",r=this.buildTwoColumnPreset((o=(s=this.copySourceIdentifier)!=null?s:e==null?void 0:e.id)!=null?o:null,e);if(r){if(t){let l=this.viewConfig.specificConfig;l.taskPropertyKey||(l.taskPropertyKey=r.taskPropertyKey);return}this.viewConfig.specificConfig=r}}buildTwoColumnPreset(e,t){var m,h;if(!e&&!t)return null;let r=(h=(m=e!=null?e:t==null?void 0:t.id)!=null?m:t==null?void 0:t.name)!=null?h:null;if(!r)return null;let i=r.toLowerCase(),s=null;if(i.startsWith("twocolumn:")||i.startsWith("two-column:")||i.startsWith("property:")){let[,g]=i.split(":");g&&(s=g)}if(s||(i.includes("tag")?s="tags":i.includes("review")||i.includes("project")?s="project":i.includes("context")?s="context":i.includes("priority")?s="priority":i.includes("status")?s="status":i.includes("due")?s="dueDate":i.includes("schedule")?s="scheduledDate":i.includes("start")?s="startDate":i.includes("file")&&(s="filePath")),!s)return null;let l=this.resolveLeftColumnTitle(s,i,t),d=c("Tasks"),u=c("selected items"),p=c("No items selected");switch(s){case"project":u=c("projects selected"),i.includes("review")?(p=c("Select a project to review its tasks."),l=c("Review Projects")):(p=c("Select a project to see related tasks"),l=c("Projects"));break;case"tags":l=c("Tags"),u=c("tags selected"),p=c("Select a tag to see related tasks");break;case"context":l=c("Contexts");break;case"priority":l=c("Priority");break;case"status":l=c("Status");break;case"dueDate":l=c("Due Date");break;case"scheduledDate":l=c("Scheduled Date");break;case"startDate":l=c("Start Date");break;case"filePath":l=c("Files");break}return{viewType:"twocolumn",taskPropertyKey:s,leftColumnTitle:l,rightColumnDefaultTitle:d,multiSelectText:u,emptyStateText:p}}resolveLeftColumnTitle(e,t,r){return e==="project"&&t.includes("review")?c("Review Projects"):e==="project"?c("Projects"):e==="tags"?c("Tags"):e==="context"?c("Contexts"):e==="priority"?c("Priority"):e==="status"?c("Status"):e==="dueDate"?c("Due Date"):e==="scheduledDate"?c("Scheduled Date"):e==="startDate"?c("Start Date"):e==="filePath"?c("Files"):r!=null&&r.name?r.name:c("Items")}onOpen(){this.display()}display(){var p,m,h,g,f,k,v,y;let{contentEl:e}=this;e.empty(),this.modalEl.toggleClass("task-genius-view-config-modal",!0);let t=[{value:-1,name:c("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=c("Copy view: ")+(this.sourceViewId||"Unknown"):r=c("Create custom view"):r=c("Edit view: ")+this.viewConfig.name,this.titleEl.setText(r),this.isCopyMode&&this.sourceViewId){let b=this.plugin.settings.viewConfiguration.find(w=>w.id===this.sourceViewId);if(b){let w=e.createDiv({cls:"copy-mode-info"});w.createEl("p",{text:c("Creating a copy based on: ")+b.name,cls:"setting-item-description"}),w.createEl("p",{text:c("You can modify all settings below. The original view will remain unchanged."),cls:"setting-item-description"})}}new Ie.Setting(e).setName(c("View Name")).addText(b=>{this.nameInput=b,b.setValue(this.viewConfig.name).setPlaceholder(c("My Custom Task View")),b.onChange(()=>this.checkForChanges())}),new Ie.Setting(e).setName(c("Icon name")).setDesc(c("Enter any Lucide icon name (e.g., list-checks, filter, inbox)")).addText(b=>{b.inputEl.hide(),this.iconInput=b,b.setValue(this.viewConfig.icon).setPlaceholder("list-plus"),b.onChange(()=>this.checkForChanges())}).addButton(b=>{try{b.setIcon(this.viewConfig.icon)}catch(w){console.error("Error setting icon:",w)}$o(b,{containerEl:this.modalEl,plugin:this.plugin,onIconSelected:w=>{this.viewConfig.icon=w,this.checkForChanges();try{(0,Ie.setIcon)(b.buttonEl,w)}catch(T){console.error("Error setting icon:",T)}this.iconInput.setValue(w)}})});let s=["habit","calendar","gantt","kanban"].includes(this.viewConfig.id)?"bottom":"top";new Ie.Setting(e).setName(c("Sidebar Position")).setDesc(c("Choose where this view appears in the sidebar. Views in the bottom section are visually separated from top section views.")).addDropdown(b=>{b.addOption("top",c("Top Section")).addOption("bottom",c("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",d=this.viewConfig.id==="forecast"||this.isCopyMode&&this.sourceViewId==="forecast"||((h=this.viewConfig.specificConfig)==null?void 0:h.viewType)==="forecast",u=this.viewConfig.id==="quadrant"||this.isCopyMode&&this.sourceViewId==="quadrant"||((g=this.viewConfig.specificConfig)==null?void 0:g.viewType)==="quadrant";if(o)new Ie.Setting(e).setName(c("First day of week")).setDesc(c("Overrides the locale default for calendar views.")).addDropdown(b=>{var T,x;t.forEach(C=>{b.addOption(String(C.value),C.name)});let w=-1;((T=this.viewConfig.specificConfig)==null?void 0:T.viewType)==="calendar"&&(w=(x=this.viewConfig.specificConfig.firstDayOfWeek)!=null?x:-1),b.setValue(String(w)),b.onChange(C=>{let S=parseInt(C),D=S===-1?void 0:S;!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="calendar"?this.viewConfig.specificConfig={viewType:"calendar",firstDayOfWeek:D}:this.viewConfig.specificConfig.firstDayOfWeek=D,this.checkForChanges()})}),new Ie.Setting(e).setName(c("Hide weekends")).setDesc(c("Hide weekend columns (Saturday and Sunday) in calendar views.")).addToggle(b=>{var T,x;let w=(x=(T=this.viewConfig.specificConfig)==null?void 0:T.hideWeekends)!=null?x:!1;b.setValue(w),b.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 Ie.Setting(e).setName(c("Group by")).setDesc(c("Select which task property to use for creating columns")).addDropdown(x=>{var C;x.addOption("status",c("Status")).addOption("priority",c("Priority")).addOption("tags",c("Tags")).addOption("project",c("Project")).addOption("dueDate",c("Due Date")).addOption("scheduledDate",c("Scheduled Date")).addOption("startDate",c("Start Date")).addOption("context",c("Context")).addOption("filePath",c("File Path")).setValue(((C=this.viewConfig.specificConfig)==null?void 0:C.groupBy)||"status").onChange(S=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:!0,hideEmptyColumns:!1,defaultSortField:"priority",defaultSortOrder:"desc",groupBy:S}:this.viewConfig.specificConfig.groupBy=S,this.checkForChanges(),this.display()})}),new Ie.Setting(e).setName(c("Show checkbox")).setDesc(c("Show a checkbox for each task in the kanban view.")).addToggle(x=>{var C;x.setValue((C=this.viewConfig.specificConfig)==null?void 0:C.showCheckbox),x.onChange(S=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:S,hideEmptyColumns:!1,defaultSortField:"priority",defaultSortOrder:"desc",groupBy:"status"}:this.viewConfig.specificConfig.showCheckbox=S,this.checkForChanges()})}),new Ie.Setting(e).setName(c("Hide empty columns")).setDesc(c("Hide columns that have no tasks.")).addToggle(x=>{var C;x.setValue((C=this.viewConfig.specificConfig)==null?void 0:C.hideEmptyColumns),x.onChange(S=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:!0,hideEmptyColumns:S,defaultSortField:"priority",defaultSortOrder:"desc",groupBy:"status"}:this.viewConfig.specificConfig.hideEmptyColumns=S,this.checkForChanges()})}),new Ie.Setting(e).setName(c("Default sort field")).setDesc(c("Default field to sort tasks by within each column.")).addDropdown(x=>{var C;x.addOption("priority",c("Priority")).addOption("dueDate",c("Due Date")).addOption("scheduledDate",c("Scheduled Date")).addOption("startDate",c("Start Date")).addOption("createdDate",c("Created Date")).setValue(((C=this.viewConfig.specificConfig)==null?void 0:C.defaultSortField)||"priority").onChange(S=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:!0,hideEmptyColumns:!1,defaultSortField:S,defaultSortOrder:"desc",groupBy:"status"}:this.viewConfig.specificConfig.defaultSortField=S,this.checkForChanges()})}),new Ie.Setting(e).setName(c("Default sort order")).setDesc(c("Default order to sort tasks within each column.")).addDropdown(x=>{var C;x.addOption("asc",c("Ascending")).addOption("desc",c("Descending")).setValue(((C=this.viewConfig.specificConfig)==null?void 0:C.defaultSortOrder)||"desc").onChange(S=>{!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="kanban"?this.viewConfig.specificConfig={viewType:"kanban",showCheckbox:!0,hideEmptyColumns:!1,defaultSortField:"priority",defaultSortOrder:S,groupBy:"status"}:this.viewConfig.specificConfig.defaultSortOrder=S,this.checkForChanges()})});let b=this.viewConfig.specificConfig,w=(b==null?void 0:b.hiddenColumns)||[];w.length>0&&(new Ie.Setting(e).setName(c("Hidden Columns")).setDesc(c("Columns that are currently hidden from view. Click the eye icon to show them again.")).setHeading(),w.forEach((x,C)=>{new Ie.Setting(e).setName(x).addButton(S=>{S.setIcon("eye").setTooltip(c("Unhide column")).onClick(()=>{let D=this.viewConfig.specificConfig;D.hiddenColumns&&(D.hiddenColumns.splice(C,1),this.checkForChanges(),this.display())})})}));let T=this.viewConfig.specificConfig;if(T!=null&&T.groupBy&&T.groupBy!=="status"){new Ie.Setting(e).setName(c("Custom Columns")).setDesc(c("Configure custom columns for the selected grouping property")).setHeading();let x=e.createDiv({cls:"kanban-columns-container"}),C=()=>{x.empty(),T.customColumns||(T.customColumns=[]);let S=T.customColumns;S.length===0&&x.createEl("p",{text:c("No custom columns defined. Add columns below."),cls:"setting-item-description"}),S.forEach((D,E)=>{let R=new Ie.Setting(x).setClass("kanban-column-row").addText(I=>{I.setValue(D.title).setPlaceholder(c("Column Title")).onChange(H=>{T.customColumns&&(T.customColumns[E].title=H,this.checkForChanges())})}).addText(I=>{var H;I.setValue(((H=D.value)==null?void 0:H.toString())||"").setPlaceholder(c("Value")).onChange(U=>{if(T.customColumns){let q=U;if(T.groupBy==="priority"&&U){let L=parseInt(U);q=isNaN(L)?U:L}T.customColumns[E].value=q,this.checkForChanges()}})});R.addExtraButton(I=>{I.setIcon("arrow-up").setTooltip(c("Move Up")).setDisabled(E===0).onClick(()=>{if(E>0&&T.customColumns){let H=T.customColumns.splice(E,1)[0];T.customColumns.splice(E-1,0,H),T.customColumns.forEach((U,q)=>{U.order=q}),this.checkForChanges(),C()}})}),R.addExtraButton(I=>{I.setIcon("arrow-down").setTooltip(c("Move Down")).setDisabled(E===S.length-1).onClick(()=>{if(E<S.length-1&&T.customColumns){let H=T.customColumns.splice(E,1)[0];T.customColumns.splice(E+1,0,H),T.customColumns.forEach((U,q)=>{U.order=q}),this.checkForChanges(),C()}})}),R.addExtraButton(I=>{I.setIcon("trash").setTooltip(c("Remove Column")).onClick(()=>{T.customColumns&&(T.customColumns.splice(E,1),T.customColumns.forEach((H,U)=>{H.order=U}),this.checkForChanges(),C())}),I.extraSettingsEl.addClass("mod-warning")})}),new Ie.Setting(x).addButton(D=>{D.setButtonText(c("Add Column")).setCta().onClick(()=>{T.customColumns||(T.customColumns=[]);let E={id:`column_${Date.now()}`,title:c("New Column"),value:"",order:T.customColumns.length};T.customColumns.push(E),this.checkForChanges(),C()})}).addButton(D=>{D.setButtonText(c("Reset Columns")).onClick(()=>{T.customColumns&&(T.customColumns=[],this.checkForChanges(),C())})})};C()}}else if(d)new Ie.Setting(e).setName(c("First day of week")).setDesc(c("Overrides the locale default for forecast views.")).addDropdown(b=>{var T,x;t.forEach(C=>{b.addOption(String(C.value),C.name)});let w=-1;((T=this.viewConfig.specificConfig)==null?void 0:T.viewType)==="forecast"&&(w=(x=this.viewConfig.specificConfig.firstDayOfWeek)!=null?x:-1),b.setValue(String(w)),b.onChange(C=>{let S=parseInt(C),D=S===-1?void 0:S;!this.viewConfig.specificConfig||this.viewConfig.specificConfig.viewType!=="forecast"?this.viewConfig.specificConfig={viewType:"forecast",firstDayOfWeek:D}:this.viewConfig.specificConfig.firstDayOfWeek=D,this.checkForChanges()})}),new Ie.Setting(e).setName(c("Hide weekends")).setDesc(c("Hide weekend columns (Saturday and Sunday) in forecast calendar.")).addToggle(b=>{var T,x;let w=(x=(T=this.viewConfig.specificConfig)==null?void 0:T.hideWeekends)!=null?x:!1;b.setValue(w),b.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 Ie.Setting(e).setName(c("Quadrant Classification Method")).setDesc(c("Choose how to classify tasks into quadrants")).addToggle(T=>{var C,S;let x=(S=(C=this.viewConfig.specificConfig)==null?void 0:C.usePriorityForClassification)!=null?S:!1;T.setValue(x),T.onChange(D=>{!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:D,urgentPriorityThreshold:4,importantPriorityThreshold:3,customQuadrantColors:!1,quadrantColors:{urgentImportant:"#dc3545",notUrgentImportant:"#28a745",urgentNotImportant:"#ffc107",notUrgentNotImportant:"#6c757d"}}:this.viewConfig.specificConfig.usePriorityForClassification=D,this.checkForChanges(),this.display()})});let b=this.viewConfig.specificConfig;((f=b==null?void 0:b.usePriorityForClassification)!=null?f:!1)?(new Ie.Setting(e).setName(c("Urgent Priority Threshold")).setDesc(c("Tasks with priority >= this value are considered urgent (1-5)")).addSlider(T=>{var x;T.setLimits(1,5,1).setValue((x=b==null?void 0:b.urgentPriorityThreshold)!=null?x:4).setDynamicTooltip().onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.urgentPriorityThreshold=C,this.checkForChanges())})}),new Ie.Setting(e).setName(c("Important Priority Threshold")).setDesc(c("Tasks with priority >= this value are considered important (1-5)")).addSlider(T=>{var x;T.setLimits(1,5,1).setValue((x=b==null?void 0:b.importantPriorityThreshold)!=null?x:3).setDynamicTooltip().onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.importantPriorityThreshold=C,this.checkForChanges())})})):(new Ie.Setting(e).setName(c("Urgent Tag")).setDesc(c("Tag to identify urgent tasks (e.g., #urgent, #fire)")).addText(T=>{var x;T.setValue((x=b==null?void 0:b.urgentTag)!=null?x:"#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 Ie.Setting(e).setName(c("Important Tag")).setDesc(c("Tag to identify important tasks (e.g., #important, #key)")).addText(T=>{var x;T.setValue((x=b==null?void 0:b.importantTag)!=null?x:"#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 Ie.Setting(e).setName(c("Urgent Threshold Days")).setDesc(c("Tasks due within this many days are considered urgent")).addSlider(T=>{var x;T.setLimits(1,14,1).setValue((x=b==null?void 0:b.urgentThresholdDays)!=null?x:3).setDynamicTooltip().onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.urgentThresholdDays=C,this.checkForChanges())})})),new Ie.Setting(e).setName(c("Auto Update Priority")).setDesc(c("Automatically update task priority when moved between quadrants")).addToggle(T=>{var x;T.setValue((x=b==null?void 0:b.autoUpdatePriority)!=null?x:!0).onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.autoUpdatePriority=C,this.checkForChanges())})}),new Ie.Setting(e).setName(c("Auto Update Tags")).setDesc(c("Automatically add/remove urgent/important tags when moved between quadrants")).addToggle(T=>{var x;T.setValue((x=b==null?void 0:b.autoUpdateTags)!=null?x:!0).onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.autoUpdateTags=C,this.checkForChanges())})}),new Ie.Setting(e).setName(c("Hide Empty Quadrants")).setDesc(c("Hide quadrants that have no tasks")).addToggle(T=>{var x;T.setValue((x=b==null?void 0:b.hideEmptyQuadrants)!=null?x:!1).onChange(C=>{var S;((S=this.viewConfig.specificConfig)==null?void 0:S.viewType)==="quadrant"&&(this.viewConfig.specificConfig.hideEmptyQuadrants=C,this.checkForChanges())})})}if((this.isCreate||((k=this.viewConfig.specificConfig)==null?void 0:k.viewType)==="twocolumn"||this.viewConfig.type==="custom")&&((this.isCreate&&!this.isCopyMode||this.viewConfig.type==="custom")&&new Ie.Setting(e).setName(c("View type")).setDesc(c("Select the type of view to create")).addDropdown(b=>{var w;b.addOption("standard",c("Standard view")).addOption("twocolumn",c("Two column view")).setValue(((w=this.viewConfig.specificConfig)==null?void 0:w.viewType)==="twocolumn"?"twocolumn":"standard").onChange(T=>{T==="twocolumn"?this.viewConfig.specificConfig={viewType:"twocolumn",taskPropertyKey:"tags",leftColumnTitle:c("Items"),rightColumnDefaultTitle:c("Tasks"),multiSelectText:c("selected items"),emptyStateText:c("No items selected")}:delete this.viewConfig.specificConfig,this.checkForChanges(),this.display()})}),((v=this.viewConfig.specificConfig)==null?void 0:v.viewType)==="twocolumn"&&(new Ie.Setting(e).setName(c("Two column view settings")).setHeading(),new Ie.Setting(e).setName(c("Group by task property")).setDesc(c("Select which task property to use for left column grouping")).addDropdown(b=>{b.addOption("tags",c("Tags")).addOption("project",c("Project")).addOption("priority",c("Priority")).addOption("context",c("Context")).addOption("status",c("Status")).addOption("dueDate",c("Due Date")).addOption("scheduledDate",c("Scheduled Date")).addOption("startDate",c("Start Date")).addOption("filePath",c("File Path")).setValue(this.viewConfig.specificConfig.taskPropertyKey||"tags").onChange(w=>{var T;if(((T=this.viewConfig.specificConfig)==null?void 0:T.viewType)==="twocolumn"){if(this.viewConfig.specificConfig.taskPropertyKey=w,!this.leftColumnTitleInput.getValue()){let x=c("Items");switch(w){case"tags":x=c("Tags");break;case"project":x=c("Projects");break;case"priority":x=c("Priorities");break;case"context":x=c("Contexts");break;case"status":x=c("Status");break;case"dueDate":x=c("Due Dates");break;case"scheduledDate":x=c("Scheduled Dates");break;case"startDate":x=c("Start Dates");break;case"filePath":x=c("Files");break}this.leftColumnTitleInput.setValue(x),this.viewConfig.specificConfig.leftColumnTitle=x}this.checkForChanges()}})}),new Ie.Setting(e).setName(c("Left column title")).setDesc(c("Title for the left column (items list)")).addText(b=>{this.leftColumnTitleInput=b,b.setValue(this.viewConfig.specificConfig.leftColumnTitle||c("Items")),b.onChange(w=>{var T;((T=this.viewConfig.specificConfig)==null?void 0:T.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.leftColumnTitle=w,this.checkForChanges())})}),new Ie.Setting(e).setName(c("Right column title")).setDesc(c("Default title for the right column (tasks list)")).addText(b=>{this.rightColumnTitleInput=b,b.setValue(this.viewConfig.specificConfig.rightColumnDefaultTitle||c("Tasks")),b.onChange(w=>{var T;((T=this.viewConfig.specificConfig)==null?void 0:T.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.rightColumnDefaultTitle=w,this.checkForChanges())})}),new Ie.Setting(e).setName(c("Multi-select Text")).setDesc(c("Text to show when multiple items are selected")).addText(b=>{this.multiSelectTextInput=b,b.setValue(this.viewConfig.specificConfig.multiSelectText||c("selected items")),b.onChange(w=>{var T;((T=this.viewConfig.specificConfig)==null?void 0:T.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.multiSelectText=w,this.checkForChanges())})}),new Ie.Setting(e).setName(c("Empty state text")).setDesc(c("Text to show when no items are selected")).addText(b=>{this.emptyStateTextInput=b,b.setValue(this.viewConfig.specificConfig.emptyStateText||c("No items selected")),b.onChange(w=>{var T;((T=this.viewConfig.specificConfig)==null?void 0:T.viewType)==="twocolumn"&&(this.viewConfig.specificConfig.emptyStateText=w,this.checkForChanges())})}))),new Ie.Setting(e).setName(c("Filter Rules")).setHeading(),new Ie.Setting(e).setName(c("Hide completed and abandoned tasks")).setDesc(c("Hide completed and abandoned tasks in this view.")).addToggle(b=>{b.setValue(this.viewConfig.hideCompletedAndAbandonedTasks),b.onChange(w=>{this.viewConfig.hideCompletedAndAbandonedTasks=w,this.checkForChanges()})}),new Ie.Setting(e).setName(c("Filter blanks")).setDesc(c("Filter out blank tasks in this view.")).addToggle(b=>{b.setValue(this.viewConfig.filterBlanks),b.onChange(w=>{this.viewConfig.filterBlanks=w,this.checkForChanges()})}),new Ie.Setting(e).setName(c("Advanced Filtering")).setDesc(c("Use advanced multi-group filtering with complex conditions")).addToggle(b=>{let w=!!this.viewFilterRule.advancedFilter;this.viewFilterRule.advancedFilter,b.setValue(w),b.onChange(T=>{T?(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(((y=this.viewConfig.specificConfig)==null?void 0:y.viewType)||"")){new Ie.Setting(e).setName(c("Sort Criteria")).setDesc(c("Define the order in which tasks should be sorted. Criteria are applied sequentially.")).setHeading();let b=e.createDiv({cls:"sort-criteria-container"}),w=()=>{b.empty(),this.viewConfig.sortCriteria||(this.viewConfig.sortCriteria=[]);let T=this.viewConfig.sortCriteria;T.length===0&&b.createEl("p",{text:c("No sort criteria defined. Add criteria below."),cls:"setting-item-description"}),T.forEach((x,C)=>{let S=new Ie.Setting(b).setClass("sort-criterion-row").addDropdown(D=>{D.addOption("status",c("Status")).addOption("priority",c("Priority")).addOption("dueDate",c("Due Date")).addOption("startDate",c("Start Date")).addOption("scheduledDate",c("Scheduled Date")).addOption("content",c("Content")).setValue(x.field).onChange(E=>{this.viewConfig.sortCriteria&&(this.viewConfig.sortCriteria[C].field=E,this.checkForChanges())})}).addDropdown(D=>{D.addOption("asc",c("Ascending")).addOption("desc",c("Descending")).setValue(x.order).onChange(E=>{this.viewConfig.sortCriteria&&(this.viewConfig.sortCriteria[C].order=E,this.checkForChanges())}),x.field==="priority"?D.selectEl.title=c("Ascending: High -> Low -> None. Descending: None -> Low -> High"):["dueDate","startDate","scheduledDate"].includes(x.field)?D.selectEl.title=c("Ascending: Earlier -> Later -> None. Descending: None -> Later -> Earlier"):x.field==="status"?D.selectEl.title=c("Ascending respects status order (Overdue first). Descending reverses it."):D.selectEl.title=c("Ascending: A-Z. Descending: Z-A")});S.addExtraButton(D=>{D.setIcon("arrow-up").setTooltip(c("Move Up")).setDisabled(C===0).onClick(()=>{if(C>0&&this.viewConfig.sortCriteria){let E=this.viewConfig.sortCriteria.splice(C,1)[0];this.viewConfig.sortCriteria.splice(C-1,0,E),this.checkForChanges(),w()}})}),S.addExtraButton(D=>{D.setIcon("arrow-down").setTooltip(c("Move Down")).setDisabled(C===T.length-1).onClick(()=>{if(C<T.length-1&&this.viewConfig.sortCriteria){let E=this.viewConfig.sortCriteria.splice(C,1)[0];this.viewConfig.sortCriteria.splice(C+1,0,E),this.checkForChanges(),w()}})}),S.addExtraButton(D=>{D.setIcon("trash").setTooltip(c("Remove Criterion")).onClick(()=>{this.viewConfig.sortCriteria&&(this.viewConfig.sortCriteria.splice(C,1),this.checkForChanges(),w())}),D.extraSettingsEl.addClass("mod-warning")})}),new Ie.Setting(b).addButton(x=>{x.setButtonText(c("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(x=>{x.setButtonText(c("Reset to Defaults")).onClick(()=>{this.viewConfig.sortCriteria=[],this.checkForChanges(),w()})})};w()}new Ie.Setting(e).addButton(b=>{b.setButtonText(c("Save")).setCta().onClick(()=>{this.saveChanges()})}).addButton(b=>{b.setButtonText(c("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()||c("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 Ie.Notice(c("View configuration saved."))}close(){this.hasChanges?new oa(this.plugin,{title:c("Unsaved Changes"),message:c("You have unsaved changes. Save before closing?"),confirmText:c("Save"),cancelText:c("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 zn(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 zE(n,a){if(new Dt.Setting(a).setName(c("View Configuration")).setDesc(c("Configure the Task Genius sidebar views, visibility, order, and create custom views.")).setHeading(),new Dt.Setting(a).setName(c("Enable Task Genius Views")).setDesc(c("Enable Task Genius sidebar views to display and manage tasks. Requires the indexer to be enabled.")).addToggle(k=>{k.setValue(n.plugin.settings.enableView),k.onChange(v=>{if(v&&!n.plugin.settings.enableIndexer){new Dt.Notice(c("Cannot enable views without indexer. Please enable the indexer first in Index & Sources settings.")),k.setValue(!1);return}n.plugin.settings.enableView=v,n.applySettingsUpdate(),n.display()})}),!n.plugin.settings.enableView){new Dt.Setting(a).setName(c("Views are disabled")).setDesc(c("Enable Task Genius Views above to configure view settings."));return}new Dt.Setting(a).setName(c("Default view mode")).setDesc(c("Choose the default display mode for all views. This affects how tasks are displayed when you first open a view or create a new view.")).addDropdown(k=>{k.addOption("list",c("List View")).addOption("tree",c("Tree View")).setValue(n.plugin.settings.defaultViewMode).onChange(v=>{n.plugin.settings.defaultViewMode=v,n.applySettingsUpdate()})}),new Dt.Setting(a).setName(c("Project Tree View Settings")).setDesc(c("Configure how projects are displayed in tree view.")).setHeading(),new Dt.Setting(a).setName(c("Default project view mode")).setDesc(c("Choose whether to display projects as a flat list or hierarchical tree by default.")).addDropdown(k=>{k.addOption("list",c("List View")).addOption("tree",c("Tree View")).setValue(n.plugin.settings.projectViewDefaultMode).onChange(v=>{n.plugin.settings.projectViewDefaultMode=v,n.applySettingsUpdate()})}),new Dt.Setting(a).setName(c("Auto-expand project tree")).setDesc(c("Automatically expand all project nodes when opening the project view in tree mode.")).addToggle(k=>{k.setValue(n.plugin.settings.projectTreeAutoExpand).onChange(v=>{n.plugin.settings.projectTreeAutoExpand=v,n.applySettingsUpdate()})}),new Dt.Setting(a).setName(c("Show empty project folders")).setDesc(c("Display project folders even if they don't contain any tasks.")).addToggle(k=>{k.setValue(n.plugin.settings.projectTreeShowEmptyFolders).onChange(v=>{n.plugin.settings.projectTreeShowEmptyFolders=v,n.applySettingsUpdate()})}),new Dt.Setting(a).setName(c("Project path separator")).setDesc(c("Character used to separate project hierarchy levels (e.g., '/' in 'Project/SubProject').")).addText(k=>{k.setPlaceholder("/").setValue(n.plugin.settings.projectPathSeparator).onChange(v=>{n.plugin.settings.projectPathSeparator=v||"/",n.applySettingsUpdate()})}),new Dt.Setting(a).setName(c("Date and Time Display")).setDesc(c("Configure how dates and times are displayed in views.")).setHeading(),new Dt.Setting(a).setName(c("Use relative time for date")).setDesc(c("Use relative time for date in task list item, e.g. 'yesterday', 'today', 'tomorrow', 'in 2 days', '3 months ago', etc.")).addToggle(k=>{k.setValue(n.plugin.settings.useRelativeTimeForDate),k.onChange(v=>{n.plugin.settings.useRelativeTimeForDate=v,n.applySettingsUpdate()})}),new Dt.Setting(a).setName(c("Editor Configuration")).setDesc(c("Configure inline editing and metadata positioning.")).setHeading(),new Dt.Setting(a).setName(c("Enable inline editor")).setDesc(c("Enable inline editing of task content and metadata directly in task views. When disabled, tasks can only be edited in the source file.")).addToggle(k=>{k.setValue(n.plugin.settings.enableInlineEditor),k.onChange(v=>{n.plugin.settings.enableInlineEditor=v,n.applySettingsUpdate()})}),new Dt.Setting(a).setName(c("Enable dynamic metadata positioning")).setDesc(c("Intelligently position task metadata. When enabled, metadata appears on the same line as short tasks and below long tasks. When disabled, metadata always appears below the task content.")).addToggle(k=>{k.setValue(n.plugin.settings.enableDynamicMetadataPositioning),k.onChange(v=>{n.plugin.settings.enableDynamicMetadataPositioning=v,n.applySettingsUpdate()})}),new Dt.Setting(a).setName(c("Global Filter Configuration")).setDesc(c("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 zn(e,n.app,"global-filter",n.plugin),t.onload();let k=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,y)=>{y==="global-filter"&&k(v)}))})(),a.cleanupGlobalFilter=()=>{t&&(t.onunload(),t=null),r&&(r.destroy(),r=null),i&&(i.destroy(),i=null)},new Dt.Setting(a).setName(c("Manage Views")).setDesc(c("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:c("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:c("Bottom Section")});let h=p.createDiv({cls:"view-section-items sortable-views",attr:{"data-region":"bottom"}}),g=()=>{u.empty(),h.empty(),r&&(r.destroy(),r=null),i&&(i.destroy(),i=null);let k=[],v=[];n.plugin.settings.viewConfiguration.forEach(w=>{w.region==="bottom"?v.push(w):k.push(w)});let y=(w,T)=>{let x=T.createDiv({cls:"view-item sortable-view-item",attr:{"data-view-id":w.id}}),C=x.createDiv({cls:"view-drag-handle"});(0,Dt.setIcon)(C,"grip-vertical");let S=x.createDiv({cls:"view-item-icon"});(0,Dt.setIcon)(S,w.icon);let D=x.createDiv({cls:"view-item-info"});D.createEl("div",{cls:"view-item-name",text:w.name}),D.createEl("div",{cls:"view-item-type",text:`[${w.type}]`});let E=x.createDiv({cls:"view-item-actions"}),R=E.createEl("button",{cls:["view-action-button","clickable-icon"],attr:{"aria-label":w.visible?c("Hide from sidebar"):c("Show in sidebar")}});(0,Dt.setIcon)(R,w.visible?"eye":"eye-off"),R.onclick=async()=>{w.visible=!w.visible,await n.plugin.saveSettings(),g(),n.app.workspace.trigger("task-genius:view-config-changed",{reason:"visibility-changed",viewId:w.id})};let I=E.createEl("button",{cls:["view-action-button","clickable-icon"],attr:{"aria-label":c("Edit View")}});(0,Dt.setIcon)(I,"pencil"),I.onclick=()=>{if(w.id==="habit"){n.openTab("habit");return}new gn(n.app,n.plugin,w,w.filterRules||{},(U,q)=>{let L=n.plugin.settings.viewConfiguration.findIndex(_=>_.id===U.id);L!==-1&&(n.plugin.settings.viewConfiguration[L]={...U,filterRules:q},n.plugin.saveSettings(),g(),n.app.workspace.trigger("task-genius:view-config-changed",{reason:"view-updated",viewId:U.id}))}).open()};let H=E.createEl("button",{cls:["view-action-button","clickable-icon"],attr:{"aria-label":c("Copy View")}});if((0,Dt.setIcon)(H,"copy"),H.onclick=()=>{new gn(n.app,n.plugin,null,null,(U,q)=>{n.plugin.settings.viewConfiguration.some(L=>L.id===U.id)?new Dt.Notice(c("Error: View ID already exists.")):(n.plugin.settings.viewConfiguration.push({...U,filterRules:q}),n.plugin.saveSettings(),g(),n.app.workspace.trigger("task-genius:view-config-changed",{reason:"view-copied",viewId:U.id}),new Dt.Notice(c("View copied successfully: ")+U.name))},w,w.id).open()},w.type==="custom"){let U=E.createEl("button",{cls:["view-action-button","view-action-delete","clickable-icon"],attr:{"aria-label":c("Delete View")}});(0,Dt.setIcon)(U,"trash"),U.onclick=()=>{let q=n.plugin.settings.viewConfiguration.findIndex(L=>L.id===w.id);q!==-1&&(n.plugin.settings.viewConfiguration.splice(q,1),n.applySettingsUpdate(),g())}}return x};k.forEach(w=>y(w,u)),v.forEach(w=>y(w,h));let b=()=>{let w=[];u.querySelectorAll(".sortable-view-item").forEach(T=>{let x=T.getAttribute("data-view-id"),C=n.plugin.settings.viewConfiguration.find(S=>S.id===x);C&&(C.region="top",w.push(C))}),h.querySelectorAll(".sortable-view-item").forEach(T=>{let x=T.getAttribute("data-view-id"),C=n.plugin.settings.viewConfiguration.find(S=>S.id===x);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=Pr.create(u,{group:"views",animation:150,handle:".view-drag-handle",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",onEnd:()=>{b()}}),i=Pr.create(h,{group:"views",animation:150,handle:".view-drag-handle",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",onEnd:()=>{b()}})};g(),n.plugin.registerEvent(n.app.workspace.on("task-genius:view-config-changed",k=>{(k==null?void 0:k.reason)==="sidebar-reorder"&&g()}));let f=a.createDiv();new Dt.Setting(f).addButton(k=>{k.setButtonText(c("Add Custom View")).setCta().onClick(()=>{new gn(n.app,n.plugin,null,null,(v,y)=>{n.plugin.settings.viewConfiguration.some(b=>b.id===v.id)?new Dt.Notice(c("Error: View ID already exists.")):(n.plugin.settings.viewConfiguration.push({...v,filterRules:y}),n.plugin.saveSettings(),g(),n.app.workspace.trigger("task-genius:view-config-changed",{reason:"view-added",viewId:v.id}))}).open()})})}var Ar=require("obsidian");z();var wl=require("obsidian");z();var Gr=require("obsidian");z();var Mw=class extends Gr.Modal{constructor(a,e,t,r){super(a),this.stage=JSON.parse(JSON.stringify(e)),this.allStages=t,this.onSave=r,this.renderStageTypeSettings=()=>{}}onOpen(){let{contentEl:a,titleEl:e}=this;this.modalEl.toggleClass("modal-stage-definition",!0),e.setText(c("Edit Stage")),new Gr.Setting(a).setName(c("Stage name")).setDesc(c("A descriptive name for this workflow stage")).addText(l=>{l.setValue(this.stage.name||"").setPlaceholder(c("Stage name")).onChange(d=>{this.stage.name=d})}),new Gr.Setting(a).setName(c("Stage ID")).setDesc(c("A unique identifier for the stage (used in tags)")).addText(l=>{l.setValue(this.stage.id||"").setPlaceholder("stage_id").onChange(d=>{this.stage.id=d})}),new Gr.Setting(a).setName(c("Stage type")).setDesc(c("The type of this workflow stage")).addDropdown(l=>{l.addOption("linear",c("Linear (sequential)")).addOption("cycle",c("Cycle (repeatable)")).addOption("terminal",c("Terminal (end stage)")).setValue(this.stage.type||"linear").onChange(d=>{this.stage.type=d,this.renderStageTypeSettings()})});let t=a.createDiv({cls:"stage-type-settings"}),r=()=>{if(t.empty(),this.stage.type==="linear"||this.stage.type==="cycle"){if(this.allStages.length>0&&new Gr.Setting(t).setName(c("Next stage")).setDesc(c("The stage to proceed to after this one")).addDropdown(p=>{this.allStages.forEach(m=>{m.id!==this.stage.id&&p.addOption(m.id,m.name)}),typeof this.stage.next=="string"&&this.stage.next&&p.setValue(this.stage.next),p.onChange(m=>{this.stage.next=m})}),this.stage.type==="cycle"){let p=t.createDiv({cls:"substages-section"});new Gr.Setting(p).setName(c("Sub-stages")).setDesc(c("Define cycle sub-stages (optional)"));let m=p.createDiv({cls:"substages-container"}),h=()=>{if(m.empty(),!this.stage.subStages||this.stage.subStages.length===0)m.createEl("p",{text:c("No sub-stages defined yet."),cls:"no-substages-message"});else{let f=m.createEl("ul",{cls:"substages-list"});this.stage.subStages.forEach((k,v)=>{let y=f.createEl("li",{cls:"substage-item"}),b=y.createDiv({cls:"substage-name-container"}),w=b.createEl("input",{type:"text",value:k.name||"",placeholder:c("Sub-stage name")});w.addEventListener("change",()=>{k.name=w.value});let T=b.createEl("input",{type:"text",value:k.id||"",placeholder:c("Sub-stage ID")});if(T.addEventListener("change",()=>{k.id=T.value}),this.stage.subStages.length>1){let x=b.createDiv({cls:"substage-next-container"});x.createEl("span",{text:c("Next: ")});let C=new Gr.DropdownComponent(x);this.stage.subStages.forEach(S=>{S.id!==k.id&&C.addOption(S.id,S.name)}),k.next&&C.setValue(k.next),C.onChange(S=>{k.next=S})}y.createEl("div",{},x=>{new Gr.ExtraButtonComponent(x).setIcon("trash").setTooltip(c("Remove")).onClick(()=>{this.stage.subStages.splice(v,1),h()}).extraSettingsEl.toggleClass("substage-remove-button",!0)})})}m.createEl("button",{cls:"add-substage-button",text:c("Add Sub-stage")}).addEventListener("click",()=>{this.stage.subStages||(this.stage.subStages=[]);let f={id:this.generateUniqueId(),name:c("New Sub-stage")};if(this.stage.subStages.length>0){let k=this.stage.subStages[this.stage.subStages.length-1];k&&("next"in k,k.next=f.id),this.stage.subStages[0]&&(f.next=this.stage.subStages[0].id)}this.stage.subStages.push(f),h()})};h()}let l=t.createDiv({cls:"can-proceed-to-section"});new Gr.Setting(l).setName(c("Can proceed to")).setDesc(c("Additional stages that can follow this one (for right-click menu)"));let d=l.createDiv({cls:"can-proceed-to-container"}),u=()=>{if(d.empty(),!this.stage.canProceedTo||this.stage.canProceedTo.length===0)d.createEl("p",{text:c("No additional destination stages defined."),cls:"no-can-proceed-message"});else{let p=d.createEl("ul",{cls:"can-proceed-list"});this.stage.canProceedTo.forEach((m,h)=>{let g=this.allStages.find(f=>f.id===m);if(g){let f=p.createEl("li",{cls:"can-proceed-item"});new Gr.Setting(f).setName(g.name).addExtraButton(v=>{v.setIcon("trash").setTooltip(c("Remove")).onClick(()=>{this.stage.canProceedTo.splice(h,1),u()})})}})}if(this.allStages.length>0){let p=d.createDiv({cls:"add-can-proceed-container"}),m;p.createEl("div",{cls:"add-can-proceed-select"},g=>{m=new Gr.DropdownComponent(g),this.allStages.forEach(f=>{f.id!==this.stage.id&&(!this.stage.canProceedTo||!this.stage.canProceedTo.includes(f.id))&&m.addOption(f.id,f.name)})}),p.createEl("button",{cls:"add-can-proceed-button",text:c("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:c("Cancel"),cls:"stage-cancel-button"}).addEventListener("click",()=>{this.close()}),i.createEl("button",{text:c("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:c("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 Tl=class extends wl.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?c("Edit Workflow")+": "+this.workflow.name:c("Create New Workflow"));let t=a.createDiv({cls:"workflow-form"});new wl.Setting(t).setName(c("Workflow name")).setDesc(c("A descriptive name for the workflow")).addText(p=>{p.setValue(this.workflow.name||"").onChange(m=>{this.workflow.name=m})}),new wl.Setting(t).setName(c("Workflow ID")).setDesc(c("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 wl.Setting(t).setName(c("Description")).setDesc(c("Optional description for the workflow")).addTextArea(p=>{p.setValue(this.workflow.description||"").setPlaceholder(c("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:c("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:c("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((h,g)=>{let f=m.createEl("li",{cls:"workflow-stage-item"}),k=new wl.Setting(f).setName(h.name).setDesc(h.type);if(k.settingEl.toggleClass(["workflow-stage-type-cycle","workflow-stage-type-linear","workflow-stage-type-parallel","workflow-stage-type-conditional","workflow-stage-type-custom"].includes(h.type)?h.type:"workflow-stage-type-unknown",!0),k.addExtraButton(v=>{v.setIcon("pencil").setTooltip(c("Edit")).onClick(()=>{new Mw(this.app,h,this.workflow.stages,y=>{this.workflow.stages[g]=y,o()}).open()})}),g>0&&k.addExtraButton(v=>{v.setIcon("arrow-up").setTooltip(c("Move up")).onClick(()=>{[this.workflow.stages[g-1],this.workflow.stages[g]]=[this.workflow.stages[g],this.workflow.stages[g-1]],o()})}),g<this.workflow.stages.length-1&&k.addExtraButton(v=>{v.setIcon("arrow-down").setTooltip(c("Move down")).onClick(()=>{[this.workflow.stages[g],this.workflow.stages[g+1]]=[this.workflow.stages[g+1],this.workflow.stages[g]],o()})}),k.addExtraButton(v=>{v.setIcon("trash").setTooltip(c("Delete")).onClick(()=>{this.workflow.stages.splice(g,1),o()})}),h.type==="cycle"&&h.subStages&&h.subStages.length>0){let v=f.createEl("div",{cls:"workflow-substages-list"});h.subStages.forEach((y,b)=>{let T=v.createEl("div",{cls:"substage-item"}).createDiv({cls:"substage-settings-container"}),x=new wl.Setting(T);x.setName(c("Sub-stage")+" "+(b+1)),x.addText(C=>{C.setValue(y.name||"").setPlaceholder(c("Sub-stage name")).onChange(S=>{y.name=S})}),x.addText(C=>{C.setValue(y.id||"").setPlaceholder(c("Sub-stage ID")).onChange(S=>{y.id=S})}),this.workflow.stages.length>1&&x.addDropdown(C=>{var D;C.selectEl.addClass("substage-next-select");let S=createSpan({text:c("Next: "),cls:"setting-dropdown-label"});(D=C.selectEl.parentElement)==null||D.insertBefore(S,C.selectEl),this.workflow.stages.forEach(E=>{E.id!==y.id&&C.addOption(E.id,E.name)}),y.next&&C.setValue(y.next),C.onChange(E=>{y.next=E})}),x.addExtraButton(C=>{C.setIcon("trash").onClick(()=>{this.workflow.stages.splice(b,1),o()})})})}})}s.createEl("button",{cls:"workflow-add-stage-button",text:c("Add Sub-stage")}).addEventListener("click",()=>{this.workflow.stages||(this.workflow.stages=[]);let m={id:this.generateUniqueId(),name:c("New Sub-stage")};if(this.workflow.stages.length>0){let h=this.workflow.stages[this.workflow.stages.length-1];h&&("next"in h,h.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:c("Cancel"),cls:"workflow-cancel-button"}).addEventListener("click",()=>{this.close()}),l.createEl("button",{text:c("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)}};function _E(n,a){if(new Ar.Setting(a).setName(c("Workflow")).setDesc(c("Configure task workflows for project and process management")).setHeading(),new Ar.Setting(a).setName(c("Enable workflow")).setDesc(c("Toggle to enable the workflow system for tasks")).addToggle(r=>{r.setValue(n.plugin.settings.workflow.enableWorkflow).onChange(async i=>{n.plugin.settings.workflow.enableWorkflow=i,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})}),!n.plugin.settings.workflow.enableWorkflow)return;if(new Ar.Setting(a).setName(c("Auto-add timestamp")).setDesc(c("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:c("Timestamp format:")}),r.createEl("span",{text:" "});let i=r.createEl("span");if(new Ar.Setting(a).setName(c("Timestamp format")).setDesc(r).addMomentFormat(s=>{s.setSampleEl(i),s.setDefaultFormat(n.plugin.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss"),s.setValue(n.plugin.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss").onChange(o=>{n.plugin.settings.workflow.timestampFormat=o,n.applySettingsUpdate(),s.updateSample()})}),new Ar.Setting(a).setName(c("Remove timestamp when moving to next stage")).setDesc(c("Remove the timestamp from the current task when moving to the next stage")).addToggle(s=>{s.setValue(n.plugin.settings.workflow.removeTimestampOnTransition).onChange(async o=>{n.plugin.settings.workflow.removeTimestampOnTransition=o,n.applySettingsUpdate()})}),new Ar.Setting(a).setName(c("Calculate spent time")).setDesc(c("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:c("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:c("Calculate spent time when move to next stage.")}),new Ar.Setting(a).setName(c("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(d=>{n.plugin.settings.workflow.spentTimeFormat=d,n.applySettingsUpdate(),l.updateSample()})}),new Ar.Setting(a).setName(c("Calculate full spent time")).setDesc(c("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 d=>{n.plugin.settings.workflow.calculateFullSpentTime=d,n.applySettingsUpdate()})})}}new Ar.Setting(a).setName(c("Auto remove last stage marker")).setDesc(c("Automatically remove the last stage marker when a task is completed")).addToggle(r=>{r.setValue(n.plugin.settings.workflow.autoRemoveLastStageMarker).onChange(async i=>{n.plugin.settings.workflow.autoRemoveLastStageMarker=i,n.applySettingsUpdate()})}),new Ar.Setting(a).setName(c("Auto-add next task")).setDesc(c("Automatically create a new task with the next stage when completing a task")).addToggle(r=>{r.setValue(n.plugin.settings.workflow.autoAddNextTask).onChange(async i=>{n.plugin.settings.workflow.autoAddNextTask=i,n.applySettingsUpdate()})}),new Ar.Setting(a).setName(c("Workflow definitions")).setDesc(c("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:c("No workflow definitions created yet. Click 'Add New Workflow' to create one.")}),r.forEach((s,o)=>{let l=e.createDiv({cls:"workflow-row"}),d=new Ar.Setting(l).setName(s.name).setDesc(s.description||"");d.addExtraButton(p=>{p.setIcon("pencil").setTooltip(c("Edit workflow")).onClick(()=>{new Tl(n.app,n.plugin,s,m=>{n.plugin.settings.workflow.definitions[o]=m,n.applySettingsUpdate(),t()}).open()})}),d.addExtraButton(p=>{p.setIcon("trash").setTooltip(c("Remove workflow")).onClick(()=>{let m=new Ar.Modal(n.app);m.titleEl.setText(c("Delete workflow")),m.contentEl.createDiv().setText(c(`Are you sure you want to delete the '${s.name}' workflow?`));let g=m.contentEl.createDiv({cls:"tg-modal-button-container modal-button-container"}),f=g.createEl("button");f.setText(c("Cancel")),f.addEventListener("click",()=>{m.close()});let k=g.createEl("button");k.setText(c("Delete")),k.addClass("mod-warning"),k.addEventListener("click",()=>{n.plugin.settings.workflow.definitions.splice(o,1),n.applySettingsUpdate(),t(),m.close()}),m.open()})});let u=l.createDiv({cls:"workflow-stages-info"});if(s.stages.length>0){let p=u.createEl("ul");p.addClass("workflow-stages-list"),s.stages.forEach(m=>{let h=p.createEl("li");h.addClass("workflow-stage-item"),h.addClass(`workflow-stage-type-${m.type}`);let g=h.createSpan({text:m.name});m.type==="cycle"?(h.addClass("workflow-stage-cycle"),g.addClass("workflow-stage-name-cycle")):m.type==="terminal"&&(h.addClass("workflow-stage-terminal"),g.addClass("workflow-stage-name-terminal"))})}});let i=e.createDiv();new Ar.Setting(i).addButton(s=>{s.setButtonText(c("Add New Workflow")).setCta().onClick(()=>{let o={id:bl(),name:c("New Workflow"),description:"",stages:[],metadata:{version:"1.0",created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}};new Tl(n.app,n.plugin,o,l=>{n.plugin.settings.workflow.definitions.push(l),n.applySettingsUpdate(),t()}).open()})})};t()}var aa=require("obsidian");z();function UE(n,a){var e,t,r,i,s,o,l,d;if(new aa.Setting(a).setName(c("Project Management")).setDesc(c("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 aa.Setting(a).setName(c("Enable project features")).setDesc(c("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 aa.Setting(a).setName(c("Path-based Project Mappings")).setDesc(c("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 k=((v=n.plugin.settings.projectConfig)==null?void 0:v.pathMappings)||[];k.length===0&&u.createDiv({cls:"no-mappings-message",text:c("No path mappings configured yet.")}),k.forEach((y,b)=>{let w=u.createDiv({cls:"project-path-mapping-row"});new aa.Setting(w).setName(`${c("Mapping")} ${b+1}`).addText(T=>{T.setPlaceholder(c("Path pattern (e.g., Projects/Work)")).setValue(y.pathPattern).onChange(async x=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.pathMappings[b].pathPattern=x,await n.plugin.saveSettings())})}).addText(T=>{T.setPlaceholder(c("Project name")).setValue(y.projectName).onChange(async x=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.pathMappings[b].projectName=x,await n.plugin.saveSettings())})}).addToggle(T=>{T.setTooltip(c("Enabled")).setValue(y.enabled).onChange(async x=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.pathMappings[b].enabled=x,await n.plugin.saveSettings())})}).addButton(T=>{T.setIcon("trash").setTooltip(c("Remove")).onClick(async()=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.pathMappings.splice(b,1),await n.plugin.saveSettings(),p())})})}),new aa.Setting(u).addButton(y=>{y.setButtonText(c("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 aa.Setting(a).setName(c("Metadata-based Project Detection")).setDesc(c("Configure project detection from file frontmatter")).setHeading(),new aa.Setting(a).setName(c("Enable metadata project detection")).setDesc(c("Detect project from file frontmatter metadata")).addToggle(k=>{var v,y;k.setValue(((y=(v=n.plugin.settings.projectConfig)==null?void 0:v.metadataConfig)==null?void 0:y.enabled)||!1).onChange(async b=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.metadataConfig&&(n.plugin.settings.projectConfig.metadataConfig.enabled=b,await n.plugin.saveSettings())})}),new aa.Setting(a).setName(c("Metadata key")).setDesc(c("The frontmatter key to use for project name")).addText(k=>{var v,y;k.setPlaceholder("project").setValue(((y=(v=n.plugin.settings.projectConfig)==null?void 0:v.metadataConfig)==null?void 0:y.metadataKey)||"project").onChange(async b=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.metadataConfig&&(n.plugin.settings.projectConfig.metadataConfig.metadataKey=b||"project",await n.plugin.saveSettings())})}),new aa.Setting(a).setName(c("Config File-based Project Detection")).setDesc(c("Configure project detection from project configuration files")).setHeading(),new aa.Setting(a).setName(c("Enable config file project detection")).setDesc(c("Detect project from project configuration files")).addToggle(k=>{var v,y;k.setValue(((y=(v=n.plugin.settings.projectConfig)==null?void 0:v.configFile)==null?void 0:y.enabled)||!1).onChange(async b=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.configFile&&(n.plugin.settings.projectConfig.configFile.enabled=b,await n.plugin.saveSettings())})}),new aa.Setting(a).setName(c("Config file name")).setDesc(c("Name of the project configuration file")).addText(k=>{var v,y;k.setPlaceholder("project.md").setValue(((y=(v=n.plugin.settings.projectConfig)==null?void 0:v.configFile)==null?void 0:y.fileName)||"project.md").onChange(async b=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.configFile&&(n.plugin.settings.projectConfig.configFile.fileName=b||"project.md",await n.plugin.saveSettings())})}),new aa.Setting(a).setName(c("Custom Project Detection Methods")).setDesc(c("Configure additional methods to detect project files")).setHeading();let m=a.createDiv({cls:"project-detection-methods-container"}),h=()=>{var v,y,b,w,T;m.empty(),(y=(v=n.plugin.settings.projectConfig)==null?void 0:v.metadataConfig)!=null&&y.detectionMethods||(b=n.plugin.settings.projectConfig)!=null&&b.metadataConfig&&(n.plugin.settings.projectConfig.metadataConfig.detectionMethods=[]);let k=((T=(w=n.plugin.settings.projectConfig)==null?void 0:w.metadataConfig)==null?void 0:T.detectionMethods)||[];k.forEach((x,C)=>{let S=m.createDiv({cls:"project-detection-method"});new aa.Setting(S).setName(`${c("Method")} ${C+1}`).addDropdown(D=>{D.addOption("metadata",c("Metadata Property")).addOption("tag",c("Tag")).addOption("link",c("Linked Note")).setValue(x.type).onChange(async E=>{x.type=E,await n.plugin.saveSettings(),h()})}).addText(D=>{let E=x.type==="metadata"||x.type==="tag"?"project":"category";D.setPlaceholder(E).setValue(x.propertyKey).onChange(async R=>{x.propertyKey=R,await n.plugin.saveSettings()})}).addToggle(D=>{D.setValue(x.enabled).onChange(async E=>{x.enabled=E,await n.plugin.saveSettings()})}).addButton(D=>{D.setIcon("trash").setTooltip(c("Remove")).onClick(async()=>{k.splice(C,1),await n.plugin.saveSettings(),h()})}),x.type==="link"&&new aa.Setting(S).setName(c("Link Filter")).setDesc(c("Optional: Only match links containing this text")).addText(D=>{D.setPlaceholder("Projects/").setValue(x.linkFilter||"").onChange(async E=>{x.linkFilter=E,await n.plugin.saveSettings()})})}),new aa.Setting(m).addButton(x=>{x.setButtonText(c("Add Detection Method")).setCta().onClick(async()=>{var C,S,D,E,R,I;(S=(C=n.plugin.settings.projectConfig)==null?void 0:C.metadataConfig)!=null&&S.detectionMethods||(D=n.plugin.settings.projectConfig)!=null&&D.metadataConfig&&(n.plugin.settings.projectConfig.metadataConfig.detectionMethods=[]),(I=(R=(E=n.plugin.settings.projectConfig)==null?void 0:E.metadataConfig)==null?void 0:R.detectionMethods)==null||I.push({type:"metadata",propertyKey:"",enabled:!1}),await n.plugin.saveSettings(),h()})})};h(),new aa.Setting(a).setName(c("Metadata Mappings")).setDesc(c("Configure how metadata fields are mapped and transformed")).setHeading();let g=a.createDiv({cls:"project-metadata-mappings-container"}),f=()=>{var v,y;g.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 k=((y=n.plugin.settings.projectConfig)==null?void 0:y.metadataMappings)||[];k.length===0&&g.createDiv({cls:"no-mappings-message",text:c("No metadata mappings configured yet.")}),k.forEach((b,w)=>{let T=g.createDiv({cls:"project-metadata-mapping-row"}),x=new Set(k.filter((S,D)=>D!==w).map(S=>S.targetKey).filter(S=>S&&S.trim()!=="")),C=["project","context","priority","tags","startDate","scheduledDate","dueDate","completedDate","createdDate","recurrence"].filter(S=>!x.has(S)||S===b.targetKey);new aa.Setting(T).setName(`${c("Mapping")} ${w+1}`).addText(S=>{S.setPlaceholder(c("Source key (e.g., proj)")).setValue(b.sourceKey).onChange(async D=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.metadataMappings[w].sourceKey=D,await n.plugin.saveSettings())})}).addDropdown(S=>{S.addOption("",c("Select target field")),C.forEach(D=>{S.addOption(D,D)}),S.setValue(b.targetKey).onChange(async D=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.metadataMappings[w].targetKey=D,await n.plugin.saveSettings(),f())})}).addToggle(S=>{S.setTooltip(c("Enabled")).setValue(b.enabled).onChange(async D=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.metadataMappings[w].enabled=D,await n.plugin.saveSettings())})}).addButton(S=>{S.setIcon("trash").setTooltip(c("Remove")).onClick(async()=>{n.plugin.settings.projectConfig&&(n.plugin.settings.projectConfig.metadataMappings.splice(w,1),await n.plugin.saveSettings(),f())})})}),new aa.Setting(g).addButton(b=>{b.setButtonText(c("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(()=>{f()},100))})})};f(),new aa.Setting(a).setName(c("Default Project Naming")).setDesc(c("Configure fallback project naming when no explicit project is found")).setHeading(),new aa.Setting(a).setName(c("Enable default project naming")).setDesc(c("Use default naming strategy when no project is explicitly defined")).addToggle(k=>{var v,y;k.setValue(((y=(v=n.plugin.settings.projectConfig)==null?void 0:v.defaultProjectNaming)==null?void 0:y.enabled)||!1).onChange(async b=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.defaultProjectNaming&&(n.plugin.settings.projectConfig.defaultProjectNaming.enabled=b,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 aa.Setting(a).setName(c("Naming strategy")).setDesc(c("Strategy for generating default project names")).addDropdown(k=>{var v,y;k.addOption("filename",c("Use filename")).addOption("foldername",c("Use folder name")).addOption("metadata",c("Use metadata field")).setValue(((y=(v=n.plugin.settings.projectConfig)==null?void 0:v.defaultProjectNaming)==null?void 0:y.strategy)||"filename").onChange(async b=>{var w,T;(w=n.plugin.settings.projectConfig)!=null&&w.defaultProjectNaming||(n.plugin.settings.projectConfig.defaultProjectNaming={strategy:"filename",stripExtension:!0,enabled:!1}),(T=n.plugin.settings.projectConfig)!=null&&T.defaultProjectNaming&&(n.plugin.settings.projectConfig.defaultProjectNaming.strategy=b,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 aa.Setting(a).setName(c("Metadata key")).setDesc(c("Metadata field to use as project name")).addText(k=>{var v,y;k.setPlaceholder(c("Enter metadata key (e.g., project-name)")).setValue(((y=(v=n.plugin.settings.projectConfig)==null?void 0:v.defaultProjectNaming)==null?void 0:y.metadataKey)||"").onChange(async b=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.defaultProjectNaming&&(n.plugin.settings.projectConfig.defaultProjectNaming.metadataKey=b,await n.plugin.saveSettings())})}),((d=(l=n.plugin.settings.projectConfig)==null?void 0:l.defaultProjectNaming)==null?void 0:d.strategy)==="filename"&&new aa.Setting(a).setName(c("Strip file extension")).setDesc(c("Remove file extension from filename when using as project name")).addToggle(k=>{var v,y;k.setValue(((y=(v=n.plugin.settings.projectConfig)==null?void 0:v.defaultProjectNaming)==null?void 0:y.stripExtension)||!0).onChange(async b=>{var w;(w=n.plugin.settings.projectConfig)!=null&&w.defaultProjectNaming&&(n.plugin.settings.projectConfig.defaultProjectNaming.stripExtension=b,await n.plugin.saveSettings())})})}}var _c=require("obsidian");z();function $E(n,a){new _c.Setting(a).setName(c("Priority Picker Settings")).setDesc(c("Toggle to enable priority picker dropdown for emoji and letter format priorities.")).setHeading(),new _c.Setting(a).setName(c("Enable priority picker")).setDesc(c("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 _c.Setting(a).setName(c("Enable priority keyboard shortcuts")).setDesc(c("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 _c.Setting(a).setName(c("Date picker")).setHeading(),new _c.Setting(a).setName(c("Enable date picker")).setDesc(c("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 _c.Setting(a).setName(c("Recurrence date calculation")).setDesc(c("Choose how to calculate the next date for recurring tasks")).addDropdown(e=>e.addOption("due",c("Based on due date")).addOption("scheduled",c("Based on scheduled date")).addOption("current",c("Based on current date")).setValue(n.plugin.settings.recurrenceDateBase||"due").onChange(async t=>{n.plugin.settings.recurrenceDateBase=t,n.applySettingsUpdate()}))}var Ds=require("obsidian");z();function YE(n,a){new Ds.Setting(a).setName(c("Timeline Sidebar")).setHeading(),new Ds.Setting(a).setName(c("Enable Timeline Sidebar")).setDesc(c("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 Ds.Setting(a).setName(c("Auto-open on startup")).setDesc(c("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 Ds.Setting(a).setName(c("Show completed tasks")).setDesc(c("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 Ds.Setting(a).setName(c("Focus mode by default")).setDesc(c("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 Ds.Setting(a).setName(c("Maximum events to show")).setDesc(c("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 Ds.Setting(a).setName(c("Open Timeline Sidebar")).setDesc(c("Click to open the timeline sidebar view.")).addButton(e=>e.setButtonText(c("Open Timeline")).setCta().onClick(async()=>{await n.plugin.activateTimelineSidebarView(),new Ds.Notice(c("Timeline sidebar opened"))})))}var Re=require("obsidian");z();var et=require("obsidian");z();function Es(n,a,e={}){var r;let t=(r=a.settings)==null?void 0:r.fileSource;if(!t){console.warn("[FileSourceSettings] Missing fileSource configuration on plugin settings");return}e.showEnableToggle!==!1&&s7(n,a,t),t.enabled&&(o7(n,a,t),t.recognitionStrategies.metadata.enabled&&l7(n,a),c7(n,a,t),d7(n,a,t),u7(n,a,t),p7(n,a,t))}function s7(n,a,e){new et.Setting(n).setName(c("Enable File Task")).setDesc(c("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(),Es(n,a)}))}function o7(n,a,e){new et.Setting(n).setHeading().setName(c("Recognition Strategies")).setDesc(c("Configure how files are recognized as tasks. At least one strategy must be enabled."));let t=n.createDiv("file-source-strategy-container");new et.Setting(t).setName(c("Metadata-based Recognition")).setDesc(c("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(),Es(n,a)})),e.recognitionStrategies.metadata.enabled&&(new et.Setting(t).setName(c("Task Fields")).setDesc(c("Configure metadata fields that indicate a file should be treated as a task (e.g., dueDate, status, priority)")).addButton(s=>{let o=()=>{var d;return(d=e.recognitionStrategies.metadata.taskFields)!=null?d:[]},l=()=>{let d=o();d.length===0?s.setButtonText(c("Configure Task Fields")):s.setButtonText(c("{{count}} field(s) configured",{interpolation:{count:d.length.toString()}}))};l(),s.onClick(()=>{new hn(a,{title:c("Configure Task Fields"),description:c("Add metadata fields that indicate a file should be treated as a task (e.g., dueDate, status, priority)"),placeholder:c("Enter metadata field name"),values:o(),onSave:async d=>{a.settings.fileSource.recognitionStrategies.metadata.taskFields=d,await a.saveSettings(),l(),new et.Notice(c("Task fields updated. Rebuild the task index to apply to existing files."),6e3)}}).open()})}),new et.Setting(t).setName(c("Require All Fields")).setDesc(c("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 et.Setting(r).setName(c("Tag-based Recognition")).setDesc(c("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(),Es(n,a)})),e.recognitionStrategies.tags.enabled&&(new et.Setting(r).setName(c("Task Tags")).setDesc(c("Configure tags that indicate a file should be treated as a task (e.g., #task, #todo, #actionable)")).addButton(s=>{let o=()=>{var d;return(d=e.recognitionStrategies.tags.taskTags)!=null?d:[]},l=()=>{let d=o();d.length===0?s.setButtonText(c("Configure Task Tags")):s.setButtonText(c("{{count}} tag(s) configured",{interpolation:{count:d.length.toString()}}))};l(),s.onClick(()=>{new hn(a,{title:c("Configure Task Tags"),description:c("Add tags that indicate a file should be treated as a task (e.g., #task, #todo, #actionable)"),placeholder:c("Enter tag (e.g., #task)"),values:o(),onSave:async d=>{a.settings.fileSource.recognitionStrategies.tags.taskTags=d,await a.saveSettings(),l(),new et.Notice(c("Task tags updated. Rebuild the task index to apply to existing files."),6e3)}}).open()})}),new et.Setting(r).setName(c("Tag Matching Mode")).setDesc(c("How tags should be matched against file tags")).addDropdown(s=>s.addOption("exact",c("Exact match")).addOption("prefix",c("Prefix match")).addOption("contains",c("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 et.Setting(i).setName(c("Path-based Recognition")).setDesc(c("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(),Es(n,a)})),e.recognitionStrategies.paths.enabled){new et.Setting(i).setName(c("Task Paths")).setDesc(c("Configure paths that contain task files (e.g., Projects/, Tasks/2024/, Work/TODO/)")).addButton(d=>{let u=()=>{var m;return(m=e.recognitionStrategies.paths.taskPaths)!=null?m:[]},p=()=>{let m=u();m.length===0?d.setButtonText(c("Configure Task Paths")):d.setButtonText(c("{{count}} path(s) configured",{interpolation:{count:m.length.toString()}}))};p(),d.onClick(()=>{new hn(a,{title:c("Configure Task Paths"),description:c("Add paths that contain task files (e.g., Projects/, Tasks/2024/, Work/TODO/)"),placeholder:c("Enter path (e.g., Projects/, Tasks/**/*.md)"),values:u(),onSave:async m=>{a.settings.fileSource.recognitionStrategies.paths.taskPaths=m,await a.saveSettings(),p(),new et.Notice(c("Task paths updated. Rebuild the task index to apply to existing files."),6e3)}}).open()})}),new et.Setting(i).setName(c("Path Matching Mode")).setDesc(c("How paths should be matched")).addDropdown(d=>d.addOption("prefix",c("Prefix (e.g., Projects/ matches Projects/App.md)")).addOption("glob",c("Glob pattern (e.g., Projects/**/*.md)")).addOption("regex",c("Regular expression (advanced)")).setValue(e.recognitionStrategies.paths.matchMode).onChange(async u=>{a.settings.fileSource.recognitionStrategies.paths.matchMode=u,await a.saveSettings(),n.empty(),Es(n,a)}));let s=i.createDiv("setting-item-description"),o=e.recognitionStrategies.paths.matchMode,l="";switch(o){case"prefix":l=c("Examples:")+`
\u2022 Projects/ \u2192 `+c("matches all files under Projects folder")+`
\u2022 Tasks/2024/ \u2192 `+c("matches all files under Tasks/2024 folder");break;case"glob":l=c("Examples:")+`
\u2022 Projects/**/*.md \u2192 `+c("all .md files in Projects and subfolders")+`
\u2022 Tasks/*.task.md \u2192 `+c("files ending with .task.md in Tasks folder")+`
\u2022 Work/*/TODO.md \u2192 `+c("TODO.md in any direct subfolder of Work");break;case"regex":l=c("Examples:")+`
\u2022 ^Projects/.*\\.md$ \u2192 `+c("all .md files in Projects folder")+`
\u2022 ^Tasks/\\d{4}-\\d{2}-\\d{2} \u2192 `+c("files starting with date in Tasks");break}s.createEl("pre",{text:l,attr:{style:"font-size: 0.9em; color: var(--text-muted);"}})}}function l7(n,a){new et.Setting(n).setName(c("Metadata Mappings")).setDesc(c("Configure how metadata fields are mapped and transformed")).setHeading();let e=n.createDiv({cls:"file-source-metadata-mappings-container"}),t=()=>{Array.isArray(a.settings.fileSource.metadataMappings)||(a.settings.fileSource.metadataMappings=[])},r=["status","project","context","area","priority","tags","startDate","scheduledDate","dueDate","completedDate","createdDate","recurrence"],i=()=>{e.empty(),t();let s=a.settings.fileSource.metadataMappings;s.length===0&&e.createDiv({cls:"setting-item-description",text:c("No metadata mappings configured yet.")});let o=new Set(s.filter(l=>l.enabled&&l.targetKey).map(l=>l.targetKey));s.forEach((l,d)=>{let u=e.createDiv({cls:"file-source-metadata-mapping-row"}),p=r.filter(m=>!o.has(m)||m===l.targetKey);new et.Setting(u).setName(`${c("Mapping")} ${d+1}`).addText(m=>{m.setPlaceholder(c("Source key (e.g., proj)")).setValue(l.sourceKey).onChange(async h=>{t(),a.settings.fileSource.metadataMappings[d].sourceKey=h,await a.saveSettings()})}).addDropdown(m=>{m.addOption("",c("Select target field")),p.forEach(h=>{m.addOption(h,h)}),m.setValue(l.targetKey).onChange(async h=>{t(),a.settings.fileSource.metadataMappings[d].targetKey=h,await a.saveSettings(),i()})}).addToggle(m=>{m.setTooltip(c("Enabled")).setValue(l.enabled).onChange(async h=>{t(),a.settings.fileSource.metadataMappings[d].enabled=h,await a.saveSettings(),i()})}).addButton(m=>{m.setIcon("trash").setTooltip(c("Remove")).onClick(async()=>{t(),a.settings.fileSource.metadataMappings.splice(d,1),await a.saveSettings(),i()})})}),new et.Setting(e).addButton(l=>l.setButtonText(c("Add Metadata Mapping")).setCta().onClick(async()=>{t(),a.settings.fileSource.metadataMappings.push({sourceKey:"",targetKey:"",enabled:!0}),await a.saveSettings(),i()}))};i()}function c7(n,a,e){new et.Setting(n).setHeading().setName(c("Task Properties for Files")),new et.Setting(n).setName(c("Task Title Source")).setDesc(c("What should be used as the task title when a file becomes a task")).addDropdown(t=>t.addOption("filename",c("Filename")).addOption("title",c("Frontmatter title")).addOption("h1",c("First H1 heading")).addOption("custom",c("Custom metadata field")).setValue(e.fileTaskProperties.contentSource).onChange(async r=>{a.settings.fileSource.fileTaskProperties.contentSource=r,await a.saveSettings(),n.empty(),Es(n,a)})),e.fileTaskProperties.contentSource==="custom"&&new et.Setting(n).setName(c("Custom Content Field")).setDesc(c("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 et.Setting(n).setName(c("Strip File Extension")).setDesc(c("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 et.Setting(n).setName(c("Prefer Frontmatter Title")).setDesc(c("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 et.Setting(n).setName(c("Default Task Status")).setDesc(c("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 d7(n,a,e){if(new et.Setting(n).setName(c("Status Mapping")).setHeading().setDesc(c("Map between human-readable metadata values (e.g., 'completed') and task symbols (e.g., 'x').")),new et.Setting(n).setName(c("Enable Status Mapping")).setDesc(c("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(),Es(n,a)})}),e.statusMapping&&e.statusMapping.enabled){new et.Setting(n).setName(c("Sync from Task Status Settings")).setDesc(c("Populate FileSource status mapping from your checkbox status configuration")).addButton(m=>m.setButtonText(c("Sync now")).setCta().onClick(async()=>{try{let h=a.dataflowOrchestrator;if(h!=null&&h.updateSettings)h.updateSettings(a.settings),new et.Notice(c("FileSource status mapping synced"));else{let g=a.settings.taskStatuses||{},f={};for(let[v,y]of Object.entries(g)){let b=String(y).split("|").filter(Boolean);for(let w of b){if(w==="/>"){f["/"]=v,f[">"]=v;continue}if(w.length===1)f[w]=v;else for(let T of w)f[T]=v}}let k={completed:"completed",inProgress:"in-progress",planned:"planned",abandoned:"cancelled",notStarted:"not-started"};a.settings.fileSource.statusMapping=a.settings.fileSource.statusMapping||{enabled:!0,metadataToSymbol:{},symbolToMetadata:{},autoDetect:!0,caseSensitive:!1},a.settings.fileSource.statusMapping.symbolToMetadata={};for(let[v,y]of Object.entries(f)){let b=k[y];b&&(a.settings.fileSource.statusMapping.symbolToMetadata[v]=b)}await a.saveSettings(),new et.Notice(c("FileSource status mapping synced"))}}catch(h){console.error("Failed to sync FileSource status mapping:",h),new et.Notice(c("Failed to sync mapping"))}})),new et.Setting(n).setName(c("Case Sensitive Matching")).setDesc(c("Enable case-sensitive matching for status values")).addToggle(m=>m.setValue(e.statusMapping.caseSensitive).onChange(async h=>{a.settings.fileSource.statusMapping.caseSensitive=h,await a.saveSettings()})),new et.Setting(n).setName(c("Auto-detect Status Mappings")).setDesc(c("Automatically sync with task status configuration")).addToggle(m=>m.setValue(e.statusMapping.autoDetect).onChange(async h=>{a.settings.fileSource.statusMapping.autoDetect=h,await a.saveSettings()}));let t=n.createDiv("file-source-status-mappings");t.createEl("h5",{text:c("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:c("Metadata Value")}),l.createEl("th",{text:"\u2192"}),l.createEl("th",{text:c("Task Symbol")});let d=s.createEl("tbody");i.forEach(m=>{let h=d.createEl("tr");h.createEl("td",{text:m.metadata}),h.createEl("td",{text:"\u2192"}),h.createEl("td",{text:m.symbol===" "?"(space)":m.symbol})}),n.createEl("h5",{text:c("Custom Mappings")});let u=n.createEl("p");u.textContent=c("Add custom status mappings for your workflow."),new et.Setting(n).setName(c("Add Custom Mapping")).setDesc(c("Enter metadata value and symbol (e.g., 'done:x')")).addText(m=>m.setPlaceholder("done:x").onChange(async h=>{if(h.includes(":")){let[g,f]=h.split(":",2);g&&f&&(a.settings.fileSource.statusMapping.metadataToSymbol[g]=f,a.settings.fileSource.statusMapping.symbolToMetadata[f]||(a.settings.fileSource.statusMapping.symbolToMetadata[f]=g),await a.saveSettings(),m.setValue(""))}})).addButton(m=>m.setButtonText(c("Add")).setCta().onClick(()=>{let h=n.querySelector(".setting-item:last-child input[type='text']");h&&h.dispatchEvent(new Event("change"))}));let p=n.createDiv("setting-item-description");p.createEl("strong",{text:c("Note:")}),p.createEl("span",{text:" "+c("Status mappings work with your Task Status Settings. ")+c("The symbols defined here should match those in your checkbox status configuration.")})}}function u7(n,a,e){new et.Setting(n).setHeading().setName(c("Performance")),new et.Setting(n).setName(c("Cache TTL")).setDesc(c("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 p7(n,a,e){let t=n.createDiv("file-source-stats");new et.Setting(t).setHeading().setName(c("Statistics"));let r=e.enabled?c("File Task is enabled and monitoring files"):c("File Task is disabled");if(t.createEl("p",{text:r}),e.enabled){let i=m7(e);t.createEl("p",{text:c("Active strategies: ")+i})}}function m7(n){let a=[];return n.recognitionStrategies.metadata.enabled&&a.push(c("Metadata")),n.recognitionStrategies.tags.enabled&&a.push(c("Tags")),n.recognitionStrategies.templates.enabled&&a.push(c("Templates")),n.recognitionStrategies.paths.enabled&&a.push(c("Paths")),a.length>0?a.join(", "):c("None")}function GE(n,a){new Re.Setting(a).setName(c("Index & Task Source Configuration")).setDesc(c("Configure how Task Genius discovers and indexes tasks from various sources including inline tasks, file metadata, and projects.")).setHeading(),new Re.Setting(a).setName(c("Enable Indexer")).addToggle(g=>{var f;g.setValue((f=n.plugin.settings.enableIndexer)!=null?f:!0),g.onChange(async k=>{n.plugin.settings.enableIndexer=k,n.applySettingsUpdate(),n.display(),new Re.Notice(c("Please restart Obsidian for the Indexer change to take effect."),8e3)})});let e=qE(n.plugin.settings),t=a.createDiv({cls:"tg-index-task-source-wrapper"}),r=t.createDiv({cls:"fluent-view-tabs tg-index-task-source-switcher"}),i=r.createEl("button",{cls:"fluent-view-tab clickable-icon"}),s=i.createSpan({cls:"fluent-view-tab-icon"});(0,Re.setIcon)(s,"check-square"),i.createSpan({cls:"fluent-view-tab-label"}).setText(c("Checkbox Tasks"));let o=r.createEl("button",{cls:"fluent-view-tab clickable-icon"}),l=o.createSpan({cls:"fluent-view-tab-icon"});(0,Re.setIcon)(l,"file-text"),o.createSpan({cls:"fluent-view-tab-label"}).setText(c("File Tasks"));let d=t.createDiv({cls:"tg-index-task-source-panels"}),u=d.createDiv({cls:"tg-index-task-source-panel"}),p=d.createDiv({cls:"tg-index-task-source-panel"});(()=>{let g=u,f=e.inlineTasksEnabled!==!1;new Re.Setting(g).setName(c("Enable checkbox tasks")).setDesc(c("Index markdown checkbox tasks. Disable this if you only want to use file-based or external task sources.")).addToggle(b=>{b.setValue(f),b.onChange(w=>{let T=qE(n.plugin.settings);T.inlineTasksEnabled=w,n.applySettingsUpdate(),w||new Re.Notice(c("Checkbox task indexing disabled. The index will prune inline tasks shortly."),6e3),v(w)})});let k=g.createDiv({cls:"tg-source-settings-body"}),v=b=>{k.classList.toggle("tg-source-disabled",!b)};if(v(f),g=k,new Re.Setting(g).setName(c("Inline task parsing")).setDesc(c("Configure how tasks are parsed from markdown content.")).setHeading(),new Re.Setting(g).setName(c("Prefer metadata format of task")).setDesc(c("You can choose dataview format or tasks format, that will influence both index and save format.")).addDropdown(b=>{b.addOption("dataview","Dataview").addOption("tasks","Tasks").setValue(n.plugin.settings.preferMetadataFormat).onChange(async w=>{n.plugin.settings.preferMetadataFormat=w,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})}),new Re.Setting(g).setName(c("Enable custom date formats")).setDesc(c("Enable custom date format patterns for parsing dates. When enabled, the parser will try your custom formats before falling back to default formats.")).addToggle(b=>{var w;b.setValue((w=n.plugin.settings.enableCustomDateFormats)!=null?w:!1).onChange(T=>{n.plugin.settings.enableCustomDateFormats=T,n.applySettingsUpdate(),n.display()})}),n.plugin.settings.enableCustomDateFormats){new Re.Setting(g).setName(c("Custom date formats")).setDesc(c("Configure custom date format patterns.")).addButton(C=>{let S=()=>{var E;return(E=n.plugin.settings.customDateFormats)!=null?E:[]},D=()=>{let E=S();E.length===0?C.setButtonText(c("Configure Date Formats")):C.setButtonText(c("{{count}} format(s) configured",{interpolation:{count:E.length.toString()}}))};D(),C.onClick(()=>{new hn(n.plugin,{title:c("Configure Custom Date Formats"),description:c("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:c("Enter date format (e.g., yyyy-MM-dd or yyyyMMdd_HHmmss)"),values:S(),onSave:E=>{n.plugin.settings.customDateFormats=E,n.applySettingsUpdate(),D(),new Re.Notice(c("Date formats updated. The parser will now recognize these custom formats."),6e3)}}).open()})});let b=g.createDiv({cls:"task-genius-date-examples"});b.createEl("h4",{text:c("Format Examples:"),cls:"task-genius-examples-header"});let w=[{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"}],T=b.createEl("table",{cls:"task-genius-date-examples-table"}),x=T.createEl("tr");x.createEl("th",{text:c("Format Pattern")}),x.createEl("th",{text:c("Example")}),w.forEach(({format:C,example:S})=>{let D=T.createEl("tr");D.createEl("td",{text:C}),D.createEl("td",{text:S})})}let y=n.plugin.settings.preferMetadataFormat==="dataview";if(new Re.Setting(g).setName(c("Project tag prefix")).setDesc(y?c("Customize the prefix used for project tags in dataview format (e.g., 'project' for [project:: myproject]). Changes require reindexing."):c("Customize the prefix used for project tags (e.g., 'project' for #project/myproject). Changes require reindexing.")).addText(b=>{b.setPlaceholder("project").setValue(n.plugin.settings.projectTagPrefix[n.plugin.settings.preferMetadataFormat]).onChange(async w=>{n.plugin.settings.projectTagPrefix[n.plugin.settings.preferMetadataFormat]=w||"project",n.applySettingsUpdate()})}),new Re.Setting(g).setName(c("Context tag prefix")).setDesc(y?c("Customize the prefix used for context tags in dataview format (e.g., 'context' for [context:: home]). Changes require reindexing."):c("Customize the prefix used for context tags (e.g., '@home' for @home). Changes require reindexing.")).addText(b=>{b.setPlaceholder("context").setValue(n.plugin.settings.contextTagPrefix[n.plugin.settings.preferMetadataFormat]).onChange(async w=>{n.plugin.settings.contextTagPrefix[n.plugin.settings.preferMetadataFormat]=w||(y?"context":"@"),n.applySettingsUpdate()})}),new Re.Setting(g).setName(c("Ignore all tasks behind heading")).setDesc(c("Configure headings to ignore. Tasks under these headings will be excluded from indexing.")).addButton(b=>{let w=()=>(n.plugin.settings.ignoreHeading||"").split(",").map(C=>C.trim()).filter(C=>C),T=()=>{let x=w();x.length===0?b.setButtonText(c("Configure Ignore Headings")):b.setButtonText(c("{{count}} heading(s) configured",{interpolation:{count:x.length.toString()}}))};T(),b.onClick(()=>{new hn(n.plugin,{title:c("Configure Ignore Headings"),description:c("Add headings to ignore. Tasks under these headings will be excluded from indexing. Examples: '## Project', '## Inbox', '# Archive'"),placeholder:c("Enter heading (e.g., ## Inbox)"),values:w(),onSave:x=>{n.plugin.settings.ignoreHeading=x.join(", "),n.applySettingsUpdate(),T(),new Re.Notice(c("Heading filters updated. Rebuild the task index to apply to existing tasks."),6e3)}}).open()})}),new Re.Setting(g).setName(c("Focus all tasks behind heading")).setDesc(c("Configure headings to focus on. Only tasks under these headings will be included in indexing.")).addButton(b=>{let w=()=>(n.plugin.settings.focusHeading||"").split(",").map(C=>C.trim()).filter(C=>C),T=()=>{let x=w();x.length===0?b.setButtonText(c("Configure Focus Headings")):b.setButtonText(c("{{count}} heading(s) configured",{interpolation:{count:x.length.toString()}}))};T(),b.onClick(()=>{new hn(n.plugin,{title:c("Configure Focus Headings"),description:c("Add headings to focus on. Only tasks under these headings will be included in indexing. Examples: '## Project', '## Inbox', '# Tasks'"),placeholder:c("Enter heading (e.g., ## Tasks)"),values:w(),onSave:x=>{n.plugin.settings.focusHeading=x.join(", "),n.applySettingsUpdate(),T(),new Re.Notice(c("Heading filters updated. Rebuild the task index to apply to existing tasks."),6e3)}}).open()})}),new Re.Setting(g).setName(c("Use daily note path as date")).setDesc(c("If enabled, the daily note path will be used as the date for tasks.")).addToggle(b=>{b.setValue(n.plugin.settings.useDailyNotePathAsDate),b.onChange(w=>{n.plugin.settings.useDailyNotePathAsDate=w,n.applySettingsUpdate(),setTimeout(()=>{n.display()},200)})}),n.plugin.settings.useDailyNotePathAsDate){let b=document.createDocumentFragment();b.createEl("div",{text:c("Task Genius will use moment.js and also this format to parse the daily note path.")}),b.createEl("div",{text:c("You need to set `yyyy` instead of `YYYY` in the format string. And `dd` instead of `DD`.")}),new Re.Setting(g).setName(c("Daily note format")).setDesc(b).addText(w=>{w.setValue(n.plugin.settings.dailyNoteFormat),w.onChange(T=>{n.plugin.settings.dailyNoteFormat=T,n.applySettingsUpdate()})}),new Re.Setting(g).setName(c("Daily note path")).setDesc(c("Select the folder that contains the daily note.")).addText(w=>{new ev(n.app,w.inputEl,n.plugin),w.setValue(n.plugin.settings.dailyNotePath),w.onChange(T=>{n.plugin.settings.dailyNotePath=T,n.applySettingsUpdate()})}),new Re.Setting(g).setName(c("Use as date type")).setDesc(c("You can choose due, start, or scheduled as the date type for tasks.")).addDropdown(w=>{w.addOption("due",c("Due")).addOption("start",c("Start")).addOption("scheduled",c("Scheduled")).setValue(n.plugin.settings.useAsDateType).onChange(async T=>{n.plugin.settings.useAsDateType=T,n.applySettingsUpdate()})})}new Re.Setting(g).setName(c("File Metadata Inheritance")).setDesc(c("Configure how tasks inherit metadata from file frontmatter")).setHeading(),new Re.Setting(g).setName(c("Enable file metadata inheritance")).setDesc(c("Allow tasks to inherit metadata properties from their file's frontmatter")).addToggle(b=>b.setValue(n.plugin.settings.fileMetadataInheritance.enabled).onChange(async w=>{n.plugin.settings.fileMetadataInheritance.enabled=w,n.applySettingsUpdate(),new oa(n.plugin,{title:c("Reindex"),message:c("This change affects how tasks inherit metadata from files. Rebuild the index now so changes take effect immediately?"),confirmText:c("Reindex"),cancelText:c("Cancel"),onConfirm:async T=>{var x;if(T)try{new Re.Notice(c("Clearing task cache and rebuilding index...")),await((x=n.plugin.dataflowOrchestrator)==null?void 0:x.onSettingsChange(["parser"])),new Re.Notice(c("Task index completely rebuilt"))}catch(C){console.error("Failed to reindex after inheritance setting change:",C),new Re.Notice(c("Failed to reindex tasks"))}}}).open(),setTimeout(()=>{n.display()},200)})),n.plugin.settings.fileMetadataInheritance.enabled&&(new Re.Setting(g).setName(c("Inherit from frontmatter")).setDesc(c("Tasks inherit metadata properties like priority, context, etc. from file frontmatter when not explicitly set on the task")).addToggle(b=>b.setValue(n.plugin.settings.fileMetadataInheritance.inheritFromFrontmatter).onChange(async w=>{n.plugin.settings.fileMetadataInheritance.inheritFromFrontmatter=w,n.applySettingsUpdate(),new oa(n.plugin,{title:c("Reindex"),message:c("This change affects how tasks inherit metadata from files. Rebuild the index now so changes take effect immediately?"),confirmText:c("Reindex"),cancelText:c("Cancel"),onConfirm:async T=>{var x;if(T)try{new Re.Notice(c("Clearing task cache and rebuilding index...")),await((x=n.plugin.dataflowOrchestrator)==null?void 0:x.onSettingsChange(["parser"])),new Re.Notice(c("Task index completely rebuilt"))}catch(C){console.error("Failed to reindex after inheritance setting change:",C),new Re.Notice(c("Failed to reindex tasks"))}}}).open()})),new Re.Setting(g).setName(c("Inherit from frontmatter for subtasks")).setDesc(c("Allow subtasks to inherit metadata from file frontmatter. When disabled, only top-level tasks inherit file metadata")).addToggle(b=>b.setValue(n.plugin.settings.fileMetadataInheritance.inheritFromFrontmatterForSubtasks).onChange(async w=>{n.plugin.settings.fileMetadataInheritance.inheritFromFrontmatterForSubtasks=w,n.applySettingsUpdate(),new oa(n.plugin,{title:c("Reindex"),message:c("This change affects how tasks inherit metadata from files. Rebuild the index now so changes take effect immediately?"),confirmText:c("Reindex"),cancelText:c("Cancel"),onConfirm:async T=>{var x;if(T)try{new Re.Notice(c("Clearing task cache and rebuilding index...")),await((x=n.plugin.dataflowOrchestrator)==null?void 0:x.onSettingsChange(["parser"])),new Re.Notice(c("Task index completely rebuilt"))}catch(C){console.error("Failed to reindex after inheritance setting change:",C),new Re.Notice(c("Failed to reindex tasks"))}}}).open()})))})(),(()=>{let g=p,f=n.plugin.settings.fileSource,k=e.fileTasksEnabled!==!1&&!!(f!=null&&f.enabled);new Re.Setting(g).setName(c("Enable file tasks")).setDesc(c("Allow Task Genius to recognize files as tasks using metadata, tags, or templates.")).addToggle(x=>{x.setValue(k),x.onChange(C=>{let S=qE(n.plugin.settings);S.fileTasksEnabled=C,n.plugin.settings.fileSource?n.plugin.settings.fileSource.enabled=C:n.plugin.settings.fileSource={enabled:C},n.applySettingsUpdate(),y(C),T(),C||new Re.Notice(c("File task recognition disabled. Existing file tasks will be pruned shortly."),6e3)})});let v=g.createDiv({cls:"tg-source-settings-body"}),y=x=>{v.classList.toggle("tg-source-disabled",!x)};y(k);let w=v.createDiv("file-source-container"),T=()=>{var x;w.empty(),(x=n.plugin.settings.fileSource)!=null&&x.enabled?Es(w,n.plugin,{showEnableToggle:!1}):w.createDiv({cls:"setting-item-description",text:c("File tasks are disabled. Enable them to configure recognition strategies.")})};T()})();let m=g=>{u.toggleAttribute("hidden",g!=="inline"),p.toggleAttribute("hidden",g!=="file"),i.classList.toggle("is-active",g==="inline"),o.classList.toggle("is-active",g==="file")},h=e.inlineTasksEnabled===!1&&e.fileTasksEnabled!==!1?"file":"inline";m(h),i.addEventListener("click",()=>m("inline")),o.addEventListener("click",()=>m("file")),new Re.Setting(a).setName(c("Performance Configuration")).setDesc(c("Configure performance-related indexing settings")).setHeading(),new Re.Setting(a).setName(c("Enable worker processing")).setDesc(c("Use background worker for file parsing to improve performance. Recommended for large vaults.")).addToggle(g=>{var f,k,v;g.setValue((v=(k=(f=n.plugin.settings.fileSource)==null?void 0:f.performance)==null?void 0:k.enableWorkerProcessing)!=null?v:!0),g.onChange(y=>{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=y,n.plugin.settings.fileParsingConfig&&(n.plugin.settings.fileParsingConfig.enableWorkerProcessing=y),n.applySettingsUpdate()})}),new Re.Setting(a).setName(c("Index Maintenance")).setDesc(c("Tools for managing and rebuilding the task index")).setHeading(),new Re.Setting(a).setName(c("Rebuild index")).setDesc(c("Force a complete rebuild of the task index. Use this if you notice missing or incorrect tasks.")).setClass("mod-warning").addButton(g=>{g.setButtonText(c("Rebuild")).onClick(async()=>{new oa(n.plugin,{title:c("Reindex"),message:c("Are you sure you want to force reindex all tasks?"),confirmText:c("Reindex"),cancelText:c("Cancel"),onConfirm:async f=>{if(f)try{new Re.Notice(c("Clearing task cache and rebuilding index...")),n.plugin.dataflowOrchestrator&&await n.plugin.dataflowOrchestrator.rebuild(),new Re.Notice(c("Task index completely rebuilt"))}catch(k){console.error("Failed to force reindex tasks:",k),new Re.Notice(c("Failed to force reindex tasks"))}}}).open()})})}function qE(n){var e,t,r,i,s;let a=(r=n.fileFilter.scopeControls)!=null?r:n.fileFilter.scopeControls={inlineTasksEnabled:!0,fileTasksEnabled:(t=(e=n.fileSource)==null?void 0:e.enabled)!=null?t:!1};return a.inlineTasksEnabled===void 0&&(a.inlineTasksEnabled=!0),a.fileTasksEnabled===void 0&&(a.fileTasksEnabled=(s=(i=n.fileSource)==null?void 0:i.enabled)!=null?s:!1),a}var ko=require("obsidian");z();function KE(n,a){var e;if(new ko.Setting(a).setName(c("Desktop Integration")).setDesc(c("Configure system tray, notifications, and desktop features")).setHeading(),!ko.Platform.isDesktopApp){new ko.Setting(a).setName(c("Desktop only")).setDesc(c("Desktop integration features are only available in the desktop app"));return}new ko.Setting(a).setName(c("Enable notifications")).setDesc(c("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,d,u,p,m,h,g,f,k,v,y;let s=n.plugin.settings;s.notifications={...s.notifications,enabled:i,dailySummary:{enabled:(d=(l=(o=s.notifications)==null?void 0:o.dailySummary)==null?void 0:l.enabled)!=null?d:!0,time:(m=(p=(u=s.notifications)==null?void 0:u.dailySummary)==null?void 0:p.time)!=null?m:"09:00"},perTask:{enabled:(f=(g=(h=s.notifications)==null?void 0:h.perTask)==null?void 0:g.enabled)!=null?f:!1,leadMinutes:(y=(v=(k=s.notifications)==null?void 0:k.perTask)==null?void 0:v.leadMinutes)!=null?y:10}},n.applyNotificationsUpdateLight(),setTimeout(()=>{n.display()},200)})}),(e=n.plugin.settings.notifications)!=null&&e.enabled&&(new ko.Setting(a).setName(c("Daily summary")).setDesc(c("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,d,u;let o=n.plugin.settings;o.notifications={...o.notifications,dailySummary:{enabled:s,time:(u=(d=(l=o.notifications)==null?void 0:l.dailySummary)==null?void 0:d.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 d,u,p;let l=n.plugin.settings;l.notifications={...l.notifications,dailySummary:{enabled:(p=(u=(d=l.notifications)==null?void 0:d.dailySummary)==null?void 0:u.enabled)!=null?p:!0,time:o||"09:00"}},n.applyNotificationsUpdateLight()}),t.inputEl.type="time"}).addButton(t=>{t.setButtonText(c("Send now")),t.onClick(async()=>{var r;await((r=n.plugin.notificationManager)==null?void 0:r.triggerDailySummary())})}),new ko.Setting(a).setName(c("Per-task reminders")).setDesc(c("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,d,u;let o=n.plugin.settings;o.notifications={...o.notifications,perTask:{enabled:s,leadMinutes:(u=(d=(l=o.notifications)==null?void 0:l.perTask)==null?void 0:d.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,h;let d=Math.max(0,parseInt(l||"0",10)||0),u=n.plugin.settings;u.notifications={...u.notifications,perTask:{enabled:(h=(m=(p=u.notifications)==null?void 0:p.perTask)==null?void 0:m.enabled)!=null?h:!1,leadMinutes:d}},n.applyNotificationsUpdateLight()}),t.inputEl.type="number",t.inputEl.min="0",t.inputEl.max="1440",t.inputEl.step="5"}).addButton(t=>{t.setButtonText(c("Scan now")),t.onClick(()=>{var r;return(r=n.plugin.notificationManager)==null?void 0:r.triggerImminentScan()})})),new ko.Setting(a).setName(c("Tray indicator")).setDesc(c("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(c("Update now")),t.onClick(async()=>{var r;await((r=n.plugin.notificationManager)==null?void 0:r.triggerDailySummary())})})}var xa=require("obsidian");z();var Lt=require("obsidian");z();var h7=[{value:0,label:"Sunday",short:"Sun"},{value:1,label:"Monday",short:"Mon"},{value:2,label:"Tuesday",short:"Tue"},{value:3,label:"Wednesday",short:"Wed"},{value:4,label:"Thursday",short:"Thu"},{value:5,label:"Friday",short:"Fri"},{value:6,label:"Saturday",short:"Sat"}],Sf=class extends Lt.Modal{constructor(e,t,r,i){super(e);this.currentTab="basic";this.plugin=t,this.view=JSON.parse(JSON.stringify(r)),this.onSave=i}onOpen(){let{contentEl:e}=this;this.modalEl.addClass("calendar-view-config-modal"),e.createDiv({cls:"modal-header"}).createEl("h2",{text:this.view.createdAt===this.view.updatedAt?c("Create Calendar View"):c("Edit Calendar View")});let r=e.createDiv({cls:"calendar-config-tabs"});this.renderTabs(r);let i=e.createDiv({cls:"calendar-config-content"});this.renderTabContent(i);let s=e.createDiv({cls:"modal-button-container"});this.renderFooter(s)}renderTabs(e){[{id:"basic",label:c("Basic"),icon:"settings"},{id:"date",label:c("Date Filter"),icon:"calendar"},{id:"time",label:c("Time Filter"),icon:"clock"},{id:"display",label:c("Display"),icon:"eye"}].forEach(r=>{let i=e.createDiv({cls:`calendar-config-tab ${this.currentTab===r.id?"is-active":""}`}),s=i.createSpan({cls:"calendar-config-tab-icon"});(0,Lt.setIcon)(s,r.icon),i.createSpan({cls:"calendar-config-tab-label",text:r.label}),r.id==="time"&&(this.view.baseViewType==="month"||this.view.baseViewType==="agenda"||this.view.baseViewType==="year")?(i.addClass("is-disabled"),i.setAttribute("aria-disabled","true"),i.title=c("Time filter is only available for Week and Day views")):i.onclick=()=>{this.currentTab=r.id,this.refreshContent()}})}renderTabContent(e){switch(e.empty(),this.currentTab){case"basic":this.renderBasicTab(e);break;case"date":this.renderDateTab(e);break;case"time":this.renderTimeTab(e);break;case"display":this.renderDisplayTab(e);break}}renderBasicTab(e){new Lt.Setting(e).setName(c("View Name")).setDesc(c("Display name for this calendar view")).addText(s=>{s.setPlaceholder(c("My Custom View")).setValue(this.view.name).onChange(o=>{this.view.name=o})});let r=new Lt.Setting(e).setName(c("View Icon")).setDesc(c("Choose an icon for this view")).controlEl.createDiv({cls:"calendar-view-icon-selector"}),i=new Lt.ButtonComponent(r);i.setIcon(this.view.icon),$o(i,{containerEl:r,plugin:this.plugin,onIconSelected:s=>{this.view.icon=s,i.setIcon(s)}}),new Lt.Setting(e).setName(c("Base View Type")).setDesc(c("The calendar layout this view is based on")).addDropdown(s=>{s.addOption("month",c("Month View")).addOption("week",c("Week View")).addOption("day",c("Day View")).addOption("agenda",c("Agenda View")).addOption("year",c("Year View")).setValue(this.view.baseViewType).onChange(o=>{this.view.baseViewType=o,(o==="month"||o==="agenda"||o==="year")&&this.view.calendarConfig.timeFilter&&(this.view.calendarConfig.timeFilter.enabled=!1),this.refreshContent()})}),this.view.baseViewType!=="agenda"&&new Lt.Setting(e).setName(c("First Day of Week")).setDesc(c("Which day should the week start on")).addDropdown(s=>{var o,l;s.addOption("",c("System Default")).addOption("0",c("Sunday")).addOption("1",c("Monday")).addOption("2",c("Tuesday")).addOption("3",c("Wednesday")).addOption("4",c("Thursday")).addOption("5",c("Friday")).addOption("6",c("Saturday")).setValue((l=(o=this.view.calendarConfig.firstDayOfWeek)==null?void 0:o.toString())!=null?l:"").onChange(d=>{this.view.calendarConfig.firstDayOfWeek=d?parseInt(d):void 0})}),this.view.baseViewType==="agenda"&&(new Lt.Setting(e).setName(c("Days to Show")).setDesc(c("Number of days to display in the agenda")).addSlider(s=>{var o;s.setLimits(1,30,1).setValue((o=this.view.calendarConfig.daysToShow)!=null?o:7).setDynamicTooltip().onChange(l=>{this.view.calendarConfig.daysToShow=l})}),new Lt.Setting(e).setName(c("Show Empty Days")).setDesc(c("Display days with no events")).addToggle(s=>{var o;s.setValue((o=this.view.calendarConfig.showEmptyDays)!=null?o:!1).onChange(l=>{this.view.calendarConfig.showEmptyDays=l})}))}renderDateTab(e){let t=this.view.calendarConfig.dayFilter||{type:"none"};if(new Lt.Setting(e).setName(c("Day Filter")).setDesc(c("Control which days are displayed in the calendar")).addDropdown(r=>{r.addOption("none",c("Show All Days")).addOption("hideWeekends",c("Hide Weekends")).addOption("hideWeekdays",c("Weekends Only")).addOption("customDays",c("Custom Selection")).setValue(t.type).onChange(i=>{this.view.calendarConfig.dayFilter={type:i,hiddenDays:i==="customDays"?t.hiddenDays||[]:void 0},this.refreshContent()})}),t.type==="customDays"){let i=new Lt.Setting(e).setName(c("Hidden Days")).setDesc(c("Select which days to hide from the calendar")).controlEl.createDiv({cls:"calendar-days-selector"}),s=t.hiddenDays||[];h7.forEach(o=>{let l=i.createDiv({cls:`calendar-day-chip ${s.includes(o.value)?"is-hidden":""}`});l.createSpan({text:c(o.short)}),l.onclick=()=>{var p;let d=((p=this.view.calendarConfig.dayFilter)==null?void 0:p.hiddenDays)||[],u=d.indexOf(o.value);u===-1?d.push(o.value):d.splice(u,1),this.view.calendarConfig.dayFilter={type:"customDays",hiddenDays:d},l.toggleClass("is-hidden",d.includes(o.value))}})}this.view.baseViewType==="month"&&new Lt.Setting(e).setName(c("Show Week Numbers")).setDesc(c("Display week numbers in the month view")).addToggle(r=>{var i;r.setValue((i=this.view.calendarConfig.showWeekNumbers)!=null?i:!1).onChange(s=>{this.view.calendarConfig.showWeekNumbers=s})})}renderTimeTab(e){if(this.view.baseViewType==="month"||this.view.baseViewType==="agenda"||this.view.baseViewType==="year"){e.createDiv({cls:"calendar-config-notice",text:c("Time filter is only available for Week and Day views.")});return}let t=this.view.calendarConfig.timeFilter||{enabled:!1,type:"workingHours",startHour:9,endHour:18};if(new Lt.Setting(e).setName(c("Enable Time Filter")).setDesc(c("Only show certain hours of the day")).addToggle(r=>{r.setValue(t.enabled).onChange(i=>{this.view.calendarConfig.timeFilter={...t,enabled:i},this.refreshContent()})}),t.enabled&&(new Lt.Setting(e).setName(c("Time Range Preset")).setDesc(c("Choose a preset or customize the time range")).addDropdown(r=>{r.addOption("workingHours",c("Working Hours (9:00-18:00)")).addOption("custom",c("Custom Range")).setValue(t.type).onChange(i=>{i==="workingHours"?this.view.calendarConfig.timeFilter={enabled:!0,type:"workingHours",startHour:9,endHour:18}:this.view.calendarConfig.timeFilter={...t,type:"custom"},this.refreshContent()})}),t.type==="custom")){new Lt.Setting(e).setName(c("Start Hour")).setDesc(c("First hour to display (0-23)")).addSlider(i=>{i.setLimits(0,23,1).setValue(t.startHour).setDynamicTooltip().onChange(s=>{this.view.calendarConfig.timeFilter={...this.view.calendarConfig.timeFilter,startHour:s},this.updateTimeRangeDisplay(e)})}),new Lt.Setting(e).setName(c("End Hour")).setDesc(c("Last hour to display (0-23)")).addSlider(i=>{i.setLimits(1,24,1).setValue(t.endHour).setDynamicTooltip().onChange(s=>{this.view.calendarConfig.timeFilter={...this.view.calendarConfig.timeFilter,endHour:s},this.updateTimeRangeDisplay(e)})});let r=e.createDiv({cls:"calendar-time-range-display"});this.updateTimeRangeDisplay(e,r)}}updateTimeRangeDisplay(e,t){let r=t||e.querySelector(".calendar-time-range-display");if(!r)return;let i=this.view.calendarConfig.timeFilter;if(!i)return;let s=o=>`${o.toString().padStart(2,"0")}:00`;r.textContent=`${s(i.startHour)} - ${s(i.endHour)}`}renderDisplayTab(e){this.view.baseViewType!=="agenda"&&new Lt.Setting(e).setName(c("Show Event Counts")).setDesc(c("Display event count badges on date cells")).addToggle(t=>{var r;t.setValue((r=this.view.calendarConfig.showEventCounts)!=null?r:!0).onChange(i=>{this.view.calendarConfig.showEventCounts=i})}),this.view.baseViewType==="month"&&new Lt.Setting(e).setName(c("Max Events Per Row")).setDesc(c("Maximum events to show per day cell before showing '+N more'")).addSlider(t=>{var r;t.setLimits(1,10,1).setValue((r=this.view.calendarConfig.maxEventsPerRow)!=null?r:3).setDynamicTooltip().onChange(i=>{this.view.calendarConfig.maxEventsPerRow=i})}),this.view.baseViewType==="agenda"&&new Lt.Setting(e).setName(c("Day Header Format")).setDesc(c("Format for day headers (e.g., dddd, MMMM D)")).addText(t=>{var r;t.setPlaceholder("dddd, MMMM D").setValue((r=this.view.calendarConfig.dayHeaderFormat)!=null?r:"").onChange(i=>{this.view.calendarConfig.dayHeaderFormat=i||void 0})}),this.view.baseViewType==="year"&&e.createDiv({cls:"calendar-config-notice",text:c("Year view displays 12 mini-month calendars. Use the Date Filter tab to hide weekends if needed.")}),new Lt.Setting(e).setName(c("Custom Date Formats")).setDesc(c("Customize how dates are displayed in headers")).setHeading(),new Lt.Setting(e).setName(c("Month Header Format")).setDesc(c("Format for month view header (e.g., yyyy M)")).addText(t=>{var r,i;t.setPlaceholder("yyyy M").setValue((i=(r=this.view.calendarConfig.dateFormats)==null?void 0:r.monthHeader)!=null?i:"").onChange(s=>{this.view.calendarConfig.dateFormats||(this.view.calendarConfig.dateFormats={}),this.view.calendarConfig.dateFormats.monthHeader=s||void 0})}),new Lt.Setting(e).setName(c("Day Header Format")).setDesc(c("Format for day view header (e.g., yyyy'\u5E74'M'\u6708'd'\u65E5')")).addText(t=>{var r,i;t.setPlaceholder("yyyy'\u5E74'M'\u6708'd'\u65E5'").setValue((i=(r=this.view.calendarConfig.dateFormats)==null?void 0:r.dayHeader)!=null?i:"").onChange(s=>{this.view.calendarConfig.dateFormats||(this.view.calendarConfig.dateFormats={}),this.view.calendarConfig.dateFormats.dayHeader=s||void 0})})}renderFooter(e){new Lt.ButtonComponent(e).setButtonText(c("Cancel")).onClick(()=>{this.close()}),new Lt.ButtonComponent(e).setButtonText(c("Save")).setCta().onClick(()=>{this.view.name.trim()||(this.view.name=c("Untitled View")),this.onSave(this.view),this.close()})}refreshContent(){let{contentEl:e}=this,t=e.querySelector(".calendar-config-tabs");t&&(t.empty(),this.renderTabs(t));let r=e.querySelector(".calendar-config-content");r&&this.renderTabContent(r)}onClose(){let{contentEl:e}=this;e.empty()}};var g7=[{type:"month",name:c("Month View"),icon:"calendar",description:c("Display tasks in a monthly calendar grid")},{type:"week",name:c("Week View"),icon:"calendar-range",description:c("Display tasks in a weekly time grid with hourly slots")},{type:"day",name:c("Day View"),icon:"calendar-days",description:c("Display tasks for a single day with detailed time slots")},{type:"agenda",name:c("Agenda View"),icon:"list",description:c("Display upcoming tasks in a list format grouped by day")},{type:"year",name:c("Year View"),icon:"calendar-clock",description:c("Display a full year with 12 mini-month calendars")}];function QE(n,a){new xa.Setting(a).setName(c("Calendar View Configuration")).setDesc(c("Create custom calendar views based on Month, Week, or Day views. Each custom view can have its own display settings.")).setHeading(),new xa.Setting(a).setName(c("Built-in View Templates")).setDesc(c("Use these templates as a starting point to create your own custom calendar views.")).setHeading();let e=a.createDiv({cls:"calendar-templates-container"});g7.forEach(i=>{let s=e.createDiv({cls:"calendar-template-card"}),o=s.createDiv({cls:"calendar-template-icon"});(0,xa.setIcon)(o,i.icon);let l=s.createDiv({cls:"calendar-template-info"});l.createDiv({cls:"calendar-template-name",text:i.name}),l.createDiv({cls:"calendar-template-description",text:i.description});let d=s.createDiv({cls:"calendar-template-actions"}),u=new xa.ButtonComponent(d);u.setButtonText(c("Create Custom View")),u.setIcon("plus"),u.onClick(()=>{D2(n,i.type,()=>{Pw(n,t)})})}),new xa.Setting(a).setName(c("Custom Calendar Views")).setDesc(c("Your custom calendar views. Drag to reorder, toggle visibility, or edit settings.")).setHeading();let t=a.createDiv({cls:"custom-calendar-views-container"});Pw(n,t);let r=a.createDiv({cls:"calendar-add-view-container"});new xa.Setting(r).addButton(i=>{i.setButtonText(c("Create New Calendar View")).setCta().setIcon("plus").onClick(()=>{D2(n,"month",()=>{Pw(n,t)})})})}function Pw(n,a){a.empty();let e=n.plugin.settings.customCalendarViews||[];if(e.length===0){let r=a.createDiv({cls:"calendar-views-empty"}),i=r.createDiv({cls:"calendar-views-empty-icon"});(0,xa.setIcon)(i,"calendar-plus"),r.createDiv({cls:"calendar-views-empty-text",text:c("No custom calendar views yet")}),r.createDiv({cls:"calendar-views-empty-hint",text:c("Create a custom view from the templates above to get started.")});return}let t=a.createDiv({cls:"calendar-views-list sortable-calendar-views"});e.forEach(r=>{f7(n,t,r,()=>{Pw(n,a)})}),Pr.create(t,{animation:150,handle:".calendar-view-drag-handle",ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",onEnd:async r=>{let i=n.plugin.settings.customCalendarViews||[],[s]=i.splice(r.oldIndex,1);i.splice(r.newIndex,0,s),i.forEach((o,l)=>{o.order=l,o.updatedAt=Date.now()}),n.plugin.settings.customCalendarViews=i,await n.plugin.saveSettings(),n.app.workspace.trigger("task-genius:calendar-views-changed",{reason:"order-changed"})}})}function f7(n,a,e,t){let r=a.createDiv({cls:`calendar-view-item ${e.enabled?"":"is-disabled"}`,attr:{"data-view-id":e.id}}),i=r.createDiv({cls:"calendar-view-drag-handle"});(0,xa.setIcon)(i,"grip-vertical");let s=r.createDiv({cls:"calendar-view-icon"});(0,xa.setIcon)(s,e.icon);let o=r.createDiv({cls:"calendar-view-info"});o.createDiv({cls:"calendar-view-name",text:e.name});let l=o.createDiv({cls:"calendar-view-meta"}),d={month:c("Month"),week:c("Week"),day:c("Day"),agenda:c("Agenda"),year:c("Year")}[e.baseViewType];l.createSpan({cls:"calendar-view-base-type",text:c("Based on: ")+d});let u=k7(e);u&&l.createSpan({cls:"calendar-view-config-summary",text:u});let p=r.createDiv({cls:"calendar-view-actions"}),m=p.createEl("button",{cls:["calendar-view-action-btn","clickable-icon"],attr:{"aria-label":e.enabled?c("Disable"):c("Enable")}});(0,xa.setIcon)(m,e.enabled?"eye":"eye-off"),m.onclick=async()=>{e.enabled=!e.enabled,e.updatedAt=Date.now(),await n.plugin.saveSettings(),t(),n.app.workspace.trigger("task-genius:calendar-views-changed",{reason:"visibility-changed",viewId:e.id})};let h=p.createEl("button",{cls:["calendar-view-action-btn","clickable-icon"],attr:{"aria-label":c("Edit")}});(0,xa.setIcon)(h,"pencil"),h.onclick=()=>{v7(n,e,t)};let g=p.createEl("button",{cls:["calendar-view-action-btn","clickable-icon"],attr:{"aria-label":c("Duplicate")}});(0,xa.setIcon)(g,"copy"),g.onclick=async()=>{let k={...JSON.parse(JSON.stringify(e)),id:`custom-calendar-${Date.now()}`,name:e.name+" "+c("(Copy)"),createdAt:Date.now(),updatedAt:Date.now()},v=n.plugin.settings.customCalendarViews||[];v.push(k),n.plugin.settings.customCalendarViews=v,await n.plugin.saveSettings(),new xa.Notice(c("View duplicated: ")+k.name),t(),n.app.workspace.trigger("task-genius:calendar-views-changed",{reason:"view-added",viewId:k.id})};let f=p.createEl("button",{cls:["calendar-view-action-btn","calendar-view-action-delete","clickable-icon"],attr:{"aria-label":c("Delete")}});(0,xa.setIcon)(f,"trash"),f.onclick=async()=>{let k=n.plugin.settings.customCalendarViews||[],v=k.findIndex(y=>y.id===e.id);v!==-1&&(k.splice(v,1),n.plugin.settings.customCalendarViews=k,await n.plugin.saveSettings(),new xa.Notice(c("View deleted: ")+e.name),t(),n.app.workspace.trigger("task-genius:calendar-views-changed",{reason:"view-deleted",viewId:e.id}))}}function k7(n){var t,r,i,s,o;let a=[],e=n.calendarConfig;return((t=e.dayFilter)==null?void 0:t.type)==="hideWeekends"?a.push(c("No weekends")):((r=e.dayFilter)==null?void 0:r.type)==="hideWeekdays"?a.push(c("Weekends only")):((i=e.dayFilter)==null?void 0:i.type)==="customDays"&&((s=e.dayFilter.hiddenDays)!=null&&s.length)&&a.push(c("Custom days")),(o=e.timeFilter)!=null&&o.enabled&&a.push(`${e.timeFilter.startHour}:00-${e.timeFilter.endHour}:00`),e.firstDayOfWeek===1?a.push(c("Mon first")):e.firstDayOfWeek===6&&a.push(c("Sat first")),a.join(" \xB7 ")}function D2(n,a,e){let t={id:`custom-calendar-${Date.now()}`,name:c("New Calendar View"),icon:"calendar",baseViewType:a,enabled:!0,order:(n.plugin.settings.customCalendarViews||[]).length,calendarConfig:{firstDayOfWeek:void 0,showWeekNumbers:!1,showEventCounts:!0,dayFilter:{type:"none"},timeFilter:{enabled:!1,type:"workingHours",startHour:9,endHour:18}},createdAt:Date.now(),updatedAt:Date.now()};new Sf(n.app,n.plugin,t,async r=>{let i=n.plugin.settings.customCalendarViews||[];i.push(r),n.plugin.settings.customCalendarViews=i,await n.plugin.saveSettings(),new xa.Notice(c("Calendar view created: ")+r.name),e(),n.app.workspace.trigger("task-genius:calendar-views-changed",{reason:"view-added",viewId:r.id})}).open()}function v7(n,a,e){new Sf(n.app,n.plugin,{...a},async t=>{let r=n.plugin.settings.customCalendarViews||[],i=r.findIndex(s=>s.id===t.id);i!==-1&&(t.updatedAt=Date.now(),r[i]=t,n.plugin.settings.customCalendarViews=r,await n.plugin.saveSettings(),new xa.Notice(c("Calendar view updated: ")+t.name),e(),n.app.workspace.trigger("task-genius:calendar-views-changed",{reason:"view-updated",viewId:t.id}))}).open()}var Kr=require("obsidian");z();function XE(n,a){if(new Kr.Setting(a).setName(c("File Filter")).setHeading(),new Kr.Setting(a).setName(c("Enable File Filter")).setDesc(c("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(),XE(n,a)})),!n.plugin.settings.fileFilter.enabled)return;new Kr.Setting(a).setName(c("File Filter Mode")).setDesc(c("Choose whether to include only specified files/folders (whitelist) or exclude them (blacklist)")).addDropdown(p=>p.addOption("whitelist",c("Whitelist (Include only)")).addOption("blacklist",c("Blacklist (Exclude)")).setValue(n.plugin.settings.fileFilter.mode).onChange(async m=>{n.plugin.settings.fileFilter.mode=m,s(),o()})),new Kr.Setting(a).setName(c("File Filter Rules")).setDesc(c("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 h=e.createDiv({cls:"file-filter-rule"}),g=h.createDiv({cls:"file-filter-rule-type"});g.createEl("label",{text:c("Type:")}),new Kr.DropdownComponent(g).addOption("file",c("File")).addOption("folder",c("Folder")).addOption("pattern",c("Pattern")).setValue(p.type).onChange(async T=>{p.type=T,s(),o(),t()});let f=h.createDiv({cls:"file-filter-rule-scope"});f.createEl("label",{text:c("Scope:")}),new Kr.DropdownComponent(f).addOption("both",c("Both")).addOption("inline",c("Inline")).addOption("file",c("File")).setValue(p.scope||"both").onChange(async T=>{p.scope=T,s(),o()});let k=h.createDiv({cls:"file-filter-rule-path"});k.createEl("label",{text:c("Path:")});let v=k.createEl("input",{type:"text",value:p.path,placeholder:p.type==="pattern"?"*.tmp, temp/*":p.type==="folder"?"path/to/folder":"path/to/file.md"});p.type==="folder"?new ts(n.app,v,n.plugin,"single"):p.type==="file"&&new Go(v,n.plugin,T=>{p.path=T.path,v.value=T.path,s(),o()}),v.addEventListener("input",async()=>{p.path=v.value,s(),o()});let y=h.createDiv({cls:"file-filter-rule-enabled"});y.createEl("label",{text:c("Enabled:")});let b=y.createEl("input",{type:"checkbox"});b.checked=p.enabled,b.addEventListener("change",async()=>{p.enabled=b.checked,s(),o()});let w=h.createEl("button",{cls:"file-filter-rule-delete mod-destructive"});(0,Kr.setIcon)(w,"trash"),w.title=c("Delete rule"),w.addEventListener("click",async()=>{n.plugin.settings.fileFilter.rules.splice(m,1),s(),t(),o()})})},r=a.createDiv({cls:"file-filter-add-rule"});new Kr.Setting(r).setName(c("Add Filter Rule")).addButton(p=>p.setButtonText(c("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(c("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(c("Add Pattern Rule")).onClick(async()=>{let m={type:"pattern",path:"",enabled:!0};n.plugin.settings.fileFilter.rules.push(m),s(),t(),o()})),new Kr.Setting(a).setName(c("Refresh Statistics")).setDesc(c("Manually refresh filter statistics to see current data")).addButton(p=>p.setButtonText(c("Refresh")).onClick(()=>{p.setDisabled(!0),p.setButtonText(c("Refreshing...")),setTimeout(()=>{l(),p.setDisabled(!1),p.setButtonText(c("Refresh"))},100)}));let i=a.createDiv({cls:"file-filter-stats"}),s=(0,Kr.debounce)(()=>n.applySettingsUpdate(),300,!0),o=(0,Kr.debounce)(()=>l(),200,!0),l=()=>{try{let p={rulesCount:n.plugin.settings.fileFilter.rules.filter(f=>f.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:`${c("Active Rules")}:`}),m.createEl("span",{cls:"stat-value",text:p.rulesCount.toString()});let h=i.createDiv({cls:"file-filter-stat"});h.createEl("span",{cls:"stat-label",text:`${c("Cache Size")}:`}),h.createEl("span",{cls:"stat-value",text:p.cacheSize.toString()});let g=i.createDiv({cls:"file-filter-stat"});g.createEl("span",{cls:"stat-label",text:`${c("Status")}:`}),g.createEl("span",{cls:"stat-value",text:n.plugin.settings.fileFilter.enabled?c("Enabled"):c("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:c("Error loading statistics")})}};t(),l();let d=setInterval(l,5e3),u=new MutationObserver(p=>{p.forEach(m=>{m.removedNodes.forEach(h=>{var g;(h===a||(g=h==null?void 0:h.contains)!=null&&g.call(h,a))&&(clearInterval(d),u.disconnect())})})});a.parentNode&&u.observe(a.parentNode,{childList:!0,subtree:!0})}var fi=require("obsidian");z();function E2(n,a){a.createEl("h2",{text:c("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 fi.Setting(a).setName(c("Enable Time Parsing")).setDesc(c("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 fi.Setting(a).setName(c("Remove Original Time Expressions")).setDesc(c("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())})}),new fi.Setting(a).setName(c("Supported Languages")).setDesc(c("Currently supports English and Chinese time expressions. More languages may be added in future updates.")).setHeading(),new fi.Setting(a).setName(c("Date Keywords Configuration")).setDesc(c("Configure keywords for date parsing")).setHeading(),new fi.Setting(a).setName(c("Start Date Keywords")).setDesc(c("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(d=>d.trim()).filter(d=>d.length>0),n.applySettingsUpdate())}),r.inputEl.rows=2}),new fi.Setting(a).setName(c("Due Date Keywords")).setDesc(c("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(d=>d.trim()).filter(d=>d.length>0),n.applySettingsUpdate())}),r.inputEl.rows=2}),new fi.Setting(a).setName(c("Scheduled Date Keywords")).setDesc(c("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(d=>d.trim()).filter(d=>d.length>0),n.applySettingsUpdate())}),r.inputEl.rows=2}),new fi.Setting(a).setName(c("Time Format Configuration")).setDesc(c("Configure the format of time expressions")).setHeading(),new fi.Setting(a).setName(c("Preferred Time Format")).setDesc(c("Default format preference for ambiguous time expressions")).addDropdown(r=>{var i;r.addOption("12h",c("12-hour format (1:30 PM)")).addOption("24h",c("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 fi.Setting(a).setName(c("Default AM/PM Period")).setDesc(c("Default period when AM/PM is ambiguous in 12-hour format")).addDropdown(r=>{var i;r.addOption("AM",c("AM (Morning)")).addOption("PM",c("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 fi.Setting(a).setName(c("Midnight Crossing Behavior")).setDesc(c("How to handle time ranges that cross midnight (e.g., 23:00-01:00)")).addDropdown(r=>{var i;r.addOption("next-day",c("Next day (23:00 today - 01:00 tomorrow)")).addOption("same-day",c("Same day (treat as error)")).addOption("error",c("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 fi.Setting(a).setName(c("Time Range Separators")).setDesc(c("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}),new fi.Setting(a).setName(c("Examples")).setDesc(c("Examples of time expressions")).setHeading();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 Uc=require("obsidian");var P2=require("obsidian");var M2=[{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"}];z();var Iw=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 M2){let e={...a,name:c(a.translationKey),description:a.descriptionKey?c(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,d)=>{let u=l.querySelector(".setting-item-name"),p=l.querySelector(".setting-item-description"),m=((u==null?void 0:u.textContent)||"").trim(),h=((p==null?void 0:p.textContent)||"").trim();if(!m)return;let g=l.getAttribute("data-setting-id");(!g||t.has(g))&&(g=this.generateStableId(i,m,d),l.setAttribute("data-setting-id",g)),t.add(g);let f=this.generateKeywords(m,h),k={id:g,tabId:i,name:m,description:h||void 0,keywords:f,translationKey:m,descriptionKey:h||void 0,category:s};this.addItemToIndex(k)})})}addItemToIndex(a){this.index.items.push(a);for(let e of a.keywords){let t=e.toLowerCase();this.index.keywordMap.has(t)||this.index.keywordMap.set(t,[]),this.index.keywordMap.get(t).push(a.id)}this.index.tabMap.has(a.tabId)||this.index.tabMap.set(a.tabId,[]),this.index.tabMap.get(a.tabId).push(a)}generateStableId(a,e,t){let r=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return`${a}-${r||"setting"}-${t}`}generateKeywords(a,e){let r=`${a} ${e||""}`.toLowerCase().replace(/[^a-z0-9\s]+/g," ").split(/\s+/).filter(Boolean);return Array.from(new Set(r)).sort((s,o)=>o.length-s.length).slice(0,12)}buildIndex(){this.index.items.length=0,this.index.keywordMap.clear(),this.index.tabMap.clear(),this.rootEl?this.buildIndexFromDOM(this.rootEl):this.buildIndexFromStatic()}search(a,e=10){if(this.isInitialized||this.initialize(),!a||a.trim().length<2)return[];let t=a.toLowerCase().trim(),r=[],i=new Set,s=(0,P2.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}}};z();var Bu=require("obsidian");z();var Aw=class{constructor(a,e,t){var r;this.containerEl=a,this.plugin=e,this.settingTab=t,this.currentWorkspaceId=((r=e.workspaceManager)==null?void 0:r.getActiveWorkspace().id)||"",this.render()}render(){let a=this.containerEl.createDiv({cls:"workspace-settings-selector"});if(!this.plugin.workspaceManager)return;let e=this.plugin.workspaceManager.getActiveWorkspace();this.buttonEl=a.createDiv({cls:"workspace-settings-selector-button"});let t=this.buttonEl.createDiv({cls:"workspace-icon"});(0,Bu.setIcon)(t,e.icon||"layers");let r=this.buttonEl.createSpan({cls:"workspace-name",text:e.name}),i=this.buttonEl.createDiv({cls:"workspace-dropdown-icon"});(0,Bu.setIcon)(i,"chevron-down"),this.buttonEl.addEventListener("click",s=>{s.preventDefault(),s.stopPropagation(),this.showWorkspaceMenu(s)})}showWorkspaceMenu(a){if(!this.plugin.workspaceManager)return;let e=new Bu.Menu,t=this.plugin.workspaceManager.getAllWorkspaces(),r=this.plugin.workspaceManager.getActiveWorkspace();t.forEach(i=>{e.addItem(s=>{s.setTitle(i.name).setIcon(i.icon||"layers").onClick(async()=>{await this.switchWorkspace(i.id)}),i.id===r.id&&s.setChecked(!0)})}),e.addSeparator(),e.addItem(i=>{i.setTitle(c("Manage Workspaces...")).setIcon("settings").onClick(()=>{this.settingTab.switchToTab("workspaces")})}),e.showAtMouseEvent(a)}async switchWorkspace(a){this.plugin.workspaceManager&&(await this.plugin.workspaceManager.setActiveWorkspace(a),this.currentWorkspaceId=a,this.updateDisplay(),await this.plugin.saveSettings(),this.settingTab.applySettingsUpdate())}updateDisplay(){if(!this.plugin.workspaceManager||!this.buttonEl)return;let a=this.plugin.workspaceManager.getActiveWorkspace(),e=this.buttonEl.querySelector(".workspace-icon");e&&(e.empty(),(0,Bu.setIcon)(e,a.icon||"layers"));let t=this.buttonEl.querySelector(".workspace-name");t&&(t.textContent=a.name)}setWorkspace(a){this.currentWorkspaceId=a,this.updateDisplay()}};var Fw=class extends Uc.Component{constructor(e,t){super();this.currentResults=[];this.selectedIndex=-1;this.isVisible=!1;this.blurTimeoutId=0;this.workspaceSelector=null;this.settingTab=e,this.indexer=new Iw(t),this.containerEl=t,this.debouncedSearch=(0,Uc.debounce)(r=>this.performSearch(r),100,!0),this.createSearchUI(),this.setupEventListeners()}createSearchUI(){let e=this.containerEl.createDiv();e.addClass("tg-settings-main-container");let t=e.createDiv();t.addClass("tg-settings-header-bar");let r=t.createDiv();r.addClass("tg-workspace-selector-container"),this.settingTab.plugin.workspaceManager&&(this.workspaceSelector=new Aw(r,this.settingTab.plugin,this.settingTab));let i=t.createDiv();i.addClass("tg-settings-search-container");let s=i.createDiv();s.addClass("tg-settings-search-input-container");let o=s.createSpan();o.addClass("tg-settings-search-icon"),(0,Uc.setIcon)(o,"search"),this.searchInputEl=s.createEl("input"),this.searchInputEl.type="text",this.searchInputEl.placeholder=c("Search settings...")+" (Ctrl+K)",this.searchInputEl.addClass("tg-settings-search-input"),this.searchInputEl.setAttribute("aria-label",c("Search settings")),this.searchInputEl.setAttribute("autocomplete","off"),this.searchInputEl.setAttribute("spellcheck","false"),this.clearButton=s.createEl("button"),this.clearButton.addClass("tg-settings-search-clear"),this.clearButton.setAttribute("aria-label",c("Clear search")),(0,Uc.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",c("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=c("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:c("Core Settings"),display:c("Display & Progress"),management:c("Task Management"),workflow:c("Workflow & Automation"),gamification:c("Gamification"),integration:c("Integration"),advanced:c("Advanced"),info:c("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 ut=require("obsidian");z();var vo=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}};var xl=require("obsidian");var Rw=class extends xl.Modal{constructor(a,e){super(a.app),this.plugin=a,this.logs=e,this.filteredLogs=e}onOpen(){this.titleEl.setText("MCP Server Logs"),this.modalEl.addClass("mcp-log-modal");let a=this.contentEl.createDiv({cls:"mcp-log-header"}),e=a.createDiv({cls:"mcp-log-search-container"});this.searchInput=e.createEl("input",{type:"text",placeholder:"Search logs...",cls:"mcp-log-search-input"}),this.searchInput.addEventListener("input",()=>this.filterLogs()),new xl.ButtonComponent(a).setButtonText("Clear Logs").setIcon("trash").setWarning().onClick(()=>{var i,s;(i=this.plugin.mcpServerManager)!=null&&i.getServer()&&((s=this.plugin.mcpServerManager.getServer())==null||s.clearLogs(),this.logs=[],this.filteredLogs=[],this.renderLogs())});let t=this.contentEl.createDiv({cls:"mcp-log-stats"});this.renderStats(t),this.logsContainerEl=this.contentEl.createDiv({cls:"mcp-log-container"}),this.renderLogs();let r=this.contentEl.createDiv({cls:"modal-button-container"});new xl.ButtonComponent(r).setButtonText("Refresh").onClick(()=>{var i,s;(i=this.plugin.mcpServerManager)!=null&&i.getServer()&&(this.logs=((s=this.plugin.mcpServerManager.getServer())==null?void 0:s.getLogs())||[],this.filterLogs())}),new xl.ButtonComponent(r).setButtonText("Close").onClick(()=>{this.close()})}filterLogs(){let a=this.searchInput.value.toLowerCase();a?this.filteredLogs=this.logs.filter(e=>{var t,r;return((t=e.toolName)==null?void 0:t.toLowerCase().includes(a))||e.method.toLowerCase().includes(a)||((r=e.error)==null?void 0:r.toLowerCase().includes(a))||JSON.stringify(e.arguments).toLowerCase().includes(a)}):this.filteredLogs=this.logs,this.renderLogs()}renderStats(a){a.empty();let e=this.logs.length,t=this.logs.filter(s=>s.error).length,r=e-t;a.createDiv({cls:"mcp-log-stats-text"}).setText(`Total: ${e} | Success: ${r} | Errors: ${t}`)}renderLogs(){if(this.logsContainerEl.empty(),this.filteredLogs.length===0){this.logsContainerEl.createDiv({cls:"mcp-log-empty"}).createEl("p",{text:this.logs.length===0?"No logs yet. Tool calls will appear here.":"No logs match your search."});return}this.filteredLogs.forEach((a,e)=>{let t=this.logsContainerEl.createDiv({cls:`mcp-log-entry ${a.error?"mcp-log-error":"mcp-log-success"}`}),r=t.createDiv({cls:"mcp-log-entry-header"});if(r.createDiv({cls:"mcp-log-timestamp"}).setText(pF(a.timestamp)),r.createDiv({cls:"mcp-log-tool-name"}).setText(a.toolName||a.method),r.createDiv({cls:"mcp-log-duration"}).setText(`${a.duration}ms`),a.sessionId){let u=r.createDiv({cls:"mcp-log-session-id"});u.setText(a.sessionId.substring(0,12)+"..."),u.setAttribute("title",a.sessionId)}let l=!1;new xl.ExtraButtonComponent(r).setIcon("chevron-down").onClick(()=>{l=!l,d.toggle(l)});let d=t.createDiv({cls:"mcp-log-details"});if(d.hide(),a.arguments&&Object.keys(a.arguments).length>0){let u=d.createDiv({cls:"mcp-log-section"});u.createEl("div",{cls:"mcp-log-section-title",text:"Arguments:"}),u.createEl("pre",{cls:"mcp-log-section-content"}).setText(JSON.stringify(a.arguments,null,2))}if(a.error){let u=d.createDiv({cls:"mcp-log-section"});u.createEl("div",{cls:"mcp-log-section-title mcp-log-error-title",text:"Error:"}),u.createEl("pre",{cls:"mcp-log-section-content mcp-log-error-content"}).setText(a.error)}else if(a.result){let u=d.createDiv({cls:"mcp-log-section"}),p=u.createEl("div",{cls:"mcp-log-section-title",text:"Result:"});a.truncated&&p.createEl("span",{cls:"mcp-log-truncated-badge",text:" (truncated)"}),u.createEl("pre",{cls:"mcp-log-section-content"}).setText(JSON.stringify(a.result,null,2))}})}onClose(){this.contentEl.empty()}};function I2(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:c("Copy"),cls:"mcp-copy-btn"});s.onclick=async()=>{await navigator.clipboard.writeText(JSON.stringify(a,null,2)),s.setText(c("Copied!")),s.addClass("copied"),setTimeout(()=>{s.setText(c("Copy")),s.removeClass("copied")},2e3)}}function A2(n,a,e,t){var We,lt,_t,ke,mt;if(!ut.Platform.isDesktopApp){a.createEl("div",{text:c("MCP integration is only available on desktop"),cls:"setting-item-description"});return}let r=e.mcpServerManager;a.createEl("h3",{text:c("MCP Server Status")});let i=a.createDiv("mcp-status-container");if(Df(i,r),new ut.Setting(a).setName(c("Enable MCP Server")).setDesc(c("Start the MCP server to allow external tool connections")).addToggle(J=>{var ue;J.setValue(((ue=e.settings.mcpIntegration)==null?void 0:ue.enabled)||!1).onChange(async Ae=>{Ae?new oa(e,{title:c("Enable MCP Server"),message:c(`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:c("Enable MCP Server"),cancelText:c("Cancel"),onConfirm:async Xe=>{Xe?(e.settings.mcpIntegration?e.settings.mcpIntegration.enabled=!0:e.settings.mcpIntegration={enabled:!0,port:7777,host:"127.0.0.1",authToken:vo.generateToken(),enableCors:!0,logLevel:"info"},await e.saveSettings(),r&&(await r.updateConfig({enabled:!0}),Df(i,r)),J.setValue(!0),new ut.Notice(c("MCP Server enabled. Keep your authentication token secure!")),setTimeout(()=>{n.display(),n.openTab("mcp-integration")},800)):(J.setValue(!1),n.display(),n.openTab("mcp-integration"))}}).open():(e.settings.mcpIntegration&&(e.settings.mcpIntegration.enabled=!1),await e.saveSettings(),r&&(await r.updateConfig({enabled:!1}),Df(i,r)))})}),!((We=e.settings.mcpIntegration)!=null&&We.enabled))return;a.createEl("h3",{text:c("Server Configuration")}),new ut.Setting(a).setName(c("Host")).setDesc(c("Server host address. Use 127.0.0.1 for local only, 0.0.0.0 for all interfaces")).addDropdown(J=>{var ue;J.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(((ue=e.settings.mcpIntegration)==null?void 0:ue.host)||"127.0.0.1").onChange(async Ae=>{e.settings.mcpIntegration&&(Ae==="0.0.0.0"&&e.settings.mcpIntegration.host!=="0.0.0.0"?new oa(e,{title:c("Security Warning"),message:c(`\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:c("Yes, I understand the risks"),cancelText:c("Cancel"),onConfirm:async Xe=>{var De;Xe?(e.settings.mcpIntegration&&(e.settings.mcpIntegration.host=Ae,t()),new ut.Notice(c("Host changed to 0.0.0.0. Server is now accessible from external networks."))):J.setValue(((De=e.settings.mcpIntegration)==null?void 0:De.host)||"127.0.0.1")}}).open():(e.settings.mcpIntegration.host=Ae,t()))})}),new ut.Setting(a).setName(c("Port")).setDesc(c("Server port number (default: 7777)")).addText(J=>{var ue;J.setPlaceholder("7777").setValue(String(((ue=e.settings.mcpIntegration)==null?void 0:ue.port)||7777)).onChange(async Ae=>{if(!e.settings.mcpIntegration)return;let Fe=parseInt(Ae);!isNaN(Fe)&&Fe>0&&Fe<65536&&(e.settings.mcpIntegration.port=Fe,t())})}),a.createEl("h3",{text:c("Authentication")});let s=new ut.Setting(a).setName(c("Authentication Token")).setDesc(c("Bearer token for authenticating MCP requests (keep this secret)")),o=s.controlEl.createEl("input",{type:"password",value:((lt=e.settings.mcpIntegration)==null?void 0:lt.authToken)||"",cls:"mcp-token-input"});o.readOnly=!0,s.addButton(J=>{J.setButtonText(c("Show")).onClick(()=>{o.type==="password"?(o.type="text",J.setButtonText(c("Hide"))):(o.type="password",J.setButtonText(c("Show")))})}),s.addButton(J=>{J.setButtonText(c("Copy")).onClick(async()=>{await navigator.clipboard.writeText(o.value),new ut.Notice(c("Token copied to clipboard"))})}),s.addButton(J=>{J.setButtonText(c("Regenerate")).onClick(async()=>{if(!e.settings.mcpIntegration||!r)return;let ue=r.regenerateAuthToken();o.value=ue,await e.saveSettings(),new ut.Notice(c("New token generated"))})}),a.createEl("h3",{text:c("Advanced Settings")}),new ut.Setting(a).setName(c("Enable CORS")).setDesc(c("Allow cross-origin requests (required for web clients)")).addToggle(J=>{var ue,Ae;J.setValue((Ae=(ue=e.settings.mcpIntegration)==null?void 0:ue.enableCors)!=null?Ae:!0).onChange(async Fe=>{e.settings.mcpIntegration&&(e.settings.mcpIntegration.enableCors=Fe,t())})}),new ut.Setting(a).setName(c("Log Level")).setDesc(c("Logging verbosity for debugging")).addDropdown(J=>{var ue;J.addOption("error",c("Error")).addOption("warn",c("Warning")).addOption("info",c("Info")).addOption("debug",c("Debug")).setValue(((ue=e.settings.mcpIntegration)==null?void 0:ue.logLevel)||"info").onChange(async Ae=>{e.settings.mcpIntegration&&(e.settings.mcpIntegration.logLevel=Ae,t())})}),a.createEl("h3",{text:c("Server Actions")});let l=a.createDiv("mcp-actions-container");new ut.Setting(l).setName(c("Test Connection")).setDesc(c("Test the MCP server connection")).addButton(J=>{J.setButtonText(c("Test")).onClick(async()=>{var ue,Ae,Fe;J.setDisabled(!0),J.setButtonText(c("Testing..."));try{let Xe=await(0,ut.requestUrl)({url:`http://${((ue=e.settings.mcpIntegration)==null?void 0:ue.host)||"127.0.0.1"}:${((Ae=e.settings.mcpIntegration)==null?void 0:Ae.port)||7777}/health`,method:"GET"}).catch(it=>{throw console.error("[MCP Test] Health check failed:",it),new Error(`Cannot reach server: ${it.message}`)});if(!Xe||Xe.status!==200)throw new Error("Health check failed");let De=await(0,ut.requestUrl)({url:k,method:"POST",headers:{Authorization:T,"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(it=>{throw new Error(`Initialize failed: ${it.message}`)});if(De.status!==200){let it=De.text;throw new Error(`Initialize failed with status ${De.status}: ${it}`)}let ht=De.json;if(De.headers,ht.error)throw new Error(`MCP error: ${ht.error.message}`);let yt=De.headers["mcp-session-id"]||De.headers["Mcp-Session-Id"]||(ht==null?void 0:ht.sessionId)||((Fe=ht==null?void 0:ht.result)==null?void 0:Fe.sessionId);if(!yt)throw console.error("[MCP Test] No session ID in response"),new Error("No session ID returned");let Et=(await(0,ut.requestUrl)({url:k,method:"POST",headers:{Authorization:T,"Mcp-Session-Id":yt,"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(Et.error)throw new Error(`Tools list error: ${Et.error.message}`);new ut.Notice(c("Connection test successful! MCP server is working."))}catch(Xe){console.error("[MCP Test] Test failed:",Xe),new ut.Notice(c("Connection test failed: ")+Xe.message)}finally{J.setDisabled(!1),J.setButtonText(c("Test"))}})}),new ut.Setting(l).setName(c("Restart Server")).setDesc(c("Stop and restart the MCP server")).addButton(J=>{J.setButtonText(c("Restart")).setCta().onClick(async()=>{if(r){J.setDisabled(!0);try{await r.restart(),new ut.Notice(c("MCP server restarted")),Df(i,r)}catch(ue){new ut.Notice(c("Failed to restart server: ")+ue.message)}finally{J.setDisabled(!1)}}})}).addButton(J=>{J.setButtonText(c("Use Next Available Port")).onClick(async()=>{if(!(!r||!e.settings.mcpIntegration)){J.setDisabled(!0);try{let Ae=(e.settings.mcpIntegration.port||7777)+1,Fe=!1;for(let Xe=0;Xe<50;Xe++)try{await r.updateConfig({port:Ae}),Fe=!0;break}catch(De){Ae++}Fe?(new ut.Notice(c("Port updated to ")+String(Ae)),Df(i,r)):new ut.Notice(c("No available port found in range"))}finally{J.setDisabled(!1)}}})}),new ut.Setting(l).setName(c("View Server Logs")).setDesc(c("View all MCP server tool calls and their results")).addButton(J=>{J.setButtonText(c("View Logs")).setIcon("file-text").onClick(()=>{var Ae;let ue=(Ae=e.mcpServerManager)==null?void 0:Ae.getServer();if(ue){let Fe=ue.getLogs();new Rw(e,Fe).open()}else new ut.Notice(c("MCP server is not running"))})}),a.createEl("h3",{text:c("Client Configuration")});let d=a.createDiv("mcp-config-container"),u=!0,p,m,h=new ut.Setting(d).setName(c("Authentication Method")).setDesc(c("Choose the authentication method for client configurations")).addDropdown(J=>{J.addOption("methodB",c("Method B: Combined Bearer (Recommended)")).addOption("methodA",c("Method A: Custom Headers")).setValue("methodB").onChange(ue=>{u=ue==="methodB",p(),m&&m()})}),g=((_t=e.settings.mcpIntegration)==null?void 0:_t.host)||"127.0.0.1",k=`http://${g==="0.0.0.0"?"127.0.0.1":g}:${((ke=e.settings.mcpIntegration)==null?void 0:ke.port)||7777}/mcp`,v=((mt=e.settings.mcpIntegration)==null?void 0:mt.authToken)||"",b=`${e.app.vault.getName().toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}-tasks`,w=e.app.appId,T=`Bearer ${v}+${w}`,x=d.createDiv("mcp-auth-methods");x.createEl("div",{text:c("Supported Authentication Methods:"),cls:"setting-item-description"});let C=x.createEl("ul",{cls:"mcp-auth-list"}),S=C.createEl("li");S.createEl("strong",{text:"Method A (Custom Header):"}),S.appendText(" "),S.createEl("code",{text:`mcp-app-id: ${w}`}),S.appendText(" + "),S.createEl("code",{text:`Authorization: Bearer ${v}`});let D=C.createEl("li");D.createEl("strong",{text:"Method B (Combined Bearer):"}),D.appendText(" "),D.createEl("code",{text:`Authorization: Bearer ${v}+${w}`});let E=d.createDiv("mcp-client-configs-container"),R=()=>u?[{name:"Cursor",config:{mcpServers:{[b]:{url:k,headers:{Authorization:T}}}}},{name:"Claude Desktop",config:{mcpServers:{[b]:{command:"curl",args:["-X","POST","-H",`Authorization: ${T}`,"-H","Content-Type: application/json","--data-raw","@-",k]}}}},{name:"Claude Code",commandLine:`claude mcp add --transport http ${b} ${k} --header "Authorization: ${T}"`},{name:"VS Code",config:{mcp:{servers:{[b]:{type:"http",url:k,headers:{Authorization:T}}}}}},{name:"Windsurf",config:{mcpServers:{[b]:{serverUrl:k,headers:{Authorization:T}}}}},{name:"Zed",config:{context_servers:{[b]:{command:{path:"curl",args:["-X","POST","-H",`Authorization: ${T}`,"-H","Content-Type: application/json","--data-raw","@-",k]},settings:{}}}}}]:[{name:"Cursor",config:{mcpServers:{[b]:{url:k,headers:{Authorization:`Bearer ${v}`,"mcp-app-id":w}}}}},{name:"Claude Desktop",config:{mcpServers:{[b]:{command:"curl",args:["-X","POST","-H",`Authorization: Bearer ${v}`,"-H",`mcp-app-id: ${w}`,"-H","Content-Type: application/json","--data-raw","@-",k]}}}},{name:"Claude Code",commandLine:`claude mcp add --transport http ${b} ${k} --header "Authorization: Bearer ${v}" --header "mcp-app-id: ${w}"`},{name:"VS Code",config:{mcp:{servers:{[b]:{type:"http",url:k,headers:{Authorization:`Bearer ${v}`,"mcp-app-id":w}}}}}},{name:"Windsurf",config:{mcpServers:{[b]:{serverUrl:k,headers:{Authorization:`Bearer ${v}`,"mcp-app-id":w}}}}},{name:"Zed",config:{context_servers:{[b]:{command:{path:"curl",args:["-X","POST","-H",`Authorization: Bearer ${v}`,"-H",`mcp-app-id: ${w}`,"-H","Content-Type: application/json","--data-raw","@-",k]},settings:{}}}}}];p=()=>{E.empty(),R().forEach(ue=>{let Ae=E.createDiv("mcp-client-section"),Fe=Ae.createDiv("mcp-client-header"),Xe=Fe.createDiv("mcp-arrow");(0,ut.setIcon)(Xe,"chevron-right"),Fe.createEl("span",{text:ue.name,cls:"mcp-client-name"});let De=Ae.createDiv("mcp-client-content"),ht=!1;if(Fe.onclick=()=>{ht=!ht,ht?(De.classList.add("expanded"),Xe.classList.add("expanded")):(De.classList.remove("expanded"),Xe.classList.remove("expanded"))},ue.name==="Cursor"){let yt=De.createDiv("mcp-cursor-install-section");yt.createEl("h4",{text:c("Quick Install"),cls:"mcp-docs-subtitle"});let Et=btoa(JSON.stringify({url:k,headers:{Authorization:T}})),it=`cursor://anysphere.cursor-deeplink/mcp/install?name=${encodeURIComponent(b)}&config=${Et}`,ia=yt.createDiv("mcp-cursor-install-container");ia.createEl("p",{text:c("Click the button below to automatically add this MCP server to Cursor:"),cls:"mcp-cursor-install-desc"});let Ee=ia.createEl("a",{href:it,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"}}),$t=ia.createDiv("mcp-cursor-additional-buttons").createEl("button",{text:c("Copy Install Link"),cls:"mcp-cursor-copy-deeplink-btn"});$t.onclick=async()=>{await navigator.clipboard.writeText(it),$t.setText(c("Copied!")),$t.addClass("copied"),setTimeout(()=>{$t.setText(c("Copy Install Link")),$t.removeClass("copied")},2e3)},De.createEl("hr",{cls:"mcp-section-separator"}),De.createEl("h4",{text:c("Manual Configuration"),cls:"mcp-docs-subtitle"}),I2(De,ue.config,`${ue.name} configuration`)}else if(ue.config)I2(De,ue.config,`${ue.name} configuration`);else if(ue.commandLine){let yt=De.createDiv("mcp-config-block");yt.createEl("pre",{cls:"mcp-config-code"}).createEl("code").setText(ue.commandLine);let it=yt.createEl("button",{text:c("Copy"),cls:"mcp-copy-btn"});it.onclick=async()=>{await navigator.clipboard.writeText(ue.commandLine),it.setText(c("Copied!")),it.addClass("copied"),setTimeout(()=>{it.setText(c("Copy")),it.removeClass("copied")},2e3)}}})},p(),a.createEl("h3",{text:c("API Documentation")});let I=a.createDiv("mcp-docs-container"),H=I.createDiv("mcp-docs-section");H.createEl("h4",{text:c("Server Endpoint"),cls:"mcp-docs-subtitle"});let U=H.createDiv("mcp-endpoint-box"),q=U.createDiv("mcp-endpoint-content");q.createSpan("mcp-endpoint-label").setText("URL: ");let _=k;q.createEl("code",{text:_,cls:"mcp-endpoint-url"});let V=U.createEl("button",{text:c("Copy URL"),cls:"mcp-copy-endpoint-btn"});V.onclick=async()=>{await navigator.clipboard.writeText(_),V.setText(c("Copied!")),V.addClass("copied"),setTimeout(()=>{V.setText(c("Copy URL")),V.removeClass("copied")},2e3)};let K=I.createDiv("mcp-docs-section");K.createEl("h4",{text:c("Available Tools"),cls:"mcp-docs-subtitle"});let te=K.createDiv("mcp-tools-grid"),ce=K.createDiv("mcp-tools-info");ce.setText(c("Loading tools..."));async function pe(){var J;try{let ue=await(0,ut.requestUrl)({url:k,method:"POST",headers:{Authorization:`${T}`,"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"})}),Ae=ue.headers["mcp-session-id"]||ue.headers["Mcp-Session-Id"];if(!Ae)throw new Error("No session id returned");let Fe=await(0,ut.requestUrl)({url:k,method:"POST",headers:{Authorization:`${T}`,"Mcp-Session-Id":Ae,"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"})}),Xe=((J=Fe==null?void 0:Fe.json.result)==null?void 0:J.tools)||[];if(ce.setText(""),!Xe.length){ce.setText(c("No tools available"));return}Xe.forEach(De=>{let ht=te.createDiv("mcp-tool-card"),yt=ht.createDiv("mcp-tool-header"),Ut=yt.createDiv("mcp-tool-icon");(0,ut.setIcon)(Ut,"wrench"),yt.createEl("code",{text:De.name,cls:"mcp-tool-name"}),ht.createDiv("mcp-tool-desc").setText(De.description||"")})}catch(ue){console.error("[MCP Tools] Failed to load tools:",ue),ce.setText(c("Failed to load tools. Is the MCP server running?"))}}pe();let Ne=I.createDiv("mcp-docs-section");Ne.createEl("h4",{text:c("Example Request"),cls:"mcp-docs-subtitle"});let He=Ne.createDiv("mcp-example-container");m=()=>{He.empty(),Be()};let Be=()=>{let J=He.createDiv("mcp-example-tabs"),ue=J.createEl("button",{text:"cURL",cls:"mcp-example-tab active"}),Ae=J.createEl("button",{text:"JavaScript",cls:"mcp-example-tab"}),Fe=J.createEl("button",{text:"Python",cls:"mcp-example-tab"}),Xe=He.createDiv("mcp-example-code-container"),De=Xe.createDiv("mcp-example-block active");De.createEl("div",{text:"1) Initialize",cls:"mcp-example-subtitle"});let ht=De.createEl("pre",{cls:"mcp-example-code"});u?ht.createEl("code",{text:`curl -i -X POST ${_} \\
-H "Authorization: ${T}" \\
-H "Content-Type: application/json" \\
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'`}):ht.createEl("code",{text:`curl -i -X POST ${_} \\
-H "Authorization: Bearer ${v}" \\
-H "mcp-app-id: ${w}" \\
-H "Content-Type: application/json" \\
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'`}),De.createEl("div",{text:"2) Call tool with session id",cls:"mcp-example-subtitle"});let yt=De.createEl("pre",{cls:"mcp-example-code"});u?yt.createEl("code",{text:`curl -X POST ${_} \\
-H "Authorization: ${T}" \\
-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}}}'`}):yt.createEl("code",{text:`curl -X POST ${_} \\
-H "Authorization: Bearer ${v}" \\
-H "mcp-app-id: ${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}}}'`});let Ut=Xe.createDiv("mcp-example-block");Ut.createEl("div",{text:"1) Initialize",cls:"mcp-example-subtitle"});let Et=Ut.createEl("pre",{cls:"mcp-example-code"});u?Et.createEl("code",{text:`const initRes = await fetch('${_}', {
method: 'POST',
headers: {
'Authorization': '${T}',
'Content-Type': 'application/json'
},
body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize' })
});
const sessionId = initRes.headers.get('mcp-session-id');`}):Et.createEl("code",{text:`const initRes = await fetch('${_}', {
method: 'POST',
headers: {
'Authorization': 'Bearer ${v}',
'mcp-app-id': '${w}',
'Content-Type': 'application/json'
},
body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize' })
});
const sessionId = initRes.headers.get('mcp-session-id');`}),Ut.createEl("div",{text:"2) Call tool with session id",cls:"mcp-example-subtitle"});let it=Ut.createEl("pre",{cls:"mcp-example-code"});u?it.createEl("code",{text:`const callRes = await fetch('${_}', {
method: 'POST',
headers: {
'Authorization': '${T}',
'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());`}):it.createEl("code",{text:`const callRes = await fetch('${_}', {
method: 'POST',
headers: {
'Authorization': 'Bearer ${v}',
'mcp-app-id': '${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());`});let ia=Xe.createDiv("mcp-example-block");ia.createEl("div",{text:"1) Initialize",cls:"mcp-example-subtitle"});let na=ia.createEl("pre",{cls:"mcp-example-code"});u?na.createEl("code",{text:`import requests
# Initialize session
init_res = requests.post(
'${_}',
headers={
'Authorization': '${T}',
'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}")`}):na.createEl("code",{text:`import requests
# Initialize session
init_res = requests.post(
'${_}',
headers={
'Authorization': 'Bearer ${v}',
'mcp-app-id': '${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}")`}),ia.createEl("div",{text:"2) Call tool with session id",cls:"mcp-example-subtitle"});let Ee=ia.createEl("pre",{cls:"mcp-example-code"});u?Ee.createEl("code",{text:`# Call tool
call_res = requests.post(
'${_}',
headers={
'Authorization': '${T}',
'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())`}):Ee.createEl("code",{text:`# Call tool
call_res = requests.post(
'${_}',
headers={
'Authorization': 'Bearer ${v}',
'mcp-app-id': '${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())`});let bi=[ue,Ae,Fe],$t=[De,Ut,ia];bi.forEach((ba,Zn)=>{ba.onclick=()=>{bi.forEach(Tn=>Tn.removeClass("active")),$t.forEach(Tn=>Tn.removeClass("active")),ba.addClass("active"),$t[Zn].addClass("active")}}),$t.forEach(ba=>{ba.querySelectorAll("pre.mcp-example-code").forEach(Tn=>{let Nl=Tn.querySelector("code");if(!Nl)return;let Ho=Tn.createEl("button",{text:c("Copy"),cls:"mcp-example-copy-btn"});Ho.onclick=async()=>{let Ek=Nl.textContent||"";await navigator.clipboard.writeText(Ek),Ho.setText(c("Copied!")),Ho.addClass("copied"),setTimeout(()=>{Ho.setText(c("Copy")),Ho.removeClass("copied")},2e3)}})})};Be()}function Df(n,a){if(n.empty(),!a){n.createEl("div",{text:c("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?c("Running"):c("Stopped"),cls:"status-text"}),e.running&&e.port){let i=t.createDiv("mcp-status-details");if(i.createEl("div",{text:`${c("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:`${c("Uptime")}: ${o}h ${l}m`})}e.requestCount!==void 0&&i.createEl("div",{text:`${c("Requests")}: ${e.requestCount}`})}}var $c=require("obsidian");function F2(n,a){var t;let e=a.createDiv();if(e.addClass("task-timer-settings-section"),new $c.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 $c.Setting(r).setName("Frontmatter field").setDesc("Field name in frontmatter to check for enabling task timer (e.g., 'task-timer: true')").addText(w=>{var T,x;w.setValue(((x=(T=n.plugin.settings.taskTimer)==null?void 0:T.metadataDetection)==null?void 0:x.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 $c.Setting(r).setName("Folder paths").setDesc("Comma-separated list of folder paths where task timer should be enabled").addTextArea(w=>{var T,x,C;w.setValue(((C=(x=(T=n.plugin.settings.taskTimer)==null?void 0:T.metadataDetection)==null?void 0:x.folders)==null?void 0:C.join(", "))||"").onChange(async S=>{var D;(D=n.plugin.settings.taskTimer)!=null&&D.metadataDetection&&(n.plugin.settings.taskTimer.metadataDetection.folders=S.split(",").map(E=>E.trim()).filter(E=>E),n.applySettingsUpdate())}),w.inputEl.rows=3}),new $c.Setting(r).setName("Tags").setDesc("Comma-separated list of tags that enable task timer").addTextArea(w=>{var T,x,C;w.setValue(((C=(x=(T=n.plugin.settings.taskTimer)==null?void 0:T.metadataDetection)==null?void 0:x.tags)==null?void 0:C.join(", "))||"").onChange(async S=>{var D;(D=n.plugin.settings.taskTimer)!=null&&D.metadataDetection&&(n.plugin.settings.taskTimer.metadataDetection.tags=S.split(",").map(E=>E.trim()).filter(E=>E),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 $c.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 T;w.setValue(((T=n.plugin.settings.taskTimer)==null?void 0:T.timeFormat)||"{h}hrs{m}mins").onChange(async x=>{n.plugin.settings.taskTimer&&(n.plugin.settings.taskTimer.timeFormat=x,n.applySettingsUpdate())})});let l=s.createDiv();l.addClass("task-timer-examples");let d=l.createDiv();d.addClass("task-timer-examples-title"),d.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 T=u.createEl("li");T.createEl("code").setText(w.format),T.appendText(" \u2192 "+w.result)});let m=e.createDiv();m.addClass("task-timer-blockref-section");let h=m.createEl("h3");h.setText("Block References"),h.addClass("task-timer-section-heading"),new $c.Setting(m).setName("Block reference prefix").setDesc("Prefix for generated block reference IDs (e.g., 'timer' creates ^timer-123456-7890)").addText(w=>{var T;w.setValue(((T=n.plugin.settings.taskTimer)==null?void 0:T.blockRefPrefix)||"timer").onChange(async x=>{n.plugin.settings.taskTimer&&(n.plugin.settings.taskTimer.blockRefPrefix=x,n.applySettingsUpdate())})});let g=e.createDiv();g.addClass("task-timer-commands-section");let f=g.createEl("h3");f.setText("Data Management"),f.addClass("task-timer-section-heading");let k=g.createDiv();k.addClass("task-timer-commands-desc"),k.createEl("p").setText("Use the command palette to access timer data management:");let y=k.createEl("ul");[{name:"Export task timer data",desc:"Export all timer data to JSON"},{name:"Import task timer data",desc:"Import timer data from JSON file"},{name:"Export task timer data (YAML)",desc:"Export to YAML format"},{name:"Create task timer backup",desc:"Create a backup of active timers"},{name:"Show task timer statistics",desc:"Display timer usage statistics"}].forEach(w=>{let T=y.createEl("li");T.createEl("strong").setText(w.name),T.appendText(" - "+w.desc)})}}var JE=require("obsidian");z();function R2(n,a){new JE.Setting(a).setName(c("Base View")).setDesc(c("Advanced view management features that extend the default Task Genius views with additional functionality.")).setHeading();let e=new DocumentFragment;e.createEl("span",{text:c("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:c("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 JE.Setting(a).setName(c("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 oa(n.plugin,{title:c("Enable Base View"),message:c("Enable Base View functionality. This feature provides enhanced view management capabilities but may be affected by future Obsidian API changes."),confirmText:c("Enable"),cancelText:c("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 _n=require("obsidian");z();var La=require("obsidian");z();function O2(n,a,e,t){let r=new La.ButtonComponent(n);return r.setIcon(e),$o(r,{containerEl:n,plugin:a,onIconSelected:i=>{r.setIcon(i),t(i)}}),r}var Vu=class extends La.Modal{constructor(e,t){super(e.app);this.plugin=e;this.onCreated=t;this.selectedIcon="layers";this.selectedColor="#888888";this.name="";this.selectWorkspaceId=""}onOpen(){let{contentEl:e}=this;e.createEl("h2",{text:c("Create New Workspace")}),new La.Setting(e).setName(c("Workspace Name")).setDesc(c("A descriptive name for the workspace")).addText(l=>{l.setPlaceholder(c("Enter workspace name")).setValue("").onChange(d=>{this.name=d}),this.nameInput=l.inputEl});let r=new La.Setting(e).setName(c("Workspace Icon")).setDesc(c("Choose an icon for this workspace")).controlEl.createDiv({cls:"workspace-icon-selector"});O2(r,this.plugin,this.selectedIcon,l=>{this.selectedIcon=l}),new La.Setting(e).setName(c("Workspace Color")).setDesc(c("Choose a color for this workspace")).addColorPicker(l=>{l.setValue(this.selectedColor).onChange(d=>{this.selectedColor=d})}),new La.Setting(e).setName(c("Copy Settings From")).setDesc(c("Copy settings from an existing workspace")).addDropdown(l=>{var u,p;l.addOption("",c("Default settings"));let d=(u=this.plugin.workspaceManager)==null?void 0:u.getActiveWorkspace();d&&l.addOption(d.id,`Current (${d.name})`),(p=this.plugin.workspaceManager)==null||p.getAllWorkspaces().forEach(m=>{m.id!==(d==null?void 0:d.id)&&l.addOption(m.id,m.name)}),l.onChange(m=>{this.selectWorkspaceId=m}),this.baseSelect=l.selectEl});let i=e.createDiv({cls:"modal-button-container"}),s=i.createEl("button",{text:c("Create"),cls:"mod-cta"}),o=i.createEl("button",{text:c("Cancel")});s.addEventListener("click",async()=>{let l=this.name.trim(),d=this.selectWorkspaceId||void 0;if(!l){new La.Notice(c("Please enter a workspace name"));return}if(this.plugin.workspaceManager){let u=await this.plugin.workspaceManager.createWorkspace(l,d,this.selectedIcon,this.selectedColor);new La.Notice(c('Workspace "{{name}}" created',{interpolation:{name:l}})),this.onCreated(u),this.close()}}),o.addEventListener("click",()=>{this.close()}),this.nameInput.focus()}onClose(){let{contentEl:e}=this;e.empty()}},Wu=class extends La.Modal{constructor(e,t,r){super(e.app);this.plugin=e;this.workspace=t;this.onRenamed=r;this.selectedIcon=t.icon||"layers",this.selectedColor=t.color||"#888888"}onOpen(){let{contentEl:e}=this;e.createEl("h2",{text:c("Rename Workspace")}),new La.Setting(e).setName(c("New Name")).addText(l=>{l.setValue(this.workspace.name).setPlaceholder(c("Enter new name")),this.nameInput=l.inputEl});let r=new La.Setting(e).setName(c("Workspace Icon")).setDesc(c("Choose an icon for this workspace")).controlEl.createDiv({cls:"workspace-icon-selector"});O2(r,this.plugin,this.selectedIcon,l=>{this.selectedIcon=l}),new La.Setting(e).setName(c("Workspace Color")).setDesc(c("Choose a color for this workspace")).addColorPicker(l=>{l.setValue(this.selectedColor).onChange(d=>{this.selectedColor=d})});let i=e.createDiv({cls:"modal-button-container"}),s=i.createEl("button",{text:c("Save"),cls:"mod-cta"}),o=i.createEl("button",{text:c("Cancel")});s.addEventListener("click",async()=>{let l=this.nameInput.value.trim();if(!l){new La.Notice(c("Please enter a name"));return}this.plugin.workspaceManager&&(this.workspace.id,this.selectedIcon,this.selectedColor,await this.plugin.workspaceManager.renameWorkspace(this.workspace.id,l,this.selectedIcon,this.selectedColor),new La.Notice(c("Workspace updated")),this.onRenamed(),this.close())}),o.addEventListener("click",()=>{this.close()}),this.nameInput.focus(),this.nameInput.select()}onClose(){let{contentEl:e}=this;e.empty()}},zu=class extends La.Modal{constructor(e,t,r){super(e.app);this.plugin=e;this.workspace=t;this.onDeleted=r}onOpen(){let{contentEl:e}=this;e.createEl("h2",{text:c("Delete Workspace")}),e.createEl("p",{text:c('Are you sure you want to delete "{{name}}"? This action cannot be undone.',{interpolation:{name:this.workspace.name}})});let t=e.createDiv({cls:"modal-button-container"}),r=t.createEl("button",{text:c("Delete"),cls:"mod-warning"}),i=t.createEl("button",{text:c("Cancel")});r.addEventListener("click",async()=>{this.plugin.workspaceManager&&(this.workspace.id,await this.plugin.workspaceManager.deleteWorkspace(this.workspace.id),new La.Notice(c('Workspace "{{name}}" deleted',{interpolation:{name:this.workspace.name}})),this.onDeleted(),this.close())}),i.addEventListener("click",()=>{this.close()})}onClose(){let{contentEl:e}=this;e.empty()}};function N2(n,a){let e=a.createDiv();e.addClass("workspaces-settings-section");let t=e.createEl("h2");t.setText(c("Workspace Management")),t.addClass("workspaces-section-heading");let r=e.createDiv();if(r.addClass("workspaces-description"),r.setText(c("Manage workspaces to organize different contexts with their own settings and filters.")),!n.plugin.workspaceManager){let u=e.createDiv();u.addClass("workspaces-warning"),u.setText(c("Workspace manager is not available."));return}let i=n.plugin.workspaceManager.getActiveWorkspace(),s=n.plugin.workspaceManager.isDefaultWorkspace(i.id);new _n.Setting(e).setName(c("Current Workspace")).setDesc(`${i.name}${s?" ("+c("Default")+")":""}`).addButton(u=>{u.setButtonText(c("Switch Workspace")).onClick(p=>{y7(n,p)})});let o=n.plugin.workspaceManager.getAllWorkspaces(),l=e.createDiv();l.addClass("workspace-list"),l.createEl("h3").setText(c("All Workspaces")),o.forEach(u=>{let p=l.createDiv();p.addClass("workspace-item");let m=u.id===i.id,h=n.plugin.workspaceManager.isDefaultWorkspace(u.id);m&&p.addClass("workspace-item-active");let g=new _n.Setting(p),f=g.nameEl.createDiv({cls:"workspace-name-with-icon"}),k=f.createDiv({cls:"workspace-list-icon"});(0,_n.setIcon)(k,u.icon||"layers"),u.color&&(k.style.color=u.color),f.createSpan({text:u.name}),g.setDesc(h?c("Default workspace"):c("Last updated: {{date}}",{interpolation:{date:new Date(u.updatedAt).toLocaleDateString()}})).addButton(v=>{m?v.setButtonText(c("Active")).setDisabled(!0):v.setButtonText(c("Switch")).onClick(async()=>{u.id,await n.plugin.workspaceManager.setActiveWorkspace(u.id),n.display()})}).addExtraButton(v=>{v.setIcon("settings-2").setTooltip(c("Configure hidden modules")).onClick(()=>{S7(n,u,p)})}).addExtraButton(v=>{v.setIcon("edit").setTooltip(c("Rename")).onClick(()=>{w7(n,u)})}).addExtraButton(v=>{h?(v.setIcon("trash").setTooltip(c("Default workspace cannot be deleted")),v.setDisabled(!0)):v.setIcon("trash").setTooltip(c("Delete")).onClick(()=>{T7(n,u)})})}),new _n.Setting(e).setName(c("Create New Workspace")).setDesc(c("Create a new workspace with custom settings")).addButton(u=>{u.setButtonText(c("Create")).setCta().onClick(()=>{b7(n)})})}function y7(n,a){if(!n.plugin.workspaceManager)return;let e=new _n.Menu,t=n.plugin.workspaceManager.getAllWorkspaces(),r=n.plugin.workspaceManager.getActiveWorkspace();t.forEach(i=>{e.addItem(s=>{s.setTitle(i.name).setIcon("layers").onClick(async()=>{var o;await((o=n.plugin.workspaceManager)==null?void 0:o.setActiveWorkspace(i.id)),i.id,this.display()}),i.id===r.id&&s.setChecked(!0)})}),e.showAtMouseEvent(a)}function b7(n){n.plugin.workspaceManager&&new Vu(n.plugin,()=>{n.display()}).open()}function w7(n,a){n.plugin.workspaceManager&&new Wu(n.plugin,a,()=>{n.display()}).open()}function T7(n,a){n.plugin.workspaceManager&&new zu(n.plugin,a,()=>{n.display()}).open()}function x7(n){let a=n.settings.viewConfiguration.map(r=>({id:r.id,name:r.name,icon:r.icon,type:"view"})),e=(n.settings.customCalendarViews||[]).map(r=>({id:r.id,name:r.name,icon:r.icon,type:"calendarView"})),t=[{id:"projects-list",name:c("Projects List"),icon:"folders",type:"sidebar"},{id:"other-views",name:c("Other Views"),icon:"layout-list",type:"sidebar"}];return{views:a,sidebarComponents:t,calendarViews:e}}function C7(n,a,e,t){let r=n.createDiv({cls:"workspace-hidden-modules-container"}),i=r.createDiv({cls:"workspace-hidden-modules-title"});(0,_n.setIcon)(i.createSpan(),"eye-off"),i.createSpan({text:c("Hidden Modules Configuration")}),r.createDiv({cls:"workspace-hidden-modules-desc",text:c("Configure which modules should be hidden in this workspace. Hidden views will not appear in the sidebar.")});let s=x7(a),o=e.settings.hiddenModules||{views:[],sidebarComponents:[]},l=r.createDiv({cls:"workspace-module-groups"}),d=(u,p,m,h,g)=>{let f=[...h],k=l.createDiv({cls:"workspace-module-group"}),v=k.createDiv({cls:"workspace-module-group-header"}),y=v.createDiv({cls:"workspace-module-group-icon"});(0,_n.setIcon)(y,p),v.createDiv({cls:"workspace-module-group-title",text:u});let b=f.length,w=m.length;v.createDiv({cls:"workspace-module-group-count",text:c("{{hidden}}/{{total}} hidden",{interpolation:{hidden:b.toString(),total:w.toString()}})});let T=k.createDiv({cls:"workspace-module-list"});m.forEach(x=>{let C=f.includes(x.id),S=T.createDiv({cls:"workspace-module-item"});C&&S.addClass("is-hidden");let E=S.createDiv({cls:"workspace-module-checkbox"}).createEl("input",{type:"checkbox"});E.checked=!C;let R=S.createDiv({cls:"workspace-module-icon"});(0,_n.setIcon)(R,x.icon),S.createDiv({cls:"workspace-module-label",text:x.name});let I=async()=>{var L,_,V,K,te;let H=[...f],U=H.indexOf(x.id),q=E.checked;q&&U!==-1?H.splice(U,1):!q&&U===-1&&H.push(x.id);try{switch(g){case"views":await((L=a.workspaceManager)==null?void 0:L.setHiddenViews([...H],e.id));break;case"sidebarComponents":await((_=a.workspaceManager)==null?void 0:_.setHiddenSidebarComponents(H,e.id));break;case"calendarViews":await((V=a.workspaceManager)==null?void 0:V.setHiddenCalendarViews([...H],e.id));break}let ce=(K=a.workspaceManager)==null?void 0:K.getWorkspace(e.id);switch((te=ce==null?void 0:ce.settings)!=null&&te.hiddenModules?o=ce.settings.hiddenModules:o={views:[],sidebarComponents:[],calendarViews:[]},g){case"views":f=o.views||[];break;case"sidebarComponents":f=o.sidebarComponents||[];break;case"calendarViews":f=o.calendarViews||[];break}S.toggleClass("is-hidden",!q);let pe=v.querySelector(".workspace-module-group-count");pe&&(pe.textContent=c("{{hidden}}/{{total}} hidden",{interpolation:{hidden:f.length.toString(),total:w.toString()}})),t()}catch(ce){console.error("[WorkspaceSettings] Failed to update hidden modules",ce),E.checked=!E.checked}};E.addEventListener("change",()=>{I()}),S.addEventListener("click",H=>{H.target!==E&&(E.checked=!E.checked,I())})})};d(c("Views"),"layout-list",s.views,o.views||[],"views"),d(c("Sidebar Components"),"sidebar",s.sidebarComponents,o.sidebarComponents||[],"sidebarComponents"),s.calendarViews.length>0&&d(c("Custom Calendar Views"),"calendar",s.calendarViews,o.calendarViews||[],"calendarViews")}function S7(n,a,e){let t=e.querySelector(".workspace-hidden-modules-container");if(t){t.remove();return}C7(e,n.plugin,a,()=>{`${a.id}`})}var Ow=class extends kr.PluginSettingTab{constructor(e,t){super(e,t);this.searchComponent=null;this.currentTab="general";this.icon="task-genius";this.tabs=[{id:"general",name:c("General"),icon:"settings",category:"core"},{id:"index",name:c("Index & Sources"),icon:"database",category:"core"},{id:"view-settings",name:c("Views"),icon:"layout",category:"core"},{id:"interface",name:c("Interface"),icon:"layout-dashboard",category:"core"},{id:"file-filter",name:c("File Filter"),icon:"folder-x",category:"core"},{id:"progress-bar",name:c("Progress Display"),icon:"trending-up",category:"display"},{id:"task-status",name:c("Checkbox Status"),icon:"checkbox-glyph",category:"display"},{id:"task-handler",name:c("Task Handler"),icon:"list-checks",category:"management"},{id:"task-filter",name:c("Task Filter"),icon:"filter",category:"management"},{id:"project",name:c("Projects"),icon:"folder-open",category:"core"},{id:"workflow",name:c("Workflows"),icon:"git-branch",category:"workflow"},{id:"date-priority",name:c("Dates & Priority"),icon:"calendar-clock",category:"workflow"},{id:"quick-capture",name:c("Quick Capture"),icon:"zap",category:"workflow"},{id:"task-timer",name:"Task Timer",icon:"timer",category:"workflow"},{id:"time-parsing",name:c("Time Parsing"),icon:"clock",category:"workflow"},{id:"timeline-sidebar",name:c("Timeline Sidebar"),icon:"clock",category:"workflow"},{id:"reward",name:c("Rewards"),icon:"gift",category:"gamification"},{id:"habit",name:c("Habits"),icon:"repeat",category:"gamification"},{id:"calendar-views",name:c("Calendar Views"),icon:"calendar-range",category:"integration"},{id:"ics-integration",name:c("Calendar Sync"),icon:"calendar-plus",category:"integration"},{id:"desktop-integration",name:c("Desktop Integration"),icon:"monitor",category:"integration"},{id:"mcp-integration",name:c("MCP Integration"),icon:"network",category:"integration"},{id:"bases-support",name:c("Bases Support"),icon:"layout",category:"integration"},{id:"workspaces",name:c("Workspaces"),icon:"layers",category:"integration"},{id:"beta-test",name:c("Beta Features"),icon:"flask-conical",category:"advanced"},{id:"about",name:c("About"),icon:"info",category:"info"}];this.plugin=t,this.debouncedApplySettings=(0,kr.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,kr.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 Fw(this,this.containerEl)}createCategorizedTabsUI(){this.containerEl.toggleClass("task-genius-settings",!0),this.createSearchComponent();let e={core:{name:c("Core Settings"),tabs:[]},display:{name:c("Display & Progress"),tabs:[]},management:{name:c("Task Management"),tabs:[]},workflow:{name:c("Workflow & Automation"),tabs:[]},gamification:{name:c("Gamification"),tabs:[]},integration:{name:c("Integration"),tabs:[]},advanced:{name:c("Advanced"),tabs:[]},info:{name:c("Information"),tabs:[]}};this.tabs.forEach(i=>{if(i.id==="mcp-integration"&&!kr.Platform.isDesktopApp||i.id==="workspaces")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 d=o.createDiv();d.addClass("settings-category-tabs"),s.tabs.forEach(u=>{let p=d.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,kr.setIcon)(m,u.icon);let h=p.createSpan();h.addClass("settings-tab-label"),h.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");if(e==="general"?(i&&(i.style.display="flex"),s&&(s.style.display="block")):(i&&(i.style.display="none"),s&&(s.style.display="none")),e==="workspaces"){let o=this.containerEl.querySelector('[data-tab-id="workspaces"]');o&&(o.style.display="block",o.addClass("settings-tab-section-active"))}}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 kr.ButtonComponent(s);o.setClass("header-button"),o.setClass("how-to-button"),o.onClick(()=>{var g;let h=this.getHowToUseUrl(e);try{new Jk(this.app,h,`How to use \u2014 ${(g=i==null?void 0:i.name)!=null?g:e}`).open()}catch(f){window.open(h)}});let l=o.buttonEl.createEl("span");l.addClass("header-button-icon"),(0,kr.setIcon)(l,"book");let d=o.buttonEl.createEl("span");d.addClass("header-button-text"),d.setText(c("How to use"));let u=new kr.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,kr.setIcon)(p,"arrow-left");let m=u.buttonEl.createEl("span");m.addClass("header-button-text"),m.setText(c("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 d=this.createTabSection("quick-capture");this.displayQuickCaptureSettings(d);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 h=this.createTabSection("workflow");this.displayWorkflowSettings(h);let g=this.createTabSection("date-priority");this.displayDatePrioritySettings(g);let f=this.createTabSection("project");this.displayProjectSettings(f);let k=this.createTabSection("index");this.displayIndexSettings(k);let v=this.createTabSection("view-settings");this.displayViewSettings(v);let y=this.createTabSection("interface");this.displayInterfaceSettings(y);let b=this.createTabSection("reward");this.displayRewardSettings(b);let w=this.createTabSection("habit");this.displayHabitSettings(w);let T=this.createTabSection("calendar-views");this.displayCalendarViewsSettings(T);let x=this.createTabSection("ics-integration");this.displayIcsSettings(x);let C=this.createTabSection("desktop-integration");if(this.displayDesktopIntegrationSettings(C),kr.Platform.isDesktopApp){let R=this.createTabSection("mcp-integration");this.displayMcpSettings(R)}if((0,kr.requireApiVersion)("1.9.10")){let R=this.createTabSection("bases-support");this.displayBasesSettings(R)}let S=this.createTabSection("workspaces");this.displayWorkspacesSettings(S);let D=this.createTabSection("beta-test");this.displayBetaTestSettings(D);let E=this.createTabSection("about");this.displayAboutSettings(E),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"interface":return`${t}/interface`;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"calendar-views":return`${t}/task-view/calendar`;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"workspaces":return`${t}/workspaces`;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){AE(this,e)}displayTaskStatusSettings(e){WE(this,e)}displayDatePrioritySettings(e){$E(this,e)}displayTaskFilterSettings(e){BE(this,e)}displayFileFilterSettings(e){XE(this,e)}displayWorkflowSettings(e){_E(this,e)}displayQuickCaptureSettings(e){FE(this,e)}displayTaskTimerSettings(e){this.renderTaskTimerSettingsTab(e)}displayTimeParsingSettings(e){E2(this,e)}displayTimelineSidebarSettings(e){YE(this,e)}displayTaskHandlerSettings(e){VE(this,e)}displayViewSettings(e){zE(this,e)}displayInterfaceSettings(e){PE(this,e)}displayIndexSettings(e){GE(this,e)}displayProjectSettings(e){UE(this,e)}displayCalendarViewsSettings(e){QE(this,e)}displayIcsSettings(e){new Tf(this.plugin,e,()=>{this.currentTab="general",this.display()}).display()}displayDesktopIntegrationSettings(e){KE(this,e)}displayMcpSettings(e){A2(this,e,this.plugin,()=>this.applySettingsUpdate())}displayBasesSettings(e){R2(this,e)}displayAboutSettings(e){SE(this,e)}displayRewardSettings(e){RE(this,e)}displayHabitSettings(e){ME(this,e)}displayBetaTestSettings(e){DE(this,e)}displayWorkspacesSettings(e){N2(this,e)}renderTaskTimerSettingsTab(e){F2(this,e)}};var Z2=require("@codemirror/state");var yo=require("obsidian"),Y2=require("@codemirror/state"),q2=require("@codemirror/state");var lr=require("@codemirror/view"),Nw=require("obsidian"),L2=require("@codemirror/state"),Lw=require("@codemirror/language");z();var Un=L2.Annotation.define(),Mf={highest:{emoji:"\u{1F53A}",text:c("Highest priority"),regex:"\u{1F53A}",dataviewValue:"highest",numericValue:5},high:{emoji:"\u23EB",text:c("High priority"),regex:"\u23EB",dataviewValue:"high",numericValue:4},medium:{emoji:"\u{1F53C}",text:c("Medium priority"),regex:"\u{1F53C}",dataviewValue:"medium",numericValue:3},none:{emoji:"",text:c("No priority"),regex:"",dataviewValue:"none",numericValue:0},low:{emoji:"\u{1F53D}",text:c("Low priority"),regex:"\u{1F53D}",dataviewValue:"low",numericValue:2},lowest:{emoji:"\u23EC\uFE0F",text:c("Lowest priority"),regex:"\u23EC\uFE0F",dataviewValue:"lowest",numericValue:1}},Pf={A:{text:c("Priority A"),regex:"\\[#A\\]",numericValue:4},B:{text:c("Priority B"),regex:"\\[#B\\]",numericValue:3},C:{text:c("Priority C"),regex:"\\[#C\\]",numericValue:2}},D7=Object.values(Mf).map(n=>n.regex).filter(n=>n).join("|"),E7=Object.values(Pf).map(n=>n.regex).join("|"),M7=/\[priority::\s*(highest|high|medium|none|low|lowest|\d+)\]/gi;function P7(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 Ef=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.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":c("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 Nw.Menu,r=this.plugin.settings.preferMetadataFormat==="dataview";this.mode==="letter"?(Object.entries(Pf).forEach(([i,s])=>{t.addItem(o=>{o.setTitle(s.text),o.onClick(()=>{this.setPriority(`[#${i}]`,"letter")})})}),t.addItem(i=>{i.setTitle(c("Remove Priority")),i.onClick(()=>{this.removePriority("letter")})})):(Object.entries(Mf).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(c("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:[Un.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:[Un.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 j2(n,a){if(!a.settings.enablePriorityPicker)return[];class e{constructor(s){this.decorations=lr.Decoration.none;this.lastUpdate=0;this.updateThreshold=50;this.isDestroyed=!1;this.emojiMatch=new lr.MatchDecorator({regexp:new RegExp(`(${D7})`,"g"),decorate:(s,o,l,d,u)=>{try{if(!this.shouldRender(u,o,l))return;let p=this.plugin.settings.preferMetadataFormat==="dataview",m=this.view.state.doc.lineAt(o),h=P7(m.text,p);s(o,l,lr.Decoration.replace({widget:new Ef(n,a,u,o,l,d[0],h)}))}catch(p){console.warn("Error decorating emoji priority:",p)}}});this.letterMatch=new lr.MatchDecorator({regexp:new RegExp(`(${E7})`,"g"),decorate:(s,o,l,d,u)=>{try{if(!this.shouldRender(u,o,l))return;s(o,l,lr.Decoration.replace({widget:new Ef(n,a,u,o,l,d[0],"letter")}))}catch(p){console.warn("Error decorating letter priority:",p)}}});this.dataviewMatch=new lr.MatchDecorator({regexp:M7,decorate:(s,o,l,d,u)=>{try{if(!this.shouldRender(u,o,l))return;s(o,l,lr.Decoration.replace({widget:new Ef(n,a,u,o,l,d[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(Un))){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=lr.Decoration.none}updateDecorations(s,o){if(!this.isDestroyed){if(!this.isLivePreview(s.state)){this.decorations=lr.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 d=this.emojiMatch.updateDeco(o,this.decorations);if(d.size>0){this.decorations=d;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 d=lr.Decoration.none;l?(d=this.dataviewMatch.createDeco(s),d.size===0&&(d=this.emojiMatch.createDeco(s))):(d=this.emojiMatch.createDeco(s),d.size===0&&(d=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&&(d=d.update({add:p}))}this.decorations=d}}catch(l){console.warn("Error updating priority decorations, clearing decorations",l),this.decorations=lr.Decoration.none}}}isLivePreview(s){try{return s.field(Nw.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,Lw.syntaxTree)(s.state).resolveInner(o+1).type.prop(Lw.tokenClassNodeProp);if(u){let h=u.split(" ");if(h.includes("hmd-codeblock")||h.includes("hmd-frontmatter"))return!1}return!s.state.selection.ranges.some(h=>!(h.to<=o||h.from>=l))&&this.isLivePreview(s.state)}catch(d){return console.warn("Error checking if priority should render",d),!1}}}let t={decorations:i=>{try{return i.isDestroyed?lr.Decoration.none:i.decorations.update({filter:(s,o,l)=>{var d;try{if(((d=l.spec)==null?void 0:d.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 lr.ViewPlugin.fromClass(e,t)}var R7=require("@codemirror/language");z();var ja=require("obsidian");var Ai=require("obsidian");z();var jw=class extends Ai.Modal{constructor(e,t,r){super(e);this.templateType="custom";this.templates={simple:{name:c("Simple Linear Workflow"),description:c("A basic linear workflow with sequential stages"),stages:[{id:"todo",name:c("To Do"),type:"linear"},{id:"in_progress",name:c("In Progress"),type:"linear"},{id:"done",name:c("Done"),type:"terminal"}]},project:{name:c("Project Management"),description:c("Standard project management workflow"),stages:[{id:"planning",name:c("Planning"),type:"linear"},{id:"development",name:c("Development"),type:"cycle",subStages:[{id:"coding",name:c("Coding")},{id:"testing",name:c("Testing")}]},{id:"review",name:c("Review"),type:"linear"},{id:"completed",name:c("Completed"),type:"terminal"}]},research:{name:c("Research Process"),description:c("Academic or professional research workflow"),stages:[{id:"literature_review",name:c("Literature Review"),type:"linear"},{id:"data_collection",name:c("Data Collection"),type:"cycle"},{id:"analysis",name:c("Analysis"),type:"cycle"},{id:"writing",name:c("Writing"),type:"linear"},{id:"published",name:c("Published"),type:"terminal"}]},custom:{name:c("Custom Workflow"),description:c("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(c("Quick Workflow Creation")),this.createTemplateSelection(e),this.createWorkflowForm(e),this.createButtons(e)}createTemplateSelection(e){let t=e.createDiv({cls:"workflow-template-section"});new Ai.Setting(t).setName(c("Workflow Template")).setDesc(c("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 Ai.Setting(t).setName(c("Workflow Name")).setDesc(c("A descriptive name for your workflow")).addText(r=>{r.setValue(this.workflow.name||"").setPlaceholder(c("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 Ai.Setting(t).setName(c("Workflow ID")).setDesc(c("Unique identifier (auto-generated from name)")).addText(r=>{r.setValue(this.workflow.id||"").setPlaceholder("workflow_id").onChange(i=>{this.workflow.id=i})}),new Ai.Setting(t).setName(c("Description")).setDesc(c("Optional description of the workflow purpose")).addTextArea(r=>{r.setValue(this.workflow.description||"").setPlaceholder(c("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 Ai.Setting(t).setName(c("Workflow Stages")).setDesc(c("Preview of workflow stages (edit after creation for advanced options)")).addButton(i=>{i.setButtonText(c("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:c("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 d=o.createDiv({cls:"stage-actions"});new Ai.ButtonComponent(d).setIcon("trash").setTooltip(c("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:c("Cancel"),cls:"workflow-cancel-button"}).addEventListener("click",()=>this.close()),t.createEl("button",{text:c("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 Ai.Notice(c("Please provide a workflow name and ID"));return}if(!this.workflow.stages||this.workflow.stages.length===0){new Ai.Notice(c("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()}};z();function H2(n,a){let e=n.getValue().split(`
`),t=a.line,r=I7(e,t);return r===-1?null:B2(e,r)}function I7(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],d=l.match(/^(\s*)[-*+] \[(.)\]/);if(d&&d[1].length<i){s=!0;break}if(l.trim()&&!d)break}if(!s)return e}}return-1}function B2(n,a){var d;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 h=B2(n,l);o.children.push(h),l=A7(n,l,m)||n.length}else break}else{if((((d=u.match(/^(\s*)/))==null?void 0:d[1].length)||0)<=r)break;l++}}return o}function A7(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 V2(n,a,e){let t=[];if(n.isTask){t.push({id:_u(n.content),name:n.content,type:n.children.length>0?"linear":"terminal"}),n.children.forEach((r,i)=>{let s=F7(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:c("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 F7(n,a){let e={id:_u(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:_u(t.content),name:t.content,next:r<n.children.length-1?_u(n.children[r+1].content):_u(n.children[0].content)}))),e}function _u(n){return n.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"_").substring(0,30)}function ZE(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 eM(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 W2(n,a){let e=1+n.children.length,t=a.find(r=>Math.abs(r.stages.length-e)<=1);return t?{...t,id:_u(n.content+"_workflow"),name:`${n.content} Workflow`,description:c("Workflow based on existing pattern"),metadata:{version:"1.0",created:new Date().toISOString().split("T")[0],lastModified:new Date().toISOString().split("T")[0]}}:null}z();function If(n,a,e,t){return n?t.settings.workflow.enableWorkflow:(new jw(t.app,t,r=>{t.settings.workflow.definitions.push(r),t.saveSettings(),new ja.Notice(c("Workflow created successfully"))}).open(),!0)}function Af(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=H2(a,r);if(!i||!i.isTask)return new ja.Notice(c("No task structure found at cursor position")),!1;let s=W2(i,t.settings.workflow.definitions);if(s){let o=new ja.Menu;o.addItem(l=>{l.setTitle(c("Use similar existing workflow")).setIcon("copy").onClick(()=>{_2(i,s.name,s.id,t)})}),o.addItem(l=>{l.setTitle(c("Create new workflow")).setIcon("plus").onClick(()=>{z2(i,t)})}),o.showAtMouseEvent(window.event)}else z2(i,t);return!0}function Ff(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 ja.Notice(c("No workflows defined. Create a workflow first.")),!1;if(r.length===1){let i=a.getCursor();ZE(a,i,r[0],t),new ja.Notice(c("Workflow task created"))}else{let i=new ja.Menu;r.forEach(s=>{i.addItem(o=>{o.setTitle(s.name).setIcon("workflow").onClick(()=>{let l=a.getCursor();ZE(a,l,s,t),new ja.Notice(c("Workflow task created"))})})}),i.showAtMouseEvent(window.event)}return!0}function tM(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 ja.Notice(c("No workflows defined. Create a workflow first.")),!1;let i=a.getCursor();if(r.length===1)eM(a,i,r[0].id)?new ja.Notice(c("Task converted to workflow root")):new ja.Notice(c("Failed to convert task"));else{let s=new ja.Menu;r.forEach(o=>{s.addItem(l=>{l.setTitle(o.name).setIcon("workflow").onClick(()=>{eM(a,i,o.id)?new ja.Notice(c("Task converted to workflow root")):new ja.Notice(c("Failed to convert task"))})})}),s.showAtMouseEvent(window.event)}return!0}function aM(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 ja.Notice(c("No workflows to duplicate")),!1;let i=new ja.Menu;return r.forEach(s=>{i.addItem(o=>{o.setTitle(c("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 Tl(t.app,t,l,d=>{t.settings.workflow.definitions.push(d),t.saveSettings(),new ja.Notice(c("Workflow duplicated and saved"))}).open()})})}),i.showAtMouseEvent(window.event),!0}function z2(n,a){let e=n.content+" Workflow",t=e.toLowerCase().replace(/[^a-z0-9\s]/g,"").replace(/\s+/g,"_").substring(0,30);_2(n,e,t,a)}function _2(n,a,e,t){let r=V2(n,a,e);new Tl(t.app,t,r,i=>{t.settings.workflow.definitions.push(i),t.saveSettings(),new ja.Notice(c("Workflow created from task structure"))}).open()}function U2(n,a,e,t){if(n)return t.settings.workflow.enableWorkflow;let r=new ja.Menu;r.addItem(o=>{o.setTitle(c("Create Quick Workflow")).setIcon("plus-circle").onClick(()=>{If(!1,a,e,t)})});let i=a.getCursor(),s=a.getLine(i.line);return s.match(/^\s*[-*+] \[(.)\]/)&&(r.addItem(o=>{o.setTitle(c("Convert Task to Workflow")).setIcon("convert").onClick(()=>{Af(!1,a,e,t)})}),s.includes("#workflow/")||r.addItem(o=>{o.setTitle(c("Convert to Workflow Root")).setIcon("workflow").onClick(()=>{tM(!1,a,e,t)})})),r.addItem(o=>{o.setTitle(c("Start Workflow Here")).setIcon("play").onClick(()=>{Ff(!1,a,e,t)})}),t.settings.workflow.definitions.length>0&&r.addItem(o=>{o.setTitle(c("Duplicate Workflow")).setIcon("copy").onClick(()=>{aM(!1,a,e,t)})}),r.showAtMouseEvent(window.event),!0}var bo=q2.Annotation.define(),iM=/#workflow\/([^\/\s]+)/,O7=/\[stage::([^\]]+)\]/,N7=/\s*\[stage::[^\]]+\]/,Hw=/^(\s*)([-*+]|\d+\.)\s+\[(.)]/,$2=/\(⏱️\s+([0-9:]+)\)/,G2="_root_task_",Rf=".";function wo(n){let a=n.match(/^(\s*)/);return a?a[1]:""}function L7(n,a,e=1){let t=Qa(a),r=t.repeat(e);if(n.endsWith(r))return n.slice(0,Math.max(0,n.length-r.length));let i=t.length*e;return n.slice(0,Math.max(0,n.length-i))}function Bw(n,a){return n<1?1:n>a.lines?a.lines:n}function rM(n){let a=n.match(N7);return a&&typeof a.index=="number"?a:null}function K2(n,a){return Y2.EditorState.transactionFilter.of(e=>j7(e,n,a))}function Cl(n){let a=n.match(O7);if(a){let t=a[1];if(t.includes(Rf)){let[r,i]=t.split(Rf);return{workflowType:"fromParent",currentStage:r,subStage:i}}return{workflowType:"fromParent",currentStage:t}}let e=n.match(iM);return e?{workflowType:e[1],currentStage:"root"}:null}function nM(n,a){let e=Bw(a,n);if(e<=1)return null;let t=e-1,r=n.line(t+1),i=wo(r.text).length;for(let s=t;s>=0;s--){let l=n.line(s+1).text,d=wo(l).length,u=l.match(iM);if(u&&(d<i||d===i&&s<t))return u[1]}return null}function j7(n,a,e){if(!e.settings.workflow.enableWorkflow||!n.docChanged)return n;let t=n.annotation(It);if(n.annotation(bo)||n.annotation(Un)||t!=null&&t.startsWith("workflowChange")||t!=null&&t.startsWith("autoDateManager"))return n;let r=[];n.changes.iterChanges((p,m,h,g,f)=>{r.push({fromA:p,toA:m,fromB:h,toB:g,text:f.toString()})});let i=e.settings.taskStatuses.completed.split("|"),s=p=>i.includes(p)||i.some(m=>p===`- [${m}]`||p===`[${m}]`);if(!r.some(p=>s(p.text)))return n;let o=[];for(let p of r){if(!s(p.text))continue;let m=n.newDoc.lineAt(p.fromB),h=m.text;if(!h.match(Hw))continue;let f=To(h,n.newDoc,m.number,e);f&&o.push({lineNumber:m.number,lineText:h,resolvedInfo:f})}let l=0,d=!1;n.changes.iterChanges((p,m,h,g,f)=>{let k=f.length,v=m-p;l+=k-v,d=!0});let u=[];if(o.length>0)for(let p of o){let{resolvedInfo:m,lineNumber:h,lineText:g}=p,f=n.newDoc.line(h),{workflowType:k,currentStage:v,currentSubStage:y,workflow:b,isRootTask:w}=m;if(!b.stages.length)continue;let T=Q2(f.text,n.newDoc,f.from,f.number,k,e),x=T;for(let K of x)u.push(K);let C=null;if(e.settings.workflow.autoRemoveLastStageMarker){let K=rM(f.text);if(K){let te=f.from+K.index,ce=f.from+K.index+K[0].length;C={from:te,to:ce,insert:""},u.push(C)}}if(v.type==="terminal"){let K=wo(f.text).length;if(!f.text.match(Hw))continue;let ce=e.settings.taskStatuses.completed.split("|");for(let pe=h-1;pe>=1;pe--){let Ne=n.newDoc.line(pe);if(wo(Ne.text).length<K&&Ne.text.includes(`#workflow/${k}`)){let Be=Ne.text.match(Hw);if(Be){let We=Be[3];if(!ce.includes(We)){let lt=Ne.from+Be[0].indexOf("[");d&&(lt=Math.max(0,lt-l)),u.push({from:lt+1,to:lt+2,insert:"x"})}}break}}continue}let{nextStageId:S,nextSubStageId:D}=Vw(v,b,y);if(v.type==="cycle"&&!y&&S===v.id){console.debug("[WorkflowHandler] Skip auto-substage creation for parent cycle stage completion",{line:f.number,stage:v.id});continue}let E=b.stages.find(K=>K.id===S);if(!E)continue;let R;D&&E.subStages&&(R=E.subStages.find(K=>K.id===D));let I=wo(g),H=Qa(a),U=w?I+H:I,q=Nf(E,U,e,!0,R),L=H7(f,n.newDoc,I),_=B7(L,f.from,[...T,...C?[C]:[]]),V=L+_;V=Math.min(V,n.newDoc.length),V=Math.max(0,V),n.annotation(It)!=="autoCompleteParent.DONE"&&u.push({from:V,to:V,insert:`
${q}`})}if(u.length>0){d&&`${u.length}`;let p=[];n.changes.iterChanges((g,f,k,v,y)=>{p.push({from:g,to:f,insert:y.toString()})});let m=n.changes.invert(n.startState.doc),h=u.map(g=>({from:m.mapPos(g.from,-1),to:m.mapPos(g.to,-1),insert:g.insert}));return{changes:[...p,...h],selection:n.selection,annotations:bo.of("workflowChange")}}return n}function Q2(n,a,e,t,r,i){let s=[],o=i.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss",d=`\u{1F6EB} ${(0,yo.moment)().format(o)}`.length,u=n.indexOf("\u{1F6EB}");if(u===-1)return s;let p=u+d,m=n.substring(u,p),h=(0,yo.moment)(m.replace("\u{1F6EB} ",""),o,!0);if(!h.isValid())return s;let g=(0,yo.moment)(),f=yo.moment.duration(g.diff(h)),k=Of(n,t,a,i);if(i.settings.workflow.removeTimestampOnTransition){let v=e+u,y=v+d;s.push({from:v-1,to:y,insert:""})}if(i.settings.workflow.calculateSpentTime){let v=n.indexOf("[stage::"),y=e+(v!==-1?v:n.length);if(!$2.test(n)){let b=yo.moment.utc(f.asMilliseconds()).format(i.settings.workflow.spentTimeFormat);(!k||!i.settings.workflow.calculateFullSpentTime)&&s.push({from:y,to:y,insert:` (\u23F1\uFE0F ${b})`})}if(i.settings.workflow.calculateFullSpentTime&&k){let b=`#workflow/${r}`,w=yo.moment.duration(0),T=!1,x=wo(n).length;for(let C=t-1;C>=1;C--){if(C>a.lines)continue;if(a.line(C).text.includes(b)){for(let D=C;D<=t;D++){if(D>a.lines)continue;let E=a.line(D);if(wo(E.text).length>x)continue;let I=E.text.match($2);if(I&&I[1]){let H=I[1].split(":"),U=0;H.length===3?U=(parseInt(H[0])*3600+parseInt(H[1])*60+parseInt(H[2]))*1e3:H.length===2&&(U=(parseInt(H[0])*60+parseInt(H[1]))*1e3),U>0&&(w.add(U),T=!0)}}break}}if(T?w.add(f):(w=f,T=!0),T){let C=yo.moment.utc(w.asMilliseconds()).format(i.settings.workflow.spentTimeFormat);s.push({from:y,to:y,insert:` (${c("Total")}: ${C})`})}}}return s}function X2(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=Cl(r);if(!o){n.addItem(g=>{g.setTitle(c("Workflow")),g.setIcon("list-ordered");let f=g.setSubmenu();f.addItem(k=>{k.setTitle(c("Add as workflow root")),k.setIcon("plus-circle");let v=k.setSubmenu();e.settings.workflow.definitions.forEach(y=>{v.addItem(b=>{b.setTitle(y.name),b.onClick(()=>{a.cm.dispatch({changes:{from:a.posToOffset(t),to:a.posToOffset(t),insert:`#workflow/${y.id}`}})})})})}),f.addSeparator(),f.addItem(k=>{k.setTitle(c("Convert to workflow template")),k.setIcon("convert"),k.onClick(()=>{Af(!1,a,null,e)})}),f.addItem(k=>{k.setTitle(c("Start workflow here")),k.setIcon("play"),k.onClick(()=>{Ff(!1,a,null,e)})}),f.addItem(k=>{k.setTitle(c("Create quick workflow")),k.setIcon("zap"),k.onClick(()=>{If(!1,a,null,e)})})});return}let l=To(r,a.cm.state.doc,t.line+1,e);if(!l)return;let{workflowType:d,currentStage:u,currentSubStage:p,workflow:m,isRootTask:h}=l;n.addItem(g=>{g.setTitle(c("Workflow")),g.setIcon("list-ordered");let f=g.setSubmenu();if(u.id==="_root_task_"){if(m.stages.length>0){let k=m.stages[0];f.addItem(v=>{v.setTitle(`${c("Move to stage")} ${k.name}`),v.onClick(()=>{let y=fn(e,a,r,t.line,k,!0,void 0,void 0);a.cm.dispatch({changes:y,annotations:[It.of("workflowChange"),bo.of("workflowChange")]})})})}}else if(u.canProceedTo)u.canProceedTo.forEach(k=>{let v=m.stages.find(y=>y.id===k);v&&f.addItem(y=>{let b=Of(r,t.line,a.cm.state.doc,e);y.setTitle(b?`${c("Complete stage")}: ${v.name}`:`${c("Move to stage")} ${v.name}`),y.onClick(()=>{let w=fn(e,a,r,t.line,v,!1,void 0,p);a.cm.dispatch({changes:w,annotations:[It.of(b?"workflowChange.completeStage":"workflowChange.moveToStage"),bo.of("workflowChange")]})})})});else if(u.type==="terminal")f.addItem(k=>{k.setTitle(c("Complete workflow")),k.onClick(()=>{let v=fn(e,a,r,t.line,u,!1,void 0,p);a.cm.dispatch({changes:v,annotations:[It.of("workflowChange"),bo.of("workflowChange")]})})});else{let{nextStageId:k}=Vw(u,m,p);if(k&&k!==u.id){let v=m.stages.find(y=>y.id===k);v&&f.addItem(y=>{y.setTitle(`${c("Move to")} ${v.name}`),y.onClick(()=>{let b=fn(e,a,r,t.line,v,!1,void 0,void 0);a.cm.dispatch({changes:b,annotations:[It.of("workflowChange"),bo.of("workflowChange")]})})})}}f.addSeparator(),f.addItem(k=>{k.setTitle(c("Add child task with same stage")),k.setIcon("plus-circle"),k.onClick(()=>{if(o.currentStage==="root"){if(m.stages.length>0){let v=m.stages[0],y=fn(e,a,r,t.line,v,!1,void 0,void 0);a.cm.dispatch({changes:y,annotations:[It.of("workflowChange"),bo.of("workflowChange")]})}}else if(u.id==="_root_task_"){if(m.stages.length>0){let v=m.stages[0],y=fn(e,a,r,t.line,v,!1,void 0,void 0);a.cm.dispatch({changes:y,annotations:[It.of("workflowChange"),bo.of("workflowChange")]})}}else{let v=fn(e,a,r,t.line,u,!1,p,void 0);a.cm.dispatch({changes:v,annotations:[It.of("workflowChange"),bo.of("workflowChange")]})}})})})}function Of(n,a,e,t){let r=Cl(n);if(!r)return!0;let i=r.workflowType,s=r.currentStage,o=r.subStage;if(i==="fromParent"){let m=Bw(a,e),h=nM(e,m);if(!h)return!0;i=h}let l=t.settings.workflow.definitions.find(m=>m.id===i);if(!l)return!0;if(s==="root")return!1;let d=l.stages.find(m=>m.id===s);if(!d||d.type==="terminal")return!0;if(d.type==="cycle"&&d.subStages&&o){let m=d.subStages.find(k=>k.id===o);if(!m)return!0;let h=!m.next,g=d.canProceedTo&&d.canProceedTo.length>0,f=typeof d.next=="string"||Array.isArray(d.next)&&d.next.length>0;return!!(h&&!g&&!f&&l.stages.findIndex(v=>v.id===d.id)===l.stages.length-1)}if(d.next||d.canProceedTo&&d.canProceedTo.length>0)return!1;let p=l.stages.findIndex(m=>m.id===d.id);return p<0||p===l.stages.length-1}function Vw(n,a,e){var i,s,o,l,d,u,p;let t=n.id,r;if(n.id===G2)return t=(s=(i=a.stages[0])==null?void 0:i.id)!=null?s:n.id,{nextStageId:t,nextSubStageId:r};if(n.type==="terminal")return{nextStageId:t,nextSubStageId:r};if(n.type==="cycle"&&e){if(e.next)return t=n.id,r=e.next,{nextStageId:t,nextSubStageId:r};if((o=n.canProceedTo)!=null&&o.length)return t=n.canProceedTo[0],{nextStageId:t,nextSubStageId:r};let m=(d=(l=n.subStages)==null?void 0:l.length)!=null?d:0;return m===1?(t=n.id,r=e.id):m>1&&(t=n.id,r=n.subStages[0].id),{nextStageId:t,nextSubStageId:r}}if(n.type==="linear"){if(typeof n.next=="string")t=n.next;else if(Array.isArray(n.next)&&n.next.length)t=n.next[0];else if((u=n.canProceedTo)!=null&&u.length)t=n.canProceedTo[0];else{let m=a.stages.findIndex(h=>h.id===n.id);m>=0&&m<a.stages.length-1&&(t=a.stages[m+1].id)}return{nextStageId:t,nextSubStageId:r}}return n.type==="cycle"?((p=n.canProceedTo)!=null&&p.length&&(t=n.canProceedTo[0]),{nextStageId:t,nextSubStageId:r}):{nextStageId:t,nextSubStageId:r}}function fn(n,a,e,t,r,i,s,o){let l=a.cm.state.doc,d=n.app,u=Bw(t+1,l),p=l.line(u),m=Qa(d),h=wo(e);i&&(h+=m);let g=[],f=Of(e,t,l,n),k=e.match(Hw);if(k){let w=p.from+k[0].indexOf("[");g.push({from:w+1,to:w+2,insert:"x"})}let v="",y=e.match(iM);y?v=y[1]:v=nM(l,u)||r.id.split(Rf)[0];let b=Q2(e,l,p.from,t,v,n);if(g.push(...b),o&&!s&&!f){let w=rM(e);w&&n.settings.workflow.autoRemoveLastStageMarker&&g.push({from:p.from+w.index,to:p.from+w.index+w[0].length,insert:""}),h=L7(h,d)}if(!f){let w=Nf(r,h,n,!0,s),T=Math.min(p.to,l.length);g.push({from:T,to:T,insert:`
${w}`})}if(n!=null&&n.settings.workflow.autoRemoveLastStageMarker){let w=rM(e);w&&g.push({from:p.from+w.index,to:p.from+w.index+w[0].length,insert:""})}return g}function To(n,a,e,t){let r=Cl(n);if(!r)return null;let i=r.workflowType,s=r.currentStage,o=r.subStage;if(i==="fromParent"){let m=Bw(e,a),h=nM(a,m);if(!h)return null;i=h}let l=t.settings.workflow.definitions.find(m=>m.id===i);if(!l)return null;let d=s==="root"||n.includes(`#workflow/${i}`)&&!n.includes("[stage::"),u;if(s==="root"||d)u={id:G2,name:"Root Task",type:"linear",next:l.stages.length>0?l.stages[0].id:void 0};else{let m=l.stages.find(h=>h.id===s);if(!m)return 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:d}}function Nf(n,a,e,t=!0,r){let i=e.settings.workflow.autoAddTimestamp?` \u{1F6EB} ${(0,yo.moment)().format(e.settings.workflow.timestampFormat||"YYYY-MM-DD HH:mm:ss")}`:"",s=Qa(e.app);if(r)return`${a}- [ ] ${n.name} (${r.name}) [stage::${n.id}${Rf}${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],d=a+s;o+=`
${d}- [ ] ${n.name} (${l.name}) [stage::${n.id}${Rf}${l.id}]${i}`}return o}function H7(n,a,e){let t=n.to;t>a.length&&(t=a.length);let r=e.length,i=n.number,s=!1,o=Math.min(n.number+20,a.lines);for(let l=n.number+1;l<=o&&!(l>a.lines);l++){let d=a.line(l);if(wo(d.text).length>r)i=l,s=!0;else if(s)break}return s&&i<=a.lines&&(t=a.line(i).to,t>a.length&&(t=a.length)),t}function B7(n,a,e){var i;let t=0,r=[...e].sort((s,o)=>o.from-s.from);for(let s of r){let o=s.from,l=(i=s.to)!=null?i:s.from;if(o>=n)continue;let d=s.insert?s.insert.length:0,u=l-o;if(l<=n)t+=d-u;else{let p=n-o;t+=d-p}}return t}function eL(n,a){return Z2.EditorState.transactionFilter.of(e=>V7(e,n,a))}function V7(n,a,e){if(!n.docChanged||!e.settings.autoCompleteParent)return n;let t=n.annotation(It);if(typeof t=="string"&&t.includes("autoCompleteParent")||n.isUserEvent("input.paste")||n.isUserEvent("set")||W7(n))return n;let r=z7(n);if(!r)return n;let{doc:i,lineNumber:s}=r,o=_7(i,s);if(!o)return n;let{lineNumber:l,indentationLevel:d}=o;if(e.settings.autoCompleteParent&&J2(i,l,d,e))return U7(n,l,i);if(e.settings.markParentInProgressWhenPartiallyComplete){let u=Y7(i,l),p=J2(i,l,d,e),m=$7(i,l,d,a),h=G7(i,l,d,a);if(u===" "&&m||u==="x"&&!p&&h){let g=e.settings.taskStatuses.inProgress.split("|")[0]||"/";return q7(n,l,i,[g])}}return n}function W7(n){let a=[];n.changes.iterChanges((r,i,s,o,l)=>{if(r<i){let d=n.startState.doc.sliceString(r,i);a.push({type:"delete",content:d,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 d=0;d<s.length;d++){let u=s[d].trim(),p=o[d].trim();if(u!==p){l=!1;break}}if(l)return!0}}return!1}function z7(n){let a=null;return n.changes.iterChanges((e,t,r,i,s)=>{var m,h;if(s.length>0&&a===null){let g=s.toString(),f=g.match(/\n[\s|\t]*([-*+]|\d+\.)\s\[ \]/);if(f)try{a=n.newDoc.lineAt(r+g.indexOf(f[0])+1).number;return}catch(v){}if(g.match(/^[\s|\t]*([-*+]|\d+\.)\s\[ \]/))try{a=n.newDoc.lineAt(r).number;return}catch(v){}}let o=r,l=n.newDoc.lineAt(o),d=l.text,u=/^[\s|\t]*([-*+]|\d+\.)\s\[(.)]/i,p=d.match(u);if(p){let g=null;try{let v=e;v>=0&&v<n.startState.doc.length&&(g=n.startState.doc.lineAt(v))}catch(v){}let f=p[2],k=g&&(h=(m=g.text.match(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/i))==null?void 0:m[2])!=null?h:null;(!g||f!==k)&&(a=l.number)}}),a===null?null:{doc:n.newDoc,lineNumber:a}}function _7(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,h=p&&p[0].includes(" "),g=p&&p[0].includes(" ");if(!(m>0&&i>0&&(s&&!h||o&&!g))&&m<i){if(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/i.test(u))return{lineNumber:l,indentationLevel:m};if(!u.startsWith("#")&&!u.startsWith(">"))break}}return null}function J2(n,a,e,t){let r=_o(t.app),i=e+r,s=!1;for(let o=a+1;o<=n.lines;o++){let d=n.line(o).text;if(d.trim()==="")continue;let u=d.match(/^[\s|\t]*/),m=(u?u[0]:"").length;if(m<=e)break;if(m===i){let h=/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]/i,g=d.match(h);if(g){s=!0;let f=g[2];if(f!=="x"&&f!=="X")return!1;if(t.settings.workflow.enableWorkflow&&t.settings.workflow.autoRemoveLastStageMarker&&!Of(d,o,n,t))return!1}}}return s}function U7(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,h,g)=>{let f=r.indexOf("[")+1,k=t.from+f;k>=m&&k<h&&(o=!0)}),o)return n;let l=r.indexOf("[")+1,d=t.from+l;return{changes:[n.changes,{from:d,to:d+1,insert:"x"}],selection:n.selection,annotations:[It.of("autoCompleteParent.DONE")]}}function $7(n,a,e,t){let r=_o(t),i=e+r;for(let s=a+1;s<=n.lines;s++){let l=n.line(s).text;if(l.trim()==="")continue;let d=l.match(/^[\s|\t]*/),u=d?d[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 Y7(n,a){let r=n.line(a).text.match(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)]/);return r?r[2]:""}function q7(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,h,g,f)=>{let k=i.indexOf("[")+1,v=r.from+k;v>=h&&v<g&&(l=!0)}),l)return n;let d=i.indexOf("[")+1,u=r.from+d;return{changes:[n.changes,{from:u,to:u+1,insert:t[0]}],selection:n.selection,annotations:[It.of("autoCompleteParent.IN_PROGRESS")]}}function G7(n,a,e,t){let r=_o(t),i=e+r;for(let s=a+1;s<=n.lines;s++){let l=n.line(s).text;if(l.trim()==="")continue;let d=l.match(/^[\s|\t]*/),u=d?d[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"),aL=require("@codemirror/state");function rL(n,a){return aL.EditorState.transactionFilter.of(e=>X7(e,n,a))}function K7(n,a,e,t,r,i,s,o){if(e-a!==1||t.length!==1)return!1;let l;if(o.settings.statusCycles&&o.settings.statusCycles.length>0){let h=yF(o.settings.statusCycles);l=Array.from(h)}else{let{marks:h}=ca(o.settings);l=Object.values(h)}let d=l.includes(r)||r===" ",u=l.includes(t)||t===" ";if(!d||!u||r===" "&&!l.includes(t)&&t!==" ")return!1;let p=/^[\s|\t]*([-*+]|\d+\.)\s+\[(.)]/;return s.match(p)?(`${r}${t}${a}${e}`,!0):!1}function Q7(n,a,e){let t=[],r=!1;if(n.changes.length>1){let s=[];n.changes.iterChanges((o,l,d,u,p)=>{s.push({fromA:o,toA:l,fromB:d,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,d,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,d,u)=>{let p=u.toString();if(p.includes(`
`)||p.includes("[[")||p.includes("]]")||l>n.startState.doc.length)return;let m=l,g=n.startState.doc.lineAt(m).text;if(g.trim()==="")return;let f=n.newDoc.lineAt(m),k=f.text,v=/^[\s|\t]*([-*+]|\d+\.)\s+\[(.)]/,y=g.match(v),b=k.match(v);if(b&&!y&&p===k){let w=k.indexOf("[")+1,T=f.from+w,x=b[2];t.push({position:T,currentMark:x,wasCompleteTask:!0,tasksInfo:{isTaskChange:!0,originalFromA:s,originalToA:o,originalFromB:l,originalToB:d,originalInsertedText:p}});return}if(y){let w=null,T=null,x=!1,C=!1,S=!1;if(p.trim().match(/^(?:[\s|\t]*(?:[-*+]|\d+\.)\s+\[.(?:\])?)/)){let D=k.indexOf("[")+1;w=f.from+D,T=y[2],x=!0,C=!0}else if(p.length===1){let D=k.indexOf("[")+1;if(m===f.from+D&&p!=="["&&!(y[2]===" "&&/[a-zA-Z]/.test(p)&&(!e||!Object.values(ca(e.settings).marks).includes(p)))){if(s!==o){let E=n.startState.doc.sliceString(s,o);if(e){if(!K7(n,s,o,p,E,m,k,e)){`${s}${o}${p}${E}`;return}`${s}${o}${E}${p}`}else{`${s}${o}${p}`;return}}w=m,T=y[2],x=!0,C=!0}}else if(p.indexOf("[")!==-1&&p.indexOf("]")!==-1&&p!=="[]"){let D=k.indexOf("[")+1;w=f.from+D,T=y[2],x=!0,C=!0}a&&k===p&&(p.includes("\u2705")||p.includes("\u274C")||p.includes("\u{1F6EB}")||p.includes("\u{1F4C5}")||g.includes("\u2705")||g.includes("\u274C")||g.includes("\u{1F6EB}")||g.includes("\u{1F4C5}"))&&(S=!0),w!==null&&T!==null&&C&&t.push({position:w,currentMark:T,wasCompleteTask:x,tasksInfo:S?{isTaskChange:S,originalFromA:s,originalToA:o,originalFromB:l,originalToB:d,originalInsertedText:p}:null})}}),t)}function X7(n,a,e){var k,v;if(!n.docChanged)return n;let t=n.annotation(It),r=n.annotation(Un);if(t||r||n.isUserEvent("set")&&n.changes.length>1||n.isUserEvent("input.paste"))return n;if(n.isUserEvent("input.autocomplete")){let y=!1;if(n.changes.iterChanges((b,w,T,x,C)=>{let S=C.toString();S.includes("](")&&S.startsWith("[")&&S.endsWith(")")&&(y=!0)}),y)return n}let i=!1;if(n.changes.iterChanges((y,b,w,T,x)=>{let C=x.toString();n.startState.doc.sliceString(y,b)==="-"&&C===""&&(w!==y||T!==b)&&n.newDoc.sliceString(Math.max(0,w-5),Math.min(w+5,n.newDoc.length)).includes("[")&&(i=!0)}),i)return n;let s=Q7(n,!!Uo(e),e);if(s.length===0)return n;let{cycle:o,marks:l,excludeMarksFromCycle:d}=ca(e.settings),u=o.filter(y=>!d.includes(y));if(u.length===0)return n;let p=!1;if(n.changes.length>1){let y=[];n.changes.iterChanges((T,x,C,S,D)=>{y.push({fromA:T,toA:x,fromB:C,toB:S,text:D.toString()})});let b=y.some(T=>T.text===""&&T.toA>T.fromA),w=y.some(T=>{let x=T.fromB;try{let C=n.newDoc.lineAt(x);return C.text.includes("[")&&C.text.includes("]")}catch(C){return!1}});b&&w&&(p=!0)}if(p)return n;let m=!1;if(n.changes.iterChanges((y,b,w,T,x)=>{if(y===0||n.startState.doc.sliceString(y-1,y)===`
`){let S=n.startState.doc.lineAt(y).text,D=x.toString();D.trim()===S.trim()&&D.length>S.length&&(m=!0),S.trim()===D.trim()&&S.length>D.length&&(m=!0)}}),m)return n;let h=!1;if(n.changes.iterChanges((y,b,w,T,x)=>{let C=n.startState.doc.sliceString(y,b),S=x.toString(),D=/(?:-|\*|\+|\d+\.)\s\[.\]/;if(C.includes(`
`)&&!S.includes(`
`)&&D.test(S)&&D.test(C)){let E=S.trim();C.includes(E)&&(h=!0)}y===0&&b===n.startState.doc.length&&D.test(S)&&!S.includes(`
`)&&(h=!0)}),h)return n;let g=[],f=!1;for(let y of s){let{position:b,currentMark:w,wasCompleteTask:T,tasksInfo:x}=y;if(x!=null&&x.isTaskChange)continue;let C,S;if(e.settings.statusCycles&&e.settings.statusCycles.length>0){let V=En(w,e.settings.statusCycles);V?(C=V.statusName,S=V.mark):(C=u[0]||"Not Started",S=l[C]||" ")}else{let V=-1;for(let te=0;te<u.length;te++){let ce=u[te];if(l[ce]===w){V=te;break}}V===-1&&(V=0);let K=(V+1)%u.length;C=u[K],S=l[C]||" "}if(`${w}${S}${C}`,w===S){`${w}`;continue}let D=null;if(n.changes.iterChanges((V,K,te,ce,pe)=>{let Ne=pe.toString();te===b&&Ne.length===1&&(D=Ne)}),D===S){`${D}${S}`;continue}let R=n.newDoc.lineAt(b).text,H=n.startState.doc.lineAt(Math.min(b,n.startState.doc.length)).text;if(T){for(let[te,ce]of Object.entries(l))if(ce===w)break;let V=w===" "&&(((k=x==null?void 0:x.originalInsertedText)==null?void 0:k.includes("[ ]"))||R.includes("[ ]")&&!H.includes("[ ]")),K=w===" "&&(te=>(te==null?void 0:te.includes("- [ ]"))||(te==null?void 0:te.includes("* [ ]"))||(te==null?void 0:te.includes("+ [ ]"))||/^\d+\.\s+\[\s\]/.test(te||""))(x==null?void 0:x.originalInsertedText);if(V||K)continue}let U=b,q=n.newDoc.lineAt(U),L=q.to;if(U<q.from||U>=L){`${U}${q.from}${L}`;continue}let _=Math.min(U+1,L);if(_<=U){`${U}${_}`;continue}(S==="x"||S==="X")&&(f=!0),`${U}${w}${S}`,g.push({from:U,to:_,insert:S})}if(g.length>0){`${g.length}`,g.forEach((x,C)=>{`${C}${x.from}${x.to}${x.insert}`});let y=n.startState.field(tL.editorInfoField),b=g[0],w=n.newDoc.lineAt(b.from),T=al(((v=y==null?void 0:y.file)==null?void 0:v.path)||"",w.text,w.number,e.settings.preferMetadataFormat,e);return{changes:g,selection:n.selection,annotations:It.of("taskStatusChange")}}return n}var xo=require("@codemirror/view"),iL=require("obsidian"),nL=require("@codemirror/state"),Ww=require("@codemirror/language");z();var sL=require("@codemirror/search"),oL=require("obsidian");var dXe=nL.Annotation.define(),sM=class extends xo.WidgetType{constructor(e,t,r,i,s,o,l,d){super();this.app=e;this.plugin=t;this.view=r;this.from=i;this.to=s;this.workflowType=o;this.stageId=l;this.subStageId=d}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,oL.setIcon)(e.createSpan(),t),e.setAttribute("data-stage-type",r);let i=this.generateTooltipContent();return(0,iL.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 c("Workflow not found");let t=e.stages.find(s=>s.id===this.stageId);if(!t)return c("Stage not found");let r=`${c("Workflow")}: ${e.name}
`;if(this.subStageId){let s=(i=t.subStages)==null?void 0:i.find(o=>o.id===this.subStageId);s?r+=`${c("Current stage")}: ${t.name} (${s.name})
`:r+=`${c("Current stage")}: ${t.name}
`}else r+=`${c("Current stage")}: ${t.name}
`;if(r+=`${c("Type")}: ${t.type}`,t.type!=="terminal"){if(t.next){let s=e.stages.find(o=>o.id===t.next);s&&(r+=`
${c("Next")}: ${s.name}`)}else if(t.canProceedTo&&t.canProceedTo.length>0){let s=e.stages.find(o=>o.id===t.canProceedTo[0]);s&&(r+=`
${c("Next")}: ${s.name}`)}}return r}handleClick(e){var v,y;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=To(s,this.view.state.doc,i.number,this.plugin);if(!o)return;let{currentStage:l,workflow:d,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=(y=(v=l.subStages)==null?void 0:v[0])==null?void 0:y.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 b=d.stages.findIndex(w=>w.id===l.id);if(b>=0&&b<d.stages.length-1)p=d.stages[b+1].id;else return}if(!d.stages.find(b=>b.id===p))return;let g;m?g=`[stage::${p}.${m}]`:g=`[stage::${p}]`;let f=/\[stage::[^\]]+\]/,k=s.match(f);if(k&&k.index!==void 0){let b=i.from+k.index,w=b+k[0].length;r.cm.dispatch({changes:{from:b,to:w,insert:g}})}}ignoreEvent(){return!1}};function lL(n,a){return a.settings.workflow.enableWorkflow?xo.ViewPlugin.fromClass(class{constructor(e){this.view=e;this.decorations=xo.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=xo.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 sL.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),d=this.simpleHash(l.text),u=`${l.number}:${d}`;if(this.decorationCache.has(u)){let T=this.decorationCache.get(u);e.push(T);continue}if(!this.shouldRender(s,o))continue;let p=l.text,m=/^([\s|\t]*)([-*+]|\d+\.)\s+\[(.)]/,h=/\[([ xX\-])\]/.test(p);if(!m.test(p)&&!h||!Cl(p))continue;let f=To(p,this.view.state.doc,l.number,a);if(!f)continue;let{workflowType:k,currentStage:v,currentSubStage:y}=f,w=xo.Decoration.widget({widget:new sM(n,a,this.view,s,o,k,v.id,y==null?void 0:y.id),side:1}).range(o,o);if(e.push(w),this.decorationCache.size>=this.MAX_CACHE_SIZE){let T=this.decorationCache.keys().next().value;this.decorationCache.delete(T)}this.decorationCache.set(u,w)}}this.decorations=xo.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,Ww.syntaxTree)(this.view.state).resolveInner(e+1).type.prop(Ww.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 zw=require("obsidian"),cL=require("@codemirror/state"),dL=require("@codemirror/view");z();var uL=/^(\s*)([-*+]|\d+\.)\s+\[(.)]/,Lf="- [ ] ";function Yc(n){let a=n.match(/^(\s*)/);return a?a[1]:""}function oM(n){var a,e;return(e=(a=n.state.field(zw.editorInfoField))==null?void 0:a.editor)!=null?e:null}function jf(n,a){return n+1+a.length+Lf.length}function J7(n,a,e,t,r){var k,v;let i=new zw.Menu,s=n.state.doc;if(t<1||t>s.lines)return!1;let l=s.line(t).text,d=To(l,s,t,e);if(!d)return!1;let{currentStage:u,currentSubStage:p,workflow:m,isRootTask:h}=d;if(r.currentStage==="root"||h)i.addItem(y=>{y.setTitle(c("Start workflow")).setIcon("play").onClick(()=>{tK(n,a,e,t)})});else if(u.type==="terminal")i.addItem(y=>{y.setTitle(c("Complete workflow")).setIcon("check").onClick(()=>{rK(n,e,t)})});else{let{nextStageId:y,nextSubStageId:b}=Vw(u,m,p);if(y){let w=m.stages.find(T=>T.id===y);if(w){let T;if(y===u.id&&b===(p==null?void 0:p.id))T=`${c("Continue")} ${w.name}${b?` (${p==null?void 0:p.name})`:""}`;else if(y===u.id&&b){let x=(k=w.subStages)==null?void 0:k.find(C=>C.id===b);T=`${c("Move to")} ${w.name} (${(x==null?void 0:x.name)||b})`}else T=`${c("Move to")} ${w.name}`;i.addItem(x=>{x.setTitle(T).setIcon("arrow-right").onClick(()=>{var C;aK(n,a,e,t,w,!1,b?(C=w.subStages)==null?void 0:C.find(S=>S.id===b):void 0,p)})})}}if(p&&u.type==="cycle"){let w=new Set;if((v=u.canProceedTo)!=null&&v.length)u.canProceedTo.forEach(T=>w.add(T));else if(typeof u.next=="string")w.add(u.next);else if(Array.isArray(u.next)&&u.next.length>0)w.add(u.next[0]);else{let T=m.stages.findIndex(x=>x.id===u.id);T>=0&&T<m.stages.length-1&&w.add(m.stages[T+1].id)}w.forEach(T=>{let x=m.stages.find(C=>C.id===T);x&&i.addItem(C=>{C.setTitle(`${c("Complete substage and move to")} ${x.name}`).setIcon("skip-forward").onClick(()=>{nK(n,e,t,x,p)})})})}i.addSeparator(),i.addItem(w=>{w.setTitle(c("Add child task with same stage")).setIcon("plus-circle").onClick(()=>{iK(n,a,e,t,u,p)})})}i.addSeparator(),i.addItem(y=>{y.setTitle(c("Add new task")).setIcon("plus").onClick(()=>{Z7(n,t)})}),i.addItem(y=>{y.setTitle(c("Add new sub-task")).setIcon("plus-circle").onClick(()=>{eK(n,a,t)})});let g=n.state.selection.main,f=n.coordsAtPos(g.head);return f?i.showAtPosition({x:f.left,y:f.bottom}):i.showAtMouseEvent(window.event),!0}function Z7(n,a){let e=n.state.doc.line(a),t=Yc(e.text),r=`
${t}${Lf}`;n.dispatch({changes:{from:e.to,to:e.to,insert:r},selection:{anchor:jf(e.to,t)}}),n.focus()}function eK(n,a,e){let t=n.state.doc.line(e),r=Yc(t.text),i=Qa(a),s=r+i,o=`
${s}${Lf}`;n.dispatch({changes:{from:t.to,to:t.to,insert:o},selection:{anchor:jf(t.to,s)}}),n.focus()}function tK(n,a,e,t){let r=n.state.doc;if(t<1||t>r.lines)return;let i=r.line(t),s=i.text;if(!Cl(s))return;let l=To(s,n.state.doc,t,e);if(!l||!l.workflow.stages.length)return;let{workflow:d}=l,u=d.stages[0],m=Yc(s)+Qa(a),g=`
${Nf(u,m,e,!0)}`,f=jf(i.to,m);n.dispatch({changes:{from:i.to,to:i.to,insert:g},selection:{anchor:f}}),n.focus()}function pL(n,a){return a.settings.workflow.enableWorkflow?[cL.Prec.high(dL.keymap.of([{key:"Enter",run:t=>{let r=t.state.selection.main,i=t.state.doc.lineAt(r.head),s=i.text;if(!s.match(uL))return!1;let l=Cl(s);return!l||r.head!==i.to?!1:J7(t,n,a,i.number,l)}}]))]:[]}function aK(n,a,e,t,r,i,s,o){let l=n.state.doc;if(t<1||t>l.lines)return;let d=l.line(t),u=d.text,p=oM(n);if(!p)return;let m=fn(e,p,u,t-1,r,i,s,o),h=Yc(u),g=Qa(a),f=i?h+g:h,v=m.some(y=>y.insert&&y.insert.includes(Lf))?jf(d.to,f):d.to;n.dispatch({changes:m,selection:{anchor:v},annotations:It.of("workflowChange")}),n.focus()}function rK(n,a,e){let t=n.state.doc;if(e<1||e>t.lines)return;let i=t.line(e).text,s=oM(n);if(!s)return;let o=To(i,t,e,a);if(!o)return;let{currentStage:l,currentSubStage:d}=o,u=fn(a,s,i,e-1,l,!1,void 0,d);n.dispatch({changes:u,annotations:It.of("workflowChange")}),n.focus()}function iK(n,a,e,t,r,i){let s=n.state.doc.line(t),o=Yc(s.text),l=Qa(a),d=o+l,u=Nf(r,d,e,!1,i);n.dispatch({changes:{from:s.to,to:s.to,insert:`
${u}`},selection:{anchor:jf(s.to,d)}}),n.focus()}function nK(n,a,e,t,r){let i=n.state.doc;if(e<1||e>i.lines)return;let o=i.line(e).text,l=oM(n);if(!l)return;let d=[],u=Yc(o).length;for(let m=e-1;m>=1;m--){let h=i.line(m);if(Yc(h.text).length<u&&h.text.match(uL)&&h.text.includes("[stage::")){let v=fn(a,l,h.text,m-1,t,!1,void 0,void 0).filter(y=>!y.insert||!y.insert.includes(Lf));d.push(...v);break}}let p=fn(a,l,o,e-1,t,!1,void 0,r);d.push(...p),n.dispatch({changes:d,annotations:It.of("workflowChange")}),n.focus()}function mL(n,a,e,t){return gL(n,a,t,"forward")}function hL(n,a,e,t){return gL(n,a,t,"backward")}function gL(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 l=o[2],d;if(e.settings.statusCycles&&e.settings.statusCycles.length>0){let p=t==="forward"?En(l,e.settings.statusCycles):vF(l,e.settings.statusCycles);if(p)d=p.mark;else return!1}else{let{cycle:p,marks:m,excludeMarksFromCycle:h}=ca(e.settings),g=p.filter(y=>!h.includes(y));if(g.length===0)return!1;let f=-1;for(let y=0;y<g.length;y++){let b=g[y];if(m[b]===l){f=y;break}}f===-1&&(f=0);let k;t==="forward"?k=(f+1)%g.length:k=(f-1+g.length)%g.length;let v=g[k];d=m[v]||" "}let u=i.indexOf("[")+1;return a.replaceRange(d,{line:r.line,ch:u},{line:r.line,ch:u+1}),!0}var Ms=require("obsidian");z();var fL=(e=>(e.MARKDOWN="md",e.CANVAS="canvas",e))(fL||{});function lM(n){return kL(n.extension)}function _w(n,a,e="both"){return kL(n.extension)?a?a.shouldIncludeFile(n,e):!0:!1}function kL(n){return Object.values(fL).includes(n)}var cM=class extends Ms.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=>lM(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:`${c("Create new file:")} ${t}`}):e.createEl("div",{text:t.path})}onChooseItem(a,e){typeof a=="string"?this.createNewFileWithTasks(a):new dM(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 Ms.Notice(`${c("Task moved to")} ${a}`)}catch(e){new Ms.Notice(`${c("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(`
`)}},dM=class extends Ms.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:c("Beginning of file"),level:0,line:0}),i.push({id:"end",text:c("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:`${c("After heading")}: ${o}`,level:s.level,line:s.position.start.line}),i.push({id:`heading-end-${s.position.start.line}`,text:`${c("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=Qa(this.app).length;else if(a.id.startsWith("heading-end-"))i=this.findSectionEnd(r,a.line,a.level),s=Qa(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 Ms.Notice(`${c("Task moved to")} ${this.targetFile.path}`)}catch(e){new Ms.Notice(`${c("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=Qa(this.app).repeat(e/Qa(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 vL(n,a,e,t){let r=e.file;if(n){if(!r||!lM(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 Ms.Notice(c("No active file found")),!1;let i=a.getCursor();return new cM(t.app,t,a,r,i.line).open(),!0}var Ga=require("obsidian");z();var Fi=class{static getIndentation(a,e){let t=a.match(/^(\s*)/);return t?t[1].length:0}static getTabSize(a){return _o(a)}static processCustomMarker(a){return a?a.replace(/\{\{DATE:([^}]+)\}\}/g,(e,t)=>(0,Ga.moment)().format(t)):""}static processDateMarker(a){return a?a.replace(/\{\{date\}\}/g,()=>(0,Ga.moment)().format("YYYY-MM-DD")):""}static addMarkerToTask(a,e,t,r,i=!1){var f;let{taskMarkerType:s,versionMarker:o,dateMarker:l,customMarker:d,withCurrentFileLink:u}=e.completedTaskMover,p=a.match(/^(.*?)(?:\s+^[a-zA-Z0-9]{6}$)?$/);if(!p)return a;let m=p[1].trimEnd(),h=(f=p[2])==null?void 0:f.trim(),g=m;if(!(o&&m.includes(o))&&!(l&&m.includes(l))&&!m.includes(this.processCustomMarker(d)))switch(s){case"version":o&&(g=`${m} ${o}`);break;case"date":let k=this.processDateMarker(l);k&&(g=`${m} ${k}`);break;case"custom":let v=this.processCustomMarker(d);v&&(g=`${m} ${v}`);break;default:g=m}if(u&&i){let k=r.fileManager.generateMarkdownLink(t,t.path);g=`${g} from ${k}`}return h&&(g=`${g} ${h}`),g}static addMarkerToIncompletedTask(a,e,t,r,i=!1){var f;let{incompletedTaskMarkerType:s,incompletedVersionMarker:o,incompletedDateMarker:l,incompletedCustomMarker:d,withCurrentFileLinkForIncompleted:u}=e.completedTaskMover,p=a.match(/^(.*?)(?:\s+^[a-zA-Z0-9]{6}$)?$/);if(!p)return a;let m=p[1].trimEnd(),h=(f=p[2])==null?void 0:f.trim(),g=m;if(!(o&&m.includes(o))&&!(l&&m.includes(l))&&!m.includes(this.processCustomMarker(d)))switch(s){case"version":o&&(g=`${m} ${o}`);break;case"date":let k=this.processDateMarker(l);k&&(g=`${m} ${k}`);break;case"custom":let v=this.processCustomMarker(d);v&&(g=`${m} ${v}`);break;default:g=m}if(u&&i){let k=r.fileManager.generateMarkdownLink(t,t.path);g=`${g} from ${k}`}return h&&(g=`${g} ${h}`),g}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 d=this.getIndentation(o,t);if(l===0)return Qa(t).repeat(e)+o.substring(d);let u=d-i,p=Math.max(0,e+u);return Qa(t).repeat(p/_o(t))+o.trimStart()}).join(`
`)}static processSelectedTasks(a,e,t,r,i,s,o=!0){let l=[...e].sort((g,f)=>f-g),d=new Set,u=new Map;for(let g of l){let f=this.processSingleSelectedTask(a,g,t,r,i,s,o);u.set(g,f.content.split(`
`)),f.linesToRemove.forEach(k=>d.add(k))}let p=[...e].sort((g,f)=>g-f),m=[];for(let g=0;g<p.length;g++){let f=p[g];if(p.some(v=>{if(v===f)return!1;let b=a.getValue().split(`
`),w=this.getIndentation(b[v],s),T=this.getIndentation(b[f],s);return f>v&&T>w&&!p.some(x=>x>v&&x<f&&this.getIndentation(b[x],s)<=w)}))continue;m.length>0&&m.push("");let k=u.get(f);k&&m.push(...k)}let h=Array.from(d);return{content:m.filter(g=>g.trim()!=="").join(`
`),linesToRemove:h}}static processSingleSelectedTask(a,e,t,r,i,s,o=!0){let d=a.getValue().split(`
`),u=[],p=[],m=d[e];if(!/^\s*(-|\d+\.|\*) \[(.)\]/.test(m))return{content:"",linesToRemove:[]};let g=this.getIndentation(m,s),f=m.match(/\[(.)]/),k=f?f[1]:"",v;t==="allIncompleted"||t==="directIncompletedChildren"?v=this.addMarkerToIncompletedTask(m,r,i,s,!0):(v=this.addMarkerToTask(m,r,i,s,!0),v=this.completeTaskIfNeeded(v,r)),u.push(v);let y=[];for(let b=e+1;b<d.length;b++){let w=d[b],T=this.getIndentation(w,s);if(T<=g||/^\s*(-|\d+\.|\*) \[(.)\]/.test(w)&&t!=="all")break;y.push({line:w,index:b,indent:T})}if(t==="all"){for(let b of y)u.push(this.completeTaskIfNeeded(b.line,r)),p.push(b.index);for(let b=e+y.length+1;b<d.length;b++){let w=d[b];if(this.getIndentation(w,s)<=g)break;u.push(this.completeTaskIfNeeded(w,r)),p.push(b)}p.push(e)}else{for(let T of y)u.push(T.line),p.push(T.index);let b=[],w=e+y.length+1;for(let T=w;T<d.length;T++){let x=d[T],C=this.getIndentation(x,s);if(C<=g)break;let S=x.match(/\[(.)]/);if(S){let D=S[1],E=this.isCompletedTaskMark(D,r),R=this.isIncompletedTaskMark(D,r);b.push({line:x,index:T,indent:C,isCompleted:E,isIncompleted:R})}else b.push({line:x,index:T,indent:C,isCompleted:!1,isIncompleted:!1})}if(t==="allCompleted"){let T=new Set,x=new Set,C=new Set;b.forEach(D=>{if(D.isCompleted){T.add(D.index),x.add(D.index);let E=D,R=this.findParentTaskIndex(E.index,E.indent,b);for(;R!==-1;){x.add(R);let I=b.find(H=>H.index===R);if(!I)break;I.isCompleted||C.add(R),R=this.findParentTaskIndex(I.index,I.indent,b)}}}),b.forEach(D=>{let E=this.findParentTaskIndex(D.index,D.indent,b);E!==-1&&T.has(E)&&x.add(D.index)});let S=[...x].sort((D,E)=>D-E);u.length=0,u.push(v);for(let D of S){let E=b.find(R=>R.index===D);if(E){if(C.has(D)){let R=this.addMarkerToTask(E.line,r,i,s,!1);R=this.completeTaskIfNeeded(R,r),u.push(R)}else u.push(this.completeTaskIfNeeded(E.line,r));C.has(D)||p.push(D)}}this.isCompletedTaskMark(k,r)&&p.push(e)}else if(t==="directChildren"){let T=new Set,x=Number.MAX_SAFE_INTEGER;for(let S of b)S.indent>g&&S.indent<x&&(x=S.indent);for(let S of b)S.indent===x&&S.isCompleted&&T.add(S.index);u.length=0,u.push(v);let C=[...T].sort((S,D)=>S-D);for(let S of C){let D=b.find(I=>I.index===S);if(!D)continue;u.push(this.completeTaskIfNeeded(D.line,r)),p.push(S);let E=b.findIndex(I=>I.index===S)+1,R=D.indent;for(;E<b.length;){let I=b[E];if(I.indent<=R)break;u.push(this.completeTaskIfNeeded(I.line,r)),p.push(I.index),E++}}this.isCompletedTaskMark(k,r)&&p.push(e)}else if(t==="allIncompleted"){let T=new Set,x=new Set,C=new Set;b.forEach(D=>{if(D.isIncompleted){T.add(D.index),x.add(D.index);let E=D,R=this.findParentTaskIndex(E.index,E.indent,b);for(;R!==-1;){x.add(R);let I=b.find(H=>H.index===R);if(!I)break;I.isIncompleted||C.add(R),R=this.findParentTaskIndex(I.index,I.indent,b)}}}),b.forEach(D=>{let E=this.findParentTaskIndex(D.index,D.indent,b);E!==-1&&T.has(E)&&x.add(D.index)});let S=[...x].sort((D,E)=>D-E);u.length=0,u.push(v);for(let D of S){let E=b.find(R=>R.index===D);if(E){if(C.has(D)){let R=this.addMarkerToIncompletedTask(E.line,r,i,s,!1);u.push(R)}else u.push(E.line);C.has(D)||p.push(D)}}this.isIncompletedTaskMark(k,r)&&p.push(e)}else if(t==="directIncompletedChildren"){let T=new Set,x=Number.MAX_SAFE_INTEGER;for(let S of b)S.indent>g&&S.indent<x&&(x=S.indent);for(let S of b)S.indent===x&&S.isIncompleted&&T.add(S.index);u.length=0,u.push(v);let C=[...T].sort((S,D)=>S-D);for(let S of C){let D=b.find(I=>I.index===S);if(!D)continue;u.push(D.line),p.push(S);let E=b.findIndex(I=>I.index===S)+1,R=D.indent;for(;E<b.length;){let I=b[E];if(I.indent<=R)break;u.push(I.line),p.push(I.index),E++}}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:""}})})}},Hf=class extends Ga.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:`${c("Create new file:")} ${t}`}):e.createEl("div",{text:t.path})}onChooseItem(a,e){typeof a=="string"?this.createNewFileWithTasks(a):new uM(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}=Fi.processSelectedTasks(this.editor,this.taskLines,this.moveMode,this.plugin.settings,this.currentFile,this.app),r=Fi.resetIndentation(e,this.app),i=this.currentFile.parent,s=i?`${i.path}/${a}`:a,o=await this.app.vault.create(s,r);Fi.removeTasksFromFile(this.editor,t),this.app.workspace.getLeaf(!0).openFile(o),new Ga.Notice(`${c("Completed tasks moved to")} ${a}`)}catch(e){new Ga.Notice(`${c("Failed to create file:")} ${e}`),console.error(e)}}},uM=class extends Ga.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:c("Beginning of file"),level:0}),i.push({id:"end",text:c("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:Fi.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}=Fi.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=Fi.getIndentation(i[p],this.app)}let l=Fi.adjustIndentation(e,o,this.app),d=[...i.slice(0,s),l,...i.slice(s)].join(`
`);await this.app.vault.modify(this.targetFile,d),Fi.removeTasksFromFile(this.editor,t),new Ga.Notice(`${c("Completed tasks moved to")} ${this.targetFile.path}`)}catch(e){new Ga.Notice(`${c("Failed to move tasks:")} ${e}`),console.error(e)}}};function Uw(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 Ga.Notice(c("No active file found")),!1;let s=a.listSelections(),o=new Set;s.forEach(d=>{let u=Math.min(d.anchor.line,d.head.line),p=Math.max(d.anchor.line,d.head.line);for(let m=u;m<=p;m++)o.add(m)});let l=Array.from(o);return new Hf(t.app,t,a,i,l,r).open(),!0}function pM(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 Ga.Notice(c("No active file found")),!1;let s=a.listSelections(),o=new Set;s.forEach(d=>{let u=Math.min(d.anchor.line,d.head.line),p=Math.max(d.anchor.line,d.head.line);for(let m=u;m<=p;m++)o.add(m)});let l=Array.from(o);return new Hf(t.app,t,a,i,l,r).open(),!0}async function sK(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,d=s?i.defaultInsertionMode:i.incompletedDefaultInsertionMode,u=s?i.defaultHeadingName:i.incompletedDefaultHeadingName;if(!o||!l)return!1;try{let{content:p,linesToRemove:m}=Fi.processSelectedTasks(n,t,r,e.settings,a,e.app),h=e.app.vault.getFileByPath(l);if(h||(h=await e.app.vault.create(l,"")),!(h instanceof Ga.TFile))throw new Error(`Target path ${l} is not a file`);let f=(await e.app.vault.read(h)).split(`
`),k,v=0;switch(d){case"beginning":k=0;break;case"end":k=f.length;break;case"after-heading":let T=new RegExp(`^#+\\s+${u.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`,"i"),x=f.findIndex(C=>T.test(C));for(x===-1&&(f.length>0&&f[f.length-1].trim()!==""&&f.push(""),f.push(`## ${u}`),f.push(""),x=f.length-2),k=x+1;k<f.length&&f[k].trim()==="";)k++;break;default:k=f.length}let y=Fi.adjustIndentation(p,v,e.app),b=[...f.slice(0,k),y,...f.slice(k)].join(`
`);await e.app.vault.modify(h,b),Fi.removeTasksFromFile(n,m);let w=s?"completed":"incomplete";return new Ga.Notice(`${c("Auto-moved")} ${w} ${c("tasks to")} ${l}`),!0}catch(p){return new Ga.Notice(`${c("Failed to auto-move tasks:")} ${p}`),console.error(p),!1}}function Uu(n,a,e,t,r){let i=e.file;if(n){let d=r==="allCompleted"||r==="directChildren"||r==="all",u=d?t.settings.completedTaskMover.enableAutoMove:t.settings.completedTaskMover.enableIncompletedAutoMove,p=d?t.settings.completedTaskMover.defaultTargetFile:t.settings.completedTaskMover.incompletedDefaultTargetFile;if(!u||!p||!i||i.extension!=="md")return!1;if(a.getSelection().length===0){let h=a.getCursor();return a.getLine(h.line).match(/^\s*(-|\d+\.|\*) \[(.)\]/i)!==null}return!0}if(!i)return new Ga.Notice(c("No active file found")),!1;let s=a.listSelections(),o=new Set;s.forEach(d=>{let u=Math.min(d.anchor.line,d.head.line),p=Math.max(d.anchor.line,d.head.line);for(let m=u;m<=p;m++)o.add(m)});let l=Array.from(o);return sK(a,i,t,l,r).then(d=>{d||new Hf(t.app,t,a,i,l,r).open()}),!0}var ki=require("@codemirror/view"),Yw=require("obsidian"),TL=require("@codemirror/state");pd();var mM=require("@codemirror/language"),oK=["\u{1F4C5}","\u{1F680}","\u2705","\u274C","\u{1F6EB}","\u23F0","\u{1F3C1}","\u25B6\uFE0F"];function lK(n,a){try{let t=n.doc.lineAt(a).text,r=/^\s*[-*+]\s*\[.]/;if(!r.test(t))return!1;let s=(0,mM.syntaxTree)(n).resolveInner(a,-1);for(;s;){if(s.name==="list-item"||s.name.includes("list"))return!0;s=s.parent}return r.test(t)}catch(e){return console.warn("Error checking task line:",e),!1}}function hM(n,a){try{if(!lK(n,a))return null;let e=n.doc.lineAt(a);return{from:e.from,to:e.to,text:e.text,line:e}}catch(e){return console.warn("Error finding task line:",e),null}}function gM(n,a,e){let t=[];try{if(e){let i=/\[([a-zA-Z]+)::\s*(\d{4}-\d{2}-\d{2}(?:\s+\d{2}:\d{2}(?::\d{2})?)?)\]/g,s;for(;(s=i.exec(n))!==null;){let o=s[2];t.push({from:a+s.index,to:a+s.index+s[0].length,dateText:o,marker:`[${s[1]}::`,fullMatch:s[0]})}}else for(let i of oK){let s=cK(i),o=new RegExp(`${s}\\s*(\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?)(?=\\s|$|\\])`,"g"),l;for(;(l=o.exec(n))!==null;){let d=l[1];t.push({from:a+l.index,to:a+l.index+l[0].length,dateText:d,marker:i,fullMatch:l[0]})}}}catch(i){console.warn("Error finding dates in task line:",i)}let r=[];for(let i of t)r.some(o=>i.from>=o.from&&i.from<o.to||i.to>o.from&&i.to<=o.to)||r.push(i);return r}function yL(n,a){let e=n.from;return`widget-${a}-${encodeURIComponent(n.marker)}-${e}`}function fM(n,a,e){try{if(a<0||e<0||a>n.doc.length||e>n.doc.length||a>=e)return!1;let t=n.doc.lineAt(a),r=n.doc.lineAt(e);return t.number===r.number}catch(t){return!1}}function kM(n,a){try{return a<1||a>n.lines?null:n.line(a)}catch(e){return null}}function cK(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function bL(n,a){let e=new Set;try{a.iterChangedRanges((t,r,i,s)=>{try{let o=n.doc.lineAt(i).number,l=n.doc.lineAt(Math.min(s,n.doc.length)).number;for(let d=o;d<=l;d++)e.add(d)}catch(o){}})}catch(t){console.warn("Error getting affected lines:",t)}return e}function wL(n,a,e){try{let i=(0,mM.syntaxTree)(n).resolveInner(a,1);for(;i;){let s=i.name.toLowerCase(),o=i.type.name.toLowerCase();if(s.includes("code")||s.includes("fenced")||o.includes("code")||s.includes("frontmatter")||o.includes("frontmatter"))return!0;i=i.parent}return!1}catch(t){return!1}}var dK=TL.Annotation.define(),$w=class extends ki.WidgetType{constructor(e,t,r,i,s){super();this.app=e;this.plugin=t;this.view=r;this.match=i;this.id=s;try{let o=r.state.doc.lineAt(i.from);this.lineNumber=o.number,this.offsetInLine=i.from-o.from}catch(o){console.warn("Error calculating widget position:",o),this.lineNumber=1,this.offsetInLine=0}}eq(e){return this.id===e.id&&this.match.dateText===e.match.dateText&&this.match.marker===e.match.marker}toDOM(){try{let e=createEl("span",{cls:"date-picker-widget",attr:{"aria-label":"Task Date","data-widget-id":this.id}}),t=createSpan({cls:"task-date-text",text:this.match.fullMatch});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.match.fullMatch})}}showDateMenu(e){try{let t=this.match.dateText;if(Yw.Platform.isDesktop){let r=new Ks(this.app,this.plugin,t||void 0,this.match.marker);r.onDateSelected=i=>{i?this.setDate(i):this.setDate("")},r.showAtPosition({x:e.clientX,y:e.clientY})}else{let r=new rs(this.app,this.plugin,t||void 0,this.match.marker);r.onDateSelected=i=>{i?this.setDate(i):this.setDate("")},r.open()}}catch(t){console.error("Error showing date menu:",t)}}resolveCurrentRange(){var e;try{let t=(e=this.view)==null?void 0:e.state;if(!t)return null;let r=kM(t.doc,this.lineNumber);if(!r||!hM(t,r.from))return null;let s=gM(r.text,r.from,this.plugin.settings.preferMetadataFormat==="dataview"),o=null,l=1/0;for(let d of s){if(d.marker!==this.match.marker)continue;let u=d.from-r.from,p=Math.abs(u-this.offsetInLine);p<l&&p<10&&(o=d,l=p)}return o?{from:o.from,to:o.to}:null}catch(t){return console.warn("Failed to resolve current date range:",t),null}}setDate(e){try{if(!this.view){console.warn("Invalid view state, skipping date update");return}let t=this.resolveCurrentRange();if(!t){console.warn("Could not locate current date range; skipping update");return}let r=this.view.state.doc.lineAt(t.from),i=this.view.state.doc.lineAt(t.to);if(r.number!==i.number){console.warn("Refusing to replace multi-line range for date");return}let s=this.plugin.settings.preferMetadataFormat==="dataview",o="";e&&(s?o=`${this.match.marker}${e}]`:o=`${this.match.marker} ${e}`);let l=this.view.state.update({changes:{from:t.from,to:t.to,insert:o},annotations:[dK.of(!0)]});this.view.dispatch(l)}catch(t){console.error("Error setting date:",t)}}};function xL(n,a){if(!a.settings.enableDatePicker)return[];class e{constructor(s){this.decorations=ki.Decoration.none;this.isDestroyed=!1;this.widgetRegistry=new Map;this.view=s,this.plugin=a,this.updateDecorations(s)}update(s){if(!this.isDestroyed)try{if((s.selectionSet||s.viewportChanged)&&(this.decorations=this.buildDecorationsFromRegistry()),!s.docChanged)return;this.performIncrementalUpdate(s)}catch(o){console.error("Error in date picker update:",o),this.decorations=ki.Decoration.none}}performIncrementalUpdate(s){try{let o=this.mapExistingWidgets(s.changes),l=bL(s.state,s.changes),d=this.scanLines(Array.from(l),s.view);this.widgetRegistry=this.mergeWidgetMaps(o,d,l),this.decorations=this.buildDecorationsFromRegistry()}catch(o){console.warn("Error in incremental update, falling back to full scan:",o),this.fullScan(this.view)}}mapExistingWidgets(s){let o=new Map;for(let[l,d]of this.widgetRegistry)try{let u=s.mapPos(d.match.from,1),p=s.mapPos(d.match.to,1);if(!fM(this.view.state,u,p))continue;let m={...d.match,from:u,to:p},h=this.view.state.doc.lineAt(u);o.set(l,{...d,match:m,lineNumber:h.number,offsetInLine:u-h.from,lastValidated:Date.now()})}catch(u){continue}return o}scanLines(s,o){let l=new Map;for(let d of s){let u=kM(o.state.doc,d);if(!u)continue;let p=hM(o.state,u.from);if(!p||wL(o.state,u.from,u.to))continue;let m=gM(p.text,p.from,this.plugin.settings.preferMetadataFormat==="dataview");for(let h of m){let g=yL(h,d),f=new $w(n,a,o,h,g);l.set(g,{id:g,match:h,lineNumber:d,offsetInLine:h.from-u.from,lastValidated:Date.now()})}}return l}mergeWidgetMaps(s,o,l){let d=new Map(s);for(let[u,p]of d)l.has(p.lineNumber)&&d.delete(u);for(let[u,p]of o)d.set(u,p);return d}buildDecorationsFromRegistry(){let s=[];for(let o of this.widgetRegistry.values())try{if(!fM(this.view.state,o.match.from,o.match.to))continue;let l=new $w(n,a,this.view,o.match,o.id);s.push({from:o.match.from,to:o.match.to,decoration:ki.Decoration.replace({widget:l})})}catch(l){console.warn("Error building decoration:",l);continue}return s.sort((o,l)=>o.from-l.from),ki.Decoration.set(s.map(o=>o.decoration.range(o.from,o.to)),!0)}fullScan(s){this.widgetRegistry.clear();let o=s.state.doc.lines,l=[];for(let d=1;d<=o;d++)l.push(d);this.widgetRegistry=this.scanLines(l,s),this.decorations=this.buildDecorationsFromRegistry()}updateDecorations(s){if(!this.isDestroyed){if(!this.isLivePreview(s.state)){this.decorations=ki.Decoration.none;return}try{this.fullScan(s)}catch(o){console.warn("Error updating date decorations:",o),this.decorations=ki.Decoration.none}}}destroy(){this.isDestroyed=!0,this.decorations=ki.Decoration.none,this.widgetRegistry.clear()}isLivePreview(s){try{return s.field(Yw.editorLivePreviewField)}catch(o){return!1}}shouldRenderAt(s,o){try{let l=this.view.state.selection,d=this.view.state,u=d.doc.lineAt(s);return!(l.ranges.some(h=>{try{return d.doc.lineAt(h.from).number===u.number}catch(g){return!1}})||l.ranges.some(h=>Math.abs(h.from-s)<20||Math.abs(h.from-o)<20))}catch(l){return!1}}}let t={decorations:i=>{try{return i.isDestroyed?ki.Decoration.none:i.decorations}catch(s){return console.warn("Error getting decorations:",s),ki.Decoration.none}}};return ki.ViewPlugin.fromClass(e,t)}var ra=require("obsidian"),Sl=require("@codemirror/state"),DL=require("@codemirror/view");z();var Ka=require("obsidian"),CL=require("@codemirror/state");z();var qw=class extends Ka.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 d=e.ch-1;d>=0;d--){let u=s.charAt(d);if(o.includes(u)){if(d===0||/\s/.test(s.charAt(d-1))){let p=s.substring(d+1,e.ch);return{start:{line:e.line,ch:d},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:c("Today"),icon:"calendar",description:(0,Ka.moment)().format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,Ka.moment)().format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,Ka.moment)().toDate()),this.updateButtonState&&this.dateButton&&this.updateButtonState(this.dateButton,!0)}},{id:"date-tomorrow",label:c("Tomorrow"),icon:"calendar",description:(0,Ka.moment)().add(1,"day").format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,Ka.moment)().add(1,"day").format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,Ka.moment)().add(1,"day").toDate()),this.updateButtonState&&this.dateButton&&this.updateButtonState(this.dateButton,!0)}},{id:"date-next-week",label:c("Next week"),icon:"calendar",description:(0,Ka.moment)().add(1,"week").format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,Ka.moment)().add(1,"week").format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,Ka.moment)().add(1,"week").toDate()),this.updateButtonState&&this.dateButton&&this.updateButtonState(this.dateButton,!0)}},{id:"date-next-month",label:c("Next month"),icon:"calendar",description:(0,Ka.moment)().add(1,"month").format("YYYY-MM-DD"),replacement:`\u{1F4C5} ${(0,Ka.moment)().add(1,"month").format("YYYY-MM-DD")}`,trigger:"~",action:(e,t,r)=>{this.taskMetadata&&(this.taskMetadata.dueDate=(0,Ka.moment)().add(1,"month").toDate()),this.updateButtonState&&this.dateButton&&this.updateButtonState(this.dateButton,!0)}}]}getPrioritySuggestions(){return[{id:"priority-highest",label:c("Highest"),icon:"arrow-up",description:c("\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:c("High"),icon:"arrow-up",description:c("\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:c("Medium"),icon:"minus",description:c("\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:c("Low"),icon:"arrow-down",description:c("\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:c("Lowest"),icon:"arrow-down",description:c("\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:c(`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,Ka.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:c("Fixed File"),icon:"file",description:t.targetFile||"Quick Capture.md",replacement:"",trigger:"*",action:(o,l,d)=>{let u=this.plugin.settings.quickCapture.targetFile||"Quick Capture.md";this.targetFileUpdater&&this.targetFileUpdater(u)}}),e.push({id:"location-daily",label:c("Daily Note"),icon:"calendar-days",description:s,replacement:"",trigger:"*",action:(o,l,d)=>{let u=this.plugin.settings.quickCapture.dailyNoteSettings||{},p=(0,Ka.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:c("Inbox"),icon:"inbox",description:c("Save to Inbox.md"),replacement:"",trigger:"*",action:(o,l,d)=>{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,Ka.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,d,u,p;let r=(l=this.context)==null?void 0:l.editor,i=(d=this.context)==null?void 0:d.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,h=o.state.doc.line(s.line+1).from+s.ch;o.dispatch({changes:{from:m,to:h,insert:e.replacement},annotations:[CL.Transaction.userEvent.of("input")]})}e.action&&e.action(r,s,this.taskMetadata),this.close()}};function uK(n){return n.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()}function pK(n){let a=n.split("/");return a.map((t,r)=>r===a.length-1?uK(t):t.replace(/[<>:"|*?\\]/g,"-").replace(/\s+/g," ").trim()).join("/")}var Co=Sl.StateEffect.define(),bM=Sl.StateField.define({create:()=>!1,update(n,a){var e;for(let t of a.effects)t.is(Co)&&(e=a.state.field(ra.editorInfoField))!=null&&e.file&&(n=t.value);return n},provide:n=>DL.showPanel.from(n,a=>a?mK:null)}),SL=(n,a)=>{n.dispatch({effects:Co.of(!1)}),setTimeout(()=>{let e=a.workspace.activeLeaf;e&&e.view instanceof ra.MarkdownView&&e.view.editor&&!e.view.editor.hasFocus()&&e.view.editor.focus()},10)},Gw=async(n,a,e,t,r,i)=>{if(!e)return;let s=e.value.trim();if(!s){new ra.Notice(c("Nothing to capture"));return}if(i){let o=[];if(i.dueDate&&o.push(`\u{1F4C5} ${(0,ra.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 pl(a,s,o),e.set("",!1),n.dispatch({effects:Co.of(!1)});let l=r;if(t.targetType==="daily-note"&&t.dailyNoteSettings){let d=(0,ra.moment)().format(t.dailyNoteSettings.format),u=t.dailyNoteSettings.folder?`${t.dailyNoteSettings.folder}/${d}.md`:`${d}.md`;l=pK(u)}new ra.Notice(`${c("Captured successfully to")} ${l}`)}catch(o){new ra.Notice(`${c("Failed to save:")} ${o}`)}},EL=Sl.Facet.define({combine:n=>{var a,e,t,r,i,s,o,l,d,u,p,m,h,g;return{targetFile:((a=n.find(f=>f.targetFile))==null?void 0:a.targetFile)||"Quick capture.md",placeholder:((e=n.find(f=>f.placeholder))==null?void 0:e.placeholder)||c("Capture thoughts, tasks, or ideas..."),appendToFile:(r=(t=n.find(f=>f.appendToFile!==void 0))==null?void 0:t.appendToFile)!=null?r:"append",targetType:(s=(i=n.find(f=>f.targetType))==null?void 0:i.targetType)!=null?s:"fixed",targetHeading:(l=(o=n.find(f=>f.targetHeading))==null?void 0:o.targetHeading)!=null?l:"",dailyNoteSettings:(u=(d=n.find(f=>f.dailyNoteSettings))==null?void 0:d.dailyNoteSettings)!=null?u:{format:"YYYY-MM-DD",folder:"",template:""},autoAddTaskPrefix:(m=(p=n.find(f=>f.autoAddTaskPrefix!==void 0))==null?void 0:p.autoAddTaskPrefix)!=null?m:!0,taskPrefix:(g=(h=n.find(f=>f.taskPrefix))==null?void 0:h.taskPrefix)!=null?g:"- [ ]"}}});function vM(n,a,e){n.showAtMouseEvent(new MouseEvent("click",{clientX:a,clientY:e}))}function mK(n){let a=createDiv({cls:"quick-capture-panel"}),e=n.state.facet(ML),t=n.state.facet(EL),r;if(t.targetType==="daily-note"&&t.dailyNoteSettings){let y=(0,ra.moment)().format(t.dailyNoteSettings.format||"YYYY-MM-DD"),b=y+".md";t.dailyNoteSettings.folder&&t.dailyNoteSettings.folder.trim()!==""&&(b=`${t.dailyNoteSettings.folder.replace(/\/$/,"")}/${y}.md`),r=b}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:c("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 b;let y=(b=s.textContent)==null?void 0:b.trim();y?(r=y,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={},d=o.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Set date")}});(0,ra.setIcon)(d,"calendar");let u=o.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Set priority")}});(0,ra.setIcon)(u,"zap");let p=o.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Add tags")}});(0,ra.setIcon)(p,"tag");let m=(y,b)=>{b?y.addClass("active"):y.removeClass("active")},h=a.createEl("div",{cls:"quick-capture-editor"}),g=null;setTimeout(()=>{var b;g=cs(e,h,{placeholder:t.placeholder,onEnter:(w,T,x)=>T?(Gw(n,e,g,t,r,l),!0):!1,onEscape:w=>{SL(n,e)},onSubmit:w=>{Gw(n,e,g,t,r)}}),(b=g==null?void 0:g.editor)==null||b.focus(),s.addEventListener("keydown",w=>{var T;w.key==="Enter"&&(w.preventDefault(),s.blur(),(T=g==null?void 0:g.editor)==null||T.focus())});let y=n.state.facet(yM);y.quickCaptureSuggest&&(g!=null&&g.editor)&&y.quickCaptureSuggest.setQuickCaptureContext(!0,l,m,{dateButton:d,priorityButton:u,tagsButton:p},w=>{r=w,s&&(s.textContent=w)}),g.scope.register(["Alt"],"c",w=>(w.preventDefault(),g?g.value.trim()===""?(SL(n,e),!0):(Gw(n,e,g,t,r),!0):!1)),t.targetType==="fixed"&&g.scope.register(["Alt"],"x",w=>(w.preventDefault(),s.focus(),!0)),g.scope.register(["Alt"],"d",w=>(w.preventDefault(),d.click(),!0)),g.scope.register(["Alt"],"p",w=>(w.preventDefault(),u.click(),!0)),g.scope.register(["Alt"],"t",w=>(w.preventDefault(),p.click(),!0))},10);let f=a.createEl("div",{cls:"quick-capture-buttons"});return f.createEl("button",{cls:"quick-capture-submit mod-cta",text:c("Capture")}).addEventListener("click",()=>{Gw(n,e,g,t,r)}),f.createEl("button",{cls:"quick-capture-cancel mod-destructive",text:c("Cancel")}).addEventListener("click",()=>{n.dispatch({effects:Co.of(!1)})}),t.targetType==="fixed"&&new qo(e,s,t,y=>{var b;s.textContent=y.path,r=y.path,(b=g==null?void 0:g.editor)==null||b.focus()}),d.addEventListener("click",()=>{let y=[{label:c("Today"),date:(0,ra.moment)().toDate()},{label:c("Tomorrow"),date:(0,ra.moment)().add(1,"day").toDate()},{label:c("Next week"),date:(0,ra.moment)().add(1,"week").toDate()},{label:c("Next month"),date:(0,ra.moment)().add(1,"month").toDate()}],b=new ra.Menu;y.forEach(T=>{b.addItem(x=>{x.setTitle(T.label),x.setIcon("calendar"),x.onClick(()=>{var C;l.dueDate=T.date,m(d,!0),(C=g==null?void 0:g.editor)==null||C.focus()})})}),b.addSeparator(),b.addItem(T=>{T.setTitle(c("Clear date")),T.setIcon("x"),T.onClick(()=>{var x;delete l.dueDate,m(d,!1),(x=g==null?void 0:g.editor)==null||x.focus()})});let w=d.getBoundingClientRect();vM(b,w.left,w.bottom+5)}),u.addEventListener("click",()=>{let y=[{level:5,label:c("Highest"),icon:"\u{1F53A}"},{level:4,label:c("High"),icon:"\u23EB"},{level:3,label:c("Medium"),icon:"\u{1F53C}"},{level:2,label:c("Low"),icon:"\u{1F53D}"},{level:1,label:c("Lowest"),icon:"\u23EC"}],b=new ra.Menu;y.forEach(T=>{b.addItem(x=>{x.setTitle(`${T.icon} ${T.label}`),x.onClick(()=>{var C;l.priority=T.level,m(u,!0),(C=g==null?void 0:g.editor)==null||C.focus()})})}),b.addSeparator(),b.addItem(T=>{T.setTitle(c("Clear priority")),T.setIcon("x"),T.onClick(()=>{var x;delete l.priority,m(u,!1),(x=g==null?void 0:g.editor)==null||x.focus()})});let w=u.getBoundingClientRect();vM(b,w.left,w.bottom+5)}),p.addEventListener("click",()=>{let y=new ra.Menu;["important","urgent","todo","review","idea","question"].forEach(T=>{var C;let x=(C=l.tags)==null?void 0:C.includes(T);y.addItem(S=>{S.setTitle(x?`\u2713 #${T}`:`#${T}`),S.setIcon("tag"),S.onClick(()=>{var D;l.tags||(l.tags=[]),x?(l.tags=l.tags.filter(E=>E!==T),l.tags.length===0&&(delete l.tags,m(p,!1))):(l.tags.push(T),m(p,!0)),(D=g==null?void 0:g.editor)==null||D.focus()})})}),y.addSeparator(),y.addItem(T=>{T.setTitle(c("Clear all tags")),T.setIcon("x"),T.onClick(()=>{var x;delete l.tags,m(p,!1),(x=g==null?void 0:g.editor)==null||x.focus()})});let w=p.getBoundingClientRect();vM(y,w.left,w.bottom+5)}),{dom:a,top:!1,update:y=>{},destroy:()=>{let y=n.state.facet(yM);y.quickCaptureSuggest&&y.quickCaptureSuggest.setQuickCaptureContext(!1),g==null||g.destroy(),g=null}}}var ML=Sl.Facet.define({combine:n=>n[0]}),yM=Sl.Facet.define({combine:n=>n[0]});function wM(n,a){var e,t,r,i,s,o,l,d,u,p,m,h,g,f;return a.quickCaptureSuggest||(a.quickCaptureSuggest=new qw(n,a),a.registerEditorSuggest(a.quickCaptureSuggest)),[bM,EL.of({targetFile:((e=a.settings.quickCapture)==null?void 0:e.targetFile)||"Quick Capture.md",placeholder:((t=a.settings.quickCapture)==null?void 0:t.placeholder)||c("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:(d=(l=a.settings.quickCapture)==null?void 0:l.targetHeading)!=null?d:"",dailyNoteSettings:(p=(u=a.settings.quickCapture)==null?void 0:u.dailyNoteSettings)!=null?p:{format:"YYYY-MM-DD",folder:"",template:""},autoAddTaskPrefix:(h=(m=a.settings.quickCapture)==null?void 0:m.autoAddTaskPrefix)!=null?h:!0,taskPrefix:(f=(g=a.settings.quickCapture)==null?void 0:g.taskPrefix)!=null?f:"- [ ]"}),ML.of(n),yM.of(a)]}var So=require("obsidian");z();var Dl=require("obsidian");pd();var Kw=class extends ou{constructor(e,t,r){super(e,t,"checkbox",r);this.dateButton=null;this.priorityButton=null;this.locationButton=null;this.tagButton=null;this.universalSuggest=null;this.fileSuggest=null;this.targetIndicator=null;this.fileNameInput=null;this.targetFileEl=null;this.editorContainer=null;this.minimalSuggest=t.minimalQuickCaptureSuggest;let i=this.plugin.settings.quickCapture.targetType;this.taskMetadata.location=(i==="custom-file"?"file":i)||"fixed",this.taskMetadata.targetFile=this.getTargetFile(),r&&(this.taskMetadata={...this.taskMetadata,...r})}onOpen(){this.modalEl.__minimalQuickCaptureModal=this,this.modalEl.toggleClass("tg-minimal-capture-modal",!0),this.minimalSuggest&&this.minimalSuggest.setMinimalMode(!0),super.onOpen()}initializeComponents(){if(this.contentContainer&&!this.markdownEditor){let e=this.contentContainer.querySelector(".quick-capture-minimal-editor");e&&this.setupMarkdownEditor(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)}this.markdownEditor&&this.capturedContent&&this.markdownEditor.set(this.capturedContent,!1)}createUI(){if(!this.contentContainer)return;let e=this.contentContainer.createDiv({cls:"quick-capture-minimal-target-container"});this.targetIndicator=e.createDiv({cls:"quick-capture-minimal-target"});let t=this.contentContainer.createDiv({cls:"quick-capture-minimal-editor-container"});this.editorContainer=t.createDiv({cls:"quick-capture-modal-editor quick-capture-minimal-editor"});let r=this.contentContainer.createDiv({cls:"quick-capture-minimal-quick-actions"});this.createQuickActionButtons(r),this.updateTargetDisplay()}updateTargetDisplay(){var e,t,r,i,s,o;if(this.targetIndicator)if(this.targetIndicator.empty(),this.currentMode==="checkbox"){let l=this.targetIndicator.createSpan({cls:"quick-capture-target-label",text:c("To: ")});this.targetFileEl=this.targetIndicator.createEl("div",{cls:"quick-capture-target",attr:{contenteditable:"true",spellcheck:"false"},text:this.tempTargetFilePath}),this.fileSuggest=new qo(this.app,this.targetFileEl,this.plugin.settings.quickCapture,u=>{var p,m;this.targetFileEl.textContent=u.path,this.tempTargetFilePath=u.path,this.taskMetadata.targetFile=u.path,(m=(p=this.markdownEditor)==null?void 0:p.editor)==null||m.focus()}),this.targetFileEl.addEventListener("blur",()=>{this.targetFileEl&&(this.tempTargetFilePath=this.targetFileEl.textContent||"",this.taskMetadata.targetFile=this.tempTargetFilePath)});let d=(e=this.contentContainer)==null?void 0:e.querySelector(".quick-capture-minimal-quick-actions");d&&(d.style.display="flex")}else{let l=this.targetIndicator.createSpan({cls:"quick-capture-target-label",text:c("Save as: ")}),d=this.taskMetadata.customFileName||this.plugin.settings.quickCapture.defaultFileNameTemplate||"{{DATE:YYYY-MM-DD}} - Task",u=An(d),p=(r=(t=this.plugin.settings.quickCapture.createFileMode)==null?void 0:t.defaultFolder)==null?void 0:r.trim();(s=(i=this.plugin.settings)==null?void 0:i.fileSource)!=null&&s.enabled&&p&&!u.includes("/")&&(u=`${p}/${u}`),u.endsWith(".md")||(u+=".md"),this.fileNameInput=this.targetIndicator.createEl("input",{cls:"quick-capture-minimal-file-input",attr:{type:"text",placeholder:c("Enter file name..."),value:u}}),this.taskMetadata.customFileName=u,this.fileNameInput.addEventListener("input",()=>{this.fileNameInput&&(this.taskMetadata.customFileName=this.fileNameInput.value)});let m=(o=this.contentContainer)==null?void 0:o.querySelector(".quick-capture-minimal-quick-actions");m&&(m.style.display="flex")}}createQuickActionButtons(e){let t=e.createDiv({cls:"quick-actions-left"});this.dateButton=t.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Set date")}}),(0,So.setIcon)(this.dateButton,"calendar"),this.dateButton.addEventListener("click",()=>this.showDatePicker()),this.updateButtonState(this.dateButton,!!this.taskMetadata.dueDate),this.priorityButton=t.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Set priority")}}),(0,So.setIcon)(this.priorityButton,"zap"),this.priorityButton.addEventListener("click",()=>this.showPriorityMenu()),this.updateButtonState(this.priorityButton,!!this.taskMetadata.priority),this.locationButton=t.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Set location")}}),(0,So.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=t.createEl("button",{cls:["quick-action-button","clickable-icon"],attr:{"aria-label":c("Add tags")}}),(0,So.setIcon)(this.tagButton,"tag"),this.tagButton.addEventListener("click",()=>{}),this.updateButtonState(this.tagButton,!!(this.taskMetadata.tags&&this.taskMetadata.tags.length>0))}setupMarkdownEditor(e){setTimeout(()=>{var t,r;this.markdownEditor=cs(this.app,e,{placeholder:c("Enter your content..."),singleLine:!1,onEnter:(i,s,o)=>s?(this.handleSubmit(),!0):this.currentMode==="checkbox"&&!o?(this.handleSubmit(),!0):!1,onEscape:i=>{this.close()},onChange:i=>{var s;this.capturedContent=((s=this.markdownEditor)==null?void 0:s.value)||"",this.currentMode==="checkbox"&&this.parseContentAndUpdateButtons()}}),(r=(t=this.markdownEditor)==null?void 0:t.editor)==null||r.focus(),this.capturedContent&&this.markdownEditor&&this.markdownEditor.set(this.capturedContent,!1)},50)}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:c("Tomorrow"),date:(0,Dl.moment)().add(1,"day").toDate()},{label:c("Day after tomorrow"),date:(0,Dl.moment)().add(2,"day").toDate()},{label:c("Next week"),date:(0,Dl.moment)().add(1,"week").toDate()},{label:c("Next month"),date:(0,Dl.moment)().add(1,"month").toDate()}],i=new So.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(c("Choose date...")),s.setIcon("calendar-days"),s.onClick(()=>{let o=new rs(this.app,this.plugin,this.taskMetadata.dueDate?(0,Dl.moment)(this.taskMetadata.dueDate).format("YYYY-MM-DD"):void 0,"\u{1F4C5}");o.onDateSelected=l=>{l&&(this.taskMetadata.dueDate=(0,Dl.moment)(l).toDate(),this.updateButtonState(this.dateButton,!0),e&&this.markdownEditor&&this.replaceAtCursor(e,this.formatDate(this.taskMetadata.dueDate)))},o.open()})}),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:c("Highest"),icon:"\u{1F53A}"},{level:4,label:c("High"),icon:"\u23EB"},{level:3,label:c("Medium"),icon:"\u{1F53C}"},{level:2,label:c("Low"),icon:"\u{1F53D}"},{level:1,label:c("Lowest"),icon:"\u23EC"}],i=new So.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){var i,s;let r=new So.Menu;if(r.addItem(o=>{o.setTitle(c("Fixed location")),o.setIcon("file"),o.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,c("Fixed location"))})}),r.addItem(o=>{o.setTitle(c("Daily note")),o.setIcon("calendar"),o.onClick(()=>{var l;this.taskMetadata.location="daily-note",this.taskMetadata.targetFile=this.getDailyNoteFile(),this.updateButtonState(this.locationButton,this.taskMetadata.location!==(((l=this.plugin.settings.quickCapture)==null?void 0:l.targetType)||"fixed")),e&&this.markdownEditor&&this.replaceAtCursor(e,c("Daily note"))})}),(s=(i=this.plugin.settings)==null?void 0:i.fileSource)!=null&&s.enabled&&r.addItem(o=>{o.setTitle(c("Custom file")),o.setIcon("file-plus"),o.onClick(()=>{this.taskMetadata.location="file",this.switchMode("file"),e&&this.markdownEditor&&this.replaceAtCursor(e,c("Custom file"))})}),t)this.showMenuAtCoords(r,t.left,t.top);else if(this.locationButton){let o=this.locationButton.getBoundingClientRect();this.showMenuAtCoords(r,o.left,o.bottom+5)}}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,Dl.moment)().format(e.format);return e.folder?`${e.folder}/${t}.md`:`${t}.md`}processContentWithMetadata(e){if(!e.trim())return"";if(this.currentMode==="file")return e;let r=e.split(`
`).map(i=>{let s=i.trim();return s&&!s.startsWith("- [")?`- [ ] ${Cr(s)}`:i});return this.addMetadataToContent(r.join(`
`))}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.startsWith("#")?r:`#${r}`)),t.length>0?`${e} ${t.join(" ")}`:e}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 el({}),[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}this.taskMetadata.tags=s.length>0?[...s]:[],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))}}resetUIElements(){this.dateButton&&this.updateButtonState(this.dateButton,!1),this.priorityButton&&this.updateButtonState(this.priorityButton,!1),this.tagButton&&this.updateButtonState(this.tagButton,!1),this.locationButton&&this.updateButtonState(this.locationButton,!1)}onClose(){this.universalSuggest&&(this.universalSuggest.disable(),this.universalSuggest=null),this.fileSuggest&&(this.fileSuggest.close(),this.fileSuggest=null),this.minimalSuggest&&this.minimalSuggest.setMinimalMode(!1),delete this.modalEl.__minimalQuickCaptureModal,super.onClose()}};var Xw=require("obsidian"),TM=require("@codemirror/state");z();var Qw=class extends Xw.EditorSuggest{constructor(e,t){super(e);this.isMinimalMode=!1;this.plugin=t}setMinimalMode(e){this.isMinimalMode=e}onTrigger(e,t,r){var d,u;if(!this.isMinimalMode)return null;let i=(d=t.cm)==null?void 0:d.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:c("Date"),icon:"calendar",description:c("Add date (triggers ~)"),replacement:"~",trigger:"/"},{id:"priority",label:c("Priority"),icon:"zap",description:c("Set priority (triggers !)"),replacement:"!",trigger:"/"},{id:"target",label:c("Target Location"),icon:"folder",description:c("Set target location (triggers *)"),replacement:"*",trigger:"/"},{id:"tag",label:c("Tag"),icon:"tag",description:c("Add tags (triggers #)"),replacement:"#",trigger:"/"}]:Bg(t==="@"?"*":t,this.plugin)}renderSuggestion(e,t){t.addClass("menu-item"),t.addClass("tappable");let r=t.createDiv("menu-item-icon");(0,Xw.setIcon)(r,e.icon);let i=t.createDiv("menu-item-title");i.textContent=e.label}selectSuggestion(e,t){var p,m,h,g,f;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=((h=this.context)==null?void 0:h.query)||"";if(["!","~","#","*"].includes(s)&&!["date","priority","target","tag"].includes(e.id)){let k=r.cm;if(k){let v=k.state.doc.line(i.line+1).from+i.ch-1,y=k.state.doc.line(i.line+1).from+i.ch;k.dispatch({changes:{from:v,to:y,insert:""},annotations:[TM.Transaction.userEvent.of("input")]})}else{let v={line:i.line,ch:i.ch-1},y=i;r.replaceRange("",v,y),r.setCursor(v)}}else{let k=r.cm;if(k)if((g=k.state)!=null&&g.doc){let v=k.state.doc.line(i.line+1).from+i.ch-1,y=k.state.doc.line(i.line+1).from+i.ch;k.dispatch({changes:{from:v,to:y,insert:e.replacement},annotations:[TM.Transaction.userEvent.of("input")]})}else{let v={line:i.line,ch:i.ch-1},y=i;r.replaceRange(e.replacement,v,y);let b={line:i.line,ch:i.ch-1+e.replacement.length};r.setCursor(b)}else{let v={line:i.line,ch:i.ch-1},y=i;r.replaceRange(e.replacement,v,y);let b={line:i.line,ch:i.ch-1+e.replacement.length};r.setCursor(b)}}let l=(f=r.cm)==null?void 0:f.dom,d=l==null?void 0:l.closest(".quick-capture-modal.minimal"),u=d==null?void 0:d.__minimalQuickCaptureModal;if(e.action){let k={line:i.line,ch:i.ch-1+e.replacement.length};e.action(r,k)}u&&typeof u.parseContentAndUpdateButtons=="function"&&setTimeout(()=>{u.parseContentAndUpdateButtons()},50),this.close()}};z();var Wt=require("obsidian");var Io=require("obsidian");z();var qn=require("obsidian");var Ri=require("obsidian");function PL(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}z();var $n=require("obsidian");z();var Jw=class extends $n.Component{constructor(e,t,r=[],i={}){super();this.parentEl=e;this.hasActiveTimerInterval=!1;this.activeTimerSignature="";this.lastCleanup=0;this.plugin=t,this.tasks=r,this.onTaskClick=i.onTaskClick,this.onTaskContextMenu=i.onTaskContextMenu,this.plugin.taskTimerManager?this.plugin.taskTimerManager.updateSettings(this.plugin.settings.taskTimer):this.plugin.taskTimerManager=new Ft(this.plugin.settings.taskTimer),this.timerManager=this.plugin.taskTimerManager}onload(){this.containerEl=this.parentEl.createDiv({cls:"timer-statistics-panel"}),this.timerManager.cleanup(),this.lastCleanup=Date.now(),this.render(),this.startUpdateInterval()}setTasks(e){this.tasks=e,this.render()}startUpdateInterval(){this.hasActiveTimerInterval||(this.hasActiveTimerInterval=!0,this.registerInterval(window.setInterval(()=>{this.updateTimerDisplays()},1e3)))}updateTimerDisplays(){if(!this.containerEl)return;let e=this.timerManager.getAllActiveTimers(),t=this.computeTimerSignature(e);if(t!==this.activeTimerSignature){this.activeTimerSignature=t,this.render();return}let r=0,i=0,s=0;e.forEach(m=>{r+=this.timerManager.getCurrentDuration(m.taskId),m.status==="running"?i++:m.status==="paused"&&s++});let o=this.containerEl.querySelector(".timer-stats-card-total .timer-stats-card-value");o&&(o.textContent=this.timerManager.formatDuration(r));let l=this.containerEl.querySelector(".timer-stats-card-running .timer-stats-card-value");l&&(l.textContent=String(i));let d=this.containerEl.querySelector(".timer-stats-card-paused .timer-stats-card-value");d&&(d.textContent=String(s));let u=this.containerEl.querySelector(".timer-stats-card-count .timer-stats-card-value");u&&(u.textContent=String(e.length)),this.containerEl.querySelectorAll(".timer-item[data-task-id]").forEach(m=>{let h=m.getAttribute("data-task-id");if(h){let g=this.timerManager.getCurrentDuration(h),f=m.querySelector(".timer-item-duration");f&&(f.textContent=this.timerManager.formatDuration(g))}});let p=Date.now();p-this.lastCleanup>900*1e3&&(this.timerManager.cleanup(),this.lastCleanup=p)}render(){this.containerEl.empty();let e=this.timerManager.getAllActiveTimers();this.activeTimerSignature=this.computeTimerSignature(e);let t=this.timerManager.getRecentCompletedTimers(50);this.containerEl.createDiv({cls:"timer-stats-header"}).createEl("h2",{cls:"timer-stats-title",text:c("Timer Statistics")});let i=this.containerEl.createDiv({cls:"timer-stats-summary"});this.renderSummary(i,e);let s=this.containerEl.createDiv({cls:"timer-stats-section"});if(s.createEl("h3",{text:c("Active Timers")}),e.length===0)s.createDiv({cls:"timer-stats-empty",text:c("No active timers")});else{let l=s.createDiv({cls:"timer-stats-list"}),d=e.filter(p=>p.status==="running"),u=e.filter(p=>p.status==="paused");d.length>0&&this.renderTimerGroup(l,c("Running"),d,"running"),u.length>0&&this.renderTimerGroup(l,c("Paused"),u,"paused")}let o=this.containerEl.createDiv({cls:"timer-stats-section"});o.createEl("h3",{text:c("Completed Timers")}),t.length===0?o.createDiv({cls:"timer-stats-empty",text:c("No completed timers")}):this.renderCompletedTimers(o,t)}renderSummary(e,t){let r=0,i=0,s=0;t.forEach(k=>{r+=this.timerManager.getCurrentDuration(k.taskId),k.status==="running"?i++:k.status==="paused"&&s++});let o=e.createDiv({cls:"timer-stats-cards"}),l=o.createDiv({cls:"timer-stats-card timer-stats-card-total"}),d=l.createDiv({cls:"timer-stats-card-icon"});(0,$n.setIcon)(d,"clock"),l.createDiv({cls:"timer-stats-card-value",text:this.timerManager.formatDuration(r)}),l.createDiv({cls:"timer-stats-card-label",text:c("Total Time")});let u=o.createDiv({cls:"timer-stats-card running timer-stats-card-running"}),p=u.createDiv({cls:"timer-stats-card-icon"});(0,$n.setIcon)(p,"play"),u.createDiv({cls:"timer-stats-card-value",text:String(i)}),u.createDiv({cls:"timer-stats-card-label",text:c("Running")});let m=o.createDiv({cls:"timer-stats-card paused timer-stats-card-paused"}),h=m.createDiv({cls:"timer-stats-card-icon"});(0,$n.setIcon)(h,"pause"),m.createDiv({cls:"timer-stats-card-value",text:String(s)}),m.createDiv({cls:"timer-stats-card-label",text:c("Paused")});let g=o.createDiv({cls:"timer-stats-card timer-stats-card-count"}),f=g.createDiv({cls:"timer-stats-card-icon"});(0,$n.setIcon)(f,"list"),g.createDiv({cls:"timer-stats-card-value",text:String(t.length)}),g.createDiv({cls:"timer-stats-card-label",text:c("Total Timers")})}renderTimerGroup(e,t,r,i){let s=e.createDiv({cls:`timer-group timer-group-${i}`});s.createDiv({cls:"timer-group-title",text:t});let o=s.createDiv({cls:"timer-group-list"});r.forEach(l=>{let d=o.createDiv({cls:"timer-item",attr:{"data-task-id":l.taskId}}),u=this.tasks.find(v=>{var b;let y=(b=v.metadata)==null?void 0:b.id;return y&&v.filePath===l.filePath&&y===l.blockId});this.onTaskClick&&this.registerDomEvent(d,"click",()=>{var v;(v=this.onTaskClick)==null||v.call(this,u!=null?u:null)}),this.onTaskContextMenu&&this.registerDomEvent(d,"contextmenu",v=>{var y;v.preventDefault(),v.stopPropagation(),(y=this.onTaskContextMenu)==null||y.call(this,v,u!=null?u:null)});let p=d.createDiv({cls:"timer-item-info"}),m=p.createDiv({cls:"timer-item-name"});if(u)m.setText(u.content||u.originalMarkdown||c("Untitled"));else{let v=l.filePath.split("/").pop()||l.filePath;m.setText(v)}p.createDiv({cls:"timer-item-path",text:l.filePath});let h=this.timerManager.getCurrentDuration(l.taskId);d.createDiv({cls:"timer-item-duration",text:this.timerManager.formatDuration(h)});let g=d.createDiv({cls:`timer-item-status timer-status-${l.status}`});(0,$n.setIcon)(g,l.status==="running"?"play-circle":"pause-circle");let f=d.createDiv({cls:"timer-item-actions"});if(l.status==="running"){let v=f.createEl("button",{cls:"timer-action-btn",attr:{"aria-label":c("Pause")}});(0,$n.setIcon)(v,"pause"),this.registerDomEvent(v,"click",y=>{y.stopPropagation(),this.timerManager.pauseTimer(l.taskId),this.render()})}else{let v=f.createEl("button",{cls:"timer-action-btn",attr:{"aria-label":c("Resume")}});(0,$n.setIcon)(v,"play"),this.registerDomEvent(v,"click",y=>{y.stopPropagation(),this.timerManager.resumeTimer(l.taskId),this.render()})}let k=f.createEl("button",{cls:"timer-action-btn timer-action-stop",attr:{"aria-label":c("Stop")}});(0,$n.setIcon)(k,"square"),this.registerDomEvent(k,"click",v=>{v.stopPropagation(),this.timerManager.completeTimer(l.taskId),this.render()})})}renderCompletedTimers(e,t){let r=e.createDiv({cls:"timer-completed-list"});t.forEach(i=>{let s=r.createDiv({cls:"timer-completed-item"}),o=this.tasks.find(p=>{var h;let m=(h=p.metadata)==null?void 0:h.id;return m&&p.filePath===i.filePath&&m===i.blockId}),l=s.createDiv({cls:"timer-completed-info"}),d=l.createDiv({cls:"timer-completed-name"});if(o)d.setText(o.content||o.originalMarkdown||c("Untitled"));else{let p=i.filePath.split("/").pop()||i.filePath;d.setText(p)}l.createDiv({cls:"timer-completed-path",text:i.filePath});let u=s.createDiv({cls:"timer-completed-meta"});u.createDiv({cls:"timer-completed-duration",text:this.timerManager.formatDuration(i.duration)}),u.createDiv({cls:"timer-completed-time",text:`${c("Completed at")}: ${new Date(i.completedAt).toLocaleString()}`})})}computeTimerSignature(e){return e.map(t=>`${t.taskId}:${t.status}:${t.segments.length}`).sort().join("|")}onunload(){var e;(e=this.containerEl)==null||e.remove()}};var Ha=require("obsidian");function xM(n){if(!n)return null;let a=n.toLowerCase().trim(),e=(0,Ha.moment)();if(a!=="today")if(a==="tomorrow")e=(0,Ha.moment)().add(1,"day");else if(a==="yesterday")e=(0,Ha.moment)().subtract(1,"day");else if(a==="next week")e=(0,Ha.moment)().add(1,"week").startOf("week");else if(a==="last week")e=(0,Ha.moment)().subtract(1,"week").startOf("week");else if(a==="next month")e=(0,Ha.moment)().add(1,"month").startOf("month");else if(a==="last month")e=(0,Ha.moment)().subtract(1,"month").startOf("month");else{let t=(0,Ha.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 CM(n,a,e){let t=xt(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 IL(n,a,e){return xt(n,e).filterBlanks?a.content.trim()!=="":!0}function SM(n,a){if(!a.filterGroups||a.filterGroups.length===0)return!0;let e=a.filterGroups.map(t=>hK(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 hK(n,a){if(!a.filters||a.filters.length===0)return!0;let e=a.filters.map(t=>gK(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 gK(n,a){let{property:e,condition:t,value:r}=a;if(!t)return!0;switch(e){case"content":return fK(n.content,t,r);case"status":return kK(n.status,t,r);case"priority":return vK(n.metadata.priority,t,r);case"dueDate":return DM(n.metadata.dueDate,t,r);case"startDate":return DM(n.metadata.startDate,t,r);case"scheduledDate":return DM(n.metadata.scheduledDate,t,r);case"tags":return yK(n.metadata.tags,t,r);case"filePath":return bK(n.filePath,t,r);case"project":return wK(n.metadata.project,t,r);case"completed":return TK(n.completed,t);default:return!0}}function fK(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 kK(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 vK(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 DM(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,Ha.moment)(n).startOf("day"),r=(0,Ha.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 yK(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 bK(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 wK(n,a,e){let t=(n!=null?n:"").toLowerCase(),r=(e!=null?e:"").toLowerCase();switch(a){case"contains":return t.includes(r);case"doesNotContain":return!t.includes(r);case"is":return t===r;case"isNot":return t!==r;case"startsWith":return t.startsWith(r);case"endsWith":return t.endsWith(r);case"isEmpty":return t.trim()==="";case"isNotEmpty":return t.trim()!=="";default:return!0}}function TK(n,a){switch(a){case"isTrue":return n===!0;case"isFalse":return n===!1;default:return!0}}function cr(n,a,e,t={}){var u,p,m;let r=[...n],i=xt(e,a),s=i.filterRules||{},o=e.settings.globalFilterRules||{},l=a==="calendar"||typeof a=="string"&&a.startsWith("calendar"),d=a==="forecast"||typeof a=="string"&&a.startsWith("forecast");if(!l&&!d&&(r=r.filter(h=>{var k,v,y,b;return!(((b=(v=(k=h.metadata)==null?void 0:k.source)==null?void 0:v.type)!=null?b:(y=h.source)==null?void 0:y.type)==="ics")})),i.hideCompletedAndAbandonedTasks&&(r=r.filter(h=>CM(e,h,a))),i.filterBlanks&&(r=r.filter(h=>h.content.trim()!=="")),o.advancedFilter&&((u=o.advancedFilter.filterGroups)==null?void 0:u.length)>0&&(o.advancedFilter,r=r.filter(h=>SM(h,o.advancedFilter))),s.advancedFilter&&((p=s.advancedFilter.filterGroups)==null?void 0:p.length)>0&&(s.advancedFilter,r=r.filter(h=>SM(h,s.advancedFilter))),t.advancedFilter&&((m=t.advancedFilter.filterGroups)==null?void 0:m.length)>0){if(t.advancedFilter,r=r.filter(h=>SM(h,t.advancedFilter)),r=r.filter(h=>CM(e,h,a)),r=r.filter(h=>IL(e,h,a)),t.textQuery){let h=t.textQuery.toLowerCase();r=r.filter(g=>{var f,k,v;return g.content.toLowerCase().includes(h)||((f=g.metadata.project)==null?void 0:f.toLowerCase().includes(h))||((k=g.metadata.context)==null?void 0:k.toLowerCase().includes(h))||((v=g.metadata.tags)==null?void 0:v.some(y=>y.toLowerCase().includes(h)))})}return r}if(s.textContains){let h=s.textContains.toLowerCase();r=r.filter(g=>g.content.toLowerCase().includes(h))}if(s.tagsInclude&&s.tagsInclude.length>0&&(r=r.filter(h=>{var g;return(g=s.tagsInclude)==null?void 0:g.some(f=>h.metadata.tags.some(k=>typeof k=="string"&&k===f))})),s.tagsExclude&&s.tagsExclude.length>0&&(r=r.filter(h=>{var f;if(!h.metadata.tags||h.metadata.tags.length===0)return!0;let g=h.metadata.tags.map(k=>k.toLowerCase());return!((f=s.tagsExclude)!=null&&f.some(k=>{let v=k.toLowerCase();return g.includes(v)||g.includes("#"+v)}))})),s.project&&(r=r.filter(h=>typeof h.metadata.project=="string"&&typeof s.project=="string"&&h.metadata.project.trim()===s.project.trim())),s.priority!==void 0&&(r=r.filter(h=>{var g,f,k;return s.priority==="none"?h.metadata.priority===void 0:(g=s.priority)!=null&&g.includes(",")?s.priority.split(",").includes(String((f=h.metadata.priority)!=null?f:0)):h.metadata.priority===parseInt((k=s.priority)!=null?k:"0")})),s.statusInclude&&s.statusInclude.length>0&&(r=r.filter(h=>{var g;return(g=s.statusInclude)==null?void 0:g.includes(h.status)})),s.statusExclude&&s.statusExclude.length>0&&(r=r.filter(h=>{var g;return!((g=s.statusExclude)!=null&&g.includes(h.status))})),s.pathIncludes){let h=s.pathIncludes.split(",").filter(g=>g.trim()!=="").map(g=>g.trim().toLowerCase());r=r.filter(g=>h.some(f=>g.filePath.toLowerCase().includes(f)))}if(s.pathExcludes){let h=s.pathExcludes.split(",").filter(g=>g.trim()!=="").map(g=>g.trim().toLowerCase());r=r.filter(g=>!h.some(f=>g.filePath.toLowerCase().includes(f)))}if(s.dueDate){let h=xM(s.dueDate);h&&(r=r.filter(g=>g.metadata.dueDate?(0,Ha.moment)(g.metadata.dueDate).isSame(h,"day"):!1))}if(s.startDate){let h=xM(s.startDate);h&&(r=r.filter(g=>g.metadata.startDate?(0,Ha.moment)(g.metadata.startDate).isSame(h,"day"):!1))}if(s.scheduledDate){let h=xM(s.scheduledDate);h&&(r=r.filter(g=>g.metadata.scheduledDate?(0,Ha.moment)(g.metadata.scheduledDate).isSame(h,"day"):!1))}if(Object.keys(s).length===0)switch(a){case"inbox":{r=r.filter(h=>!fF(h));break}case"today":{let h=(0,Ha.moment)().startOf("day"),g=f=>f?(0,Ha.moment)(f).isSame(h,"day"):!1;r=r.filter(f=>{var k,v,y;return g((k=f.metadata)==null?void 0:k.dueDate)||g((v=f.metadata)==null?void 0:v.scheduledDate)||g((y=f.metadata)==null?void 0:y.startDate)});break}case"upcoming":{let h=(0,Ha.moment)().startOf("day"),g=(0,Ha.moment)().add(7,"days").endOf("day"),f=k=>k?(0,Ha.moment)(k).isAfter(h,"day")&&(0,Ha.moment)(k).isSameOrBefore(g,"day"):!1;r=r.filter(k=>{var v,y,b;return f((v=k.metadata)==null?void 0:v.dueDate)||f((y=k.metadata)==null?void 0:y.scheduledDate)||f((b=k.metadata)==null?void 0:b.startDate)});break}case"flagged":{r=r.filter(h=>{var g,f,k,v,y;return((g=h.metadata.priority)!=null?g:0)>=3||((k=(f=h.metadata.tags)==null?void 0:f.includes("flagged"))!=null?k:!1)||((y=(v=h.metadata.tags)==null?void 0:v.includes("#flagged"))!=null?y:!1)});break}}if(r=r.filter(h=>CM(e,h,a)),r=r.filter(h=>IL(e,h,a)),t.textQuery){let h=t.textQuery.toLowerCase();r=r.filter(g=>{var f,k,v;return g.content.toLowerCase().includes(h)||((f=g.metadata.project)==null?void 0:f.toLowerCase().includes(h))||((k=g.metadata.context)==null?void 0:k.toLowerCase().includes(h))||((v=g.metadata.tags)==null?void 0:v.some(y=>y.toLowerCase().includes(h)))})}return s.hasDueDate&&(s.hasDueDate==="any"||(s.hasDueDate==="hasDate"?r=r.filter(h=>h.metadata.dueDate):s.hasDueDate==="noDate"&&(r=r.filter(h=>!h.metadata.dueDate)))),s.hasStartDate&&(s.hasStartDate==="any"||(s.hasStartDate==="hasDate"?r=r.filter(h=>h.metadata.startDate):s.hasStartDate==="noDate"&&(r=r.filter(h=>!h.metadata.startDate)))),s.hasScheduledDate&&(s.hasScheduledDate==="any"||(s.hasScheduledDate==="hasDate"?r=r.filter(h=>h.metadata.scheduledDate):s.hasScheduledDate==="noDate"&&(r=r.filter(h=>!h.metadata.scheduledDate)))),s.hasCompletedDate&&(s.hasCompletedDate==="any"||(s.hasCompletedDate==="hasDate"?r=r.filter(h=>h.metadata.completedDate):s.hasCompletedDate==="noDate"&&(r=r.filter(h=>!h.metadata.completedDate)))),s.hasRecurrence&&(s.hasRecurrence==="any"||(s.hasRecurrence==="hasProperty"?r=r.filter(h=>h.metadata.recurrence):s.hasRecurrence==="noProperty"&&(r=r.filter(h=>!h.metadata.recurrence)))),s.hasCreatedDate&&(s.hasCreatedDate==="any"||(s.hasCreatedDate==="hasDate"?r=r.filter(h=>h.metadata.createdDate):s.hasCreatedDate==="noDate"&&(r=r.filter(h=>!h.metadata.createdDate)))),r}z();var EM={" ":"Todo",x:"Done",X:"Done","-":"Cancelled","/":"In Progress",">":"Forwarded","<":"Scheduled","!":"Important","*":"Star","?":"Question",i:"Info",I:"Idea",S:"Started",p:"Pro",c:"Choice",l:"Location",b:"Bookmark",f:"Fire",k:"Key",w:"Win",u:"Up",d:"Down",'"':"Quote",B:"Bug",0:"0/5",1:"1/5",2:"2/5",3:"3/5",4:"4/5",5:"5/5",n:"Note"};function xK(n){return n.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/[-_]+/g," ").split(" ").filter(Boolean).map(a=>a.charAt(0).toUpperCase()+a.slice(1).toLowerCase()).join(" ")}function CK(n,a){if(a){let{marks:e}=ca(a,n);for(let[t,r]of Object.entries(e))if(r===n||r&&r.toLowerCase()===n.toLowerCase())return t}return n in EM?EM[n]:!n||n.trim().length===0?EM[" "]||"Todo":xK(n)}function RL(n,a,e){switch(a){case"none":return AL(n);case"filePath":return SK(n);case"dueDate":return DK(n);case"priority":return EK(n);case"project":return MK(n);case"tags":return PK(n);case"status":return IK(n,e);default:return AL(n)}}function AL(n){return n.length===0?[]:[{title:c("All Tasks"),key:"all",sortOrder:0,tasks:n,isExpanded:!0}]}function SK(n){let a=new Map;n.forEach(r=>{let i=r.metadata.filePath||r.filePath||c("Unknown File");a.has(i)||a.set(i,[]),a.get(i).push(r)});let e=[];return Array.from(a.keys()).sort((r,i)=>r.localeCompare(i)).forEach((r,i)=>{let s=Math.max(r.lastIndexOf("/"),r.lastIndexOf("\\")),o;if(s>=0){let l=r.substring(0,s),d=r.substring(s+1),u=d.lastIndexOf("."),p=u>0?d.substring(0,u):d;o=l?`${p} (${l})`:p}else{let l=r.lastIndexOf(".");o=l>0?r.substring(0,l):r}e.push({title:o,key:`file-${r}`,sortOrder:i,tasks:a.get(r),isExpanded:!0})}),e}function FL(n){let a=Math.max(n.lastIndexOf("/"),n.lastIndexOf("\\")),e=n.substring(a+1),t=e.lastIndexOf(".");return t>0?e.substring(0,t):e}function OL(n){let a=new Map,e=new Map;n.forEach(s=>{let o=s.metadata.filePath||s.filePath||c("Unknown File"),l=Math.max(o.lastIndexOf("/"),o.lastIndexOf("\\"));if(l>=0){let d=o.substring(0,l);a.has(d)||a.set(d,new Map);let u=a.get(d);u.has(o)||u.set(o,[]),u.get(o).push(s)}else e.has(o)||e.set(o,[]),e.get(o).push(s)});let t=[],r=0;if(Array.from(a.keys()).sort((s,o)=>s.localeCompare(o)).forEach(s=>{let o=a.get(s),l=`folder-${s}`,d=[];Array.from(o.keys()).sort((g,f)=>g.localeCompare(f)).forEach((g,f)=>{d.push({title:FL(g),key:`file-${g}`,sortOrder:f,tasks:o.get(g),isExpanded:!1,level:1,parentKey:l})});let p=[];d.forEach(g=>p.push(...g.tasks));let m=s.split(/[/\\]/),h=m[m.length-1]||s;t.push({title:h,key:l,sortOrder:r++,tasks:p,isExpanded:!1,children:d,level:0})}),e.size>0){let s=[];Array.from(e.keys()).sort((d,u)=>d.localeCompare(u)).forEach((d,u)=>{s.push({title:FL(d),key:`file-${d}`,sortOrder:u,tasks:e.get(d),isExpanded:!1,level:1,parentKey:"folder-root"})});let l=[];s.forEach(d=>l.push(...d.tasks)),t.unshift({title:c("Root Files"),key:"folder-root",sortOrder:-1,tasks:l,isExpanded:!1,children:s,level:0})}return t}function DK(n){let a=new Date;a.setHours(0,0,0,0);let e=a.getTime(),t=new Date(a);t.setDate(t.getDate()+1);let r=t.getTime(),i=new Date(a);i.setDate(i.getDate()+7);let s=i.getTime(),o=[],l=[],d=[],u=[],p=[],m=[];n.forEach(f=>{let k=f.metadata.dueDate;if(!k){m.push(f);return}let v=new Date(k);v.setHours(0,0,0,0);let y=v.getTime();y<e?o.push(f):y===e?l.push(f):y===r?d.push(f):y<=s?u.push(f):p.push(f)});let h=[],g=0;return o.length>0&&h.push({title:c("Past Due"),key:"due-past",sortOrder:g++,tasks:o,isExpanded:!0}),l.length>0&&h.push({title:c("Today"),key:"due-today",sortOrder:g++,tasks:l,isExpanded:!0}),d.length>0&&h.push({title:c("Tomorrow"),key:"due-tomorrow",sortOrder:g++,tasks:d,isExpanded:!0}),u.length>0&&h.push({title:c("This Week"),key:"due-week",sortOrder:g++,tasks:u,isExpanded:!0}),p.length>0&&h.push({title:c("Later"),key:"due-later",sortOrder:g++,tasks:p,isExpanded:!0}),m.length>0&&h.push({title:c("No Due Date"),key:"due-none",sortOrder:g++,tasks:m,isExpanded:!0}),h}function EK(n){let a=[],e=[],t=[],r=[];n.forEach(o=>{let l=o.metadata.priority||0;l===3?a.push(o):l===2?e.push(o):l===1?t.push(o):r.push(o)});let i=[],s=0;return a.length>0&&i.push({title:c("High Priority"),key:"priority-high",sortOrder:s++,tasks:a,isExpanded:!0}),e.length>0&&i.push({title:c("Medium Priority"),key:"priority-medium",sortOrder:s++,tasks:e,isExpanded:!0}),t.length>0&&i.push({title:c("Low Priority"),key:"priority-low",sortOrder:s++,tasks:t,isExpanded:!0}),r.length>0&&i.push({title:c("No Priority"),key:"priority-none",sortOrder:s++,tasks:r,isExpanded:!0}),i}function MK(n){let a=new Map;n.forEach(r=>{let i=r.metadata.project||c("No Project");a.has(i)||a.set(i,[]),a.get(i).push(r)});let e=[];return Array.from(a.keys()).sort((r,i)=>r===c("No Project")?1:i===c("No Project")?-1:r.localeCompare(i)).forEach((r,i)=>{e.push({title:r,key:`project-${r}`,sortOrder:i,tasks:a.get(r),isExpanded:!0})}),e}function PK(n){let a=new Map,e=[];n.forEach(i=>{let s=i.metadata.tags||[];s.length===0?e.push(i):s.forEach(o=>{let l=o.startsWith("#")?o.substring(1):o;a.has(l)||a.set(l,[]),a.get(l).push(i)})});let t=[];return Array.from(a.keys()).sort().forEach((i,s)=>{t.push({title:`#${i}`,key:`tag-${i}`,sortOrder:s,tasks:a.get(i),isExpanded:!0})}),e.length>0&&t.push({title:c("No Tags"),key:"tag-none",sortOrder:t.length,tasks:e,isExpanded:!0}),t}function IK(n,a){let e=new Map;n.forEach(o=>{let l=o.status||" ";e.has(l)||e.set(l,[]),e.get(l).push(o)});let t=[];if(a!=null&&a.statusCycles&&a.statusCycles.length>0){let o=a.statusCycles.filter(l=>l.enabled).sort((l,d)=>l.priority-d.priority);for(let l of o)for(let d of l.cycle){let u=l.marks[d];u&&!t.includes(u)&&t.push(u)}}else if(a!=null&&a.taskStatusCycle&&(a!=null&&a.taskStatusMarks))for(let o of a.taskStatusCycle){let l=a.taskStatusMarks[o];l&&!t.includes(l)&&t.push(l)}let r=[" ","/",">","x","X","-","?","!"];for(let o of r)t.includes(o)||t.push(o);let i=[];return Array.from(e.keys()).sort((o,l)=>{let d=t.indexOf(o),u=t.indexOf(l);return d!==-1&&u!==-1?d-u:d!==-1?-1:u!==-1?1:o.localeCompare(l)}).forEach((o,l)=>{let d=CK(o,a);i.push({title:d,key:`status-${o}`,sortOrder:l,tasks:e.get(o),isExpanded:!0})}),i}var NL="task-genius-groupby",LL="task-genius-group-expanded";function jL(n){let a=`${NL}-${n}`,e=localStorage.getItem(a);return e&&["none","filePath","dueDate","priority","project","tags","status"].includes(e)?e:"none"}function HL(n,a){let e=`${NL}-${n}`;localStorage.setItem(e,a)}function BL(n,a){let e=`${LL}-${n}-${a}`,t=localStorage.getItem(e);return t===null?!1:t==="true"}function VL(n,a,e){let t=`${LL}-${n}-${a}`;localStorage.setItem(t,e?"true":"false")}var Ps=class extends Ri.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.groupByDimension="none";this.taskGroups=[];this.topNavigation=null;this.workingOnSummaryEl=null;this.timerStatisticsPanel=null;this.isShowingTimerStats=!1;this.currentViewId="inbox";this.selectedProjectForView=null;this.focusFilter=null;this.isTreeView=!1;this.isRendering=!1;this.pendingForceRefresh=!1;this.pendingVisibilityRetry=!1;this.visibilityRetryCount=0;this.lastAllTasksSignature="";this.lastNotFilteredTasksSignature="";this.debounceRefreshTaskList=(0,Ri.debounce)(this.refreshTaskList,150)}onload(){this.containerEl=this.parentEl.createDiv({cls:"task-content"}),this.createContentHeader(),this.taskListEl=this.containerEl.createDiv({cls:"task-list"}),this.initializeViewMode(),this.initializeGroupBy(),this.initializeVirtualList()}createContentHeader(){this.headerEl=this.containerEl.createDiv({cls:"content-header"}),this.titleEl=this.headerEl.createDiv({cls:"content-title",text:c("Inbox")}),this.countEl=this.headerEl.createDiv({cls:"task-count",text:c("0 tasks")});let t=this.headerEl.createDiv({cls:"content-filter-controls"}).createDiv({cls:"content-filter"});this.filterInput=t.createEl("input",{cls:"filter-input",attr:{type:"text",placeholder:c("Filter tasks...")}});let r=this.headerEl.createDiv({cls:"view-toggle-btn"});(0,Ri.setIcon)(r,"list"),r.setAttribute("aria-label",c("Toggle list/tree view")),this.registerDomEvent(r,"click",()=>{this.toggleViewMode()});let i;this.registerDomEvent(this.filterInput,"input",()=>{clearTimeout(i),i=window.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=dn(this.app,this.plugin,this.currentViewId);let e=(t=this.headerEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,Ri.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.headerEl.querySelector(".view-toggle-btn");e&&(0,Ri.setIcon)(e,this.isTreeView?"git-branch":"list"),cn(this.app,this.currentViewId,this.isTreeView),this.debounceRefreshTaskList()}setIsTreeView(e){var t;if(this.isTreeView!==e){this.isTreeView=e;let r=(t=this.headerEl)==null?void 0:t.querySelector(".view-toggle-btn");r&&(0,Ri.setIcon)(r,this.isTreeView?"git-branch":"list"),this.debounceRefreshTaskList()}}initializeGroupBy(){this.groupByDimension=jL(this.currentViewId)}showGroupByMenu(){let e=new Ri.Menu;[{value:"none",label:c("None"),icon:"x"},{value:"filePath",label:c("File Path"),icon:"folder"},{value:"dueDate",label:c("Due Date"),icon:"calendar"},{value:"priority",label:c("Priority"),icon:"signal"},{value:"project",label:c("Project"),icon:"folder-tree"},{value:"tags",label:c("Tags"),icon:"tag"},{value:"status",label:c("Status"),icon:"check-circle"}].forEach(i=>{e.addItem(s=>{s.setTitle(i.label).setIcon(i.icon).setChecked(this.groupByDimension===i.value).onClick(()=>{i.value!==this.groupByDimension&&(this.groupByDimension=i.value,HL(this.currentViewId,i.value),this.applyFilters(),this.debounceRefreshTaskList())})})});let r=document.querySelector('.fluent-nav-custom-buttons [aria-label="'+c("Group By")+'"]');r?e.showAtMouseEvent(new MouseEvent("click",{clientX:r.getBoundingClientRect().left,clientY:r.getBoundingClientRect().bottom})):e.showAtMouseEvent(new MouseEvent("click"))}applyGrouping(){if(this.groupByDimension==="none"){this.taskGroups=[];return}this.groupByDimension==="filePath"?this.taskGroups=OL(this.filteredTasks):this.taskGroups=RL(this.filteredTasks,this.groupByDimension,this.plugin.settings)}renderGroupedTasks(){this.cleanupGroupRenderers();let e=new Map;this.notFilteredTasks.forEach(t=>e.set(t.id,t)),this.taskGroups.forEach(t=>{this.renderGroupRecursive(t,this.taskListEl,e,0)})}renderGroupRecursive(e,t,r,i){let s=t.createDiv({cls:`task-group-section level-${i}`});s.setAttribute("data-group-key",e.key),s.setAttribute("data-level",i.toString()),e.isExpanded=BL(this.currentViewId,e.key);let o=s.createDiv({cls:`group-section-header ${e.children?"folder-group":"file-group"}`}),l=o.createDiv({cls:"section-toggle"});(0,Ri.setIcon)(l,e.isExpanded?"chevron-down":"chevron-right"),o.createDiv({cls:"section-title"}).setText(e.title),o.createDiv({cls:"section-count"}).setText(`${e.tasks.length}`);let p=s.createDiv({cls:"group-section-content"});e.isExpanded||p.hide(),this.registerDomEvent(o,"click",()=>{e.isExpanded=!e.isExpanded,VL(this.currentViewId,e.key,e.isExpanded),(0,Ri.setIcon)(l,e.isExpanded?"chevron-down":"chevron-right"),e.isExpanded?(p.show(),this.renderGroupContent(e,p,r,i)):(this.destroyGroupContent(e,p),p.hide())}),e.isExpanded&&this.renderGroupContent(e,p,r,i)}renderGroupContent(e,t,r,i){t.empty(),e.children&&e.children.length>0?e.children.forEach(s=>{this.renderGroupRecursive(s,t,r,i+1)}):(e.renderer=new Ur(this,t,this.plugin,this.app,this.currentViewId),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(s,o)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(s,o)},e.renderer.renderTasks(e.tasks,this.isTreeView,r,c("No tasks in this group.")))}destroyGroupContent(e,t){e.children&&e.children.length>0&&e.children.forEach(r=>{this.destroyGroupContent(r,t)}),e.renderer&&(this.removeChild(e.renderer),e.renderer=void 0),t.empty()}cleanupGroupRenderers(){this.taskGroups.forEach(e=>{e.renderer&&(this.removeChild(e.renderer),e.renderer=void 0)})}setTasks(e,t,r=!1){let i=()=>{this.lastAllTasksSignature=this.computeTaskSignature(e),this.lastNotFilteredTasksSignature=this.computeTaskSignature(t)};if(r){this.isRendering=!1,this.pendingForceRefresh=!0,this.allTasks=e,this.notFilteredTasks=t,i(),this.applyFilters(),this.timerStatisticsPanel&&this.timerStatisticsPanel.setTasks(this.filteredTasks),this.debounceRefreshTaskList();return}if(this.pendingForceRefresh)return;let s=this.computeTaskSignature(e),o=this.computeTaskSignature(t);s===this.lastAllTasksSignature&&o===this.lastNotFilteredTasksSignature||(this.allTasks=e,this.notFilteredTasks=t,this.lastAllTasksSignature=s,this.lastNotFilteredTasksSignature=o,this.applyFilters(),this.timerStatisticsPanel&&this.timerStatisticsPanel.setTasks(this.filteredTasks),this.debounceRefreshTaskList())}setViewMode(e,t){let r=this.currentViewId;this.currentViewId=e,this.selectedProjectForView=t===void 0?null:t;let i=xt(this.plugin,e),s=c(i.name);this.titleEl.setText(s),this.initializeViewMode(),this.initializeGroupBy(),r==="working-on"&&e!=="working-on"?this.unregisterWorkingOnButtons():r!=="working-on"&&e==="working-on"&&this.registerWorkingOnButtons(),this.applyFilters(),this.debounceRefreshTaskList()}setTopNavigation(e){this.topNavigation&&(this.unregisterGroupByButton(),this.unregisterWorkingOnButtons()),this.topNavigation=e,e&&(this.registerGroupByButton(),this.registerWorkingOnButtons())}registerGroupByButton(){this.topNavigation&&this.topNavigation.registerCustomButton({id:"content-group-by",icon:"folder-tree",tooltip:c("Group By"),onClick:()=>{this.showGroupByMenu()}})}unregisterGroupByButton(){this.topNavigation&&this.topNavigation.unregisterCustomButton("content-group-by")}registerWorkingOnButtons(){var e;this.topNavigation&&(this.currentViewId!=="working-on"||!((e=this.plugin.settings.taskTimer)!=null&&e.enabled)||this.topNavigation.registerCustomButton({id:"working-on-timer-stats",icon:"bar-chart-2",tooltip:c("Timer Statistics"),onClick:()=>{this.toggleTimerStatisticsPanel()}}))}unregisterWorkingOnButtons(){this.hideTimerStatisticsPanel(),this.topNavigation&&this.topNavigation.unregisterCustomButton("working-on-timer-stats")}toggleTimerStatisticsPanel(){this.isShowingTimerStats?this.hideTimerStatisticsPanel():this.showTimerStatisticsPanel()}showTimerStatisticsPanel(){this.timerStatisticsPanel||(this.isShowingTimerStats=!0,this.taskListEl.hide(),this.timerStatisticsPanel=new Jw(this.containerEl,this.plugin,this.filteredTasks,{onTaskClick:e=>{e&&this.selectTask(e)},onTaskContextMenu:(e,t)=>{t&&this.params.onTaskContextMenu&&this.params.onTaskContextMenu(e,t)}}),this.addChild(this.timerStatisticsPanel),this.timerStatisticsPanel.load(),this.updateTimerStatsButtonState())}hideTimerStatisticsPanel(){this.timerStatisticsPanel&&(this.isShowingTimerStats=!1,this.removeChild(this.timerStatisticsPanel),this.timerStatisticsPanel=null,this.taskListEl.show(),this.updateTimerStatsButtonState())}updateTimerStatsButtonState(){}applyFilters(){var t,r;this.filteredTasks=cr(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=pa(this.filteredTasks,e,this.plugin.settings):this.filteredTasks.sort((i,s)=>{var k,v,y,b,w,T,x,C;let o=i.completed,l=s.completed;if(o!==l)return o?1:-1;let d=(k=i.metadata.priority)!=null?k:0,u=(v=s.metadata.priority)!=null?v:0;if(d!==u)return u-d;let p=(y=i.metadata.dueDate)!=null?y:1/0,m=(b=s.metadata.dueDate)!=null?b:1/0;if(p!==m)return p-m;let g=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}).compare((w=i.content)!=null?w:"",(T=s.content)!=null?T:"");if(g!==0)return g;let f=(i.filePath||"").localeCompare(s.filePath||"");return f!==0?f:((x=i.line)!=null?x:0)-((C=s.line)!=null?C:0)}),this.applyGrouping(),this.countEl.setText(`${this.filteredTasks.length} ${c("tasks")}`),this.timerStatisticsPanel&&this.timerStatisticsPanel.setTasks(this.filteredTasks)}filterTasks(e){this.applyFilters(),this.debounceRefreshTaskList()}computeTaskSignature(e){return!e||e.length===0?"":e.map(t=>{var r,i;return[t.id,t.completed?"1":"0",(r=t.originalMarkdown)!=null?r:"",(i=t.content)!=null?i:"",t.metadata?JSON.stringify(t.metadata):""].join("|")}).join(";")}cleanupComponents(){var e;this.disposeComponentList(this.taskComponents),this.disposeComponentList(this.treeComponents),this.cleanupGroupRenderers(),this.taskComponents=[],this.treeComponents=[],(e=this.taskListObserver)==null||e.disconnect(),this.taskListEl.empty()}disposeComponentList(e){let t=[...e];for(let r of t)this.removeChild(r)}isContainerVisible(){if(!this.containerEl||!document.body.contains(this.containerEl)||!this.containerEl.isShown())return!1;let t=this.containerEl.getBoundingClientRect();return t.width>0&&t.height>0}refreshTaskList(){var t,r;if(!this.isContainerVisible()){if(this.pendingForceRefresh=!0,!this.pendingVisibilityRetry){this.pendingVisibilityRetry=!0;let i=()=>{if(this.isContainerVisible()){this.pendingVisibilityRetry=!1,this.visibilityRetryCount=0,this.pendingForceRefresh&&!this.isRendering&&(this.pendingForceRefresh=!1,this.refreshTaskList());return}this.visibilityRetryCount<30?(this.visibilityRetryCount++,setTimeout(i,100)):(this.pendingVisibilityRetry=!1,this.visibilityRetryCount=0)};i()}return}if(this.isRendering){this.pendingForceRefresh=!0;return}this.isRendering=!0;let e=this.captureScrollState();try{let i=[...this.taskComponents],s=[...this.treeComponents];if(this.taskComponents=[],this.treeComponents=[],(t=this.taskListObserver)==null||t.disconnect(),this.removeLoadMarker(),this.nextTaskIndex=0,this.nextRootTaskIndex=0,this.rootTasks=[],this.renderWorkingOnSummary(),this.filteredTasks.length===0){this.taskListEl.replaceChildren(),this.disposeComponentList(i),this.disposeComponentList(s),this.addEmptyState(c("No tasks found."));return}if(this.groupByDimension!=="none"&&this.taskGroups.length>0){this.taskListEl.replaceChildren(),this.disposeComponentList(i),this.disposeComponentList(s),this.renderGroupedTasks(),this.restoreScrollState(e);return}let o=document.createDocumentFragment();if(this.isTreeView){let l=new Map;this.notFilteredTasks.forEach(u=>l.set(u.id,u)),this.rootTasks=PL(this.filteredTasks);let d=(r=this.plugin.settings.viewConfiguration.find(u=>u.id===this.currentViewId))==null?void 0:r.sortCriteria;d&&d.length>0?this.rootTasks=pa(this.rootTasks,d,this.plugin.settings):this.rootTasks.sort((u,p)=>{var T,x,C,S,D,E,R,I;let m=u.completed,h=p.completed;if(m!==h)return m?1:-1;let g=(T=u.metadata.priority)!=null?T:0,f=(x=p.metadata.priority)!=null?x:0;if(g!==f)return f-g;let k=(C=u.metadata.dueDate)!=null?C:1/0,v=(S=p.metadata.dueDate)!=null?S:1/0;if(k!==v)return k-v;let b=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}).compare((D=u.content)!=null?D:"",(E=p.content)!=null?E:"");if(b!==0)return b;let w=(u.filePath||"").localeCompare(p.filePath||"");return w!==0?w:((R=u.line)!=null?R:0)-((I=p.line)!=null?I:0)}),this.loadRootTaskBatch(l,o)}else this.loadTaskBatch(o);this.taskListEl.replaceChildren(o),this.disposeComponentList(i),this.disposeComponentList(s),this.checkAndAddLoadMarker(),this.restoreScrollState(e)}finally{setTimeout(()=>{this.isRendering=!1,this.pendingForceRefresh&&(this.pendingForceRefresh=!1,this.refreshTaskList())},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 d=l.getBoundingClientRect(),u=d.top-s.top;if(d.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(e=this.taskListEl){let t=document.createDocumentFragment(),r=this.taskPageSize,i=this.nextTaskIndex,s=Math.min(i+r,this.filteredTasks.length);for(let o=i;o<s;o++){let l=this.filteredTasks[o],d=new Oc(l,this.currentViewId,this.app,this.plugin,this.params.selectionManager);d.onTaskSelected=this.selectTask.bind(this),d.onTaskCompleted=u=>{this.params.onTaskCompleted&&this.params.onTaskCompleted(u)},d.onTaskUpdate=async(u,p)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(u,p)},d.onTaskContextMenu=(u,p)=>{this.params.onTaskContextMenu&&this.params.onTaskContextMenu(u,p)},this.addChild(d),d.load(),t.appendChild(d.element),this.taskComponents.push(d)}return e.appendChild(t),this.nextTaskIndex=s,s}loadRootTaskBatch(e,t=this.taskListEl){let r=document.createDocumentFragment(),i=this.taskPageSize,s=this.nextRootTaskIndex,o=Math.min(s+i,this.rootTasks.length);this.notFilteredTasks.forEach(l=>{e.has(l.id)||e.set(l.id,l)});for(let l=s;l<o;l++){let d=this.rootTasks[l],u=this.notFilteredTasks.filter(m=>m.metadata.parent===d.id),p=new Nc(d,this.currentViewId,this.app,0,u,e,this.plugin,this.params.selectionManager);p.onTaskSelected=this.selectTask.bind(this),p.onTaskCompleted=m=>{this.params.onTaskCompleted&&this.params.onTaskCompleted(m)},p.onTaskUpdate=async(m,h)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(m,h)},p.onTaskContextMenu=(m,h)=>{this.params.onTaskContextMenu&&this.params.onTaskContextMenu(m,h)},this.addChild(p),p.load(),r.appendChild(p.element),this.treeComponents.push(p)}return t.appendChild(r),this.nextRootTaskIndex=o,o}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(c("Loading more...")),this.taskListObserver.observe(e)}removeLoadMarker(){let e=this.taskListEl.querySelector(".task-load-marker");e&&(this.taskListObserver.unobserve(e),e.remove())}renderWorkingOnSummary(){var d;if(this.currentViewId!=="working-on"){this.workingOnSummaryEl&&(this.workingOnSummaryEl.remove(),this.workingOnSummaryEl=null);return}if(!((d=this.plugin.settings.taskTimer)!=null&&d.enabled))return;this.workingOnSummaryEl||(this.workingOnSummaryEl=this.taskListEl.createDiv({cls:"working-on-summary"}));let e=new Ft(this.plugin.settings.taskTimer),t=0,r=0,i=0,s=(u,p)=>{var f;let m=(f=u.metadata)==null?void 0:f.id;if(!m)return;let h=e.getTimerByFileAndBlock(u.filePath,m);if(!h)return;let g=e.getCurrentDuration(h.taskId);p?(t+=g,i++):r+=g};this.filteredTasks.forEach(u=>s(u,!0)),this.notFilteredTasks.filter(u=>u.completed).forEach(u=>s(u,!1));let o=e.formatDuration(t),l=e.formatDuration(r);this.workingOnSummaryEl.setText(`\u23F1 ${c("Active timers")}: ${i} \xB7 ${c("Total time")}: ${o} \xB7 ${c("Completed time")}: ${l}`),this.workingOnSummaryEl.parentElement!==this.taskListEl&&this.taskListEl.prepend(this.workingOnSummaryEl)}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.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(k=>k.getTask().id)),h=this.filteredTasks.findIndex(k=>k.id===p.id),g=null;for(let k=h+1;k<this.filteredTasks.length;k++){let v=this.filteredTasks[k].id;if(m.has(v)){g=this.taskComponents.find(y=>y.getTask().id===v);break}}let f=new Oc(p,this.currentViewId,this.app,this.plugin,this.params.selectionManager);if(f.onTaskSelected=this.selectTask.bind(this),f.onTaskCompleted=k=>{var v,y;(y=(v=this.params).onTaskCompleted)==null||y.call(v,k)},f.onTaskUpdate=async(k,v)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(k,v)},f.onTaskContextMenu=(k,v)=>{var y,b;(b=(y=this.params).onTaskContextMenu)==null||b.call(y,k,v)},this.addChild(f),f.load(),g){this.taskListEl.insertBefore(f.element,g.element);let k=this.taskComponents.indexOf(g);this.taskComponents.splice(k,0,f)}else this.taskListEl.appendChild(f.element),this.taskComponents.push(f)},d=p=>{let m=this.taskComponents.findIndex(h=>h.getTask().id===p);if(m>=0){let h=this.taskComponents[m];this.removeChild(h),h.element.remove(),this.taskComponents.splice(m,1)}},u=(p,m)=>{var g,f;let h=(p.filePath||"").localeCompare(m.filePath||"");return h!==0?h:((g=p.line)!=null?g:0)-((f=m.line)!=null?f: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 h of this.treeComponents)if(h.updateTaskRecursively(s)){m=!0;break}if(!m){let h=s.metadata.parent;if(h)for(let g of this.treeComponents){let f=g.findComponentByTaskId(h);if(f){let k=this.notFilteredTasks.filter(v=>v.metadata.parent===h);f.updateChildTasks(k),m=!0;break}}else{let g=new Map;this.notFilteredTasks.forEach(y=>g.set(y.id,y));let f=this.notFilteredTasks.filter(y=>y.metadata.parent===s.id),k=new Nc(s,this.currentViewId,this.app,0,f,g,this.plugin,this.params.selectionManager);k.onTaskSelected=this.selectTask.bind(this),k.onTaskCompleted=y=>{var b,w;(w=(b=this.params).onTaskCompleted)==null||w.call(b,y)},k.onTaskUpdate=async(y,b)=>{this.params.onTaskUpdate&&await this.params.onTaskUpdate(y,b)},k.onTaskContextMenu=(y,b)=>{var w,T;(T=(w=this.params).onTaskContextMenu)==null||T.call(w,y,b)},this.addChild(k),k.load();let v=this.treeComponents.length;for(let y=0;y<this.treeComponents.length;y++)if(u(s,this.treeComponents[y].getTask())<0){v=y;break}v<this.treeComponents.length?(this.taskListEl.insertBefore(k.element,this.treeComponents[v].element),this.treeComponents.splice(v,0,k)):(this.taskListEl.appendChild(k.element),this.treeComponents.push(k))}}}}else{let p=this.taskComponents.find(m=>m.getTask().id===e.id);p?p.updateTask(s):l(s)}else if(!this.isTreeView)d(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} ${c("tasks")}`)}getSelectedTask(){return this.selectedTask}onunload(){this.unregisterGroupByButton(),this.cleanupComponents(),this.containerEl.empty(),this.containerEl.remove()}};var vr=require("obsidian");z();var Is=class extends vr.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.sourceTasks=[];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:c("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:c("Tags")}),i=t.createDiv({cls:"tags-multi-select-btn"});if((0,vr.setIcon)(i,"list-plus"),i.setAttribute("aria-label",c("Toggle multi-select")),this.registerDomEvent(i,"click",()=>{this.toggleMultiSelect()}),vr.Platform.isPhone){let s=t.createDiv({cls:"tags-sidebar-close"});new vr.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"});vr.Platform.isPhone&&t.createEl("div",{cls:"tags-sidebar-toggle"},o=>{new vr.ExtraButtonComponent(o).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})}),t.createDiv({cls:"tags-task-title"}).setText(c("Tasks")),t.createDiv({cls:"tags-task-count"}).setText("0 tasks");let s=t.createDiv({cls:"view-toggle-btn"});(0,vr.setIcon)(s,"list"),s.setAttribute("aria-label",c("Toggle list/tree view")),this.registerDomEvent(s,"click",()=>{this.toggleViewMode()}),this.taskListContainerEl=this.taskContainerEl.createDiv({cls:"tags-task-list"})}setTasks(e,t){this.sourceTasks=e,this.allTasks=t&&t.length>0?t:e,this.allTasksMap=new Map(this.allTasks.map(r=>[r.id,r])),this.buildTagsIndex(),this.renderTagsList(),this.selectedTags.tags.length>0?this.updateSelectedTasks():(this.cleanupRenderers(),this.renderEmptyTaskList(c("Select a tag to see related tasks")))}buildTagsIndex(){var e;this.allTagsMap.clear(),this.sourceTasks.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 d=this.allTagsMap.get(r);d&&d.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,d=o._tasks.size,u=t.createDiv({cls:"tag-list-item",attr:{"data-tag":l,"aria-label":l}});if(r>0){let f=u.createDiv({cls:"tag-indent"});f.style.width=`${r*20}px`}let p=u.createDiv({cls:"tag-icon"});if((0,vr.setIcon)(p,"hash"),u.createDiv({cls:"tag-name"}).setText(s.replace("#","")),u.createDiv({cls:"tag-count"}).setText(d.toString()),u.dataset.tag=l,this.selectedTags.tags.includes(l)&&u.classList.add("selected"),this.registerDomEvent(u,"click",f=>{this.handleTagSelection(l,f.ctrlKey||f.metaKey)}),Object.keys(o).filter(f=>!f.startsWith("_")).length>0){let f=t.createDiv({cls:"tag-children"});this.renderTagHierarchy(o,f,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(c("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(),vr.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(c("Select a tag to see related tasks"))))}initializeViewMode(){var t;this.isTreeView=dn(this.app,this.plugin,"tags");let e=(t=this.taskContainerEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,vr.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.taskContainerEl.querySelector(".view-toggle-btn");e&&(0,vr.setIcon)(e,this.isTreeView?"git-branch":"list"),cn(this.app,"tags",this.isTreeView),this.renderTaskList()}updateSelectedTasks(){if(this.selectedTags.tags.length===0){this.cleanupRenderers(),this.renderEmptyTaskList(c("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.sourceTasks.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=pa(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 d=i.metadata.dueDate||Number.MAX_SAFE_INTEGER,u=s.metadata.dueDate||Number.MAX_SAFE_INTEGER;return d-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} ${c("tags selected")}`:e.textContent=c("Tasks"));let t=this.taskContainerEl.querySelector(".tags-task-count");t&&(t.textContent=`${this.filteredTasks.length} ${c("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(c("No tasks with the selected tags"));return}if(this.filteredTasks.length===0&&this.selectedTags.tags.length===0){this.renderEmptyTaskList(c("Select a tag to see related tasks"));return}!this.isTreeView&&this.tagSections.length>0&&this.selectedTags.tags.length>1?this.renderTagSections():(this.mainTaskRenderer=new Ur(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,c("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,vr.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 Ur(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,c("No tasks found for this tag.")),this.registerDomEvent(r,"click",()=>{e.isExpanded=!e.isExpanded,(0,vr.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=this.allTasks.findIndex(s=>s.id===e.id);t!==-1?this.allTasks[t]=e:this.allTasks.push(e),this.allTasksMap.set(e.id,e);let r=!1,i=this.sourceTasks.findIndex(s=>s.id===e.id);if(i!==-1){let s=this.sourceTasks[i];(!s.metadata.tags||!e.metadata.tags||s.metadata.tags.join(",")!==e.metadata.tags.join(","))&&(r=!0),this.sourceTasks[i]=e}if(r)this.buildTagsIndex(),this.renderTagsList(),this.updateSelectedTasks();else{let s=this.filteredTasks.findIndex(o=>o.id===e.id);s!==-1?(this.filteredTasks[s]=e,this.mainTaskRenderer?this.mainTaskRenderer.updateTask(e):this.tagSections.forEach(o=>{var l,d;(l=e.metadata.tags)!=null&&l.some(u=>typeof u=="string"&&(u===o.tag||u.startsWith(o.tag+"/")))&&o.tasks.some(u=>u.id===e.id)&&((d=o.renderer)==null||d.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 Ba=require("obsidian");z();var $L=require("obsidian");function AK(n,a="/"){if(!n||!n.trim())return[];let e=n.trim().replace(new RegExp(`${MM(a)}+`,"g"),a).replace(new RegExp(`^${MM(a)}|${MM(a)}$`,"g"),"");return e?e.split(a):[]}function MM(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function PM(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=AK(t,a);if(i.length===0)continue;let s=e,o="";for(let l=0;l<i.length;l++){let d=i[l],u=l===i.length-1;o=o?`${o}${a}${d}`:d;let p=s.children.find(m=>m.name===d);p?u&&(p.data.directTaskIds=r,p.data.directTaskCount=r.size):(p={id:o,name:d,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 WL(e),zL(e),e}function WL(n){let a=new Set(n.data.directTaskIds);for(let e of n.children)WL(e).forEach(r=>a.add(r));return n.data.allTaskIds=a,n.data.totalTaskCount=a.size,a}function zL(n){n.children.sort((a,e)=>a.name.localeCompare(e.name));for(let a of n.children)zL(a)}function _L(n,a="/"){var t;let e=new Map;for(let r of n){let i=qt(r);i&&(e.has(i)||e.set(i,new Set),(t=e.get(i))==null||t.add(r.id))}return PM(e,a)}function UL(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 Zw=class extends $L.Component{constructor(e,t,r){super();this.parentEl=e;this.app=t;this.plugin=r;this.projectTree=null;this.allTasks=[]}onload(){this.treeComponent=new Yb(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(d=>{let u=this.allTasks.find(p=>p.id===d);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.app),this.addChild(this.treeComponent),this.treeComponent.load()}buildTree(e){this.allTasks=e;let t=this.plugin.settings.projectPathSeparator||"/";this.projectTree=_L(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,d,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=(d=this.plugin)==null?void 0:d.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=UL(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 YL(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,d,u;let i=((o=(s=r.metadata)==null?void 0:s.project)==null?void 0:o.toLowerCase())||((u=(d=(l=r.metadata)==null?void 0:l.tgProject)==null?void 0:d.name)==null?void 0:u.toLowerCase())||"";return i?t.some(p=>i===p||i.startsWith(p+e)):!1})}var As=class extends Ba.Component{constructor(e,t,r,i={}){super();this.parentEl=e;this.app=t;this.plugin=r;this.params=i;this.projectPropsBtnEl=null;this.projectPropsPopoverEl=null;this.projectPropsPopper=null;this.sourceTasks=[];this.allTasks=[];this.filteredTasks=[];this.selectedProjects={projects:[],tasks:[],isMultiSelect:!1};this.allProjectsMap=new Map;this.isTreeView=!1;this.allTasksMap=new Map;this.isProjectTreeView=!1;this.currentInfoProject=null;this.infoRenderGen=0}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=this.app.loadLocalStorage("task-genius-project-tree-view");this.isProjectTreeView=t==="true",this.taskRenderer=new Ur(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:c("Projects")}),this.countEl=e.createDiv({cls:"projects-count"}),this.countEl.setText(`0 ${c("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:c("Projects")}),i=t.createDiv({cls:"projects-sidebar-header-btn-group"}),s=i.createDiv({cls:"projects-tree-toggle-btn"});(0,Ba.setIcon)(s,this.isProjectTreeView?"git-branch":"list"),s.setAttribute("aria-label",c("Toggle tree/list view")),this.registerDomEvent(s,"click",()=>{this.toggleProjectTreeView()});let o=i.createDiv({cls:"projects-multi-select-btn"});if((0,Ba.setIcon)(o,"list-plus"),o.setAttribute("aria-label",c("Toggle multi-select")),Ba.Platform.isPhone){let l=t.createDiv({cls:"projects-sidebar-close"});new Ba.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"});Ba.Platform.isPhone&&t.createEl("div",{cls:"projects-sidebar-toggle"},p=>{new Ba.ExtraButtonComponent(p).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(c("Tasks"));let o=i.createDiv({cls:"projects-header-top-right"});this.headerTopRightRowEl=o,o.createDiv({cls:"projects-task-count"}).setText(`0 ${c("tasks")}`);let d=o.createDiv({cls:"projects-add-task-btn clickable-icon",attr:{"aria-label":c("Add task to project")}});(0,Ba.setIcon)(d,"plus"),this.registerDomEvent(d,"click",()=>{let p=this.selectedProjects.projects.length===1?this.selectedProjects.projects[0]:void 0;p?new ft(this.app,this.plugin,{project:p},!0).open():new Ba.Notice(c("Please select a single project first"))});let u=o.createDiv({cls:"view-toggle-btn"});(0,Ba.setIcon)(u,"list"),u.setAttribute("aria-label",c("Toggle list/tree view")),this.registerDomEvent(u,"click",()=>{this.toggleViewMode()}),this.taskListContainerEl=this.taskContainerEl.createDiv({cls:"projects-task-list"}),this.updateTgProjectPropsButton(null)}setTasks(e,t){this.sourceTasks=e,this.allTasks=t&&t.length>0?t:e,this.allTasksMap=new Map(this.allTasks.map(r=>[r.id,r])),this.buildProjectsIndex(),this.renderProjectsList(),this.selectedProjects.projects.length>0?this.updateSelectedTasks():(this.taskRenderer.renderTasks([],this.isTreeView,this.allTasksMap,c("Select a project to see related tasks")),this.updateTaskListHeader(c("Tasks"),`0 ${c("tasks")}`))}buildProjectsIndex(){var e;if(this.allProjectsMap.clear(),this.sourceTasks.forEach(t=>{var i;let r=qt(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=PM(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 Zw(this.projectsListEl,this.app,this.plugin),this.projectTreeComponent.onNodeSelected=(e,t)=>{this.selectedProjects.projects=Array.from(e),this.updateSelectedTasks();let r=this.selectedProjects.projects.length===1?this.selectedProjects.projects[0]:null;this.updateTgProjectPropsButton(r)},this.projectTreeComponent.onMultiSelectToggled=e=>{this.selectedProjects.isMultiSelect=e,!e&&this.selectedProjects.projects.length===0&&(this.taskRenderer.renderTasks([],this.isTreeView,this.allTasksMap,c("Select a project to see related tasks")),this.updateTaskListHeader(c("Tasks"),`0 ${c("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,Ba.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(c("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,c("Select a project to see related tasks")),this.updateTaskListHeader(c("Tasks"),`0 ${c("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,c("Select a project to see related tasks")),this.updateTaskListHeader(c("Tasks"),`0 ${c("tasks")}`),this.updateTgProjectPropsButton(null))),this.projectTreeComponent&&this.projectTreeComponent.setMultiSelectMode(this.selectedProjects.isMultiSelect)}initializeViewMode(){var t;this.isTreeView=dn(this.app,this.plugin,"projects");let e=(t=this.taskContainerEl)==null?void 0:t.querySelector(".view-toggle-btn");e&&(0,Ba.setIcon)(e,this.isTreeView?"git-branch":"list")}toggleViewMode(){this.isTreeView=!this.isTreeView;let e=this.taskContainerEl.querySelector(".view-toggle-btn");e&&(0,Ba.setIcon)(e,this.isTreeView?"git-branch":"list"),cn(this.app,"projects",this.isTreeView),this.renderTaskList()}updateSelectedTasks(){if(this.selectedProjects.projects.length===0){this.taskRenderer.renderTasks([],this.isTreeView,this.allTasksMap,c("Select a project to see related tasks")),this.updateTaskListHeader(c("Tasks"),`0 ${c("tasks")}`);return}if(this.isProjectTreeView)this.filteredTasks=YL(this.sourceTasks,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.sourceTasks.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=pa(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,d=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 h=s.createDiv({cls:"progress-bar-inline progress-in-progress"});h.style.width=l+"%",h.style.left=o+"%"}if(e.abandoned&&e.abandoned>0){let h=s.createDiv({cls:"progress-bar-inline progress-abandoned"});h.style.width=d+"%",h.style.left=o+l+"%"}if(e.planned&&e.planned>0){let h=s.createDiv({cls:"progress-bar-inline progress-planned"});h.style.width=u+"%",h.style.left=o+l+d+"%"}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=go(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,d,u,p,m,h,g,f;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=(d=this.plugin)==null?void 0:d.settings.taskStatuses)==null?void 0:u.abandoned)==null?void 0:p.split("|"))||[">"]).includes(e)?"abandoned":(((g=(h=(m=this.plugin)==null?void 0:m.settings.taskStatuses)==null?void 0:h.planned)==null?void 0:g.split("|"))||["?"]).includes(e)?"planned":((f=this.plugin)==null?void 0:f.settings.countOtherStatusesAs)||"notStarted"}determineTaskStatus(e){var l,d,u,p,m,h,g,f,k,v,y,b,w,T,x,C;return(((u=(d=(l=this.plugin)==null?void 0:l.settings.taskStatuses)==null?void 0:d.completed)==null?void 0:u.split("|"))||["x","X"]).includes(e)?"completed":(((h=(m=(p=this.plugin)==null?void 0:p.settings.taskStatuses)==null?void 0:m.inProgress)==null?void 0:h.split("|"))||["/","-"]).includes(e)?"inProgress":(((k=(f=(g=this.plugin)==null?void 0:g.settings.taskStatuses)==null?void 0:f.abandoned)==null?void 0:k.split("|"))||[">"]).includes(e)?"abandoned":(((b=(y=(v=this.plugin)==null?void 0:v.settings.taskStatuses)==null?void 0:y.planned)==null?void 0:b.split("|"))||["?"]).includes(e)?"planned":(((x=(T=(w=this.plugin)==null?void 0:w.settings.taskStatuses)==null?void 0:T.notStarted)==null?void 0:x.split("|"))||[" "]).includes(e)?"notStarted":((C=this.plugin)==null?void 0:C.settings.countOtherStatusesAs)||"notStarted"}renderTaskList(){let e=c("Tasks");this.selectedProjects.projects.length===1?e=this.selectedProjects.projects[0]:this.selectedProjects.projects.length>1&&(e=`${this.selectedProjects.projects.length} ${c("projects selected")}`);let t=`${this.filteredTasks.length} ${c("tasks")}`;this.updateTaskListHeader(e,t),this.taskRenderer.renderTasks(this.filteredTasks,this.isTreeView,this.allTasksMap,c("No tasks in the selected projects"))}updateTask(e){this.allTasksMap.set(e.id,e);let t=this.allTasks.findIndex(s=>s.id===e.id),r=!1;t!==-1?(this.allTasks[t].metadata.project!==e.metadata.project&&(r=!0),this.allTasks[t]=e):(this.allTasks.push(e),r=!0);let i=this.sourceTasks.findIndex(s=>s.id===e.id);if(i!==-1&&(this.sourceTasks[i]=e),r)this.buildProjectsIndex(),this.renderProjectsList(),this.updateSelectedTasks();else{let s=this.filteredTasks.findIndex(o=>o.id===e.id);s!==-1?(this.filteredTasks[s]=e,this.taskRenderer.updateTask(e)):this.updateSelectedTasks()}}toggleProjectTreeView(){this.isProjectTreeView=!this.isProjectTreeView;let e=this.leftColumnEl.querySelector(".projects-tree-toggle-btn");e&&(0,Ba.setIcon)(e,this.isProjectTreeView?"git-branch":"list"),this.app.saveLocalStorage("task-genius-project-tree-view",this.isProjectTreeView.toString()),this.buildProjectsIndex(),this.renderProjectsList(),this.selectedProjects.projects.length>0&&this.updateSelectedTasks();let t=this.selectedProjects.projects.length===1?this.selectedProjects.projects[0]:null;this.updateTgProjectPropsButton(t)}updateTgProjectPropsButton(e){var t;if(this.headerTopRightRowEl){if(!e){this.projectPropsBtnEl&&(this.projectPropsBtnEl.remove(),this.projectPropsBtnEl=null),this.teardownProjectPropsUI();return}{let r=this.plugin.settings.projectPathSeparator||"/";if(!this.allTasks.some(s=>{var p,m;let o=qt(s);if(!(o===e||o&&o.startsWith(e+r)))return!1;let d=(p=s.metadata)==null?void 0:p.tgProject;if(!d||typeof d!="object")return!1;let u=(m=s.metadata)==null?void 0:m.project;return u==null||u===""||u===d.name})){this.projectPropsBtnEl&&(this.projectPropsBtnEl.remove(),this.projectPropsBtnEl=null),this.teardownProjectPropsUI();return}}if(!this.projectPropsBtnEl){let r=this.headerTopRightRowEl.createDiv({cls:"projects-props-btn",attr:{"aria-label":c("Show project info")||"Project info"}});(0,Ba.setIcon)(r,"info"),this.projectPropsBtnEl=r,this.registerDomEvent(r,"click",async i=>{var x,C,S,D,E,R,I,H,U,q;if(i.stopPropagation(),this.projectPropsPopoverEl){this.teardownProjectPropsUI();return}this.projectPropsPopoverEl=document.body.createEl("div",{cls:"tg-project-popover",attr:{style:"background: var(--background-secondary); border: 1px solid var(--background-modifier-border); border-radius: 8px; padding: 8px 10px; box-shadow: var(--shadow-s); max-width: 420px; z-index: 9999;"}});let s=this.projectPropsPopoverEl.createDiv({cls:"tg-project-props"});this.projectPropsPopper=Dn(r,this.projectPropsPopoverEl,{placement:"bottom-end",modifiers:[{name:"offset",options:{offset:[0,8]}}]});let o=++this.infoRenderGen;this.registerDomEvent(this.projectPropsPopoverEl,"mousedown",L=>L.stopPropagation()),this.outsideClickHandler=L=>{let _=L.target;this.projectPropsPopoverEl&&(this.projectPropsPopoverEl.contains(_)||this.projectPropsBtnEl&&this.projectPropsBtnEl.contains(_)||this.teardownProjectPropsUI())},this.registerDomEvent(document,"mousedown",this.outsideClickHandler,{capture:!0}),this.escKeyHandler=L=>{L.key==="Escape"&&this.teardownProjectPropsUI()},this.registerDomEvent(document,"keydown",this.escKeyHandler);let l=this.selectedProjects.projects.length===1?this.selectedProjects.projects[0]:null;if(!l){s.textContent=c("No project selected")||"No project selected";return}this.currentInfoProject=l;let d=this.plugin.settings.projectPathSeparator||"/",p=this.allTasks.filter(L=>{let _=qt(L);return _===l||_&&_.startsWith(l+d)}).filter(L=>{var K,te;let _=(K=L.metadata)==null?void 0:K.tgProject;if(!_||typeof _!="object")return!1;let V=(te=L.metadata)==null?void 0:te.project;return V==null||V===""||V===_.name}),h=p.find(L=>{var K,te;let _=(K=L.metadata)==null?void 0:K.project,V=(te=L.metadata)==null?void 0:te.tgProject;return _&&V&&_===V.name})||p[0];if(!h){s.textContent=c("No task found in selection")||"No task found";return}s.textContent=c("Loading...")||"Loading...";let g={},f;try{let L=(x=this.plugin.dataflowOrchestrator)==null?void 0:x.projectResolver;if(L!=null&&L.get){let _=await L.get(h.filePath);g=(_==null?void 0:_.enhancedMetadata)||{},f=_==null?void 0:_.configSource}else{let _=(C=this.plugin.dataflowOrchestrator)==null?void 0:C.getRepository(),V=(S=_==null?void 0:_.getStorage)==null?void 0:S.call(_),K=V?await V.loadProject(h.filePath):null;g=((D=K==null?void 0:K.data)==null?void 0:D.enhancedMetadata)||{},f=(E=K==null?void 0:K.data)==null?void 0:E.configSource}}catch(L){console.warn("[Projects] Failed to load project metadata:",L)}if(o!==this.infoRenderGen)return;let k=((R=h==null?void 0:h.metadata)==null?void 0:R.tgProject)||void 0;if(!k){this.teardownProjectPropsUI();return}let v=[],y=new Set,b=(U=(H=(I=h==null?void 0:h.metadata)==null?void 0:I.project)!=null?H:k.name)!=null?U:l;if(v.push(["project",b]),v.push(["type",k.type]),k.source&&v.push(["source",k.source]),k.readonly!==void 0&&v.push(["readonly",k.readonly]),k){f&&v.push(["configSource",f]);let L=k&&k.type==="config"&&f?f:h.filePath;try{let _=this.app.vault.getAbstractFileByPath(L);if(_&&_.extension){let V=_,K=(q=this.app.metadataCache.getFileCache(V))==null?void 0:q.frontmatter;if(K&&typeof K=="object"){y=new Set(Object.keys(K).filter(te=>{let ce=te.toLowerCase();return ce!=="position"&&ce!=="projectname"&&ce!=="project"})),v.push(["\u2014","\u2014"]),v.push(["sourceFile",L]);for(let[te,ce]of Object.entries(K)){if(te==="position")continue;let pe=te.toLowerCase();pe==="projectname"||pe==="project"||v.push([`frontmatter.${te}`,ce])}}}}catch(_){console.warn("[Projects] Failed to read source frontmatter:",_)}}let w=Object.keys(g).length>0?g:h.metadata||{},T=new Set(["tgProject","project","children","childrenIds","parent","parentId","listMarker","indentLevel","actualIndent","originalMarkdown","line","comment","heading","_subtaskInheritanceRules","metadata"]);for(let[L,_]of Object.entries(w)){if(T.has(L)||_==null||_===""||y&&y.has(L))continue;let V=_;if(Array.isArray(V)){if(V.length===0)continue;if(L==="tags"||L==="dependsOn")V=V.join(", ");else continue}else if(typeof V=="object")continue;let K=L.toLowerCase();if((/date$/i.test(L)||K.endsWith("date"))&&typeof V!="string"){let te=Number(V);if(!Number.isNaN(te)&&te>1e10)try{V=new Date(te).toLocaleString()}catch(ce){}}v.push([L,V])}s.empty(),v.forEach(([L,_])=>{let V=s.createDiv({attr:{style:"display:flex; gap:8px; align-items:center; padding:2px 0"}});V.createDiv({attr:{style:"opacity:0.7; min-width:120px;"}}).setText(String(L)),V.createDiv().setText(typeof _=="string"?_:JSON.stringify(_))})})}this.projectPropsPopoverEl&&e&&this.currentInfoProject!==e&&(this.currentInfoProject=e,this.teardownProjectPropsUI(),(t=this.projectPropsBtnEl)==null||t.click())}}teardownProjectPropsUI(){this.outsideClickHandler=void 0,this.escKeyHandler=void 0,this.projectPropsPopper&&typeof this.projectPropsPopper.destroy=="function"&&this.projectPropsPopper.destroy(),this.projectPropsPopper=null,this.projectPropsPopoverEl&&this.projectPropsPopoverEl.remove(),this.projectPropsPopoverEl=null}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 ya=require("obsidian");z();var qL={daily:1,weekly:7,"every 2 weeks":14,monthly:30,quarterly:90,"every 6 months":180,yearly:365},IM=class extends ya.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 g;let{contentEl:e}=this;e.createEl("h2",{text:c("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:c("Review Frequency"),cls:"review-modal-label",attr:{for:"review-frequency"}}),r.createEl("div",{text:c("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(f=>{let k=i.createEl("option",{text:f,value:f});f===this.frequency&&(k.selected=!0)});let s=i.createEl("option",{text:c("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:c("e.g., every 3 months")}});i.addEventListener("change",f=>{let k=f.target.value;k==="custom"?(o.style.display="block",l.focus(),this.frequency=""):(o.style.display="none",this.frequency=k)}),l.addEventListener("input",f=>{this.frequency=f.target.value}),this.frequency&&!this.frequencyOptions.includes(this.frequency)&&(s.selected=!0,o.style.display="block",l.value=this.frequency);let d=t.createDiv({cls:"review-modal-field"});d.createEl("label",{text:c("Last Reviewed"),cls:"review-modal-label"});let u=(g=this.existingSetting)!=null&&g.lastReviewed?new Date(this.existingSetting.lastReviewed).toLocaleString():"Never";d.createEl("div",{text:u,cls:"review-modal-last-reviewed"});let p=e.createDiv({cls:"review-modal-buttons"});p.createEl("button",{text:c("Cancel"),cls:"review-modal-button review-modal-button-cancel"}).addEventListener("click",()=>{this.close()}),p.createEl("button",{text:c("Save"),cls:"review-modal-button review-modal-button-save"}).addEventListener("click",()=>{this.saveSettings()})}validateFrequency(){return!this.frequency||this.frequency.trim()===""?(new ya.Notice(c("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 ya.Notice(c("Review schedule updated for")+` ${this.projectName}`),this.close()}async onClose(){let{contentEl:e}=this;e.empty()}},Fs=class extends ya.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 Ur(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.renderEmptyTaskList(c("Select a project to review its tasks."))}createLeftColumn(e){if(this.leftColumnEl=e.createDiv({cls:"review-left-column"}),ya.Platform.isPhone){let i=this.leftColumnEl.createDiv({cls:"review-sidebar-close"});new ya.ExtraButtonComponent(i).setIcon("x").onClick(()=>{this.toggleLeftColumnVisibility(!1)})}let r=this.leftColumnEl.createDiv({cls:"review-sidebar-header"}).createDiv({cls:"review-sidebar-title",text:c("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"}),ya.Platform.isPhone&&this.taskHeaderEl.createEl("div",{cls:"review-sidebar-toggle"},t=>{new ya.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(c("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(c("Select a project to review its tasks."))}setTasks(e){e.length,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 d=l.createDiv({cls:"review-project-icon"});(0,ya.setIcon)(d,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(c("Configured for Review")),t.forEach(i)),r.length>0&&(this.projectsListEl.createDiv({cls:"review-projects-group-header"}).setText(c("Not Configured")),r.forEach(i)),e.length===0&&this.projectsListEl.createDiv({cls:"review-empty-state"}).setText(c("No projects available."))}selectProject(e){if(!e||!this.reviewableProjects.has(e)){this.selectedProject={project:null,tasks:[],setting:null},this.renderEmptyTaskList(c("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")}),ya.Platform.isPhone&&this.toggleLeftColumnVisibility(!1),this.updateSelectedProjectTasks()}updateSelectedProjectTasks(){if(!this.selectedProject.project){this.renderEmptyTaskList(c("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(d=>d.metadata.createdDate&&d.metadata.createdDate>o?!0:l.has(d.id)&&d.completed?!1:!!(l.has(d.id)&&!d.completed||!l.has(d.id))),r.length<e.length&&i){let d=i.createDiv({cls:"review-filter-info"}),u=e.length-r.length,p=d.createSpan({text:c(`Showing new and in-progress tasks only. ${u} completed tasks from previous reviews are hidden.`)}),m=d.createSpan({cls:"review-filter-toggle",text:c("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:c("Showing all tasks, including completed tasks from previous reviews.")}),d=o.createSpan({cls:"review-filter-toggle",text:c("Show only new and in-progress tasks")});this.registerDomEvent(d,"click",()=>{this.toggleShowAllTasks()})}this.selectedProject.tasks=r,this.selectedProject.tasks.sort((o,l)=>{if(o.completed!==l.completed)return o.completed?1:-1;let d=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(d!==u)return d-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:c(`Showing new and in-progress tasks only. ${o} completed tasks from previous reviews are hidden.`)});let d=l.createSpan({cls:"review-filter-toggle",text:c("Show all tasks")});this.registerDomEvent(d,"click",()=>{this.toggleShowAllTasks()})}else if(this.showAllTasks&&e>0){let l=r.createDiv({cls:"review-filter-info"});l.createSpan({text:c("Showing all tasks, including completed tasks from previous reviews.")});let d=l.createSpan({cls:"review-filter-toggle",text:c("Show only new and in-progress tasks")});this.registerDomEvent(d,"click",()=>{this.toggleShowAllTasks()})}}}toggleShowAllTasks(){this.showAllTasks=!this.showAllTasks,this.updateSelectedProjectTasks()}renderTaskList(){if(this.taskHeaderEl.empty(),ya.Platform.isPhone&&this.renderMobileToggle(),!this.selectedProject.project||!this.selectedProject.setting){this.renderEmptyTaskList(c("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,c("No tasks found for this project."))}renderReviewHeader(e,t){this.taskHeaderEl.empty(),ya.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=`${c("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():c("never");i.createSpan({cls:"review-last-date",text:`${c("Last reviewed")}: ${o}`});let d=r.createDiv({cls:"review-button-container"}).createEl("button",{cls:"review-complete-btn",text:c("Mark as Reviewed")});this.registerDomEvent(d,"click",()=>{this.markProjectAsReviewed(e)})}else{i.createSpan({cls:"review-no-settings",text:c("No review schedule configured for this project")});let o=r.createDiv({cls:"review-button-container"}).createEl("button",{cls:"review-configure-btn",text:c("Configure Review Schedule")});this.registerDomEvent(o,"click",()=>{this.openConfigureModal(e,t)})}}openConfigureModal(e,t){new IM(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 ya.Notice(c(`${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 ya.Notice(c(`${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 ya.ExtraButtonComponent(e).setIcon("sidebar").onClick(()=>{this.toggleLeftColumnVisibility()})})}renderEmptyTaskList(e){if(this.taskHeaderEl.empty(),ya.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:c("Project Review")}),t.createDiv({cls:"review-info",text:c("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(qL[e.frequency])i=qL[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}};z();var vi=require("obsidian");var KL=require("obsidian");function GL(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 Yn=class extends KL.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},d=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);GL(Zo(p),Zo(u)).reverse().forEach(h=>{let g=t[h],f=i(g),k=s?s(g):null,v=d.createDiv({cls:"heatmap-cell heatmap-cell-square"});v.dataset.date=h;let y=`${h}: `;g==null?y+="Missed":typeof g=="object"?v.hasAttribute("aria-label")||(y+="Recorded"):typeof g=="number"&&!k?y+=`${g} times`:typeof g=="number"&&k?y+=`${k instanceof HTMLElement?k.textContent:k}`:f?y+="Completed":y+="Missed",v.hasAttribute("aria-label")||v.setAttribute("aria-label",y),k?(v.addClass("has-custom-content"),typeof k=="string"?(v.addClass("has-text-content"),v.setText(k)):k instanceof HTMLElement&&v.appendChild(k)):f?v.addClass("filled"):v.addClass("default")})}renderHeatmapRange(e,t,r,i,s,o,l){let u=e.createDiv({cls:`tg-heatmap-root heatmap-${s}`}).createDiv({cls:"heatmap-container-simple"});GL(r,i).reverse().forEach(m=>{let h=t[m],g=o(h),f=l?l(h):null,k=u.createDiv({cls:"heatmap-cell heatmap-cell-square"});k.dataset.date=m;let v=`${m}: `;h==null?v+="Missed":typeof h=="object"?k.hasAttribute("aria-label")||(v+="Recorded"):typeof h=="number"&&!f?v+=`${h} times`:typeof h=="number"&&f?v+=`${f instanceof HTMLElement?f.textContent:f}`:g?v+="Completed":v+="Missed",k.hasAttribute("aria-label")||k.setAttribute("aria-label",v),f?(k.addClass("has-custom-content"),typeof f=="string"?(k.addClass("has-text-content"),k.setText(f)):f instanceof HTMLElement&&k.appendChild(f)):g?k.addClass("filled"):k.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=Si(),l;s.completions=s.completions||{};let d=s.completions[o];switch(s.type){case"daily":s.completionText?l=d===1?null:1:l=!d;break;case"count":l=(typeof d=="number"?d:0)+1;break;case"scheduled":if(!t||!t.id){console.error("Missing event data for scheduled habit toggle");return}l={...typeof d=="object"&&d!==null?d:{},[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 tT=require("obsidian");z();var Bf=require("obsidian");z();var eT=class extends Bf.Modal{constructor(a,e,t){super(a),this.card=e,this.habit=t;let r=Object.keys(this.habit.completions||{});if(r.length>0){let i=r.reduce((s,o)=>o<s?o:s);this.earliestDateStr=i}else this.earliestDateStr=Si();this.todayStr=Si()}onOpen(){let{contentEl:a}=this;a.empty(),this.modalEl.toggleClass("habit-chart-modal",!0),this.setTitle(`${this.habit.name} \xB7 Heatmap`);let e=a.createDiv({cls:"habit-chart-controls"}),t=Number(this.earliestDateStr.slice(0,4)),r=new Date().getFullYear(),i="all",s=String(r),o=new Bf.Setting(e).setName(c("Range")).addDropdown(u=>{u.addOptions({all:c("All history"),"7d":c("Last week"),"30d":c("Last month"),"365d":c("Last year"),year:c("Full year")}),u.setValue(i),u.onChange(p=>{i=p,d.settingEl.toggleClass("is-disabled",p!=="year"),l.disabled=p!=="year",this.renderSelected(i,s)})}),l=null,d=new Bf.Setting(e).setName(c("Year")).addDropdown(u=>{l=u.selectEl;for(let p=r;p>=t;p--)u.addOption(String(p),String(p));u.setValue(s),u.onChange(p=>{s=p,i==="year"&&this.renderSelected(i,s)})});d.settingEl.toggleClass("is-disabled",i!=="year"),l.disabled=i!=="year",this.heatmapHostEl=a.createDiv({cls:"habit-chart-heatmap"}),this.renderSelected(i,s)}renderSelected(a,e){if(a==="all"){this.renderRange(this.earliestDateStr,this.todayStr);return}if(a==="7d"){this.renderLastNDays(7);return}if(a==="30d"){this.renderLastMonthCalendar();return}if(a==="365d"){this.renderLastNDays(365);return}if(a==="year"){let t=parseInt(e,10);this.renderYearCalendar(t);return}this.renderRange(this.earliestDateStr,this.todayStr)}createCalendarContainer(a,e){let r=this.heatmapHostEl.createDiv({cls:"tg-heatmap-root heatmap-md"}).createDiv({cls:"heatmap-container-calendar"});return r.style.display="grid",r.style.gridTemplateColumns=`repeat(${e}, 1fr)`,r.style.gridTemplateRows=`repeat(${a}, auto)`,r.style.gap="var(--size-2-2)",r}renderYearCalendar(a){this.heatmapHostEl.empty();let e=new Date(a,0,1),t=new Date(a,11,31),r=(e.getDay()+6)%7,i=new Date(e);i.setDate(e.getDate()-r);let o=(7-t.getDay()-1+7)%7,l=new Date(t);l.setDate(t.getDate()+o);let d=Math.floor((l.getTime()-i.getTime())/864e5)+1,u=Math.ceil(d/7),p=this.createCalendarContainer(7,u),m=g=>this.habit.completionText?g===1:g===!0,h=this.habit.completions||{};for(let g=0;g<u;g++)for(let f=0;f<7;f++){let k=new Date(i.getTime()+(g*7+f)*864e5),v=Zo(k),y=h[v],b=k>=e&&k<=t,w=b&&m(y),T=p.createDiv({cls:"heatmap-cell heatmap-cell-square"});T.dataset.date=v;let x=`${v}: `+(y==null?c("Missed"):w?c("Completed"):c("Missed"));T.setAttribute("aria-label",x),b?T.addClass(w?"filled":"default"):(T.addClass("default"),T.style.opacity="0.25")}}renderLastMonthCalendar(){this.heatmapHostEl.empty();let a=new Date,e=new Date(a.getTime()-29*864e5),t=(e.getDay()+6)%7,r=new Date(e);r.setDate(e.getDate()-t);let i=5,s=7,o=this.createCalendarContainer(i,s),l=u=>this.habit.completionText?u===1:u===!0,d=this.habit.completions||{};for(let u=0;u<i;u++)for(let p=0;p<s;p++){let m=u*7+p,h=new Date(r.getTime()+m*864e5),g=Zo(h),f=h>=e&&h<=a,k=d[g],v=f&&l(k),y=o.createDiv({cls:"heatmap-cell heatmap-cell-square"});y.dataset.date=g;let b=`${g}: `+(k==null?c("Missed"):v?c("Completed"):c("Missed"));y.setAttribute("aria-label",b),y.addClass(f&&v?"filled":"default"),f||(y.style.opacity="0.25")}}renderLastNDays(a){let e=new Date,t=new Date(e.getTime()-(a-1)*24*60*60*1e3);this.renderRange(Zo(t),Zo(e))}renderRange(a,e){this.heatmapHostEl.empty();let t=r=>this.habit.completionText?r===1:r===!0;this.card.renderHeatmapRange(this.heatmapHostEl,this.habit.completions||{},a,e,"md",t)}onClose(){this.contentEl.empty()}};var Vf=class extends Yn{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,tT.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 eT(this.plugin.app,this,this.habit).open()});let l=t.createDiv({cls:"habit-checkbox-container"}).createEl("input",{type:"checkbox",cls:"habit-checkbox"}),d=Si(),u=!1,p=this.habit.completions[d];this.habit.completionText?u=p===1:u=p===!0,l.checked=u,this.registerDomEvent(l,"click",h=>{h.preventDefault(),this.toggleHabitCompletion(this.habit.id),u||new tT.Notice(`${c("Completed")} ${this.habit.name}! \u{1F389}`)});let m=e.createDiv({cls:"card-content-wrapper"});this.renderHeatmap(m,this.habit.completions,"lg",h=>this.habit.completionText?h===1:h===!0)}};var Wf=require("obsidian");z();var zf=class extends Yn{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 Wf.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 Wf.Notice(`${c("Goal reached")} ${this.habit.name}! \u2705`):this.habit.max&&s+1>this.habit.max&&new Wf.Notice(`${c("Exceeded goal")} ${this.habit.name}! \u{1F4AA}`)}),i=Si(),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:`${c("Today")}: ${s}${m}`})}),l=t.createDiv({cls:"habit-progress-area"}),d=l.createDiv({cls:"habit-heatmap-small"});this.renderHeatmap(d,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 $u=require("obsidian");z();function FK(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 _f=class extends Yn{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,$u.setIcon)(i,this.habit.icon||"calendar-clock"),r.createSpan({text:this.habit.name,cls:"habit-name"}).onClickEvent(()=>{new $u.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",f=>f&&typeof f=="object"&&Object.keys(f).length>0,f=>{if(!f||typeof f!="object"||Object.keys(f).length===0)return null;let k=Object.keys(f).length,v=Array.isArray(this.habit.events)?this.habit.events.length:0,y=createDiv({cls:"pie-dot-container"});y.innerHTML=FK(k,v);let b=Object.entries(f).map(([w,T])=>T?`${w}: ${T}`:w).join(`
`);return y.setAttribute("aria-label",b||"No events completed"),y});let l=s.createDiv({cls:"habit-controls"}),d=Si(),u=typeof this.habit.completions[d]=="object"&&this.habit.completions[d]!==null?this.habit.completions[d]:{},p=Object.keys(u).length,m=Array.isArray(this.habit.events)?this.habit.events.length:0,h=m>0&&p>=m,g=new $u.DropdownComponent(l).addOption("",h?c("All Done!"):c("Select event...")).setValue("").onChange(f=>{f&&new aT(this.plugin.app,f,k=>{this.toggleHabitCompletion(this.habit.id,{id:f,details:k})}).open(),g.setValue("")}).setDisabled(h||m===0);Array.isArray(this.habit.events)&&this.habit.events.forEach(f=>{f!=null&&f.name&&!u[f.name]&&g.addOption(f.name,f.name)}),g.selectEl.toggleClass("habit-event-dropdown",!0),this.renderProgressBar(l,p,m)}};var Do=require("obsidian");var Uf=class extends Yn{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,y;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,Do.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",b=>typeof b=="number"&&b>0,b=>{var x;if(typeof b!="number"||b<=0)return null;let w=((x=this.habit.mapping)==null?void 0:x[b])||"?",T=createSpan({text:w});return this.habit.mapping&&this.habit.mapping[b]?(T.setAttribute("aria-label",`${this.habit.mapping[b]}`),T.addClass("has-tooltip")):T.setAttribute("aria-label",`Value: ${b}`),T});let l=s.createDiv({cls:"habit-controls"}),d=Si(),u=Object.keys(this.habit.mapping||{}).map(Number).includes(3)?3:Object.keys(this.habit.mapping||{}).map(Number).sort((b,w)=>b-w)[0]||1,p=(v=this.habit.completions[d])!=null?v:u,m=new Do.ButtonComponent(l).setButtonText(((y=this.habit.mapping)==null?void 0:y[p])||"?").setClass("habit-mapping-button").onClick(()=>{var b;if(p>0&&((b=this.habit.mapping)!=null&&b[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 Do.Notice(w)}else new Do.Notice("Please select a valid value using the slider first.")}),h=new Do.SliderComponent(l),g=Object.keys(this.habit.mapping||{}).map(Number).sort((b,w)=>b-w),f=g[0]||1,k=g[g.length-1]||5;h.setLimits(f,k,1).setValue(p).setDynamicTooltip().onChange(b=>{var w,T;p=b,(w=this.habit.mapping)==null||w[p],m.buttonEl.setText(((T=this.habit.mapping)==null?void 0:T[p])||"?")})}};z();var Rs=class extends vi.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:c("No Habits Yet")}),e.createEl("p",{text:c("Click the open habit button to create a new habit.")}),e.createEl("br"),new vi.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 vi.ExtraButtonComponent(r).setIcon("plus").setTooltip(c("Create new habit")).onClick(()=>{this.openCreateHabitDialog()})}openCreateHabitDialog(){new Lu(this.plugin.app,this.plugin,null,async e=>{this.plugin.settings.habit.habits||(this.plugin.settings.habit.habits=[]),this.plugin.settings.habit.habits.push(e),await this.plugin.saveSettings(),this.plugin.habitManager&&await this.plugin.habitManager.initializeHabits(),new vi.Notice(c("Habit created successfully")),this.redraw()}).open()}renderHabitCard(e,t){switch(t.completions=t.completions||{},t.type){case"daily":let r=new Vf(t,e,this.plugin);this.addChild(r);break;case"count":let i=new zf(t,e,this.plugin);this.addChild(i);break;case"scheduled":let s=new _f(t,e,this.plugin);this.addChild(s);break;case"mapping":let o=new Uf(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"}`})}}},aT=class extends vi.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 vi.Setting(e).setName("Details").addText(t=>t.setPlaceholder(`Enter details for ${this.eventName}...`).onChange(r=>{this.details=r})),new vi.Setting(e).addButton(t=>t.setButtonText("Cancel").setWarning().onClick(()=>{this.close()})).addButton(t=>t.setButtonText("Submit").setCta().onClick(()=>{if(this.close(),!this.details){new vi.Notice(c("Please enter details"));return}this.onSubmit(this.details)}))}onClose(){let{contentEl:e}=this;e.empty()}};var fj=require("obsidian");var QL=require("obsidian");var Eo=class extends QL.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 zn(this.contentEl,this.app,this.leafId,this.plugin),this.taskFilterComponent.onload()}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 XL=require("obsidian");var Mo=class extends XL.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 zn(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=Dn(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 yT=require("obsidian");var Yu=require("obsidian");function El(n){let a=new Date(n);return`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")}`}var rT=class extends Yu.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 Yu.TFile){let t=_w(e,this.fileFilterManager,"inline");(t||Math.random()<.1)&&e.path,t&&this.queueFileForIndexing(e)}})),this.registerEvent(this.vault.on("delete",e=>{if(e instanceof Yu.TFile){let t=_w(e,this.fileFilterManager,"inline");e.path,t&&this.removeFileFromIndex(e)}})),this.app.workspace.onLayoutReady(()=>{this.registerEvent(this.vault.on("create",e=>{if(e instanceof Yu.TFile){let t=_w(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=El(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=El(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=El(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=El(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=El(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=El(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=El(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=El(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,d=i.metadata.dueDate||Number.MAX_SAFE_INTEGER;return l-d}):[...e].sort((r,i)=>{for(let{field:s,direction:o}of t){let l,d;if(s in r?(l=r[s],d=i[s]):(l=r.metadata[s],d=i.metadata[s]),!(l===void 0&&d===void 0)){{if(l===void 0)return o==="asc"?1:-1;if(d===void 0)return o==="asc"?-1:1}if(l!==d){let u=o==="asc"?1:-1;return typeof l=="string"&&typeof d=="string"?l.localeCompare(d)*u:typeof l=="number"&&typeof d=="number"?(l-d)*u:l instanceof Date&&d instanceof Date?(l.getTime()-d.getTime())*u:String(l).localeCompare(String(d))*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 Ml=xp(ZL()),qu=class{constructor(a,e){this.appId=a;this.cachePrefix="taskgenius/cache/";this.initialized=!1;this.currentVersion="unknown";this.currentVersion=e||"unknown",this.persister=Ml.default.createInstance({name:this.cachePrefix+this.appId,driver:[Ml.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=Ml.default.createInstance({name:this.cachePrefix+this.appId,driver:[Ml.default.LOCALSTORAGE],description:"TaskGenius metadata fallback cache"}),this.initialized=!0}}async recreate(){try{await Ml.default.dropInstance({name:this.cachePrefix+this.appId})}catch(a){console.error("Error dropping storage instance:",a)}this.persister=Ml.default.createInstance({name:this.cachePrefix+this.appId,driver:[Ml.default.INDEXEDDB],description:"TaskGenius metadata cache for files and tasks"}),this.initialized=!1,await this.initialize()}async loadFile(a){this.initialized||await this.initialize();try{let e=this.fileKey(a);return await this.persister.getItem(e)}catch(e){return console.error(`Error loading cache for ${a}:`,e),null}}async storeFile(a,e){this.initialized||await this.initialize();try{let t=this.fileKey(a);await this.persister.setItem(t,{version:this.currentVersion,time:Date.now(),data:e})}catch(t){console.error(`Error storing cache for ${a}:`,t)}}async synchronize(a){this.initialized||await this.initialize();try{let e=new Set(a),t=await this.allFiles(),r=new Set;for(let i of t)e.has(i)||(r.add(i),await this.persister.removeItem(this.fileKey(i)));return r}catch(e){return console.error("Error synchronizing cache:",e),new Set}}async allKeys(){this.initialized||await this.initialize();try{return(await this.persister.keys()).filter(e=>e.startsWith(`${this.appId}:`))}catch(a){return console.error("Error getting cache keys:",a),[]}}async allFiles(){let a=`${this.appId}:file:`;try{return(await this.allKeys()).filter(t=>t.startsWith(a)).map(t=>t.substring(a.length))}catch(e){return console.error("Error getting cached files:",e),[]}}fileKey(a){return`${this.appId}:file:${a}`}async hasFile(a){this.initialized||await this.initialize();try{return await this.persister.getItem(this.fileKey(a))!==null}catch(e){return!1}}async removeFile(a){this.initialized||await this.initialize();try{await this.persister.removeItem(this.fileKey(a))}catch(e){console.error(`Error removing cache for ${a}:`,e)}}async getStats(){try{let a=await this.allFiles();return{totalFiles:a.length,cacheSize:a.length}}catch(a){return console.error("Error getting cache stats:",a),{totalFiles:0,cacheSize:0}}}async clear(){this.initialized||await this.initialize();try{let a=await this.allKeys();for(let e of a)await this.persister.removeItem(e)}catch(a){console.error("Error clearing cache:",a),await this.recreate()}}async storeConsolidatedCache(a,e){this.initialized||await this.initialize();try{let t=`${this.appId}:consolidated:${a}`;await this.persister.setItem(t,{version:this.currentVersion,time:Date.now(),data:e})}catch(t){console.error(`Error storing consolidated cache for ${a}:`,t)}}async loadConsolidatedCache(a){this.initialized||await this.initialize();try{let e=`${this.appId}:consolidated:${a}`;return await this.persister.getItem(e)}catch(e){return console.error(`Error loading consolidated cache for ${a}:`,e),null}}async getAll(){this.initialized||await this.initialize();try{let a=await this.allFiles(),e={};for(let t of a)e[t]=await this.loadFile(t);return e}catch(a){return console.error("Error getting all cached files:",a),{}}}setVersion(a){this.currentVersion=a}getVersion(){return this.currentVersion}isVersionCompatible(a,e=!1){return a.version?e?a.version===this.currentVersion:a.version===this.currentVersion:!1}async clearIncompatibleCache(){this.initialized||await this.initialize();let a=0;try{let e=await this.allKeys();for(let t of e)try{let r=await this.persister.getItem(t);r&&!this.isVersionCompatible(r)&&(await this.persister.removeItem(t),a++)}catch(r){await this.persister.removeItem(t),a++}}catch(e){console.error("Error clearing incompatible cache:",e)}return a}};var Qt={raw:n=>`tasks.raw:${n}`,project:n=>`project.data:${n}`,augmented:n=>`tasks.augmented:${n}`,consolidated:()=>"consolidated:taskIndex",icsEvents:()=>"ics:events",fileTasks:()=>"file:tasks",meta:{version:()=>"meta:version",schemaVersion:()=>"meta:schemaVersion",custom:n=>`meta:${n}`}},iT=class{constructor(a,e){this.schemaVersion=1;this.currentVersion=e||"1.0.0",this.cache=new qu(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(Qt.raw(a));return!e||!e.data?null:this.isVersionValid(e.data)?e.data:(await this.cache.removeFile(Qt.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(Qt.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(Qt.project(a));return!e||!e.data?null:this.isVersionValid(e.data)?e.data:(await this.cache.removeFile(Qt.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(Qt.project(a),t)}async loadAugmented(a){try{let e=await this.cache.loadFile(Qt.augmented(a));return!e||!e.data?null:this.isVersionValid(e.data)?e.data:(await this.cache.removeFile(Qt.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(Qt.augmented(a),t)}async storeIcsEvents(a){let e={time:Date.now(),version:this.currentVersion,schema:this.schemaVersion,data:a};await this.cache.storeFile(Qt.icsEvents(),e),`${a.length}`}async loadIcsEvents(){try{let a=await this.cache.loadFile(Qt.icsEvents());return!a||!a.data?[]:this.isVersionValid(a.data)?a.data.data||[]:(await this.cache.removeFile(Qt.icsEvents()),[])}catch(a){return console.error("[Storage] Error loading ICS events:",a),[]}}async storeFileTasks(a){let e={time:Date.now(),version:this.currentVersion,schema:this.schemaVersion,data:Array.from(a.entries())};await this.cache.storeFile(Qt.fileTasks(),e),`${a.size}`}async loadFileTasks(){try{let a=await this.cache.loadFile(Qt.fileTasks());if(!a||!a.data)return new Map;if(!this.isVersionValid(a.data))return await this.cache.removeFile(Qt.fileTasks()),new Map;let e=a.data.data||[];return new Map(e)}catch(a){return console.error("[Storage] Error loading file tasks:",a),new Map}}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(Qt.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(Qt.meta.custom(a),e)}async loadMeta(a){var t;let e=await this.cache.loadFile(Qt.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(Qt.raw(a)),this.cache.removeFile(Qt.project(a)),this.cache.removeFile(Qt.augmented(a))])}async clear(){await this.cache.clear()}async clearNamespace(a){let e=await this.cache.allFiles(),r={raw:"tasks.raw:",project:"project.data:",augmented:"tasks.augmented:",consolidated:"consolidated:"}[a],i=e.filter(s=>s.startsWith(r));for(let s of i)await this.cache.removeFile(s)}async updateVersion(a,e){this.currentVersion=a,e!==void 0&&(this.schemaVersion=e),await this.cache.storeFile(Qt.meta.version(),{version:this.currentVersion}),await this.cache.storeFile(Qt.meta.schemaVersion(),{schema:this.schemaVersion})}async loadVersion(){try{let a=await this.cache.loadFile(Qt.meta.version()),e=await this.cache.loadFile(Qt.meta.schemaVersion());if(a&&e)return{version:a.data.version,schema:e.data.schema}}catch(a){console.error("Error loading version information:",a)}return null}async getStats(){let a=await this.cache.allFiles(),e={raw:0,project:0,augmented:0,consolidated:0,meta:0};for(let t of a)t.startsWith("tasks.raw:")?e.raw++:t.startsWith("project.data:")?e.project++:t.startsWith("tasks.augmented:")?e.augmented++:t.startsWith("consolidated:")?e.consolidated++:t.startsWith("meta:")&&e.meta++;return{totalKeys:a.length,byNamespace:e}}};var Z={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",BATCH_OPERATION_START:"task-genius:batch-operation-start",BATCH_OPERATION_COMPLETE:"task-genius:batch-operation-complete"},FM=0,kt={next(){return FM=FM+1>>>0,FM}};function le(n,a,e){n.workspace.trigger(a,e)}function Oe(n,a,e){return n.workspace.on(a,e)}var nT=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 rT(a,e,t),this.storage=new iT(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()}`,le(this.app,Z.CACHE_READY,{initial:!0,timestamp:Date.now(),seq:kt.next()})),this.icsEvents=await this.storage.loadIcsEvents(),`${this.icsEvents.length}`,this.fileTasks=await this.storage.loadFileTasks(),`${this.fileTasks.size}`}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=kt.next(),le(this.app,Z.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[d,u]of a){let p=await this.storage.loadAugmented(d),m=!p||JSON.stringify(u)!==JSON.stringify(p.data);await this.indexer.updateIndexWithTasks(d,u),r&&await this.storage.storeAugmented(d,u),m&&(s.push(d),o+=u.length,l=!0)}if(l||i){r&&l&&(await this.persist(),`${s.length}`);let d=s.length>0?s:Array.from(a.keys());this.lastSequence=kt.next(),le(this.app,Z.TASK_CACHE_UPDATED,{changedFiles:d,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=kt.next(),le(this.app,Z.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=kt.next(),le(this.app,Z.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 d of o)i.add(d)}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),await this.storage.storeFileTasks(this.fileTasks)}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=kt.next(),le(this.app,Z.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=kt.next(),le(this.app,Z.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=kt.next(),le(this.app,Z.TASK_CACHE_UPDATED,{changedFiles:[e],stats:{total:await this.getTotalTaskCount(),changed:1},timestamp:Date.now(),seq:this.lastSequence,sourceSeq:void 0}),`${a.id}`}};var Gu=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 nT(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 ej=require("obsidian");var sT=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()}getConfigFileName(){return this.configFileName}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 ej.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(),d=((r==null?void 0:r.tags)||[]).map(f=>f.tag),u=(e=r==null?void 0:r.frontmatter)==null?void 0:e.tags,m=(Array.isArray(u)?u:u!==void 0?[u]:[]).map(f=>{let k=String(f||"");return k.startsWith("#")?k:`#${k}`});if([...d,...m].map(f=>String(f||"").toLowerCase()).some(f=>f===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 d=l.replace(/^["']|["']$/g,"");e[o]=d}}}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 o=am(e);return o!==void 0?o: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 d=o[e.toLowerCase()];if(d!==void 0)return d}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 Ku=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 d of o){let u=await this.computeProjectDataWithDirectoryCache(d,l);u&&e.set(d,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 d={tgProject:r,enhancedMetadata:i,timestamp:Date.now(),configSource:(t=e.configFile)==null?void 0:t.path};return this.fileCache.set(a,d),e.paths.add(a),d}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=this.projectConfigManager.getConfigFileName();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 d=l.replace(/^["']|["']$/g,"");e[o]=d}}}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 oT=class{constructor(a,e,t,r){this.app=a;this.vault=e;this.metadataCache=t;var s,o,l,d;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:(d=r==null?void 0:r.configFileEnabled)!=null?d:!1,detectionMethods:(r==null?void 0:r.detectionMethods)||[]};this.projectConfigManager=new sT(i),this.projectDataCache=new Ku(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 Qu=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,d=o!==null,u=await this.extractMetadataDate(t),p=u!=null?u:void 0,m={ctime:i,metadataDate:p,dailyNoteDate:l,isDailyNote:d,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 d=e.match(o),u="filename";if(d||(d=t.match(o),u="fullpath"),d)try{let p=this.parseDateFromPatternMatch(d,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 d of this.LINE_DATE_PATTERNS){let u=l.match(d);if(u){let p=this.parseDateFromMatch(u,d);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 d=new Date(s);return d.setDate(s.getDate()+l),d}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 d=new Date(s,o-1,l);if(!isNaN(d.getTime()))return d}}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(),d=r.indexOf(l);if(d!==-1){let u=e.getDay(),p=d-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 d=new Date(t,r-1,i,s,o,l);if(d.getFullYear()===t&&d.getMonth()===r-1&&d.getDate()===i)return d}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 lT=class{constructor(a,e,t){this.resolutionCache=new Map;this.CACHE_TTL=600*1e3;this.MAX_CACHE_SIZE=1e3;this.dateInheritanceService=new Qu(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},d=e.timeComponents;if(d.startTime&&!e.startDate){let u=await this.resolveWithCache(a,d.startTime,l,"startTime");u&&r.push({type:"startDate",date:u.resolvedDate,timeComponent:d.startTime,result:u})}if(d.dueTime&&!e.dueDate){let u=await this.resolveWithCache(a,d.dueTime,l,"dueTime");u&&r.push({type:"dueDate",date:u.resolvedDate,timeComponent:d.dueTime,result:u})}if(d.scheduledTime&&!e.scheduledDate){let u=await this.resolveWithCache(a,d.scheduledTime,l,"scheduledTime");u&&r.push({type:"scheduledDate",date:u.resolvedDate,timeComponent:d.scheduledTime,result:u})}if(d.endTime&&!e.startDate&&!e.dueDate){let u=await this.resolveWithCache(a,d.endTime,l,"endTime");if(u){let p=d.startTime?"startDate":"dueDate";r.push({type:p,date:u.resolvedDate,timeComponent:d.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 d=s.getTime();switch(i){case"startDate":r.startDate=d;break;case"dueDate":r.dueDate=d;break;case"scheduledDate":r.scheduledDate=d;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 cT=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 lT(a.app,a.vault,a.metadataCache))}updateSettings(a){let e=a.fileMetadataInheritance;e&&(this.fileFrontmatterInheritanceEnabled=!!(e.enabled&&e.inheritFromFrontmatter)),a.projectConfig&&(this.projectConfig=a.projectConfig)}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};if((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 i=r.priority;r.priority=this.convertPriorityValue(r.priority)}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 d of["file","project"]){let u;if(d==="file"?u=(r=e.fileMeta)==null?void 0:r[l]:d==="project"&&(u=(i=e.projectMeta)==null?void 0:i[l]),u!=null){a[l]=this.convertPriorityValue(u);break}}continue}for(let d of this.strategy.scalarPriority.slice(1)){let u;switch(d){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]:[],d=f=>r!=="tags"?f:f.filter(k=>typeof k=="string"&&k.trim().length>0).map(k=>this.normalizeTag(k));if(r==="tags"&&!this.fileFrontmatterInheritanceEnabled){a[r]=d(i);continue}let u=d(i),p=d(o),m=d(l),h;switch(this.strategy.arrayMergeStrategy){case"task-first":h=[...u,...p,...m];break;case"file-first":h=[...p,...u,...m];break;case"project-first":h=[...m,...u,...p];break;default:h=[...u,...p,...m]}let g=Array.from(new Set(h));a[r]=g}}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){var l,d,u,p,m,h,g,f;let t=typeof((l=e.projectMeta)==null?void 0:l.project)=="string"&&e.projectMeta.project.trim()?e.projectMeta.project.trim():void 0,r=typeof((d=e.fileMeta)==null?void 0:d.project)=="string"&&e.fileMeta.project.trim()?e.fileMeta.project.trim():void 0,i=(p=(u=this.projectConfig)==null?void 0:u.metadataConfig)==null?void 0:p.metadataKey,s=i&&typeof((m=e.fileMeta)==null?void 0:m[i])=="string"&&String((h=e.fileMeta)==null?void 0:h[i]).trim().length>0?String((g=e.fileMeta)==null?void 0:g[i]).trim():void 0,o=e.projectName||t||s||r;if(o&&(Array.isArray(o)?o=((f=o[0])==null?void 0:f.toString())||void 0:typeof o!="string"&&(o=String(o))),!a.project&&o&&(a.project=o),!a.tgProject&&s&&(a.tgProject={type:"metadata",name:s,source:i||"metadata",readonly:!0}),e.projectMeta){if(e.projectMeta.tgProject&&!a.tgProject)a.tgProject=e.projectMeta.tgProject;else if(o&&!a.tgProject){let k=e.projectMeta.configSource?"config":"metadata";a.tgProject={type:k,name:o,source:e.projectMeta.source||e.projectMeta.configSource||"unknown",readonly:e.projectMeta.readonly||!0}}}!a.project&&!a.tgProject&&r&&(a.project=r,a.tgProject={type:"metadata",name:r,source:"frontmatter",readonly:!0})}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}}};var dT=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){var r,i;this.metrics.fallbackToMainThread++,console.warn(`WorkerOrchestrator: Falling back to main thread parsing for ${a.path}`);let e=a.extension.toLowerCase(),t=[];if(e==="md"){let s=this.taskWorkerManager.vault,o=this.taskWorkerManager.metadataCache,l=await s.cachedRead(a),d=o.getFileCache(a),u=(d==null?void 0:d.frontmatter)||{},p=(r=this.taskWorkerManager.options)==null?void 0:r.settings,h=new el({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:{},projectConfig:(i=p==null?void 0:p.projectConfig)!=null&&i.enableEnhancedProject?p.projectConfig:void 0}).parseLegacy(l,a.path,u,void 0,void 0);t.push(...h)}else e==="canvas"&&console.warn("WorkerOrchestrator: Canvas parsing requires plugin instance, returning empty");return t}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 Xu=require("obsidian");var uT=class extends Xu.Component{constructor(e,t,r){super();this.eventRefs=[];this.DEBOUNCE_DELAY=300;this.BATCH_DELAY=150;this.pendingFileChanges=new Map;this.pendingMetadataChanges=new Map;this.pendingBatch=new Set;this.debouncedBatch=null;this.IGNORED_EXTENSIONS=new Set([".tmp",".swp",".log"]);this.RELEVANT_EXTENSIONS=new Set(["md","canvas"]);this.skipNextModify=new Set;this.app=e,this.vault=t,this.metadataCache=r}onload(){this.initialize()}initialize(){this.registerEvent(Oe(this.app,Z.WRITE_OPERATION_START,({path:e})=>{this.skipNextModify.add(e),setTimeout(()=>this.skipNextModify.delete(e),5e3)})),this.registerEvent(Oe(this.app,Z.WRITE_OPERATION_COMPLETE,({path:e})=>{setTimeout(()=>{this.skipNextModify.delete(e)},100)})),this.registerEvent(this.vault.on("create",this.onFileCreate.bind(this))),this.registerEvent(this.vault.on("modify",this.onFileModify.bind(this))),this.registerEvent(this.vault.on("delete",this.onFileDelete.bind(this))),this.registerEvent(this.vault.on("rename",this.onFileRename.bind(this))),this.registerEvent(this.metadataCache.on("changed",this.onMetadataChange.bind(this))),this.registerEvent(this.metadataCache.on("resolve",this.onMetadataResolve.bind(this))),`${this.eventRefs.length}`}onFileCreate(e){this.app.workspace.layoutReady&&this.isRelevantFile(e)&&(`${e.path}`,le(this.app,Z.FILE_UPDATED,{path:e.path,reason:"create",timestamp:Date.now()}))}onFileModify(e){if(!this.isRelevantFile(e))return;if(this.skipNextModify.has(e.path)){this.skipNextModify.delete(e.path),`${e.path}`;return}let t=this.pendingFileChanges.get(e.path);t||(t=(0,Xu.debounce)(()=>{this.emitFileUpdated(e.path,"modify")},this.DEBOUNCE_DELAY,!1),this.pendingFileChanges.set(e.path,t)),t()}onFileDelete(e){this.isRelevantFile(e)&&(`${e.path}`,this.pendingFileChanges.has(e.path)&&this.pendingFileChanges.delete(e.path),le(this.app,Z.FILE_UPDATED,{path:e.path,reason:"delete",timestamp:Date.now()}))}onFileRename(e,t){this.isRelevantFile(e)&&(`${t}${e.path}`,this.pendingFileChanges.has(t)&&this.pendingFileChanges.delete(t),le(this.app,Z.FILE_UPDATED,{path:t,reason:"delete",timestamp:Date.now()}),le(this.app,Z.FILE_UPDATED,{path:e.path,reason:"rename",timestamp:Date.now()}))}onMetadataChange(e){if(!this.isRelevantFile(e))return;if(this.skipNextModify.has(e.path)){`${e.path}`;return}let t=this.pendingMetadataChanges.get(e.path);t||(t=(0,Xu.debounce)(()=>{this.emitFileUpdated(e.path,"frontmatter")},this.DEBOUNCE_DELAY,!1),this.pendingMetadataChanges.set(e.path,t)),t()}onMetadataResolve(e){this.isRelevantFile(e)&&this.addToBatch(e.path)}addToBatch(e){this.pendingBatch.add(e),this.debouncedBatch||(this.debouncedBatch=(0,Xu.debounce)(()=>this.processBatch(),this.BATCH_DELAY,!1)),this.debouncedBatch()}processBatch(){if(this.pendingBatch.size===0)return;let e=Array.from(this.pendingBatch);this.pendingBatch.clear(),`${e.length}`,le(this.app,Z.TASK_CACHE_UPDATED,{changedFiles:e,stats:{total:e.length,changed:e.length},timestamp:Date.now(),seq:Date.now()})}emitFileUpdated(e,t){`${e}${t}`,le(this.app,Z.FILE_UPDATED,{path:e,reason:t,timestamp:Date.now()})}isRelevantFile(e){var r;if(!e||typeof e.path!="string")return!1;let t=(r=e.extension)==null?void 0:r.toLowerCase();return!(!t||this.IGNORED_EXTENSIONS.has(`.${t}`)||!this.RELEVANT_EXTENSIONS.has(t)||e.path.startsWith(".")||e.path.includes("/."))}triggerFileUpdate(e,t="modify"){this.emitFileUpdated(e,t)}triggerBatchUpdate(e){e.length!==0&&(`${e.length}`,le(this.app,Z.TASK_CACHE_UPDATED,{changedFiles:e,stats:{total:e.length,changed:e.length},timestamp:Date.now(),seq:Date.now()}))}flush(){for(let e of Array.from(this.pendingFileChanges.keys()))this.pendingFileChanges.delete(e),this.emitFileUpdated(e,"modify");for(let e of Array.from(this.pendingMetadataChanges.keys()))this.pendingMetadataChanges.delete(e),this.emitFileUpdated(e,"frontmatter");this.processBatch()}getStats(){return{pendingFileChanges:this.pendingFileChanges.size,pendingMetadataChanges:this.pendingMetadataChanges.size,pendingBatchSize:this.pendingBatch.size,hasBatchDebounce:this.debouncedBatch!==null}}destroy(){this.pendingFileChanges.clear(),this.pendingMetadataChanges.clear(),this.debouncedBatch=null,this.pendingBatch.clear(),this.unload()}};var pT=class{constructor(a,e){this.app=a;this.getIcsManager=e;this.eventRefs=[];this.isInitialized=!1;this.lastIcsUpdateSeq=0}async initialize(){this.isInitialized||(this.subscribeToIcsUpdates(),this.getIcsManager()?await this.loadAndEmitIcsEvents():await this.ensureManagerAndLoad(),this.isInitialized=!0)}async ensureManagerAndLoad(){for(let e=0;e<30;e++){if(this.getIcsManager()){await this.loadAndEmitIcsEvents();return}await this.delay(1e3)}console.warn("[IcsSource] ICS manager not available after retries")}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=kt.next(),le(this.app,Z.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),le(this.app,Z.ICS_EVENTS_UPDATED,{events:[],timestamp:Date.now(),seq:kt.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()}async delay(a){await new Promise(e=>setTimeout(e,a))}getStats(){return{initialized:this.isInitialized,lastUpdateSeq:this.lastIcsUpdateSeq}}destroy(){for(let a of this.eventRefs)this.app.vault.offref(a);this.eventRefs=[],le(this.app,Z.ICS_EVENTS_UPDATED,{events:[],timestamp:Date.now(),seq:kt.next(),destroyed:!0}),this.isInitialized=!1}};var Ju={enabled:!0,taskFields:["dueDate","status","priority","assigned"],requireAllFields:!1},Zu={enabled:!0,taskTags:["#task","#actionable","#todo"],matchMode:"exact"},ep={enabled:!1,templatePaths:["Templates/Task Template.md"],checkTemplateMetadata:!0},tp={enabled:!1,taskPaths:["Projects/","Tasks/"],matchMode:"prefix"},tj={contentSource:"filename",stripExtension:!0,defaultStatus:" ",defaultPriority:void 0,preferFrontmatterTitle:!0},aj={enableChildRelationships:!0,enableMetadataInheritance:!0,inheritanceFields:["project","priority","context"]},rj={enableWorkerProcessing:!0,enableCaching:!0,cacheTTL:3e5},ij={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},nj=[],RK={enabled:!1,recognitionStrategies:{metadata:Ju,tags:Zu,templates:ep,paths:tp},metadataMappings:[...nj],fileTaskProperties:tj,relationships:aj,performance:rj,statusMapping:ij},mT=class{constructor(a){this.listeners=[];this.config=this.mergeWithDefaults(a||{})}getConfig(){return{...this.config}}updateConfig(a){let e=this.mergeWithDefaults(a);!this.deepEqual(e,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,d,u,p;let e=[];if(a.recognitionStrategies){let m=a.recognitionStrategies;a.enabled!==!1&&(Object.values(m).some(g=>g&&g.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=(d=m.paths)==null?void 0:d.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(a.metadataMappings&&a.metadataMappings.forEach((m,h)=>{let g=typeof(m==null?void 0:m.sourceKey)=="string"?m.sourceKey.trim():"",f=typeof(m==null?void 0:m.targetKey)=="string"?m.targetKey.trim():"";g||e.push(`Metadata mapping ${h+1} requires a source key`),f||e.push(`Metadata mapping ${h+1} requires a target key`)}),(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,o;return{enabled:(e=a.enabled)!=null?e:RK.enabled,recognitionStrategies:{metadata:{...Ju,...(t=a.recognitionStrategies)==null?void 0:t.metadata},tags:{...Zu,...(r=a.recognitionStrategies)==null?void 0:r.tags},templates:{...ep,...(i=a.recognitionStrategies)==null?void 0:i.templates},paths:{...tp,...(s=a.recognitionStrategies)==null?void 0:s.paths}},metadataMappings:this.normalizeMetadataMappings((o=a.metadataMappings)!=null?o:nj),fileTaskProperties:{...tj,...a.fileTaskProperties},relationships:{...aj,...a.relationships},performance:{...rj,...a.performance},statusMapping:{...ij,...a.statusMapping}}}normalizeMetadataMappings(a){if(!Array.isArray(a))return[];let e=[];for(let t of a){if(!t)continue;let r=typeof t.sourceKey=="string"?t.sourceKey.trim():"",i=typeof t.targetKey=="string"?t.targetKey.trim():"";!r||!i||e.push({sourceKey:r,targetKey:i,enabled:t.enabled!==!1})}return e}deepEqual(a,e){if(a===e)return!0;if(a==null||e==null||typeof a!="object"||typeof e!="object")return!1;if(Array.isArray(a)&&Array.isArray(e)){if(a.length!==e.length)return!1;for(let i=0;i<a.length;i++)if(!this.deepEqual(a[i],e[i]))return!1;return!0}if(Array.isArray(a)!==Array.isArray(e))return!1;let t=Object.keys(a),r=Object.keys(e);if(t.length!==r.length)return!1;for(let i of t)if(!r.includes(i)||!this.deepEqual(a[i],e[i]))return!1;return!0}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(d=>d);t[s]=t[s]||[];for(let d of l)if(d.length===1||d==="/>")d==="/>"?(e["/"]=s,e[">"]=s,t[s].push("/"),t[s].push(">")):(e[d]=s,t[s].push(d));else for(let u of d)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 d=(t[s]||[])[0]||i[s];o&&d!==void 0&&(this.config.statusMapping.metadataToSymbol[o]=d)}this.notifyListeners()}static createPreset(a){switch(a){case"basic":return{enabled:!0,recognitionStrategies:{metadata:{...Ju,enabled:!0},tags:{...Zu,enabled:!1},templates:{...ep,enabled:!1},paths:{...tp,enabled:!1}}};case"metadata-only":return{enabled:!0,recognitionStrategies:{metadata:{...Ju,enabled:!0},tags:{...Zu,enabled:!1},templates:{...ep,enabled:!1},paths:{...tp,enabled:!1}}};case"tag-only":return{enabled:!0,recognitionStrategies:{metadata:{...Ju,enabled:!1},tags:{...Zu,enabled:!0},templates:{...ep,enabled:!1},paths:{...tp,enabled:!1}}};case"full":return{enabled:!0,recognitionStrategies:{metadata:{...Ju,enabled:!0},tags:{...Zu,enabled:!0},templates:{...ep,enabled:!1},paths:{...tp,enabled:!1}}};default:return{}}}};var hT=class hT{constructor(a,e,t,r){this.app=a;this.fileFilterManager=t;this.plugin=r;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 mT(e)}async initialize(){if(!this.isInitialized&&this.config.isEnabled()){this.config.onChange(a=>{this.handleConfigChange(a)}),this.subscribeToFileEvents(),this.isInitialized=!0,this.stats.initialized=!0;try{await this.performInitialScan()}catch(a){console.error("[FileSource] Initial scan failed",a)}`${this.config.getEnabledStrategies().join(", ")}`}}subscribeToFileEvents(){this.eventRefs.push(Oe(this.app,Z.FILE_UPDATED,a=>{a!=null&&a.path&&this.handleFileUpdate(a.path,a.reason)})),this.eventRefs.push(Oe(this.app,"task-genius:file-metadata-changed",a=>{a!=null&&a.path&&this.handleFileMetadataChange(a.path)})),this.eventRefs.push(Oe(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(d=>o.hasOwnProperty(d)&&o[d]!==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(d=>{switch(s){case"exact":return d===l;case"prefix":return d.startsWith(l);case"contains":return d.includes(l);default:return d===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=kt.next();this.lastUpdateSeq=t,le(this.app,Z.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,d=this.extractTaskMetadata(a,e,t,s),{rawStatus:u,...p}=d,m=this.computeStatusSymbol(u,r.fileTaskProperties.defaultStatus);return u&&m!==u&&`${u}${m}${a}`,{id:`file-source:${a}`,content:l,filePath:a,line:0,completed:m==="x"||m==="X",status:m,originalMarkdown:`**${l}**`,metadata:{...p,source:"file-source",recognitionStrategy:s.name,recognitionCriteria:s.criteria,fileTimestamps:{created:i.stat.ctime,modified:i.stat.mtime},childTasks:[],tags:p.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,d;return a.includes(o)||((l=t==null?void 0:t.frontmatter)==null?void 0:l.template)===o||((d=t==null?void 0:t.frontmatter)==null?void 0:d.templateFile)===o})?{name:"template",criteria:i.templatePaths.join(", ")}:null}generateTaskContent(a,e,t){var o,l,d,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=(d=t==null?void 0:t.headings)==null?void 0:d.find(h=>h.level===1);return(m==null?void 0:m.heading)||s;case"custom":if(r.customContentField&&(t!=null&&t.frontmatter)){let h=t.frontmatter[r.customContentField];return h||(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}}computeStatusSymbol(a,e){if(!a)return e;if(a.length===1)return a;let t=this.config.getConfig().statusMapping,r=t.caseSensitive?a:String(a).toLowerCase();for(let[o,l]of Object.entries(t.metadataToSymbol||{}))if((t.caseSensitive?o:o.toLowerCase())===r)return l;let i=String(a).toLowerCase(),s=hT.DEFAULT_STATUS_MAPPINGS[i];return s!==void 0?s:e}extractTaskMetadata(a,e,t,r){var y,b,w,T,x,C,S;let i=this.config.getConfig(),s=(t==null?void 0:t.frontmatter)||{},o=this.applyMetadataMappings(s,i.metadataMappings),l=(y=o.status)!=null?y:"",d=typeof l=="string"?l:String(l!=null?l:""),u=this.mergeTags(((b=t==null?void 0:t.tags)==null?void 0:b.map(D=>D.tag))||[],o.tags),p=this.extractProjectFromTags(u),m=p.project,h=(w=o.project)!=null?w:m,g=h!=null?String(h):void 0,k=!o.project&&!!m&&p.matchedTags.length>0?u.filter(D=>!p.matchedTags.includes(D)):u;return{...{dueDate:this.parseDate((T=o.dueDate)!=null?T:o.due),startDate:this.parseDate((x=o.startDate)!=null?x:o.start),scheduledDate:this.parseDate((C=o.scheduledDate)!=null?C:o.scheduled),completedDate:this.parseDate(o.completedDate),createdDate:this.parseDate(o.createdDate),recurrence:typeof o.recurrence=="string"?o.recurrence:o.recurrence!=null?String(o.recurrence):void 0,priority:(S=this.parsePriority(o.priority))!=null?S:i.fileTaskProperties.defaultPriority,project:g,context:o.context!==void 0&&o.context!==null?String(o.context):void 0,area:o.area!==void 0&&o.area!==null?String(o.area):void 0,tags:k,children:[]},rawStatus:d}}extractProjectFromTags(a){var s,o,l;let e=(l=(o=(s=this.plugin)==null?void 0:s.settings)==null?void 0:o.projectTagPrefix)==null?void 0:l.tasks,t=typeof e=="string"&&e.trim()?e.trim():"project",r=[],i;for(let d of a){if(!d||typeof d!="string")continue;let u=d.startsWith("#")?d.substring(1):d;if(u.toLowerCase().startsWith(`${t.toLowerCase()}/`)&&(r.push(d),!i)){let p=u.indexOf("/");if(p!==-1){let m=u.substring(p+1);m&&(i=m)}}}return i&&`${i}`,{project:i,matchedTags:r}}applyMetadataMappings(a,e){if(!Array.isArray(e)||e.length===0)return{...a};let t={...a};for(let r of e){if(!(r!=null&&r.enabled))continue;let i=r.sourceKey,s=r.targetKey;if(!i||!s)continue;let o=a[i];o!==void 0&&(t[s]=o)}return t}mergeTags(a,e){let t=new Set(a);if(Array.isArray(e))for(let r of e){if(typeof r!="string")continue;let i=this.normalizeTag(r);i&&t.add(i)}else if(typeof e=="string"){let r=e.split(/[,\s]+/).map(i=>this.normalizeTag(i)).filter(i=>!!i);for(let i of r)t.add(i)}return Array.from(t)}normalizeTag(a){let e=a.trim();return e?e.startsWith("#")?e:`#${e}`:null}parsePriority(a){if(a!=null){if(typeof a=="number"&&!Number.isNaN(a))return a;if(typeof a=="string"){let e=a.trim();if(!e)return;let t=Number(e);if(!Number.isNaN(t))return t}}}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=kt.next();this.lastUpdateSeq=t,le(this.app,Z.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},le(this.app,Z.FILE_TASK_REMOVED,{filePath:null,timestamp:Date.now(),seq:kt.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}};hT.DEFAULT_STATUS_MAPPINGS={completed:"x",done:"x",finished:"x","in-progress":"/","in progress":"/",doing:"/",planned:"?",todo:"?",cancelled:"-",canceled:"-","not-started":" ","not started":" "};var $f=hT;var uj=require("obsidian");var ap=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(d=>d.tag);for(let d of this.config.tagsToParseAsTasks){let u=d.startsWith("#")?d:`#${d}`;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}`,d=this.determineTaskStatus(e,t),u=d.toLowerCase()==="x",p=this.extractTaskMetadata(a,r,e,t,s);return{id:l,content:o,filePath:a,line:0,completed:u,status:d,originalMarkdown:`- [${d}] ${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,d=l.toLowerCase()==="x",u=this.extractTaskMetadata(a,t||{},"tag",e,i);return{id:o,content:s,filePath:a,line:0,completed:d,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 Yf(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 RM(){return Yf('var Gt=Object.defineProperty,Kt=Object.defineProperties;var Bt=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,O=(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},N=(n,t)=>Kt(n,Bt(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 q(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"},Tt={ordinalNumber:cr,era:q({values:rr,defaultWidth:"wide"}),quarter:q({values:ar,defaultWidth:"wide",argumentCallback:n=>n-1}),month:q({values:nr,defaultWidth:"wide"}),day:q({values:sr,defaultWidth:"wide"}),dayPeriod:q({values:ir,defaultWidth:"wide",formattingValues:or,defaultFormattingWidth:"wide"})};function G(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,f=>f.test(i)):dr(o,f=>f.test(i)),d;d=n.valueCallback?n.valueCallback(c):c,d=e.valueCallback?e.valueCallback(d):d;let u=t.slice(i.length);return{value:d,rest:u}}}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 wt(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]},Tr={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},wr={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:wt({matchPattern:lr,parsePattern:mr,valueCallback:n=>parseInt(n,10)}),era:G({matchPatterns:fr,defaultMatchWidth:"wide",parsePatterns:pr,defaultParseWidth:"any"}),quarter:G({matchPatterns:gr,defaultMatchWidth:"wide",parsePatterns:hr,defaultParseWidth:"any",valueCallback:n=>n+1}),month:G({matchPatterns:yr,defaultMatchWidth:"wide",parsePatterns:xr,defaultParseWidth:"any"}),day:G({matchPatterns:Tr,defaultMatchWidth:"wide",parsePatterns:wr,defaultParseWidth:"any"}),dayPeriod:G({matchPatterns:Dr,defaultMatchWidth:"any",parsePatterns:br,defaultParseWidth:"any"})};var Q={code:"en-US",formatDistance:ht,formatLong:yt,formatRelative:xt,localize:Tt,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 J=6e4,U=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 M(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 H(){return Rr}function Et(){return Object.assign({},H())}function D(n,t){return M(t||n,n)}function Ot(n,t){let e=Ir(t)?new t(0):M(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=>M(r,a))}set(e,r){return r.timestampIsSet?e:M(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 k={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}/},W={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 C(n,t){return n&&{value:t(n.value),rest:n.rest}}function b(n,t){let e=t.match(n);return e?{value:parseInt(e[0],10),rest:t.slice(e[0].length)}:null}function _(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*U+s*J+i*Ct),rest:t.slice(e[0].length)}}function he(n){return b(k.anyDigitsSigned,n)}function T(n,t){switch(n){case 1:return b(k.singleDigit,t);case 2:return b(k.twoDigits,t);case 3:return b(k.threeDigits,t);case 4:return b(k.fourDigits,t);default:return b(new RegExp("^\\\\d{1,"+n+"}"),t)}}function K(n,t){switch(n){case 1:return b(k.singleDigitSigned,t);case 2:return b(k.twoDigitsSigned,t);case 3:return b(k.threeDigitsSigned,t);case 4:return b(k.fourDigitsSigned,t);default:return b(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 Te=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 C(T(4,e),s);case"yo":return C(a.ordinalNumber(e,{unit:"year"}),s);default:return C(T(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 R(n,t){var o,c,d,u,f,m,g,p;let e=H(),r=(p=(g=(u=(d=t==null?void 0:t.weekStartsOn)!=null?d:(c=(o=t==null?void 0:t.locale)==null?void 0:o.options)==null?void 0:c.weekStartsOn)!=null?u:e.weekStartsOn)!=null?g:(m=(f=e.locale)==null?void 0:f.options)==null?void 0:m.weekStartsOn)!=null?p:0,a=D(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 we(n,t){var u,f,m,g,p,y,x,P;let e=D(n,t==null?void 0:t.in),r=e.getFullYear(),a=H(),s=(P=(x=(g=(m=t==null?void 0:t.firstWeekContainsDate)!=null?m:(f=(u=t==null?void 0:t.locale)==null?void 0:u.options)==null?void 0:f.firstWeekContainsDate)!=null?g:a.firstWeekContainsDate)!=null?x:(y=(p=a.locale)==null?void 0:p.options)==null?void 0:y.firstWeekContainsDate)!=null?P:1,i=M((t==null?void 0:t.in)||n,0);i.setFullYear(r+1,0,s),i.setHours(0,0,0,0);let o=R(i,t),c=M((t==null?void 0:t.in)||n,0);c.setFullYear(r,0,s),c.setHours(0,0,0,0);let d=R(c,t);return+e>=+o?r+1:+e>=+d?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 C(T(4,e),s);case"Yo":return C(a.ordinalNumber(e,{unit:"year"}),s);default:return C(T(r.length,e),s)}}validate(e,r){return r.isTwoDigitYear||r.year>0}set(e,r,a,s){let i=we(e,s);if(a.isTwoDigitYear){let c=ye(a.year,i);return e.setFullYear(c,0,s.firstWeekContainsDate),e.setHours(0,0,0,0),R(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),R(e,s)}};function A(n,t){return R(n,N(O({},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"?K(4,e):K(r.length,e)}set(e,r,a){let s=M(e,0);return s.setFullYear(a,0,4),s.setHours(0,0,0,0),A(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"?K(4,e):K(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 T(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 T(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 C(b(k.month,e),s);case"MM":return C(T(2,e),s);case"Mo":return C(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 C(b(k.month,e),s);case"LL":return C(T(2,e),s);case"Lo":return C(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,d,u,f,m,g,p;let e=H(),r=(p=(g=(u=(d=t==null?void 0:t.firstWeekContainsDate)!=null?d:(c=(o=t==null?void 0:t.locale)==null?void 0:o.options)==null?void 0:c.firstWeekContainsDate)!=null?u:e.firstWeekContainsDate)!=null?g:(m=(f=e.locale)==null?void 0:f.options)==null?void 0:m.firstWeekContainsDate)!=null?p:1,a=we(n,t),s=M((t==null?void 0:t.in)||n,0);return s.setFullYear(a,0,r),s.setHours(0,0,0,0),R(s,t)}function Nt(n,t){let e=D(n,t==null?void 0:t.in),r=+R(e,t)-+Ft(e,t);return Math.round(r/le)+1}function Rt(n,t,e){let r=D(n,e==null?void 0:e.in),a=Nt(r,e)-t;return r.setDate(r.getDate()-a*7),D(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 b(k.week,e);case"wo":return a.ordinalNumber(e,{unit:"week"});default:return T(r.length,e)}}validate(e,r){return r>=1&&r<=53}set(e,r,a,s){return R(Rt(e,a,s),s)}};function It(n,t){let e=D(n,t==null?void 0:t.in),r=e.getFullYear(),a=M(e,0);a.setFullYear(r+1,0,4),a.setHours(0,0,0,0);let s=A(a),i=M(e,0);i.setFullYear(r,0,4),i.setHours(0,0,0,0);let o=A(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=M((t==null?void 0:t.in)||n,0);return r.setFullYear(e,0,4),r.setHours(0,0,0,0),A(r)}function Wt(n,t){let e=D(n,t==null?void 0:t.in),r=+A(e)-+jt(e);return Math.round(r/le)+1}function _t(n,t,e){let r=D(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 b(k.week,e);case"Io":return a.ordinalNumber(e,{unit:"week"});default:return T(r.length,e)}}validate(e,r){return r>=1&&r<=53}set(e,r,a){return A(_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 b(k.date,e);case"do":return a.ordinalNumber(e,{unit:"date"});default:return T(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 b(k.dayOfYear,e);case"Do":return a.ordinalNumber(e,{unit:"date"});default:return T(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=D(n,e==null?void 0:e.in);return isNaN(t)?M((e==null?void 0:e.in)||n,NaN):(t&&r.setDate(r.getDate()+t),r)}function V(n,t,e){var f,m,g,p,y,x,P,E;let r=H(),a=(E=(P=(p=(g=e==null?void 0:e.weekStartsOn)!=null?g:(m=(f=e==null?void 0:e.locale)==null?void 0:f.options)==null?void 0:m.weekStartsOn)!=null?p:r.weekStartsOn)!=null?P:(x=(y=r.locale)==null?void 0:y.options)==null?void 0:x.weekStartsOn)!=null?E:0,s=D(n,e==null?void 0:e.in),i=s.getDay(),c=(t%7+7)%7,d=7-a,u=t<0||t>6?t-(i+d)%7:(c+d)%7-(i+d)%7;return Re(s,u,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=V(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 C(T(r.length,e),i);case"eo":return C(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=V(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 C(T(r.length,e),i);case"co":return C(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=V(e,a,s),e.setHours(0,0,0,0),e}};function St(n,t){let e=D(n,t==null?void 0:t.in).getDay();return e===0?7:e}function At(n,t,e){let r=D(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 T(r.length,e);case"io":return a.ordinalNumber(e,{unit:"day"});case"iii":return C(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 C(a.day(e,{width:"narrow",context:"formatting"}),s);case"iiiiii":return C(a.day(e,{width:"short",context:"formatting"})||a.day(e,{width:"narrow",context:"formatting"}),s);case"iiii":default:return C(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 He=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 b(k.hour12h,e);case"ho":return a.ordinalNumber(e,{unit:"hour"});default:return T(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 Ye=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 b(k.hour23h,e);case"Ho":return a.ordinalNumber(e,{unit:"hour"});default:return T(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 b(k.hour11h,e);case"Ko":return a.ordinalNumber(e,{unit:"hour"});default:return T(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 b(k.hour24h,e);case"ko":return a.ordinalNumber(e,{unit:"hour"});default:return T(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 b(k.minute,e);case"mo":return a.ordinalNumber(e,{unit:"minute"});default:return T(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 b(k.second,e);case"so":return a.ordinalNumber(e,{unit:"second"});default:return T(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 C(T(r.length,e),a)}set(e,r,a){return e.setMilliseconds(a),e}};function Ke(n){let t=D(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 Be=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.basicOptionalMinutes,e);case"XX":return _(W.basic,e);case"XXXX":return _(W.basicOptionalSeconds,e);case"XXXXX":return _(W.extendedOptionalSeconds,e);case"XXX":default:return _(W.extended,e)}}set(e,r,a){return r.timestampIsSet?e:M(e,e.getTime()-Ke(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.basicOptionalMinutes,e);case"xx":return _(W.basic,e);case"xxxx":return _(W.basicOptionalSeconds,e);case"xxxxx":return _(W.extendedOptionalSeconds,e);case"xxx":default:return _(W.extended,e)}}set(e,r,a){return r.timestampIsSet?e:M(e,e.getTime()-Ke(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[M(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[M(e,a),{timestampIsSet:!0}]}};var Lt={G:new ge,y:new Te,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 He,H:new Ye,K:new $e,k:new ze,m:new Xe,s:new qe,S:new Ge,X:new Be,x:new Ve,t:new Qe,T:new Je};var Sr=/[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|\'\'|\'(\'\'|[^\'])+(\'|$)|./g,Ar=/P+p+|P+|p+|\'\'|\'(\'\'|[^\'])+(\'|$)|./g,Lr=/^\'([^]*?)\'?$/,Hr=/\'\'/g,Yr=/\\S/,$r=/[a-zA-Z]/;function Ue(n,t,e,r){var x,P,E,F,S,te,re,ae,z,ne,Y,j,X,se,ie,oe,ce,de;let a=()=>M((r==null?void 0:r.in)||e,NaN),s=Et(),i=(P=(x=r==null?void 0:r.locale)!=null?x:s.locale)!=null?P:Q,o=(ne=(z=(te=(S=r==null?void 0:r.firstWeekContainsDate)!=null?S:(F=(E=r==null?void 0:r.locale)==null?void 0:E.options)==null?void 0:F.firstWeekContainsDate)!=null?te:s.firstWeekContainsDate)!=null?z:(ae=(re=s.locale)==null?void 0:re.options)==null?void 0:ae.firstWeekContainsDate)!=null?ne:1,c=(de=(ce=(se=(X=r==null?void 0:r.weekStartsOn)!=null?X:(j=(Y=r==null?void 0:r.locale)==null?void 0:Y.options)==null?void 0:j.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():D(e,r==null?void 0:r.in);let d={firstWeekContainsDate:o,weekStartsOn:c,locale:i},u=[new pe(r==null?void 0:r.in,e)],f=t.match(Ar).map(w=>{let v=w[0];if(v in st){let L=st[v];return L(w,i.formatLong)}return w}).join("").match(Sr),m=[];for(let w of f){!(r!=null&&r.useAdditionalWeekYearTokens)&&Mt(w)&&it(w,t,n),!(r!=null&&r.useAdditionalDayOfYearTokens)&&Pt(w)&&it(w,t,n);let v=w[0],L=Lt[v];if(L){let{incompatibleTokens:mt}=L;if(Array.isArray(mt)){let ft=m.find(pt=>mt.includes(pt.token)||pt.token===v);if(ft)throw new RangeError(`The format string mustn\'t contain \\`${ft.fullToken}\\` and \\`${w}\\` at the same time`)}else if(L.incompatibleTokens==="*"&&m.length>0)throw new RangeError(`The format string mustn\'t contain \\`${w}\\` and any other token at the same time`);m.push({token:v,fullToken:w});let at=L.run(n,w,i.match,d);if(!at)return a();u.push(at.setter),n=at.rest}else{if(v.match($r))throw new RangeError("Format string contains an unescaped latin alphabet character `"+v+"`");if(w==="\'\'"?w="\'":v==="\'"&&(w=zr(w)),n.indexOf(w)===0)n=n.slice(w.length);else return a()}}if(n.length>0&&Yr.test(n))return a();let g=u.map(w=>w.priority).sort((w,v)=>v-w).filter((w,v,L)=>L.indexOf(w)===v).map(w=>u.filter(v=>v.priority===w).sort((v,L)=>L.subPriority-v.subPriority)).map(w=>w[0]),p=D(e,r==null?void 0:r.in);if(isNaN(+p))return a();let y={};for(let w of g){if(!w.validate(p,d))return a();let v=w.set(p,y,d);Array.isArray(v)?(p=v[0],Object.assign(y,v[1])):p=v}return p}function zr(n){return n.match(Lr)[1].replace(Hr,"\'")}function ct(n,t){let e=D(n,t==null?void 0:t.in);return e.setHours(0,0,0,0),e}function Ht(n){return n instanceof Date||typeof n=="object"&&Object.prototype.toString.call(n)==="[object Date]"}function dt(n){return!(!Ht(n)&&typeof n!="number"||isNaN(+D(n)))}function Yt(n,t){var d;let e=()=>M(t==null?void 0:t.in,NaN),r=(d=t==null?void 0:t.additionalDigits)!=null?d:2,a=Kr(n),s;if(a.date){let u=Br(a.date,r);s=Vr(u.restDateString,u.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 u=new Date(i+o),f=D(0,t==null?void 0:t.in);return f.setFullYear(u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()),f.setHours(u.getUTCHours(),u.getUTCMinutes(),u.getUTCSeconds(),u.getUTCMilliseconds()),f}return D(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 Kr(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 Br(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=Z(e[1]),s=Z(e[2])-1,i=Z(e[3]),o=Z(e[4]),c=Z(e[5])-1;if(r)return ra(t,o,c)?Ur(t,o,c):new Date(NaN);{let d=new Date(0);return!ea(t,s,i)||!ta(t,a)?new Date(NaN):(d.setUTCFullYear(t,s,Math.max(a,i)),d)}}function Z(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*U+r*J+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*U+a*J):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=/\\d{1,2}:\\d{2}/.test(n),r=["yyyy-MM-dd HH:mm","yyyy-MM-dd H:mm","yyyy/MM/dd HH:mm","yyyy/MM/dd H:mm","dd-MM-yyyy HH:mm","dd/MM/yyyy HH:mm","MM-dd-yyyy HH:mm","MM/dd/yyyy HH:mm","yyyy.MM.dd HH:mm","yyyyMMddHHmmss","yyyyMMdd_HHmmss"],a=["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"],s=e?[...r,...a]:[...a,...r],i=t?[...t,...s]:s;for(let o of i)try{let c=Ue(n,o,new Date,{locale:Q});if(dt(c)){let d=/[Hh]:mm/.test(o);return!e&&!d?ct(c).getTime():c.getTime()}}catch(c){continue}try{let o=Yt(n);if(dt(o))return e?o.getTime():ct(o).getTime()}catch(o){}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 I=class I{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=N(O({},t),{statusMapping:e});return new I(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,d=!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 u=i[o];if(u.trim().startsWith("```")||u.trim().startsWith("~~~")){d=!d,o++;continue}if(d){o++;continue}if(this.config.parseHeadings){let m=this.extractHeading(u);if(m){let[g,p]=m;this.currentHeading=p,this.currentHeadingLevel=g,o++;continue}}let f=this.extractTaskLine(u);if(f){let[m,,g,p]=f,y=`${e}-L${o}`,[x,P]=this.findParentAndLevel(m),[E,F]=this.parseTaskContent(g),S=F.toLowerCase()==="x",te=this.getStatusFromMapping(F),[re,ae,z]=this.extractMetadataAndTagsInternal(E),ne=x!==void 0,Y=this.inheritFileMetadata(ae,ne),j=this.extractTimeComponents(E,Y),X=z;if(Y.tags)try{let w=JSON.parse(Y.tags);Array.isArray(w)&&(X=this.mergeTags(z,w))}catch(w){X=this.mergeTags(z,[Y.tags])}let se=this.determineTgProject(e)||s,[ie,oe]=this.config.parseComments&&o+1<i.length?this.extractMultilineComment(i,o+1,m):[void 0,0];o+=oe;let ce=this.extractLegacyPriority(Y),de={id:y,content:re,status:te,rawStatus:F,completed:S,indentLevel:P,parentId:x,childrenIds:[],metadata:j,tags:X,comment:ie,lineNumber:o+1,actualIndent:m,heading:this.currentHeading,headingLevel:this.currentHeadingLevel,listMarker:p,filePath:e,originalMarkdown:u,tgProject:se,line:o,children:[],priority:ce,startDate:this.extractLegacyDate(j,"startDate"),dueDate:this.extractLegacyDate(j,"dueDate"),scheduledDate:this.extractLegacyDate(j,"scheduledDate"),completedDate:this.extractLegacyDate(j,"completedDate"),createdDate:this.extractLegacyDate(j,"createdDate"),recurrence:j.recurrence,project:j.project,context:j.context};if(x&&this.tasks.length>0){let w=this.tasks.find(v=>v.id===x);w&&(w.childrenIds.push(y),w.children.push(y))}this.updateIndentStack(y,P,m),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(N(O({},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.trimStart(),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 d=this.extractDataviewMetadata(s);if(d){let[u,f,m]=d;e[u]=f,u==="priority"&&console.log("[Parser] Dataview priority found:",{key:u,value:f,remaining:s.substring(0,50)}),s=m,c=!0;continue}}if(!c&&this.config.parseMetadata&&(this.config.metadataParseMode==="emoji-only"||this.config.metadataParseMode==="both")){let d=this.extractEmojiMetadata(s);if(d){let[u,f,m,g]=d,[p,y,x]=this.extractTagsOnly(m);for(let P of x)r.push(P);for(let[P,E]of Object.entries(y))e[P]=E;e[u]=f,a+=p,s=g,c=!0;continue}}if(!c&&this.config.parseTags){let d=this.extractContext(s);if(d){let[u,f,m]=d;e.context=u,a+=f,s=m,c=!0;continue}}if(!c&&this.config.parseTags){let d=this.extractTag(s);if(d){let[u,f,m]=d,g=u.startsWith("#")?u.substring(1):u,p=g.indexOf("/");if(p!==-1){let y=g.substring(0,p),x=g.substring(p+1),P=(o=this.config.specialTagPrefixes[y])!=null?o:this.config.specialTagPrefixes[y.toLowerCase()];console.debug("[TG] Tag parse",{tag:u,prefix:y,mappedKey:P,keys:Object.keys(this.config.specialTagPrefixes)}),P&&this.config.metadataParseMode!=="none"?e[P]=x:r.push(u)}else r.push(u);a+=f,s=m,c=!0;continue}}if(!c){a+=s;break}}return[a.trim(),e,r]}extractTimeComponents(t,e){if(!this.timeParsingService)return N(O({},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=N(O({},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),N(O({},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}(?:\\s+\\d{1,2}:\\d{2})?$/.test(s))if(s.includes(" "))o=new Date(s);else{let[u,f,m]=s.split("-").map(Number);o=new Date(u,f-1,m)}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.startDate&&!e.startTime&&!t.dueDate&&e.dueTime&&(r.startDateTime=a(t.startDate,e.dueTime)),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(),d={due:"dueDate",start:"startDate",scheduled:"scheduledDate",completion:"completedDate",created:"createdDate",cancelled:"cancelledDate",id:"id",dependsOn:"dependsOn",onCompletion:"onCompletion",repeat:"recurrence"}[i.toLowerCase()];if(d)i=d;else{let u=i.toLowerCase();for(let[f,m]of Object.entries(this.config.specialTagPrefixes||{}))if(f.toLowerCase()===u){i=m;break}}if(i&&o){let u=t.substring(0,e),f=t.substring(r+1);return[i,o,u+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(x=>o.substring(g).startsWith(x))||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 d=o.substring(0,c).trim(),u;if(e.key==="dependsOn"&&d?u=d.split(",").map(g=>g.trim()).filter(g=>g.length>0).join(","):e.key==="priority"?u=d||e.emoji:u=d||this.getDefaultEmojiValue(e.emoji),["dueDate","startDate","scheduledDate","completedDate","createdDate","cancelledDate"].includes(e.key)&&typeof u=="string"){let g=u.match(/\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{1,2}:\\d{2})?/);g&&(u=g[0])}let f=e.pos+e.emoji.length+i+c,m=t.substring(f);return[e.key,u,r,m]}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=a=>{let s=e.findNextUnprotectedHash(a);if(s===-1)return null;let i=0,o=s-1;for(;o>=0&&t[o]==="\\\\";)i++,o--;if(i%2===1||!this.isValidTagStart(t,s))return r(s+1);let d=t.substring(s+1),u=0;for(let f=0;f<d.length;f++){let m=d[f],g=m.charCodeAt(0);if(g>=48&&g<=57||g>=65&&g<=90||g>=97&&g<=122||m==="/"||m==="-"||m==="_"||g>127&&m!=="\\uFF0C"&&m!=="\\u3002"&&m!=="\\uFF1B"&&m!=="\\uFF1A"&&m!=="\\uFF01"&&m!=="\\uFF1F"&&m!=="\\u300C"&&m!=="\\u300D"&&m!=="\\u300E"&&m!=="\\u300F"&&m!=="\\uFF08"&&m!=="\\uFF09"&&m!=="\\u3010"&&m!=="\\u3011"&&m!==\'"\'&&m!==\'"\'&&m!=="\'"&&m!=="\'"&&m!==" ")u=f+1;else break}if(u>0){let f="#"+d.substring(0,u),m=t.substring(0,s),g=t.substring(s+1+u);return[f,m,g]}return r(s+1)};return r(0)}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[d,u,f]=c;e[d]=u,s=f,o=!0;continue}}if(!o&&this.config.parseTags){let c=this.extractContext(s);if(c){let[d,u,f]=c,[m,g,p]=this.extractTagsOnly(u);for(let y of p)r.push(y);for(let[y,x]of Object.entries(g))e[y]=x;e.context=d,a+=m,s=f,o=!0;continue}}if(!o&&this.config.parseTags){let c=this.extractTag(s);if(c){let[d,u,f]=c,m=d.startsWith("#")?d.substring(1):d,g=m.indexOf("/");if(g!==-1){let p=m.substring(0,g),y=m.substring(g+1),x=(i=this.config.specialTagPrefixes[p])!=null?i:this.config.specialTagPrefixes[p.toLowerCase()];x&&this.config.metadataParseMode!=="none"?e[x]=y:r.push(d)}else r.push(d);a+=u,s=f,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=I.dateCache.get(a);if(s!==void 0)return s;let i=zt(r,this.customDateFormats);if(I.dateCache.size>=I.MAX_CACHE_SIZE){let o=I.dateCache.keys().next().value;o&&I.dateCache.delete(o)}return I.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(){I.dateCache.clear()}static getDateCacheStats(){return{size:I.dateCache.size,maxSize:I.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),d=(r=this.config.specialTagPrefixes[o])!=null?r:this.config.specialTagPrefixes[o.toLowerCase()];d&&this.config.metadataParseMode!=="none"&&(e[d]=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,d,u,f,m,g;let r=p=>{if(p==null||typeof p=="number")return String(p);let y=String(p),x={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(y,10);if(!isNaN(P))return String(P);let E=x[y.toLowerCase()]||x[y];return E!==void 0?String(E):y},a=O({},t);if(a.priority!==void 0&&(a.priority=r(a.priority)),!((i=this.config.fileMetadataInheritance)!=null&&i.enabled)||!((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){let p=!!((d=this.config.projectConfig)!=null&&d.enableEnhancedProject),y=!!((f=(u=this.config.projectConfig)==null?void 0:u.metadataConfig)!=null&&f.enabled);if(!(p&&y))try{let x=(g=(m=this.config.projectConfig)==null?void 0:m.metadataConfig)==null?void 0:g.metadataKey;x&&this.fileMetadata[x]!==void 0&&this.fileMetadata[x]!==null&&String(this.fileMetadata[x]).trim()!==""&&(a.project===void 0||a.project===null||a.project==="")&&(a.project=String(this.fileMetadata[x]).trim())}catch(x){}for(let[x,P]of Object.entries(this.fileMetadata))if(x==="tags"&&Array.isArray(P)){let E=this.parseTagsForMetadata(P);for(let[F,S]of Object.entries(E))!s.has(F)&&(a[F]===void 0||a[F]===null||a[F]==="")&&S!==void 0&&S!==null&&(F==="priority"?a[F]=r(S):a[F]=String(S));if(!s.has("tags")&&(a.tags===void 0||a.tags===null||a.tags==="")){let F=P.map(S=>this.normalizeTag(S));a.tags=JSON.stringify(F)}}else!s.has(x)&&(a[x]===void 0||a[x]===null||a[x]==="")&&P!==void 0&&P!==null&&(x==="priority"?a[x]=r(P):a[x]=String(P))}if(this.projectConfigCache)for(let[p,y]of Object.entries(this.projectConfigCache))!s.has(p)&&(a[p]===void 0||a[p]===null||a[p]==="")&&!(this.fileMetadata&&this.fileMetadata[p]!==void 0)&&y!==void 0&&y!==null&&(p==="priority"?a[p]=r(y):a[p]=String(y));return a}};I.dateCache=new Map,I.MAX_CACHE_SIZE=1e4;var $=I;var ee=(n,t)=>{var i,o,c,d,u,f,m,g,p,y,x,P;let e=((o=(i=t==null?void 0:t.settings)==null?void 0:i.projectTagPrefix)==null?void 0:o[n])||"project",r=((d=(c=t==null?void 0:t.settings)==null?void 0:c.contextTagPrefix)==null?void 0:d[n])||(n==="dataview"?"context":"@"),a=((f=(u=t==null?void 0:t.settings)==null?void 0:u.areaTagPrefix)==null?void 0:f[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 E={};return e&&(E[e]="project",E[String(e).toLowerCase()]="project"),a&&(E[a]="area",E[String(a).toLowerCase()]="area"),r&&(E[r]="context",E[String(r).toLowerCase()]="context"),E})(),maxParseIterations:4e3,maxMetadataIterations:400,maxTagLength:100,maxEmojiValueLength:200,maxStackOperations:4e3,maxStackSize:1e3,maxIndentSize:8,projectConfig:(g=(m=t==null?void 0:t.settings)==null?void 0:m.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:(x=t==null?void 0:t.settings)!=null&&x.enableCustomDateFormats?(P=t==null?void 0:t.settings)==null?void 0:P.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(d=>d.tag);for(let d of this.config.tagsToParseAsTasks){let u=d.startsWith("#")?d:`#${d}`;if(c.some(f=>f===u))try{let f=this.createTaskFromTag(t,u,r,a,s);f&&i.push(f)}catch(f){o.push(`Error creating task from tag ${u} in ${t}: ${f.message}`)}}return{tasks:i,errors:o}}createTaskFromMetadata(t,e,r,a,s,i){let o=this.getTaskContent(a,t),c=`${t}-metadata-${e}`,d=this.determineTaskStatus(e,r),u=d.toLowerCase()==="x",f=this.extractTaskMetadata(t,a,e,r,i);return console.log("metadata",f),{id:c,content:o,filePath:t,line:0,completed:u,status:d,originalMarkdown:`- [${d}] ${o}`,metadata:N(O({},f),{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,d=c.toLowerCase()==="x",u=this.extractTaskMetadata(t,r||{},"tag",e,s);return{id:o,content:i,filePath:t,line:0,completed:d,status:c,originalMarkdown:`- [${c}] ${i}`,metadata:N(O({},u),{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 $(t),this.options=O(O({},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=N(O({},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 $(t)}updateOptions(t){this.options=O(O({},this.options),t)}getOptions(){return O({},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=ee(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=ee(e.preferMetadataFormat,a);try{console.debug("[Task Genius][Worker] incoming prefixes",{preferMetadataFormat:e.preferMetadataFormat,projectTagPrefix:e.projectTagPrefix,contextTagPrefix:e.contextTagPrefix,areaTagPrefix:e.areaTagPrefix}),console.debug("[Task Genius][Worker] specialTagPrefixes keys (before)",Object.keys(s.specialTagPrefixes||{}))}catch(c){}if(s.specialTagPrefixes){let c={};for(let d of Object.keys(s.specialTagPrefixes)){let u=String(d).toLowerCase();u!==d&&!s.specialTagPrefixes[u]&&(c[u]=s.specialTagPrefixes[d])}s.specialTagPrefixes=O(O({},s.specialTagPrefixes),c);try{console.debug("[Task Genius][Worker] specialTagPrefixes keys (after)",Object.keys(s.specialTagPrefixes))}catch(d){}}return e.projectConfig&&e.projectConfig.enableEnhancedProject&&(s.projectConfig=e.projectConfig),new $(s).parseLegacy(t,n,r,void 0,void 0).filter(c=>{let d=e.ignoreHeading?e.ignoreHeading.split(",").map(f=>f.trim().replace(/^#+\\s*/,"")).filter(f=>f):[],u=e.focusHeading?e.focusHeading.split(",").map(f=>f.trim().replace(/^#+\\s*/,"")).filter(f=>f):[];if(d.length>0){if(!c.metadata.heading)return!0;if((Array.isArray(c.metadata.heading)?c.metadata.heading:[c.metadata.heading]).some(m=>d.some(g=>m.toLowerCase().includes(g.toLowerCase()))))return!1}return!(u.length>0&&(!c.metadata.heading||!(Array.isArray(c.metadata.heading)?c.metadata.heading:[c.metadata.heading]).some(m=>u.some(g=>m.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],d=c.match(/^(\\s*[-*+]|\\d+\\.)\\s*\\[(.)\\]\\s*(.*)$/);if(d){let[,,u,f]=d,m=u.toLowerCase()==="x";i.push({id:`${n}-L${o}`,content:f.trim(),filePath:n,line:o,completed:m,status:u,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),N(O({},t),{dailyNotePath:""}));if(!isNaN(r.getTime()))return r.getTime()}function qt(n,t,e,r,a,s){var o,c,d,u;let i=performance.now();try{let f;(o=s==null?void 0:s.fileCache)!=null&&o.frontmatter&&(f=s.fileCache.frontmatter);let m=[];if(e==="canvas"){let p={settings:a};m=new rt(ee(a.preferMetadataFormat,p)).parseCanvasFile(t,n)}else e==="md"?m=oa(n,t,a,f):(console.warn(`Worker: Unsupported file type: ${e} for file: ${n}`),m=[]);if(e==="md"&&a.fileParsingConfig&&(a.fileParsingConfig.enableFileMetadataParsing||a.fileParsingConfig.enableTagBasedTaskParsing||(c=a.fileMetadataInheritance)!=null&&c.enabled))try{let y=new tt(a.fileParsingConfig,(u=(d=a.projectConfig)==null?void 0:d.metadataConfig)==null?void 0:u.detectionMethods).parseFileForTasks(n,t,s==null?void 0:s.fileCache);m.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=m.filter(p=>p.completed).length;try{if((n.startsWith(a.dailyNotePath)||("/"+n).startsWith(a.dailyNotePath))&&a.dailyNotePath&&a.useDailyNotePathAsDate)for(let p of m){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:m,stats:{totalTasks:m.length,completedTasks:g,processingTimeMs:Math.round(performance.now()-i)}}}catch(f){throw console.error(`Worker: Error processing file ${n}:`,f),f}}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 sj(){let n,a,t=new Promise((r,i)=>{n=r,a=i});return t.resolve=n,t.reject=a,t}var gT=xp(dj()),NK={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 fT=class extends uj.Component{constructor(e,t,r={}){super();this.workers=new Map;this.queues=[new gT.Queue,new gT.Queue,new gT.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={...NK,...r},this.vault=e,this.metadataCache=t,this.initializeWorkers()}setFileParsingConfig(e,t){e.enableFileMetadataParsing||e.enableTagBasedTaskParsing?this.fileMetadataParser=new ap(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 RM,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=sj();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),d=0,u=[],p=async()=>{if(u.length!==0&&d<l){d++;let m=u.shift();if(m)try{await m()}catch(h){console.error("Error processing batch task:",h)}finally{d--,await p()}}};for(let m=0;m<r.length;m+=10){let h=r.slice(m,m+10);u.push(async()=>{let g=h.map(async v=>{try{let y=await this.processFile(v,t);return i.set(v.path,y),{file:v,tasks:y}}catch(y){return console.error(`Error processing file ${v.path}:`,y),{file:v,tasks:[]}}}),f=await Promise.all(g);this.processedFiles+=f.length;let k=Math.round(this.processedFiles/this.totalFilesToProcess*100);(k%10===0||this.processedFiles===this.totalFilesToProcess)&&this.log(`Batch progress: ${k}% (${this.processedFiles}/${this.totalFilesToProcess})`)}),p()}for(;d>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 d=[...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);d.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(d),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(),d=e.active?l-e.availableAt:0,u=Math.max(.1,this.options.cpuUtilization)-1,p=Math.max(0,d*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 NM(){return Yf('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 kT=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 Ku(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 NM;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),d=await this.projectConfigManager.getProjectConfigData(o);return{filePath:o,fileMetadata:l||{},configData:d||{}}})),r=Math.ceil(t.length/this.workers.length),i=[];for(let o=0;o<this.workers.length;o++){let l=o*r,d=Math.min(l+r,t.length),u=t.slice(l,d);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 d={tgProject:l.tgProject,enhancedMetadata:l.enhancedMetadata,timestamp:l.timestamp};e.set(l.filePath,d),await this.cache.setProjectData(l.filePath,d)}`${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 LM=require("obsidian");var qf=class{constructor(){this.children=new Map;this.isEndOfPath=!1;this.isFolder=!1}},Gf=class{constructor(){this.root=new qf}insert(a,e=!0){let t=(0,LM.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 qf),r=r.children.get(i);r.isEndOfPath=!0,r.isFolder=e}contains(a){let e=(0,LM.normalizePath)(a).split("/").filter(t=>t.length>0);for(let t=0;t<e.length;t++){let r=this.root;for(let i=t;i<e.length;i++){let s=e[i];if(!r.children.has(s))break;if(r=r.children.get(s),r.isEndOfPath&&r.isFolder)return!0}}return!1}clear(){this.root=new qf}},rp=class{constructor(a){this.folderTrie=new Gf;this.fileSet=new Set;this.patternRegexes=[];this.cache=new Map;this.scopeControls={inlineTasksEnabled:!0,fileTasksEnabled:!0};this.folderTrieInline=new Gf;this.folderTrieFile=new Gf;this.fileSetInline=new Set;this.fileSetFile=new Set;this.patternRegexesInline=[];this.patternRegexesFile=[];this.config=a,this.scopeControls=this.normalizeScopeControls(a.scopeControls),this.rebuildIndexes()}updateConfig(a){this.config=a,this.scopeControls=this.normalizeScopeControls(a.scopeControls),this.rebuildIndexes(),this.clearCache()}normalizeScopeControls(a){return{inlineTasksEnabled:(a==null?void 0:a.inlineTasksEnabled)!==!1,fileTasksEnabled:(a==null?void 0:a.fileTasksEnabled)!==!1}}isScopeEnabled(a){return a==="inline"?this.scopeControls.inlineTasksEnabled!==!1:a==="file"?this.scopeControls.fileTasksEnabled!==!1:this.scopeControls.inlineTasksEnabled!==!1||this.scopeControls.fileTasksEnabled!==!1}shouldIncludeFile(a,e="both"){if(!this.isScopeEnabled(e))return!1;if(!this.config.enabled)return!0;let t=a.path,r=this.getCacheKey("file",t,e);if(this.cache.has(r))return this.cache.get(r);let i=this.evaluateFile(t,e);return this.cache.set(r,i),i}shouldIncludeFolder(a,e="both"){if(!this.isScopeEnabled(e))return!1;if(!this.config.enabled)return!0;let t=a.path,r=this.getCacheKey("folder",t,e);if(this.cache.has(r))return this.cache.get(r);let i=this.evaluateFolder(t,e);return this.cache.set(r,i),i}shouldIncludePath(a,e="both"){if(!this.isScopeEnabled(e))return!1;if(!this.config.enabled)return!0;let t=this.getCacheKey("path",a,e);if(this.cache.has(t))return this.cache.get(t);let r=this.evaluatePath(a,e);return this.cache.set(t,r),r}getStats(){return{cacheSize:this.cache.size,rulesCount:this.config.rules.filter(a=>a.enabled).length,enabled:this.config.enabled}}clearCache(){this.cache.clear()}getCacheKey(a,e,t){return`${a}:${t}:${this.normalizePath(e)}`}evaluateFile(a,e="both"){let t=this.pathMatches(a,e);return this.config.mode==="whitelist"?t:!t}evaluateFolder(a,e="both"){let t=this.pathMatches(a,e);return this.config.mode==="whitelist"?t:!t}evaluatePath(a,e="both"){let t=this.pathMatches(a,e);return this.config.mode==="whitelist"?t:!t}pathMatches(a,e){let t=this.normalizePath(a),r=e==="file"?this.fileSetFile:e==="inline"?this.fileSetInline:this.fileSet,i=e==="file"?this.folderTrieFile:e==="inline"?this.folderTrieInline:this.folderTrie,s=e==="file"?this.patternRegexesFile:e==="inline"?this.patternRegexesInline:this.patternRegexes,o=r.has(t),l=i.contains(t),d=!1;for(let p of s)if(p.test(t)){d=!0;break}return o||l||d}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,"")}};var LK={includeNodeIds:!1,includePositions:!1,nodeSeparator:`
`,preserveLineBreaks:!0},Os=class n{constructor(a,e={}){this.markdownParser=new os(a),this.options={...LK,...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 os(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=tl(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)}};async function pj(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 ap(n.settings.fileParsingConfig,void 0),{tasks:o}=s.parseFileForTasks(a,i,r);return o}var vT=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 d,u,p,m,h,g,f,k,v,y,b,w,T,x,C,S,D;this.queryAPI=new Gu(a,e,t),this.repository=this.queryAPI.getRepository(),this.projectResolver=new oT(a,e,t,i),this.augmentor=new cT({app:a,vault:e,metadataCache:t});try{let E=(u=(d=this.plugin)==null?void 0:d.settings)==null?void 0:u.fileMetadataInheritance,R=(m=(p=this.plugin)==null?void 0:p.settings)==null?void 0:m.projectConfig;this.augmentor.updateSettings({fileMetadataInheritance:E,projectConfig:R})}catch(E){console.warn("[DataflowOrchestrator][init] Failed to sync settings to Augmentor",E)}this.storage=this.repository.getStorage();try{let E=(h=this.plugin.settings)==null?void 0:h.fileFilter;JSON.stringify(E,null,2),E&&(this.fileFilterManager=new rp(E),this.fileFilterManager.getStats(),(f=(g=this.repository).setFileFilterManager)==null||f.call(g,this.fileFilterManager))}catch(E){console.warn("[DataflowOrchestrator] Failed early FileFilterManager init",E)}this.restoreByFilterDebounced=(0,yT.debounce)(()=>{this.restoreByFilter().catch(E=>{console.error("[DataflowOrchestrator] restoreByFilter failed:",E)})},500,!1);let s=new fT(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}});s.updateSettings({projectConfig:this.plugin.settings.projectConfig});let o=new kT({vault:e,metadataCache:t,projectConfigManager:this.projectResolver.getConfigManager()}),l=(x=(T=(y=(v=(k=this.plugin.settings)==null?void 0:k.fileSource)==null?void 0:v.performance)==null?void 0:y.enableWorkerProcessing)!=null?T:(w=(b=this.plugin.settings)==null?void 0:b.fileParsingConfig)==null?void 0:w.enableWorkerProcessing)!=null?x:!0;if(this.workerOrchestrator=new dT(s,o,{enableWorkerProcessing:l}),this.obsidianSource=new uT(a,e,t),this.icsSource=new pT(a,()=>this.plugin.getIcsManager()),this.timeParsingService=new nu(((C=this.plugin.settings)==null?void 0:C.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"}}),(D=(S=this.plugin.settings)==null?void 0:S.fileSource)!=null&&D.enabled){this.fileSource=new $f(a,this.plugin.settings.fileSource,this.fileFilterManager,this.plugin),this.fileFilterManager;try{this.fileSource.syncStatusMappingFromSettings(this.plugin.settings.taskStatuses)}catch(E){console.warn("[DataflowOrchestrator] Failed to sync FileSource status mapping on init",E)}}}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 rp(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 d=await this.storage.loadMeta("filter:suppressedFileTasks");Array.isArray(d)&&(this.suppressedFileTasks=new Set(d)),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(),d=this.vault.getFiles().filter(h=>h.extension==="canvas"),u=[...l,...d];`${u.length}`;let p=50;for(let h=0;h<u.length;h+=p){let g=u.slice(h,h+p);await this.processBatch(g)}await this.repository.persist(),`${(await this.queryAPI.getAllTasks()).length}`}this.subscribeToEvents(),this.obsidianSource.onload(),this.icsSource.initialize().catch(l=>{console.error("[DataflowOrchestrator] IcsSource initialization failed:",l)}),this.fileSource&&this.fileSource.initialize().catch(l=>{console.error("[DataflowOrchestrator] FileSource initialization failed:",l)}),le(this.app,Z.CACHE_READY,{initial:!0,timestamp:Date.now(),seq:kt.next()}),`${Date.now()-a}`}catch(i){throw console.error("[DataflowOrchestrator] Initialization failed:",i),i}}subscribeToEvents(){this.eventRefs.push(Oe(this.app,Z.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(Oe(this.app,Z.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(Oe(this.app,Z.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(Oe(this.app,Z.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(Oe(this.app,Z.TASK_UPDATED,async a=>{let{task:e}=a;e&&(`${e.id}${e.filePath}`,await this.repository.updateSingleTask(e))})),this.eventRefs.push(Oe(this.app,Z.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(Oe(this.app,Z.FILE_TASK_UPDATED,async a=>{let{task:e}=a;`${e==null?void 0:e.filePath}`,e&&await this.repository.updateFileTask(e)})),this.eventRefs.push(Oe(this.app,Z.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),d=await this.vault.cachedRead(a),u,p=!1;if(!e&&o&&l&&this.storage.isRawValid(t,o,d,s)){`${t}`,u=l.data;let m=this.fileFilterManager?this.fileFilterManager.shouldIncludePath(t,"inline"):!0;m||(u=[])}else{p=!0;let m,h;if(!e&&o&&this.storage.isRawValid(t,o,d,s)){`${t}`;let k=this.fileFilterManager?this.fileFilterManager.shouldIncludePath(t,"inline"):!0;m=k?o.data:[],h=await this.projectResolver.get(t)}else{e?`${t}`:`${t}`,h=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 k=this.fileFilterManager?this.fileFilterManager.shouldIncludePath(t,"inline"):!0;k?m=await this.workerOrchestrator.parseFileTasks(a,"high"):m=[],await this.storage.storeRaw(t,m,d,s)}await this.storage.storeProject(t,{tgProject:h.tgProject,enhancedMetadata:h.enhancedMetadata});let g=this.metadataCache.getFileCache(a),f={filePath:t,fileMeta:(g==null?void 0:g.frontmatter)||{},projectName:(r=h.tgProject)==null?void 0:r.name,projectMeta:{...h.enhancedMetadata,tgProject:h.tgProject},tasks:m};u=await this.augmentor.merge(f)}this.lastProcessedSeq=kt.next(),await this.repository.updateFile(t,u,this.lastProcessedSeq)}catch(i){console.error(`Error processing file ${t}:`,i),le(this.app,Z.FILE_UPDATED,{path:t,reason:"error",error:i.message,timestamp:Date.now()})}}updateSettings(a){var r,i,s,o,l,d,u,p,m,h,g,f,k,v,y,b,w,T,x,C,S,D,E,R;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:((d=I==null?void 0:I.configFile)==null?void 0:d.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:(h=I==null?void 0:I.enableEnhancedProject)!=null?h:!1,metadataConfigEnabled:(f=(g=I==null?void 0:I.metadataConfig)==null?void 0:g.enabled)!=null?f:!1,configFileEnabled:(v=(k=I==null?void 0:I.configFile)==null?void 0:k.enabled)!=null?v:!1,detectionMethods:((y=I==null?void 0:I.metadataConfig)==null?void 0:y.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((b=a==null?void 0:a.fileSource)!=null&&b.enabled&&!this.fileSource){this.fileSource=new $f(this.app,a.fileSource,this.fileFilterManager,this.plugin),this.fileSource.initialize().catch(I=>{console.error("[DataflowOrchestrator] FileSource initialization failed:",I)});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=(T=this.workerOrchestrator)==null?void 0:T.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 rp(a.fileFilter),(C=(x=this.repository).setFileFilterManager)==null||C.call(x,this.fileFilterManager),t=!0),t){let I=!!((S=a==null?void 0:a.fileFilter)!=null&&S.enabled),H=Array.isArray((D=a==null?void 0:a.fileFilter)==null?void 0:D.rules)?a.fileFilter.rules.filter(U=>U==null?void 0:U.enabled).length:0;(E=a==null?void 0:a.fileFilter)==null||E.mode,this.lastFileFilterEnabled=I,this.pruneByFilter().catch(U=>{console.error("[DataflowOrchestrator] pruneByFilter failed:",U)}),(R=this.restoreByFilterDebounced)==null||R.call(this)}}async pruneByFilter(){var a,e,t,r,i,s;if(this.fileFilterManager)try{let o=Date.now(),l=await this.repository.getIndexedFilePaths(),d=new Map,u=0;for(let g of l)this.fileFilterManager.shouldIncludePath(g,"inline")||d.set(g,[]);if(d.size>0){await this.repository.updateBatch(d,void 0,{persist:!1,forceEmit:!0});for(let g of d.keys())this.suppressedInline.add(g),u++}let p=((e=(a=this.repository).getFileTaskPaths)==null?void 0:e.call(a))||[],m=0;for(let g of p)this.fileFilterManager.shouldIncludePath(g,"file")||(await this.repository.removeFileTask(g),this.suppressedFileTasks.add(g),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(g){console.warn("[DataflowOrchestrator] persist suppressed meta after prune failed",g)}let h=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(h=>{var g;return(g=this.fileFilterManager)==null?void 0:g.shouldIncludePath(h,"inline")}),o=Array.from(this.suppressedFileTasks).filter(h=>{var g;return(g=this.fileFilterManager)==null?void 0:g.shouldIncludePath(h,"file")});if(s.length===0)try{let h=new Set(await this.repository.getIndexedFilePaths()),g=await((e=(a=this.storage).listAugmentedPaths)==null?void 0:e.call(a))||[],f=await((r=(t=this.storage).listRawPaths)==null?void 0:r.call(t))||[],k=new Set([...g,...f]);s=Array.from(k).filter(v=>{var y;return!h.has(v)&&((y=this.fileFilterManager)==null?void 0:y.shouldIncludePath(v,"inline"))}),s.length}catch(h){console.warn("[DataflowOrchestrator] fallback candidate discovery failed",h)}let l=0,d=0,u=0,p=async h=>{var g,f;for(let k of h)try{let v=this.vault.getAbstractFileByPath(k);if(!v){this.suppressedInline.delete(k);continue}let y=await this.storage.loadAugmented(k);if(((g=y==null?void 0:y.data)==null?void 0:g.length)!==void 0){await this.repository.updateFile(k,y.data,void 0,{forceEmit:!0}),l++,this.suppressedInline.delete(k);continue}let b=await this.storage.loadRaw(k);if(b!=null&&b.data){let w=await this.projectResolver.get(k),T=this.metadataCache.getFileCache(v),x={filePath:k,fileMeta:(T==null?void 0:T.frontmatter)||{},projectName:(f=w.tgProject)==null?void 0:f.name,projectMeta:{...w.enhancedMetadata,tgProject:w.tgProject},tasks:b.data},C=await this.augmentor.merge(x);await this.repository.updateFile(k,C),d++,this.suppressedInline.delete(k);continue}await this.processFileImmediate(v,!1),u++,this.suppressedInline.delete(k)}catch(v){try{await this.storage.saveMeta("filter:suppressedInline",Array.from(this.suppressedInline)),await this.storage.saveMeta("filter:suppressedFileTasks",Array.from(this.suppressedFileTasks))}catch(y){console.warn("[DataflowOrchestrator] persist suppressed meta failed",y)}console.warn("[DataflowOrchestrator] restore inline failed",{path:k,e:v})}};for(let h=0;h<s.length;h+=this.RESTORE_BATCH_SIZE){let g=s.slice(h,h+this.RESTORE_BATCH_SIZE);await p(g),h+this.RESTORE_BATCH_SIZE<s.length&&await new Promise(f=>setTimeout(f,this.RESTORE_BATCH_INTERVAL_MS))}for(let h of o)try{le(this.app,Z.FILE_UPDATED,{path:h,reason:"restore",timestamp:Date.now()}),this.suppressedFileTasks.delete(h)}catch(g){console.warn("[DataflowOrchestrator] restore file-task emit failed",{path:h,e:g})}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=tl(this.plugin.settings.preferMetadataFormat||"tasks",this.plugin);console.debug("[Task Genius] Parser specialTagPrefixes:",l.specialTagPrefixes);let u=new el(l,this.timeParsingService).parseLegacy(i,a.path,o,void 0,e);r.push(...u);let p=await pj(this.plugin,a.path);r.push(...p)}else if(t==="canvas"){let i=await Os.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"),d=new Map;for(let u of a)d.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;if(!(this.fileFilterManager?this.fileFilterManager.shouldIncludePath(u,"inline"):!0)){t.set(u,[]);continue}let g=await this.vault.adapter.stat(u),f=g==null?void 0:g.mtime,k=await this.vault.cachedRead(m),v=this.storage.storeRaw(u,p,k,f),y=await d.get(u);await v;let b=this.metadataCache.getFileCache(m),w={filePath:u,fileMeta:(b==null?void 0:b.frontmatter)||{},projectName:(s=y==null?void 0:y.tgProject)==null?void 0:s.name,projectMeta:y?{...y.enhancedMetadata||{},tgProject:y.tgProject}:{},tasks:p},T=await this.augmentor.merge(w);t.set(u,T)}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=kt.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,d=await this.vault.adapter.stat(o.path),u=d==null?void 0:d.mtime,p=await this.storage.loadRaw(l),m=await this.vault.cachedRead(o);if(!(this.fileFilterManager?this.fileFilterManager.shouldIncludePath(l,"inline"):!0)){e.set(l,[]),r++;continue}let g=await this.storage.loadAugmented(l);if(p&&g&&this.storage.isRawValid(l,p,m,u)){let f=g.data;e.set(l,f),r++}else if(p&&this.storage.isRawValid(l,p,m,u)){let f=p.data,k=await this.projectResolver.get(l),v=this.metadataCache.getFileCache(o),y={filePath:l,fileMeta:(v==null?void 0:v.frontmatter)||{},projectName:(i=k.tgProject)==null?void 0:i.name,projectMeta:{...k.enhancedMetadata,tgProject:k.tgProject},tasks:f},b=await this.augmentor.merge(y);e.set(l,b),r++}else{let f=await this.projectResolver.get(l),k=this.fileFilterManager?this.fileFilterManager.shouldIncludePath(l,"inline"):!0,v=k?await this.parseFile(o,f.tgProject):[];await this.storage.storeRaw(l,v,m,u);let y=this.metadataCache.getFileCache(o),b={filePath:l,fileMeta:(y==null?void 0:y.frontmatter)||{},projectName:(s=f.tgProject)==null?void 0:s.name,projectMeta:{...f.enhancedMetadata,tgProject:f.tgProject},tasks:v},w=await this.augmentor.merge(b);e.set(l,w)}}catch(l){console.error(`Error processing file ${o.path} sequentially:`,l)}return r}async removeFile(a){await this.repository.removeFile(a)}async renameFile(a,e){await this.removeFile(a);let t=this.vault.getAbstractFileByPath(e);t instanceof yT.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(),le(this.app,Z.CACHE_READY,{initial:!1,timestamp:Date.now(),seq:kt.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"),le(this.app,Z.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 mj(n,a,e,t,r){let i=Date.now(),s=new vT(n,a,e,t,r);t.dataflowOrchestrator=s;try{await s.initialize(),`${Date.now()-i}`}catch(o){throw console.error("[createDataflow] Failed to initialize orchestrator:",o),t.dataflowOrchestrator===s&&(t.dataflowOrchestrator=void 0),o}return s}function ip(n){var a;return(a=n.settings.enableIndexer)!=null?a:!0}var gj=require("obsidian");var hj=require("obsidian"),bT=class extends hj.Component{constructor(){super(...arguments);this.timers=new Map;this.startPositions=new Map;this.activeElements=new Set}startDetection(e,t){let r=t.threshold||500,i=t.moveTolerance||10;this.stopDetection(e);let s=u=>{if(this.timers.has(e))return;let p=u.touches[0];if(!p)return;this.startPositions.set(e,{x:p.clientX,y:p.clientY}),t.onLongPressStart&&t.onLongPressStart();let m=window.setTimeout(()=>{this.timers.delete(e),this.startPositions.delete(e),t.onLongPress()},r);this.timers.set(e,m)},o=u=>{if(!this.timers.get(e))return;let m=u.touches[0];if(!m)return;let h=this.startPositions.get(e);if(!h)return;let g=Math.abs(m.clientX-h.x),f=Math.abs(m.clientY-h.y);(g>i||f>i)&&this.cancelDetection(e,t)},l=()=>{this.cancelDetection(e,t)},d=()=>{this.cancelDetection(e,t)};this.registerDomEvent(e,"touchstart",s,{passive:!0}),this.registerDomEvent(e,"touchmove",o,{passive:!0}),this.registerDomEvent(e,"touchend",l),this.registerDomEvent(e,"touchcancel",d),this.activeElements.add(e)}stopDetection(e){let t=this.timers.get(e);t&&(clearTimeout(t),this.timers.delete(e)),this.startPositions.delete(e),this.activeElements.delete(e)}cancelDetection(e,t){let r=this.timers.get(e);r&&(clearTimeout(r),this.timers.delete(e),this.startPositions.delete(e),t.onLongPressCancel&&t.onLongPressCancel())}cleanup(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),this.startPositions.clear(),this.activeElements.clear()}onunload(){this.cleanup()}};var Ns=class extends gj.Component{constructor(e,t,r){super();this.app=e;this.plugin=t;this.view=r;this.taskCache=new Map;this.selectionState={selectedTaskIds:new Set,isSelectionMode:!1},this.longPressDetector=new bT,this.addChild(this.longPressDetector)}getSelectionState(){return{selectedTaskIds:new Set(this.selectionState.selectedTaskIds),isSelectionMode:this.selectionState.isSelectionMode,selectionModeStartTime:this.selectionState.selectionModeStartTime}}get isSelectionMode(){return this.selectionState.isSelectionMode}toggleSelection(e){this.selectionState.selectedTaskIds.has(e)?this.deselectTask(e):this.selectTask(e)}selectTask(e){this.selectionState.selectedTaskIds.add(e),this.notifySelectionChanged()}deselectTask(e){this.selectionState.selectedTaskIds.delete(e),this.notifySelectionChanged(),this.selectionState.selectedTaskIds.size===0&&this.selectionState.isSelectionMode&&this.exitSelectionMode("operation_complete")}selectAll(e){for(let t of e)this.selectionState.selectedTaskIds.add(t);this.notifySelectionChanged()}clearSelection(){this.selectionState.selectedTaskIds.clear(),this.notifySelectionChanged()}isTaskSelected(e){return this.selectionState.selectedTaskIds.has(e)}getSelectedCount(){return this.selectionState.selectedTaskIds.size}getSelectedTaskIds(){return Array.from(this.selectionState.selectedTaskIds)}getSelectedTasks(){let e=[];for(let t of this.selectionState.selectedTaskIds){let r=this.taskCache.get(t);r&&e.push(r)}return e}updateTaskCache(e){this.taskCache.clear();for(let t of e)this.taskCache.set(t.id,t)}enterSelectionMode(){this.selectionState.isSelectionMode||(this.selectionState.isSelectionMode=!0,this.selectionState.selectionModeStartTime=Date.now(),this.notifySelectionModeChanged("user_action"))}exitSelectionMode(e="user_action"){this.selectionState.isSelectionMode&&(this.selectionState.isSelectionMode=!1,this.selectionState.selectionModeStartTime=void 0,this.clearSelection(),this.notifySelectionModeChanged(e))}notifySelectionChanged(){let e={selectedTaskIds:this.getSelectedTaskIds(),isSelectionMode:this.selectionState.isSelectionMode,count:this.getSelectedCount()};this.app.workspace.trigger("task-genius:selection-changed",e)}notifySelectionModeChanged(e){let t={isSelectionMode:this.selectionState.isSelectionMode,reason:e};this.app.workspace.trigger("task-genius:selection-mode-changed",t)}onunload(){this.clearSelection(),this.taskCache.clear()}};var Po="task-genius-specific-view",wT=class extends qn.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,qn.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 qn.Scope(this.app.scope),(r=this.scope)==null||r.register(null,"escape",i=>{var s;if((s=this.selectionManager)!=null&&s.isSelectionMode)return i.preventDefault(),i.stopPropagation(),this.selectionManager.exitSelectionMode("user_action"),!1})}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 Po}getDisplayText(){return xt(this.plugin,this.currentViewId).name}getIcon(){return xt(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,qn.debounce)(async()=>{await this.loadTasks(!1,!1)},150);ip(this.plugin)&&this.plugin.dataflowOrchestrator?(this.registerEvent(Oe(this.app,Z.CACHE_READY,async()=>{await this.loadTasksFast(!1)})),this.registerEvent(Oe(this.app,Z.TASK_CACHE_UPDATED,e))):this.registerEvent(this.app.workspace.on("task-genius:task-cache-updated",e)),this.registerEvent(this.app.workspace.on("task-genius:filter-changed",(l,d)=>{d===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(!1),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 qn.ExtraButtonComponent(l).setIcon("check-square").setTooltip(c("Capture")).onClick(()=>{new ft(this.plugin.app,this.plugin,{},!0).open()})}),this.tabActionButton&&this.register(()=>{this.tabActionButton.detach()})}initializeComponents(){this.selectionManager=new Ns(this.plugin.app,this.plugin),this.addChild(this.selectionManager),this.contentComponent=new Ps(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)},selectionManager:this.selectionManager}),this.addChild(this.contentComponent),this.contentComponent.load(),this.forecastComponent=new pn(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 Is(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 As(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 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.reviewComponent),this.reviewComponent.load(),this.reviewComponent.containerEl.hide(),this.calendarComponent=new sn(this.plugin.app,this.plugin,this.rootContainerEl,this.tasks,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onEventContextMenu:(e,t)=>{var i;let r=(i=t==null?void 0:t.metadata)==null?void 0:i.originalTask;r?this.handleTaskContextMenu(e,r):this.handleTaskContextMenu(e,t)}}),this.addChild(this.calendarComponent),this.calendarComponent.load(),this.calendarComponent.containerEl.hide(),this.kanbanComponent=new nn(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 on(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 Rs(this.plugin,this.rootContainerEl),this.addChild(this.habitsComponent),this.habitsComponent.containerEl.hide(),this.detailsComponent=new qi(this.rootContainerEl,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.viewComponentManager=new ys(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",c("Details"),()=>{this.toggleDetailsVisibility(!this.isDetailsVisible)}),this.detailsToggleBtn.toggleClass("panel-toggle-btn",!0),this.detailsToggleBtn.toggleClass("is-active",this.isDetailsVisible),this.addAction("notebook-pen",c("Capture"),()=>{new ft(this.plugin.app,this.plugin,{},!0).open()}),this.addAction("filter",c("Filter"),e=>{if(fj.Platform.isDesktop){let t=new Mo(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 Eo(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(c("Reset Filter")),t.setIcon("reset"),t.onClick(()=>{this.resetCurrentFilter()})}),e.addSeparator()),e.addItem(t=>{t.setTitle(c("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?c("Hide Details"):c("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,d;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=xt(this.plugin,e);if(((l=o.specificConfig)==null?void 0:l.viewType)==="twocolumn"){if(!this.twoColumnViewComponents.has(e)){let u=o.specificConfig,p=new un(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,h)=>{this.handleTaskContextMenu(m,h)},this.twoColumnViewComponents.set(e,p)}i=this.twoColumnViewComponents.get(e)}else{let u=(d=o.specificConfig)==null?void 0:d.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=cr(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(cr(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=cr(this.tasks,u.getViewId(),this.plugin,p);u.getViewId()==="forecast"&&(m=m.filter(h=>!h.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=xt(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=xt(this.plugin,this.currentViewId);this.leaf.setEphemeralState({title:e.name,icon:e.icon})}handleTaskContextMenu(e,t){let r=new qn.Menu;r.addItem(i=>{i.setTitle(c("Complete")),i.setIcon("check-square"),i.onClick(()=>{this.toggleTaskCompletion(t)})}).addItem(i=>{i.setIcon("square-pen"),i.setTitle(c("Switch status"));let s=i.setSubmenu(),o=this.plugin.settings.taskStatusMarks,l=new Map;for(let d of Object.keys(o)){let u=o[d];Array.from(l.values()).includes(u)||l.set(d,u)}for(let[d,u]of l)s.addItem(p=>{p.titleEl.createEl("span",{cls:"status-option-checkbox"},m=>{gt(u,t,m)}),p.titleEl.createEl("span",{cls:"status-option",text:d}),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(c("Edit")),i.setIcon("pencil"),i.onClick(()=>{this.handleTaskSelection(t)})}).addItem(i=>{i.setTitle(c("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,!0),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,!0),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",c("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,d;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=(d=t.metadata)==null?void 0:d[u];if(u==="tags"){let h=p||[],g=m||[];(h.length!==g.length||!h.every((f,k)=>f===g[k]))&&(i.tags=g,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(){var e;(e=this.selectionManager)!=null&&e.isSelectionMode&&this.selectionManager.exitSelectionMode("view_change"),this.twoColumnViewComponents.forEach(t=>{this.removeChild(t)}),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 TT=class extends Io.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,c(r.name),r.icon)}),e.length>0&&t.length>0&&this.createNavSpacer(),t.forEach(r=>{this.createNavItem(r.id,c(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,Io.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 d;let l=new Io.Menu;l.addItem(u=>{u.setTitle(c("Open in new tab")).onClick(()=>{this.app.workspace.getLeaf().setViewState({type:Po,state:{viewId:e}})})}).addItem(u=>{u.setTitle(c("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(h=>h.id===e);if(!p)return;let m=(p==null?void 0:p.filterRules)||{};new gn(this.app,this.plugin,p,m,(h,g)=>{let f=this.plugin.settings.viewConfiguration.findIndex(k=>k.id===h.id);f!==-1&&(this.plugin.settings.viewConfiguration[f]={...h,filterRules:g},this.plugin.saveSettings(),this.updateActiveItem())}).open()})}).addItem(u=>{u.setTitle(c("Copy view")).onClick(()=>{let p=this.plugin.settings.viewConfiguration.find(m=>m.id===e);p&&new gn(this.app,this.plugin,null,null,(m,h)=>{this.plugin.settings.viewConfiguration.some(g=>g.id===m.id)?new Io.Notice(c("Error: View ID already exists.")):(this.plugin.settings.viewConfiguration.push({...m,filterRules:h}),this.plugin.saveSettings(),this.renderSidebarItems(),new Io.Notice(c("View copied successfully: ")+m.name))},p,p.id).open()})}).addItem(u=>{u.setTitle(c("Hide in sidebar")).onClick(()=>{let p=this.plugin.settings.viewConfiguration.find(m=>m.id===e);p&&(p.visible=!1,this.plugin.saveSettings(),this.renderSidebarItems())})}),((d=this.plugin.settings.viewConfiguration.find(u=>u.id===e))==null?void 0:d.type)==="custom"&&l.addItem(u=>{u.setTitle(c("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()}};z();var Gn="task-genius-view",Kf=class n extends Wt.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,Wt.debounce)(()=>{this.applyCurrentFilter()},400);this.handleKanbanTaskStatusUpdate=async(e,t)=>{`${e}${t}`;let r=this.tasks.find(i=>i.id===e);if(r){let i=this.isCompletedMark(t),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.selectionManager=new Ns(this.app,this.plugin),this.addChild(this.selectionManager),this.scope=new Wt.Scope(this.app.scope),(r=this.scope)==null||r.register(null,"escape",i=>{this.selectionManager.isSelectionMode&&(i.preventDefault(),i.stopPropagation(),this.selectionManager.exitSelectionMode("escape"))})}getViewType(){return Gn}getDisplayText(){return xt(this.plugin,this.currentViewId).name}getIcon(){return xt(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,Wt.debounce)(async()=>{await this.loadTasks(!1,!0),this.switchView(this.currentViewId,void 0,!0)},500);ip(this.plugin)&&this.plugin.dataflowOrchestrator?(this.registerEvent(Oe(this.app,Z.CACHE_READY,async()=>{await this.loadTasksFast(!1)})),this.registerEvent(Oe(this.app,Z.TASK_CACHE_UPDATED,e))):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 d,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=(d=this.plugin.settings.viewConfiguration.find(m=>m.visible))==null?void 0:d.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.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.createTaskMark(),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 Wt.ExtraButtonComponent(o).setIcon("notebook-pen").setTooltip(c("Capture")).onClick(()=>{new ft(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 d=this.plugin.app.workspace.getLeavesOfType(Gn);return d.length>0?(this.plugin.app.workspace.revealLeaf(d[0]),d[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 TT(this.rootContainerEl,this.plugin),this.addChild(this.sidebarComponent),this.sidebarComponent.load(),this.createSidebarToggle(),this.contentComponent=new Ps(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},selectionManager:this.selectionManager,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 pn(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 Is(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 As(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 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.reviewComponent),this.reviewComponent.load(),this.reviewComponent.containerEl.hide(),this.calendarComponent=new sn(this.plugin.app,this.plugin,this.rootContainerEl,this.tasks,{onTaskSelected:e=>{this.handleTaskSelection(e)},onTaskCompleted:e=>{this.toggleTaskCompletion(e)},onEventContextMenu:(e,t)=>{var i;let r=(i=t==null?void 0:t.metadata)==null?void 0:i.originalTask;r?this.handleTaskContextMenu(e,r):this.handleTaskContextMenu(e,t)}}),this.addChild(this.calendarComponent),this.calendarComponent.load(),this.calendarComponent.containerEl.hide(),this.kanbanComponent=new nn(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 on(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 Rs(this.plugin,this.rootContainerEl),this.addChild(this.habitComponent),this.habitComponent.containerEl.hide(),this.detailsComponent=new qi(this.rootContainerEl,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.viewComponentManager=new ys(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 Wt.ButtonComponent(this.sidebarToggleBtn).setIcon("panel-left-dashed").setTooltip(c("Toggle Sidebar")).setClass("clickable-icon").onClick(()=>{this.toggleSidebar()})}createTaskMark(){var e;(e=this.plugin.workspaceManager)!=null&&e.isFeatureHidden("task-mark")||this.titleEl.setText(c("{{num}} Tasks",{interpolation:{num:this.tasks.length}}))}createActionButtons(){var e,t,r;if((e=this.plugin.workspaceManager)!=null&&e.isFeatureHidden("details-panel")||(this.detailsToggleBtn=this.addAction("panel-right-dashed",c("Details"),()=>{this.toggleDetailsVisibility(!this.isDetailsVisible)}),this.detailsToggleBtn.toggleClass("panel-toggle-btn",!0),this.detailsToggleBtn.toggleClass("is-active",this.isDetailsVisible)),(t=this.plugin.workspaceManager)!=null&&t.isFeatureHidden("quick-capture")||this.addAction("notebook-pen",c("Capture"),()=>{new ft(this.plugin.app,this.plugin,{},!0).open()}),(r=this.plugin.workspaceManager)!=null&&r.isFeatureHidden("filter")){this.updateActionButtons();return}this.addAction("filter",c("Filter"),i=>{if(Wt.Platform.isDesktop){let s=new Mo(this.plugin.app,void 0,this.plugin);s.onClose=o=>{},this.app.workspace.onLayoutReady(()=>{setTimeout(()=>{if(this.liveFilterState&&s.taskFilterComponent){let o=this.liveFilterState;s.taskFilterComponent.loadFilterState(o)}},100)}),s.showAtPosition({x:i.clientX,y:i.clientY})}else{let s=new Eo(this.plugin.app,this.leaf.id,this.plugin);s.filterCloseCallback=o=>{},s.open(),this.liveFilterState&&s.taskFilterComponent&&setTimeout(()=>{let o=this.liveFilterState;s.taskFilterComponent.loadFilterState(o)},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(c("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(c("Manage Saved Filters")),s.setIcon("settings"),s.onClick(()=>{new zc(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(c("Reset Filter")),r.setIcon("reset"),r.onClick(()=>{this.resetCurrentFilter()})}),e.addSeparator()),e.addItem(r=>{r.setTitle(c("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(c("Reindex")),r.setIcon("rotate-ccw"),r.onClick(async()=>{new oa(this.plugin,{title:c("Reindex"),message:c("Are you sure you want to force reindex all tasks?"),confirmText:c("Reindex"),cancelText:c("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 Wt.Notice(c("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?c("Hide Details"):c("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,d;this.selectionManager.isSelectionMode&&this.selectionManager.exitSelectionMode("view_change"),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=xt(this.plugin,e);if(((l=o.specificConfig)==null?void 0:l.viewType)==="twocolumn"){if(!this.twoColumnViewComponents.has(e)){let u=o.specificConfig,p=new un(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,h)=>{this.handleTaskContextMenu(m,h)},this.twoColumnViewComponents.set(e,p)}i=this.twoColumnViewComponents.get(e)}else{let u=(d=o.specificConfig)==null?void 0:d.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=cr(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(cr(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=cr(this.tasks,u.getViewId(),this.plugin,p);u.getViewId()==="forecast"&&(m=m.filter(h=>!h.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,Wt.setIcon)(this.leaf.tabHeaderInnerIconEl,this.getIcon()),this.leaf.tabHeaderInnerTitleEl.setText(this.getDisplayText()),this.titleEl.setText(this.getDisplayText()))}updateHeaderDisplay(){let e=xt(this.plugin,this.currentViewId);this.leaf.setEphemeralState({title:e.name,icon:e.icon})}handleTaskContextMenu(e,t){let r=new Wt.Menu;r.addItem(i=>{i.setTitle(c("Complete")),i.setIcon("check-square"),i.onClick(()=>{this.toggleTaskCompletion(t)})}).addItem(i=>{i.setIcon("square-pen"),i.setTitle(c("Switch status"));let s=i.setSubmenu(),o=this.plugin.settings.taskStatusMarks,l=new Map;for(let d of Object.keys(o)){let u=o[d];Array.from(l.values()).includes(u)||l.set(d,u)}for(let[d,u]of l)s.addItem(p=>{p.titleEl.createEl("span",{cls:"status-option-checkbox"},m=>{gt(u,t,m)}),p.titleEl.createEl("span",{cls:"status-option",text:d}),p.onClick(async()=>{let m=this.isCompletedMark(u),h={...t,status:u,completed:m};!t.completed&&m?h.metadata.completedDate=Date.now():t.completed&&!m&&(h.metadata.completedDate=void 0),await this.updateTask(t,h)})})}).addSeparator().addItem(i=>{i.setTitle(c("Edit")),i.setIcon("pencil"),i.onClick(()=>{this.handleTaskSelection(t)})}).addItem(i=>{i.setTitle(c("Edit in File")),i.setIcon("pencil"),i.onClick(()=>{this.editTask(t)})}).addSeparator().addItem(i=>{i.setTitle(c("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",c("Reset Filter"),()=>{this.resetCurrentFilter()}).addClass("task-filter-reset")}isCompletedMark(e){var t;if(!e)return!1;try{let r=e.toLowerCase();if(String(((t=this.plugin.settings.taskStatuses)==null?void 0:t.completed)||"x").split("|").map(l=>l.trim().toLowerCase()).filter(Boolean).includes(r))return!0;let o=this.plugin.settings.taskStatuses;if(o){for(let[l,d]of Object.entries(o))if(String(d).split("|").map(p=>p.trim().toLowerCase()).filter(Boolean).includes(r))return l.toLowerCase()==="completed"}}catch(r){}return!1}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||" ";this.isCompletedMark(t.status)&&(t.status=r)}await this.updateTask(e,t)}extractChangedFields(e,t){var l,d;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=(d=t.metadata)==null?void 0:d[u];if(u==="tags"){let h=p||[],g=m||[];(h.length!==g.length||!h.every((f,k)=>f===g[k]))&&(i.tags=g,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 Wt.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 Wt.Menu;s.addItem(o=>{o.setTitle(c("Delete task only")),o.setIcon("trash"),o.onClick(()=>{this.deleteTask(t,!1)})}),s.addItem(o=>{o.setTitle(c("Delete task and all subtasks")),o.setIcon("trash-2"),o.onClick(()=>{this.deleteTask(t,!0)})}),s.addSeparator(),s.addItem(o=>{o.setTitle(c("Cancel")),o.onClick(()=>{})}),s.showAtMouseEvent(e)}else new oa(this.plugin,{title:c("Delete Task"),message:c("Are you sure you want to delete this task?"),confirmText:c("Delete"),cancelText:c("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 Wt.Notice(c("Failed to delete task"));return}try{let i=await this.plugin.writeAPI.deleteTask({taskId:e.id,deleteChildren:t});if(i.success){new Wt.Notice(c("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(d=>d.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 Wt.Notice(c("Failed to delete task")+": "+(i.error||"Unknown error"))}catch(i){console.error("Error deleting task:",i),new Wt.Notice(c("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 Wt.Notice(c("Filter applied: ")+e.name)}};var pt=require("obsidian");z();var qc="tg-timeline-sidebar-view",xT={due:4,scheduled:3,start:2,completed:1},Qf=class extends pt.ItemView{constructor(e,t){super(e);this.markdownEditor=null;this.currentDate=(0,pt.moment)();this.events=[];this.isAutoScrolling=!1;this.isInputCollapsed=!1;this.tempEditorContent="";this.isAnimating=!1;this.collapsedHeaderEl=null;this.quickInputHeaderEl=null;this.debouncedRender=(0,pt.debounce)(async()=>{await this.loadEvents(),this.renderTimeline()},300);this.debouncedScroll=(0,pt.debounce)(this.handleScroll.bind(this),100);this.plugin=t}getViewType(){return qc}getDisplayText(){return c("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(c("Timeline"));let r=e.createDiv("timeline-controls"),i=r.createDiv("timeline-btn timeline-today-btn");(0,pt.setIcon)(i,"calendar"),i.setAttribute("aria-label",c("Go to today")),this.registerDomEvent(i,"click",()=>{this.scrollToToday()});let s=r.createDiv("timeline-btn timeline-refresh-btn");(0,pt.setIcon)(s,"refresh-cw"),s.setAttribute("aria-label",c("Refresh")),this.registerDomEvent(s,"click",()=>{this.loadEvents(),this.renderTimeline()});let o=r.createDiv("timeline-btn timeline-focus-btn");(0,pt.setIcon)(o,"focus"),o.setAttribute("aria-label",c("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,pt.setIcon)(t,"chevron-down"),t.setAttribute("aria-label",c("Collapse quick input")),this.registerDomEvent(t,"click",()=>{this.toggleInputCollapse()}),e.createDiv("quick-input-title").setText(c("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,h;this.markdownEditor=cs(this.app,s,{placeholder:c("What do you want to do today?"),onEnter:(g,f,k)=>f?(this.handleQuickCapture(),!0):!1,onEscape:()=>{this.markdownEditor&&this.markdownEditor.set("",!1)},onChange:()=>{}}),this.isInputCollapsed||(h=(m=this.markdownEditor)==null?void 0:m.editor)==null||h.focus()},50);let o=this.quickInputContainerEl.createDiv("quick-input-actions"),l=o.createEl("button",{cls:"quick-capture-btn mod-cta",text:c("Capture")});this.registerDomEvent(l,"click",()=>{this.handleQuickCapture()});let d=o.createEl("button",{cls:"quick-modal-btn",text:c("More options")});this.registerDomEvent(d,"click",()=>{new ft(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,h;let l=((p=o.source)==null?void 0:p.type)==="ics",d=l?o:null,u=((h=(m=d==null?void 0:d.icsEvent)==null?void 0:m.source)==null?void 0:h.showType)==="badge";return!(l&&u)}).forEach(o=>{this.extractDatesFromTask(o).forEach(({date:d,type:u})=>{let p={id:`${o.id}-${u}`,content:o.content,time:d,type:"task",status:o.status,task:o,isToday:(0,pt.moment)(d).isSame((0,pt.moment)(),"day"),timeInfo:this.createTimeInfoFromTask(o,d,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,pt.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 d=xT[l.type]||0,u=xT[o.type]||0;return d>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,d;switch(r){case"start":l=s.startTime,s.endTime&&(o!=null&&o.endDateTime)&&(d=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)&&(d=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||!!d;if(l.isRange&&!d&&l.rangePartner){let m=new Date(t);m.setHours(l.rangePartner.hour,l.rangePartner.minute,l.rangePartner.second||0,0),d=m}return{primaryTime:u,endTime:d,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((d,u)=>{let p=xT[u.type]||0,m=xT[d.type]||0;return p>m?u:d})];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(c("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,pt.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,pt.moment)(e),s=i.isSame((0,pt.moment)(),"day"),o=i.isSame((0,pt.moment)().subtract(1,"day"),"day"),l=i.isSame((0,pt.moment)().add(1,"day"),"day");s&&r.addClass("is-today");let d=r.createDiv("timeline-date-header"),u=i.format("MMM DD, YYYY");s?u=c("Today"):o?u=c("Yesterday"):l&&(u=c("Tomorrow")),d.setText(u);let p=d.createSpan("timeline-date-relative");!s&&!o&&!l&&p.setText(i.fromNow());let m=r.createDiv("timeline-events-list"),h=this.sortEventsByTime(t);this.renderGroupedEvents(m,h)}renderEventTime(e,t){var r,i,s;if((r=t.timeInfo)!=null&&r.timeComponent){let{timeComponent:o,isRange:l,endTime:d}=t.timeInfo;if(l&&d){let u=this.formatTimeComponent(o),p=(0,pt.moment)(d).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&&d.getTime()>m.getTime()){let h=Math.round((d.getTime()-m.getTime())/6e4),g=h>=60?`${Math.floor(h/60)}h${h%60?` ${h%60}m`:""}`:`${h}m`;e.setAttribute("data-duration",g)}}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))?/,d=o.match(l);if(d){let f=`${d[1].padStart(2,"0")}:${d[2]}${d[3]?`:${d[3]}`:""}`,k=`${d[4].padStart(2,"0")}:${d[5]}${d[6]?`:${d[6]}`:""}`;e.setText(`${f}-${k}`),e.addClass("timeline-event-time-range");return}let u=/(1[0-2]|0?[1-9]):([0-5]\d)(?::([0-5]\d))?\s*(AM|PM|am|pm)/,p=o.match(u);if(p){let f=parseInt(p[1],10),k=p[2],v=p[3],y=p[4].toUpperCase();y==="PM"&&f!==12&&(f+=12),y==="AM"&&f===12&&(f=0);let b=`${f.toString().padStart(2,"0")}:${k}${v?`:${v}`:""}`;e.setText(b),e.addClass("timeline-event-time-single");return}let m=/([01]?\d|2[0-3]):([0-5]\d)(?::([0-5]\d))?/,h=o.match(m);if(h){let f=`${h[1].padStart(2,"0")}:${h[2]}${h[3]?`:${h[3]}`:""}`;e.setText(f),e.addClass("timeline-event-time-single");return}let g=((s=t.timeInfo)==null?void 0:s.primaryTime)||t.time;e.setText((0,pt.moment)(g).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,d;let i=((l=t.timeInfo)==null?void 0:l.primaryTime)||t.time,s=((d=r.timeInfo)==null?void 0:d.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,pt.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 d=i.createDiv("timeline-time-group-events");r.forEach(u=>{var k;let p=d.createDiv("timeline-event timeline-event-grouped");p.setAttribute("data-event-id",u.id),(k=u.task)!=null&&k.completed&&p.addClass("is-completed");let m=p.createDiv("timeline-event-content");u.task&&m.createDiv("timeline-event-checkbox").createEl("span",{cls:"status-option-checkbox"},y=>{var w;let b=gt(((w=u.task)==null?void 0:w.status)||" ",u.task,y);this.registerDomEvent(b,"change",async T=>{T.stopPropagation(),T.preventDefault(),u.task&&await this.toggleTaskCompletion(u.task,u)})});let g=m.createDiv("timeline-event-text").createDiv("timeline-event-content-text");if(u.task){let v=new la(this.app,g,u.task.filePath,!0);this.addChild(v);let y=this.app.vault.getFileByPath(u.task.filePath);y instanceof pt.TFile&&v.setFile(y),v.render(u.content,!0).catch(b=>{console.error("Failed to render markdown in timeline:",b),g.setText(u.content)})}else g.setText(u.content);let f=p.createDiv("timeline-event-actions");if(u.task){let v=f.createDiv("timeline-event-action");(0,pt.setIcon)(v,"external-link"),v.setAttribute("aria-label",c("Go to task")),this.registerDomEvent(v,"click",()=>{this.goToTask(u.task)})}this.registerDomEvent(p,"click",v=>{let y=v.target;y.closest(".timeline-event-checkbox")||y.closest(".timeline-event-actions")||y.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 g;let h=gt(((g=t.task)==null?void 0:g.status)||" ",t.task,m);this.registerDomEvent(h,"change",async f=>{f.stopPropagation(),f.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 la(this.app,l,t.task.filePath,!0);this.addChild(p);let m=this.app.vault.getFileByPath(t.task.filePath);m instanceof pt.TFile&&p.setFile(m),p.render(t.content,!0).catch(h=>{console.error("Failed to render markdown in timeline:",h),l.setText(t.content)})}else l.setText(t.content);let d=i.createDiv("timeline-event-actions");if(t.task){let p=d.createDiv("timeline-event-action");(0,pt.setIcon)(p,"external-link"),p.setAttribute("aria-label",c("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 pl(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,pt.moment)().format(t.dailyNoteSettings.format)}.md`,o=t.dailyNoteSettings.folder?`${t.dailyNoteSettings.folder}/${s}`:s;r=`${c("to")} ${o}`}else r=`${c("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,pt.setIcon)(e,"chevron-right"),e.setAttribute("aria-label",c("Expand quick input")),this.registerDomEvent(e,"click",()=>{this.toggleInputCollapse()}),this.collapsedHeaderEl.createDiv("collapsed-title").setText(c("Quick Capture")),this.plugin.settings.timelineSidebar.quickInputShowQuickActions){let r=this.collapsedHeaderEl.createDiv("collapsed-quick-actions"),i=r.createDiv("collapsed-quick-capture");(0,pt.setIcon)(i,"plus"),i.setAttribute("aria-label",c("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,pt.setIcon)(s,"more-horizontal"),s.setAttribute("aria-label",c("More options")),this.registerDomEvent(s,"click",()=>{new ft(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,pt.setIcon)(e,"chevron-right"),e.setAttribute("aria-label",c("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,pt.setIcon)(e,"chevron-down"),e.setAttribute("aria-label",c("Collapse quick input")))}};function CT(){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 Pl(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 np=require("obsidian");var DT=require("obsidian");z();var ST=class extends DT.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} "+c("You've Earned a Reward!")+" \u{1F389}"),a.createEl("p",{text:c("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:`(${c("Image not found:")} ${this.reward.imageUrl})`,cls:"reward-image-error"})}}a.createEl("div",{cls:"reward-spacer"}),new DT.Setting(a).addButton(e=>e.setButtonText(c("Claim Reward")).setCta().onClick(()=>{this.onChoose(!0),this.close()})).addButton(e=>e.setButtonText(c("Skip")).onClick(()=>{this.onChoose(!1),this.close()}))}onClose(){let{contentEl:a}=this;a.empty()}};var ET=class extends np.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 xw(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 np.Notice(`\u{1F389} ${a.name}!`,0),this.acceptReward(a);return}new ST(this.app,a,e=>{e?(this.acceptReward(a),new np.Notice(`\u{1F389} ${a.name}!`)):new np.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 Gc=require("obsidian"),Va=xp(UM());var Qn=n=>n!=null&&n!=="",$M=n=>(n!=null?n:"").toString().trim().toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-"),MT=class extends Gc.Component{constructor(e){super();this.habits=[];this.plugin=e,this.dateInheritanceService=new Qu(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(Oe(this.plugin.app,Z.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(Oe(this.plugin.app,Z.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 Gc.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:Qn(r.property)?r.property:$M(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:Qn(r.property)?r.property:$M(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:Qn(r.property)?r.property:$M(r.name),type:r.type,mapping:r.mapping,completions:{}}}}})}async getDailyNotes(){let e=(0,Va.getAllDailyNotes)();return Object.values(e)}isDailyNote(e){try{return(0,Va.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,Va.getDateFromFile)(i,"day");if(!l)continue;let d=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[d]||(p.completions[d]={});for(let[k,v]of Object.entries(m))if(v&&Qn(o[v])){let y=o[v];Qn(y)&&(p.completions[d][k]=y)}break;case"daily":let h=u;if(u.property&&Qn(o[u.property])){let k=o[u.property];h.completionText?k===h.completionText?h.completions[d]=1:h.completions[d]=k:h.completions[d]=k===!0||k==="true";break}break;case"count":let g=u;if(g.property&&Qn(o[g.property])){let k=o[g.property],v=Number(k);isNaN(v)||(g.completions[d]=v)}break;case"mapping":let f=u;if(f.property&&Qn(o[f.property])){let k=o[f.property],v=Number(k);!isNaN(v)&&f.mapping[v]&&(f.completions[d]=v)}break}}}return r}handleDailyNoteDeleted(e){let t=(0,Va.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,Gc.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,Va.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,h,g,f,k,v,y,b,w;let d=JSON.parse(JSON.stringify(l));switch(d.completions||(d.completions={}),d.type){case"scheduled":let T=d,x=d.propertiesMap||{};T.completions[i]||(T.completions[i]={});let C=!1;for(let[U,q]of Object.entries(x))if(q&&Qn((u=t.frontmatter)==null?void 0:u[q])){let L=(m=(p=t.frontmatter)==null?void 0:p[q])!=null?m:"";Qn(L)&&T.completions[i][U]!==L?(T.completions[i][U]=L,C=!0):!Qn(L)&&((h=T.completions[i])==null?void 0:h[U])!==void 0&&(delete T.completions[i][U],C=!0)}else((g=T.completions[i])==null?void 0:g[U])!==void 0&&(delete T.completions[i][U],C=!0);C&&(s=!0);break;case"daily":let S=d,D=!1;if(S.property&&((f=t.frontmatter)==null?void 0:f[S.property])!==void 0&&((k=t.frontmatter)==null?void 0:k[S.property])!==""){D=!0;let U=t.frontmatter[S.property];if(S.completionText){let q=U===S.completionText?1:U;S.completions[i]!==q&&(S.completions[i]=q,s=!0)}else{let q=U===!0||U==="true";S.completions[i]!==q&&(S.completions[i]=q,s=!0)}break}!D&&S.completions[i]!==void 0&&(delete S.completions[i],s=!0);break;case"count":let E=d,R=!1;if(E.property&&((v=t.frontmatter)==null?void 0:v[E.property])!==void 0&&((y=t.frontmatter)==null?void 0:y[E.property])!==""){R=!0;let U=t.frontmatter[E.property],q=Number(U);!isNaN(q)&&E.completions[i]!==q&&(E.completions[i]=q,s=!0);break}!R&&E.completions[i]!==void 0&&(delete E.completions[i],s=!0);break;case"mapping":let I=d,H=!1;if(I.property&&((b=t.frontmatter)==null?void 0:b[I.property])!==void 0&&((w=t.frontmatter)==null?void 0:w[I.property])!==""){H=!0;let U=t.frontmatter[I.property],q=Number(U);!isNaN(q)&&I.mapping[q]&&I.completions[i]!==q&&(I.completions[i]=q,s=!0);break}!H&&I.completions[i]!==void 0&&(delete I.completions[i],s=!0);break}return d});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,Gc.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,Va.getAllDailyNotes)(),o=(0,Va.getDailyNote)(i,(0,Va.getAllDailyNotes)()),!o){if(!(0,Va.appHasDailyNotesPluginLoaded)()){console.error("Daily notes plugin is not loaded. Please enable the Daily Notes plugin in Obsidian.");return}if(!(0,Va.getDailyNoteSettings)().folder){console.error("Daily notes folder is not set. Please configure the Daily Notes plugin in Obsidian.");return}try{o=await(0,Va.createDailyNote)(i)}catch(d){console.error("Trying to use obsidian default create daily note function",d),this.plugin.app.commands.executeCommandById("daily-notes"),(0,Va.getAllDailyNotes)(),o=(0,Va.getDailyNote)(i,(0,Va.getAllDailyNotes)())}}}catch(l){console.error("Error getting or creating daily note:",l);return}if(o)try{le(this.plugin.app,Z.WRITE_OPERATION_START,{path:o.path}),await r.fileManager.processFrontMatter(o,l=>{let d=e.completions[t];switch(e.type){case"scheduled":let u=e.propertiesMap||{};for(let[g,f]of Object.entries(u))f&&(typeof d=="object"&&(d==null?void 0:d[g])!==void 0&&(d==null?void 0:d[g])!==""?l[f]=d[g]:delete l[f]);break;case"daily":let p=e;if(p.property){let g=p.property;d!=null?p.completionText&&d===1?l[g]=p.completionText:(p.completionText,l[g]=d):delete l[g]}else console.warn(`Habit ${e.id} has no properties defined in habitKeyMap.`);break;case"count":let m=e;if(m.property){let g=m.property;d!==void 0?l[g]=d:delete l[g]}else console.warn(`Habit ${e.id} has no properties defined in habitKeyMap.`);break;case"mapping":let h=e;if(h.property){let g=h.property;d!==void 0&&typeof d=="number"&&h.mapping[d]?l[g]=d:delete l[g]}else console.warn(`Habit ${e.id} has no properties defined in habitKeyMap.`);break}}),le(this.plugin.app,Z.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 Ij=require("obsidian");var PT=class extends Ij.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=Pl(i.status),o=this.extractFillColor(s),l=this.encodeSvgForCSS(s),d=i.status==="completed";for(let u of i.chars)r+=this.generateCSSRuleForChar(u,l,o,d)}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};
transition: filter 0.15s ease;
}
.${this.BODY_CLASS} [data-task="${s}"] > input[type=checkbox]:hover:after,
.${this.BODY_CLASS} [data-task="${s}"] > p > input[type=checkbox]:hover:after,
.${this.BODY_CLASS} [data-task="${s}"][type=checkbox]:hover:after {
filter: brightness(0.75);
}
@media (hover: hover) {
.${this.BODY_CLASS} [data-task="${s}"] > input[type=checkbox]:hover,
.${this.BODY_CLASS} [data-task="${s}"] > p > input[type=checkbox]:hover,
.${this.BODY_CLASS} [data-task="${s}"][type=checkbox]:hover {
background-color: unset;
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] {
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};
transition: filter 0.15s ease;
}
.${this.BODY_CLASS} [data-task="${s}"] > input[type=checkbox]:checked:hover:after,
.${this.BODY_CLASS} [data-task="${s}"] > p > input[type=checkbox]:checked:hover:after,
.${this.BODY_CLASS} [data-task="${s}"][type=checkbox]:checked:hover:after {
filter: brightness(0.75);
}
@media (hover: hover) {
.${this.BODY_CLASS} [data-task="${s}"] > input[type=checkbox]:checked:hover,
.${this.BODY_CLASS} [data-task="${s}"] > p > input[type=checkbox]:checked:hover,
.${this.BODY_CLASS} [data-task="${s}"][type=checkbox]:checked:hover {
background-color: unset;
border: none;
}
}
`}escapeCSSSelector(e){return e===" "?" ":e.replace(/[!"#$%&'()*+,.\/:;<=>?@[\\\]^`{|}~]/g,"\\$&")}};var IT=require("obsidian"),Aj=require("@codemirror/state");var iQ=(0,IT.debounce)((n,a)=>{n.workspace.trigger("task-genius:task-completed",a)},200);function Fj(n,a){return Aj.EditorState.transactionFilter.of(e=>(sQ(e,n,a),e))}function nQ(n){let a=[],e=0;if(n.changes.iterChanges((i,s,o,l,d)=>{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})}d.length>0&&a.push({type:"insert",content:d.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(d=>d.trim()),l=s.content.split(`
`).filter(d=>d.trim());if(o.length===l.length&&o.length>0){let d=!0;for(let u=0;u<o.length;u++){let p=o[u].trim(),m=l[u].trim();if(p!==m){d=!1;break}}if(d)return!0}}return!1}function sQ(n,a,e){if(!n.docChanged)return;if(n.isUserEvent("set")&&n.changes.length>1||n.isUserEvent("input.paste"))return n;if(nQ(n))return;let t=/^[\s|\t]*([-*+]|\d+\.)\s+\[[xX]\]/,r=/^[\s|\t]*([-*+]|\d+\.)\s+\[.\]/;n.changes.iterChanges((i,s,o,l,d)=>{var m;if(d.length===0)return;let u=n.newDoc.lineAt(o).number,p=n.newDoc.lineAt(l).number;for(let h=u;h<=p;h++){if(h>n.newDoc.lines)continue;let g=n.newDoc.line(h),f=g.text;if(t.test(f)){let k="",v=!1,y=!1;if(n.changes.iterChanges((b,w,T,x,C)=>{if(b<w&&!y)try{let D=n.startState.doc.sliceString(b,w).split(`
`);for(let E of D)if(E.match(r)){let I=f.replace(r,"").trim(),H=E.replace(r,"").trim();if(I===H){k=E,v=!0,y=!0;break}}}catch(S){}}),!y)try{let b=n.changes.mapPos(g.from,-1);b!==null&&(k=n.startState.doc.lineAt(b).text,v=r.test(k),y=!0)}catch(b){}if(y&&v&&!t.test(k)){let b=n.startState.field(IT.editorInfoField),w=((m=b==null?void 0:b.file)==null?void 0:m.path)||"unknown file",T=al(w,f,g.number,e.settings.preferMetadataFormat,e);if(T){iQ(a,T);try{if(e.writeAPI){let x=T.id||`${w}-L${g.number}`;e.writeAPI.updateTask({taskId:x,updates:{completed:!0,status:"x",metadata:{completedDate:Date.now()}}})}}catch(x){console.warn("completion-monitor: failed to call WriteAPI.updateTask for completion",x)}}break}}}})}var Ca=require("@codemirror/state"),Nj=require("@codemirror/view"),Lj=require("@codemirror/view"),qM=require("@codemirror/view"),jj=require("@codemirror/view"),kn=class extends Ca.RangeValue{compare(a){return this==a||this.constructor==a.constructor&&this.eq(a)}eq(a){return!1}destroy(a){}};kn.prototype.elementClass="";kn.prototype.toDOM=void 0;kn.prototype.mapMode=Ca.MapMode.TrackBefore;kn.prototype.startSide=kn.prototype.endSide=-1;kn.prototype.point=!0;var AT=Ca.Facet.define(),oQ=Ca.Facet.define(),lQ={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Ca.RangeSet.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},nk=Ca.Facet.define();function Hj(n){return[cQ(),nk.of({...lQ,...n})]}var GM=Ca.Facet.define({combine:n=>n.some(a=>a)});function cQ(n){let a=[dQ];return n&&n.fixed===!1&&a.push(GM.of(!0)),a}var dQ=Lj.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(nk).map(e=>new FT(n,e));for(let e of this.gutters)this.dom.appendChild(e.dom);this.fixed=!n.state.facet(GM),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(GM)!=!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=Ca.RangeSet.iter(this.view.state.facet(AT),this.view.viewport.from),t=[],r=this.gutters.map(o=>new QM(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 d of o.type)if(d.type==qM.BlockType.Text&&l){KM(e,t,d.from);for(let u of r)u.line(this.view,d,t);l=!1}else if(d.widget)for(let u of r)u.widget(this.view,d)}else if(o.type==qM.BlockType.Text){KM(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(nk),e=n.state.facet(nk),t=n.docChanged||n.heightChanged||n.viewportChanged||!Ca.RangeSet.eq(n.startState.facet(AT),n.state.facet(AT),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 FT(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=>Nj.EditorView.scrollMargins.of(a=>{let e=a.plugin(n);return!e||e.gutters.length==0||!e.fixed?null:a.textDirection==jj.Direction.LTR?{left:e.dom.offsetWidth*a.scaleX}:{right:e.dom.offsetWidth*a.scaleX}})});function Rj(n){return Array.isArray(n)?n:[n]}function KM(n,a,e){for(;n.value&&n.from<=e;)n.from==e&&a.push(n.value),n.next()}var QM=class{constructor(a,e,t){this.gutter=a;this.height=t;this.i=0;this.cursor=Ca.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 RT(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=[];KM(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(oQ)){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()}}},FT=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=Rj(e.markers(a)),e.initialSpacer&&(this.spacer=new RT(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=Rj(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!Ca.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()}},RT=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":""),uQ(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,d=!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,d=!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&&(d?r=r.nextSibling:this.dom.insertBefore(l.toDOM(a),r)),d&&s++}this.dom.className=t,this.markers=e}destroy(){this.setMarkers(null,[])}};function uQ(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 pQ=Ca.Facet.define(),mQ=Ca.Facet.define(),ik=Ca.Facet.define({combine(n){return(0,Ca.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,d)=>i(o,l,d)||s(o,l,d):s}return t}})}}),sk=class extends kn{constructor(e){super();this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function YM(n,a){return n.state.facet(ik).formatNumber(a,n.state)}var kst=nk.compute([ik],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(a){return a.state.facet(pQ)},lineMarker(a,e,t){return t.some(r=>r.toDOM)?null:new sk(YM(a,a.state.doc.lineAt(e.from).number))},widgetMarker:(a,e,t)=>{for(let r of a.state.facet(mQ)){let i=r(a,e,t);if(i)return i}return null},lineMarkerChange:a=>a.startState.facet(ik)!=a.state.facet(ik),initialSpacer(a){return new sk(YM(a,Oj(a.state.doc.lines)))},updateSpacer(a,e){let t=YM(e.view,Oj(e.view.state.doc.lines));return t==a.number?a:new sk(t)},domEventHandlers:n.facet(ik).domEventHandlers}));function Oj(n){let a=9;for(;a<n;)a=a*10+9;return a}var hQ=new class extends kn{constructor(){super(...arguments);this.elementClass="cm-activeLineGutter"}},vst=AT.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(hQ.range(r)))}return Ca.RangeSet.of(a)});var HT=require("obsidian");var NT=require("obsidian");var vn=require("obsidian");z();var lp=class extends vn.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:c("Overview"),populateFn:this.populateOverviewTabContent.bind(this)},{id:"dates",label:c("Dates"),populateFn:this.populateDatesTabContent.bind(this)},{id:"details",label:c("Details"),populateFn:this.populateDetailsTabContent.bind(this)}],s={},o={};i.forEach(l=>{let d=t.createEl("button",{text:l.label,cls:"tab-button"});d.dataset.tab=l.id,s[l.id]=d;let u=r.createDiv({cls:"tab-pane"});u.id=`tab-pane-${l.id}`,o[l.id]=u,l.populateFn(u),this.registerDomEvent(d,"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,c("Due Date"),"dueDate",this.getDateString(this.task.metadata.dueDate))}populateDatesTabContent(e){this.createDateEditor(e,c("Start Date"),"startDate",this.getDateString(this.task.metadata.startDate)),this.createDateEditor(e,c("Scheduled Date"),"scheduledDate",this.getDateString(this.task.metadata.scheduledDate)),this.createDateEditor(e,c("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,c("Due Date"),"dueDate",this.getDateString(this.task.metadata.dueDate)),this.createDateEditor(t,c("Start Date"),"startDate",this.getDateString(this.task.metadata.startDate)),this.createDateEditor(t,c("Scheduled Date"),"scheduledDate",this.getDateString(this.task.metadata.scheduledDate)),this.createDateEditor(t,c("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"?ls(e):e}createStatusEditor(){let e=this.container.createDiv({cls:"task-status-editor"});new il(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(c("Priority"));let i=new vn.DropdownComponent(t).addOption("",c("None")).addOption("1","\u23EC\uFE0F "+c("Lowest")).addOption("2","\u{1F53D} "+c("Low")).addOption("3","\u{1F53C} "+c("Medium")).addOption("4","\u23EB "+c("High")).addOption("5","\u{1F53A} "+c("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=ls(Number.isFinite(u)?u:void 0)}catch(u){console.error(`Cannot parse date: ${i}`,u)}this.registerDomEvent(l,"change",()=>{let d=l.value;if(d){let u=ao(d);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(c("Project"));let i=qt(this.task),s=Yi(this.task),o=new vn.TextComponent(t).setPlaceholder(c("Project name")).setValue(i||"").setDisabled(s).onChange(l=>{s||this.notifyMetadataChange("project",l)});if(s&&this.task.metadata.tgProject&&(!this.task.metadata.project||typeof this.task.metadata.project!="string"||!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 xr(this.app,o.inputEl,this.plugin)}createTagsEditor(e){let t=e.createDiv({cls:"field-container tags-container"});t.createDiv({cls:"field-label"}).setText(c("Tags"));let i=new vn.TextComponent(t).setPlaceholder(c("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 Zr(this.app,i.inputEl,this.plugin)}createContextEditor(e){let t=e.createDiv({cls:"field-container context-container"});t.createDiv({cls:"field-label"}).setText(c("Context"));let i=new vn.TextComponent(t).setPlaceholder(c("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 Jr(this.app,i.inputEl,this.plugin)}createRecurrenceEditor(e){let t=e.createDiv({cls:"field-container recurrence-container"});t.createDiv({cls:"field-label"}).setText(c("Recurrence Rule"));let i=new vn.TextComponent(t).setPlaceholder(c("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(c("On Completion"));try{let i=new rl(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 d=t.createDiv({cls:"oncompletion-validation-message error",text:o})}else if(s&&this.task.metadata.onCompletion){let d=t.createDiv({cls:"oncompletion-validation-message success",text:c("Configuration is valid")})}}});this.addChild(i)}catch(i){console.warn("Failed to load OnCompletionConfigurator, using fallback:",i);let s=new vn.TextComponent(t).setPlaceholder(c("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(c("Depends On"));let i=new vn.TextComponent(t).setPlaceholder(c("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(c("Task ID"));let i=new vn.TextComponent(t).setPlaceholder(c("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})}};z();var OT=class extends NT.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(c("Edit Task"))}onOpen(){let{contentEl:a}=this;a.empty(),this.metadataEditor=new lp(a,this.app,this.plugin,!1),this.metadataEditor.onload(),this.metadataEditor.showTask(this.task),new NT.ButtonComponent(this.contentEl).setIcon("check").setTooltip(c("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 jT=require("obsidian");z();var LT=class extends jT.Component{constructor(e,t,r){super();this.popoverRef=null;this.popperInstance=null;this.debounceUpdateTask=(0,jT.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 lp(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),d={...this.task};if(l?d[s.field]=s.value:d.metadata={...this.task.metadata,[s.field]:s.value},s.field==="status"&&(s.value==="x"||s.value==="X")){d.completed=!0,d.metadata={...d.metadata,completedDate:Date.now()};let{cancelledDate:u,...p}=d.metadata;d.metadata=p}else if(s.field==="status"&&s.value==="-"){d.completed=!1;let{completedDate:u,...p}=d.metadata;d.metadata={...p,cancelledDate:Date.now()}}else if(s.field==="status"){d.completed=!1;let{completedDate:u,cancelledDate:p,...m}=d.metadata;d.metadata=m}this.task=d,this.debounceUpdateTask(d)},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:c("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=Dn(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()}};var cp=require("@codemirror/language");var Bj=/^(([\s>]*)?(-|\d+\.|\*|\+)\s\[([^\[\]]{1})\])\s+(.*)$/m,JM=class extends kn{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 HT.ExtraButtonComponent(a).setIcon("calendar-check").onClick(()=>{let t=this.view.state.doc.line(this.lineNum).text,r=this.app.workspace.getActiveFile();if(!r||!Bj.test(t))return!1;let i=this.view.state.doc.line(this.lineNum),o=(0,cp.syntaxTree)(this.view.state).resolveInner(i.from+1).type.prop(cp.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,d=fQ(this.plugin,r.path,t,l-1);return d?(gQ(this.view,this.app,this.plugin,d,e.extraSettingsEl),!0):!1});return e.extraSettingsEl.toggleClass("task-gutter-marker",!0),e.extraSettingsEl}},gQ=(n,a,e,t,r)=>{let i=async s=>{e.writeAPI&&await e.writeAPI.updateTask({taskId:s.id,updates:s})};if(HT.Platform.isDesktop){let s=new LT(a,e,t),o=r.getBoundingClientRect();s.showAtPosition({x:o.left,y:o.bottom+10})}else new OT(a,e,t,i).open()},XM=null,fQ=(n,a,e,t)=>{var r,i;try{if(n.dataflowOrchestrator&&((r=n.settings.projectConfig)!=null&&r.enableEnhancedProject))try{let o=`${a}-L${t}`,d=n.dataflowOrchestrator.getQueryAPI().getTaskByIdSync(o);if(d)return d}catch(o){console.warn("Failed to get task from dataflow:",o)}XM||(XM=new os(tl(n.settings.preferMetadataFormat,n)));let s=XM.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 Vj(n,a){return[Hj({class:"task-gutter",lineMarker(e,t){let r=e.state.doc.lineAt(t.from).text,i=e.state.doc.lineAt(t.from).number;if(!Bj.test(r))return null;let o=(0,cp.syntaxTree)(e.state).resolveInner(t.from+1).type.prop(cp.tokenClassNodeProp);if(o){let l=o.split(" ");if(l.includes("hmd-codeblock")||l.includes("hmd-frontmatter"))return null}return new JM(r,i,e,n,a)}})]}var zj=require("@codemirror/state");function _j(n,a){return zj.EditorState.transactionFilter.of(e=>kQ(e,n,a))}function kQ(n,a,e){var p;if(!n.docChanged||!((p=e.settings.autoDateManager)!=null&&p.enabled))return n;let t=n.annotation(It);if(typeof t=="string"&&t.includes("autoDateManager")||n.isUserEvent("input.paste")||n.isUserEvent("set")||vQ(n))return n;let r=yQ(n);if(!r)return n;let{doc:i,lineNumber:s,oldStatus:o,newStatus:l}=r,d=bQ(o,l,e,i.line(s).text);return d.length===0?n:TQ(n,i,s,d,e)}function vQ(n){let a=[];n.changes.iterChanges((r,i,s,o,l)=>{if(r<i){let d=n.startState.doc.sliceString(r,i);a.push({type:"delete",content:d,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 d=0;d<s.length;d++){let u=s[d].trim(),p=o[d].trim();if(u!==p){l=!1;break}}if(l)return!0}}return!1}function yQ(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),d=l.text,u=/^[\s|\t]*([-*+]|\d+\.)\s\[(.)]/i,p=d.match(u);if(p){let m=p[2],h=" ",g=!1;if(n.changes.iterChanges((f,k,v,y,b)=>{if(f<k&&!g)try{let T=n.startState.doc.sliceString(f,k).split(`
`);for(let x of T){let C=x.match(u);if(C){let S=d.replace(u,"").trim(),D=x.replace(u,"").trim();if(S===D){h=C[2],g=!0;break}}}}catch(w){}}),!g)try{let f=d.indexOf("[")+1,k=d.indexOf("]");if(r<=l.from+k&&i>=l.from+f){let v=e;if(v>=0&&v<n.startState.doc.length){let b=n.startState.doc.lineAt(v).text.match(u);b&&(h=b[2],g=!0)}}}catch(f){}g&&h!==m&&(a={doc:n.newDoc,lineNumber:l.number,oldStatus:h,newStatus:m})}}),a}function bQ(n,a,e,t){let r=[],i=e.settings.autoDateManager;if(!i)return r;let s=Wj(n,e),o=Wj(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"&&(wQ(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 wQ(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=BT(a,e);return new RegExp(`${VT(r)}\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?`).test(n)}}function Wj(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 TQ(n,a,e,t,r){if(e<1||e>n.newDoc.lines)return console.warn(`[AutoDateManager] Line number ${e} is out of bounds (doc has ${n.newDoc.lines} lines)`),n;let i=n.newDoc.line(e);if(i.from>n.newDoc.length||i.to>n.newDoc.length)return console.warn(`[AutoDateManager] Line boundaries invalid: from=${i.from}, to=${i.to}, doc length=${n.newDoc.length}`),n;let s=i.text,o=[];for(let l of t)if(l.type==="add"){let d=xQ(l.format),u=BT(l.dateType,r),p=r.settings.preferMetadataFormat==="dataview",m;p?m=` ${u}${d}]`:m=` ${u} ${d}`;let h;l.dateType==="completed"?h=SQ(s,r):h=CQ(s,r,l.dateType);let g=i.from+h,f=Math.min(g,n.newDoc.length),k=Math.max(0,f);k!==g&&`${g}${k}${n.newDoc.length}`,o.push({from:k,to:k,insert:m}),s=s.slice(0,h)+m+s.slice(h)}else if(l.type==="remove"){let d=r.settings.preferMetadataFormat==="dataview",u;if(d){let h=l.dateType==="completed"?"completion":l.dateType==="cancelled"?"cancelled":"unknown";u=new RegExp(`\\s*\\[${h}::\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?\\]`,"g")}else{let h=BT(l.dateType,r);u=new RegExp(`\\s*${VT(h)}\\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 h=m.length-1;h>=0;h--){let g=m[h],f=i.from+g.start,k=i.from+g.end,v=Math.min(Math.max(0,f),n.newDoc.length),y=Math.min(Math.max(0,k),n.newDoc.length);o.push({from:v,to:y,insert:""}),s=s.slice(0,g.start)+s.slice(g.end)}}if(o.length>0){let l=n.newDoc.length,d=o.map((g,f)=>{let k=Math.min(Math.max(0,g.from),l),v=Math.min(Math.max(0,g.to),l);return k>v&&(v=k),{from:k,to:v,insert:g.insert}}),u=[];n.changes.iterChanges((g,f,k,v,y)=>{u.push({fromA:g,toA:f,fromB:k,toB:v,inserted:y.toString()})});let p=d.filter(g=>g.from>l||g.to>l?(console.error(`[AutoDateManager] ERROR: Change position exceeds document length! from=${g.from}, to=${g.to}, docLength=${l}`),!1):!0),m=[];n.changes.iterChanges((g,f,k,v,y)=>{m.push({from:g,to:f,insert:y.toString()})});let h=p.map(g=>({from:n.changes.mapPos(g.from,-1),to:n.changes.mapPos(g.to,-1),insert:g.insert}));return{changes:[...m,...h],selection:n.selection,annotations:[It.of("autoDateManager.dateUpdate")]}}return n}function xQ(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 BT(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 CQ(n,a,e){let t=Uj(n),r=n.match(/^[\s|\t]*([-*+]|\d+\.)\s\[(.)\]\s*/);if(!r)return t?t.index:n.length;let i=r[0].length,s=i,o=0,l=!1,d=n.slice(i);for(let u=0;u<d.length;u++){let p=d[u],m=d[u+1],h=p+(m||"");if(h==="[["){o++,s=i+u+2,u++;continue}if(h==="]]"&&o>0){o--,s=i+u+2,u++;continue}if(o>0){s=i+u+1;continue}if(p==="["&&!l&&d.slice(u+1).match(/^[a-zA-Z]+::/)||p==="#"&&(u===0||d[u-1]===" "||d[u-1]===" ")&&d.slice(u+1).match(/^[\w-]+/)||["\u{1F4C5}","\u{1F680}","\u2705","\u274C","\u{1F6EB}","\u25B6\uFE0F","\u23F0","\u{1F3C1}"].includes(p)&&d.slice(u+1).match(/^\s*\d{4}-\d{2}-\d{2}(?:\s+\d{1,2}:\d{2})?/))break;s=i+u+1}for(i=s;i>r[0].length&&n[i-1]===" ";)i--;if(e==="cancelled"){let u=a.settings.preferMetadataFormat==="dataview",p=!1;if(u){let m=n.match(/\[start::[^\]]*\]/);m&&m.index!==void 0&&(i=m.index+m[0].length,p=!0)}else{let m=BT("start",a),h=VT(m),g=new RegExp(`${h}\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?`),f=n.match(g);if(!f){let k=["\u{1F680}","\u{1F6EB}","\u25B6\uFE0F","\u23F0","\u{1F3C1}"];for(let v of k){let y=new RegExp(`${VT(v)}\\s*\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2}(?::\\d{2})?)?`);if(f=n.match(y),f)break}}f&&f.index!==void 0&&(i=f.index+f[0].length,p=!0)}}else e==="completed"&&(i=n.length,t&&(i=t.index,i>0&&n[i-1]===" "&&i--));return t&&i>t.index&&(i=t.index,i>0&&n[i-1]===" "&&i--),i=Math.min(i,n.length),i=Math.max(0,i),i}function SQ(n,a){let e=Uj(n),t;return e?(t=e.index,t>0&&n[t-1]===" "&&t--):t=n.length,t=Math.min(t,n.length),t=Math.max(0,t),t}function VT(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Uj(n){let a=/\s*(\^[A-Za-z0-9_-]+)\s*$/,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 $j=require("@codemirror/view");function Yj(){return $j.EditorView.updateListener.of(n=>{if(!n.docChanged)return;let a=n.transactions[0];!a||!DQ(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(EQ(o)){let d=n.state.doc.lineAt(r),u=d.text;if(MQ(u)){let p=PQ(u);p!==u&&n.view.dispatch({changes:{from:d.from,to:d.to,insert:p}})}}})})}function DQ(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 EQ(n){return!!(/(?:🔺|⏫|🔼|🔽|⏬️|\[#[A-C]\]|!)/.test(n)||/(?:📅|🛫|⏳|✅||❌)/.test(n)||/(?:🆔|⛔|🏁|🔁|@|#)/.test(n))}function MQ(n){return/^\s*[-*+]\s*\[[^\]]*\]/.test(n)}function PQ(n){let a=n.match(/^(\s*[-*+]\s*\[[^\]]*\]\s*)/);if(!a)return n;let e=a[1],t=n.substring(e.length),r=Cr(t);return r.trim()?e+r:e.trim()}var _T=require("obsidian");var dr=class dr{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,d=0;for(let u of s){d++;let p=u.trim();if(!(!p||p.startsWith("#")))try{let[m,h]=this.parseLine(p);switch(m){case"BEGIN":h==="VCALENDAR"?l=!0:h==="VEVENT"&&l&&(o={source:e});break;case"END":if(h==="VEVENT"&&o){let g=this.finalizeEvent(o);g&&i.events.push(g),o=null}else h==="VCALENDAR"&&(l=!1);break;case"VERSION":l&&!o&&(i.metadata.version=h);break;case"PRODID":l&&!o&&(i.metadata.prodid=h);break;case"CALSCALE":break;case"X-WR-CALNAME":l&&!o&&(i.metadata.calendarName=h);break;case"X-WR-CALDESC":l&&!o&&(i.metadata.description=h);break;case"X-WR-TIMEZONE":l&&!o&&(i.metadata.timezone=h);break;default:o&&this.parseEventProperty(o,m,h,p);break}}catch(m){i.errors.push({line:d,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 d=r.lastIndexOf(":");d!==-1&&(r=r.slice(d+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 d=this.parseIntFromString(r,0,4),u=this.parseIntFromString(r,4,2)-1,p=this.parseIntFromString(r,6,2);l=new Date(d,u,p)}else{let d=this.parseIntFromString(r,0,4),u=this.parseIntFromString(r,4,2)-1,p=this.parseIntFromString(r,6,2),m=this.parseIntFromString(r,9,2),h=this.parseIntFromString(r,11,2),g=o>=15?this.parseIntFromString(r,13,2):0;s?l=new Date(Date.UTC(d,u,p,m,h,g)):l=new Date(d,u,p,m,h,g)}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}}};dr.CN_REGEX=/CN=([^;:]+)/,dr.ROLE_REGEX=/ROLE=([^;:]+)/,dr.PARTSTAT_REGEX=/PARTSTAT=([^;:]+)/,dr.parseCache=new Map,dr.MAX_CACHE_SIZE=50,dr.PROPERTY_HANDLERS=new Map([["UID",(a,e)=>{a.uid=e}],["SUMMARY",(a,e)=>{a.summary=dr.unescapeText(e)}],["DESCRIPTION",(a,e)=>{a.description=dr.unescapeText(e)}],["LOCATION",(a,e)=>{a.location=dr.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=dr.parseDateTime(e,t);a.dtstart=r.date,r.allDay!==void 0&&(a.allDay=r.allDay)}],["DTEND",(a,e,t)=>{a.dtend=dr.parseDateTime(e,t).date}],["CREATED",(a,e,t)=>{a.created=dr.parseDateTime(e,t).date}],["LAST-MODIFIED",(a,e,t)=>{a.lastModified=dr.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=dr.parseDateTime(i.trim(),t).date;a.exdate.push(s)}}],["ORGANIZER",(a,e,t)=>{a.organizer=dr.parseOrganizer(e,t)}],["ATTENDEE",(a,e,t)=>{a.attendees||(a.attendees=[]),a.attendees.push(dr.parseAttendee(e,t))}]]);var WT=dr;var ok=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()),d=new Date(o.getFullYear(),o.getMonth(),o.getDate());return d<i?this.convertTaskStatusToString(e.pastEvents,t):l<=i&&d>=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 zT=class extends _T.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=ju.processEventsWithHolidayDetection(o,s.holidayConfig):l=o.map(d=>({...d,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=ok.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=ok.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),d={};return Object.keys(o).length>0&&(d.timeComponents=o),l&&Object.keys(l).length>0&&(d.enhancedDates=l),d}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.getUTCHours().toString().padStart(2,"0"),r=e.getUTCMinutes().toString().padStart(2,"0"),i=e.getUTCSeconds(),s=`${t}:${r}`;return i>0&&(s+=`:${i.toString().padStart(2,"0")}`),{hour:parseInt(t,10),minute:parseInt(r,10),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=Wn.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,d=new Promise((m,h)=>{setTimeout(()=>{h(new Error(`Request timeout after ${this.config.networkTimeout} seconds`))},l)}),u=await Promise.race([(0,_T.requestUrl)(s),d]);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=WT.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,d,u,p,m,h;if(t.filters.include){let g=t.filters.include,f=!0;if((s=g.summary)!=null&&s.length&&(f=f&&g.summary.some(k=>this.matchesPattern(i.summary,k))),(o=g.description)!=null&&o.length&&i.description&&(f=f&&g.description.some(k=>this.matchesPattern(i.description,k))),(l=g.location)!=null&&l.length&&i.location&&(f=f&&g.location.some(k=>this.matchesPattern(i.location,k))),(d=g.categories)!=null&&d.length&&i.categories&&(f=f&&g.categories.some(k=>i.categories.includes(k))),!f)return!1}if(t.filters.exclude){let g=t.filters.exclude;if((u=g.summary)!=null&&u.length&&g.summary.some(f=>this.matchesPattern(i.summary,f))||(p=g.description)!=null&&p.length&&i.description&&g.description.some(f=>this.matchesPattern(i.description,f))||(m=g.location)!=null&&m.length&&i.location&&g.location.some(f=>this.matchesPattern(i.location,f))||(h=g.categories)!=null&&h.length&&i.categories&&g.categories.some(f=>i.categories.includes(f)))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 d=new RegExp(l.pattern,l.flags||"g");switch(l.target){case"summary":i=i.replace(d,l.replacement);break;case"description":s&&(s=s.replace(d,l.replacement));break;case"location":o&&(o=o.replace(d,l.replacement));break;case"all":i=i.replace(d,l.replacement),s&&(s=s.replace(d,l.replacement)),o&&(o=o.replace(d,l.replacement));break}}catch(d){console.warn(`Invalid regex pattern in text replacement rule "${l.name}": ${l.pattern}`,d)}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 Xc=require("obsidian");var ur=require("obsidian");z();function IQ(n,a){var e,t;if(!a)return!1;try{let r=a.toLowerCase();return(String(((e=n.settings.taskStatuses)==null?void 0:e.completed)||"x")+"|"+(((t=n.settings.taskStatuses)==null?void 0:t.abandoned)||"-")).split("|").includes(r)}catch(r){return!1}}var UT=class extends ur.Component{constructor(e,t,r,i,s,o,l,d,u){super();this.onSearch=r;this.onViewModeChange=i;this.onFilterClick=s;this.onSortClick=o;this.onSettingsClick=l;this.onToggleSidebar=u;this.currentViewMode="list";this.notificationCount=0;this.availableModes=["list","kanban","tree","calendar"];this.viewTabsContainer=null;this.customButtonsContainer=null;this.customButtons=new Map;this.cycleSelectorContainer=null;this.selectedCycleId=null;this.onCycleChange=null;this.containerEl=e,this.plugin=t,d&&(this.availableModes=d,this.availableModes.includes(this.currentViewMode)||(this.currentViewMode=this.availableModes[0]||"list")),this.render(),this.updateNotificationCount(),this.setupEventListeners()}setupEventListeners(){this.registerEvent(Oe(this.plugin.app,Z.CACHE_READY,()=>{this.updateNotificationCount()})),this.registerEvent(Oe(this.plugin.app,Z.TASK_CACHE_UPDATED,()=>{this.updateNotificationCount()}))}isOverdueTask(e,t){var s,o;if(e.completed||e.status&&IQ(this.plugin,e.status))return!1;let r=(s=e.metadata)==null?void 0:s.dueDate,i=(o=e.metadata)==null?void 0:o.scheduledDate;return!r&&!i?!1:!!(r&&new Date(r)<t||i&&new Date(i)<t)}async updateNotificationCount(){try{let e=[];if(this.plugin.dataflowOrchestrator)e=await this.plugin.dataflowOrchestrator.getQueryAPI().getAllTasks();else if(this.plugin.preloadedTasks)e=this.plugin.preloadedTasks;else return;let t=new Date;t.setHours(0,0,0,0),this.notificationCount=e.filter(r=>this.isOverdueTask(r,t)).length,this.updateNotificationBadge()}catch(e){console.warn("[FluentTopNavigation] Failed to update notification count:",e)}}render(){if(this.containerEl.empty(),this.containerEl.addClass("fluent-top-navigation"),this.availableModes.length===0){this.containerEl.hide(),this.containerEl.toggleClass("other-view",!0);return}this.containerEl.toggleClass("other-view",!1),this.containerEl.show();let t=this.containerEl.createDiv({cls:"fluent-nav-left"}).createDiv({cls:"fluent-search-container"});new ur.SearchComponent(t).setPlaceholder(c("Search tasks, projects ...")).onChange(d=>{this.onSearch(d)});let r=this.containerEl.createDiv({cls:"fluent-nav-center"});this.viewTabsContainer=r.createDiv({cls:"fluent-view-tabs"}),this.renderViewTabs();let i=this.containerEl.createDiv({cls:"fluent-nav-right"});this.customButtonsContainer=i.createDiv({cls:"fluent-nav-custom-buttons"}),this.cycleSelectorContainer=i.createDiv({cls:"fluent-nav-cycle-selector-wrapper"}),this.cycleSelectorContainer.hide();let s=i.createDiv({cls:"fluent-nav-icon-button"});(0,ur.setIcon)(s,"bell");let o=s.createDiv({cls:"fluent-notification-badge",text:String(this.notificationCount)});this.notificationCount>0&&o.show(),this.registerDomEvent(s,"click",d=>this.showNotifications(d));let l=i.createDiv({cls:"fluent-nav-icon-button"});(0,ur.setIcon)(l,"settings"),this.registerDomEvent(l,"click",()=>this.onSettingsClick())}createViewTab(e,t,r,i){let s=e.createEl("button",{cls:["fluent-view-tab","clickable-icon"],attr:{"data-mode":t}});t===this.currentViewMode&&s.addClass("is-active"),(0,ur.setIcon)(s.createDiv({cls:"fluent-view-tab-icon"}),r),s.createSpan({text:i}),this.registerDomEvent(s,"click",()=>{this.currentViewMode!==t&&(this.setViewMode(t),this.onViewModeChange(t))})}setViewMode(e){this.currentViewMode=e,this.containerEl.querySelectorAll(".fluent-view-tab").forEach(r=>{r.removeClass("is-active")});let t=this.containerEl.querySelector(`[data-mode="${e}"]`);t&&t.addClass("is-active")}async showNotifications(e){let t=new ur.Menu,r=[];this.plugin.dataflowOrchestrator?r=await this.plugin.dataflowOrchestrator.getQueryAPI().getAllTasks():r=this.plugin.preloadedTasks||[];let i=new Date;i.setHours(0,0,0,0);let s=r.filter(o=>this.isOverdueTask(o,i));s.length===0?t.addItem(o=>{o.setTitle("No overdue tasks").setDisabled(!0)}):(t.addItem(o=>{o.setTitle(`${s.length} overdue tasks`).setDisabled(!0)}),t.addSeparator(),s.slice(0,10).forEach(o=>{t.addItem(l=>{l.setTitle(o.content||c("Untitled task")).setIcon("alert-circle").onClick(async()=>{await this.navigateToTask(o)})})})),t.showAtMouseEvent(e)}async navigateToTask(e){let t=this.plugin.app.vault.getFileByPath(e.filePath);if(!(t instanceof ur.TFile)){new ur.Notice(c("Task file not found"));return}await this.plugin.app.workspace.getLeaf(!1).openFile(t,{eState:{line:e.line}})}updateNotificationBadge(){let e=this.containerEl.querySelector(".fluent-notification-badge");e instanceof HTMLElement&&(e.textContent=String(this.notificationCount),this.notificationCount===0?e.hide():e.show())}refresh(){this.updateNotificationCount()}getSearchQuery(){var e;return((e=this.searchInput)==null?void 0:e.value)||""}clearSearch(){this.searchInput&&(this.searchInput.value="",this.onSearch(""))}renderViewTabs(){if(!this.viewTabsContainer)return;this.viewTabsContainer.empty();let e={list:{icon:"list",label:"List"},kanban:{icon:"layout-grid",label:"Kanban"},tree:{icon:"git-branch",label:"Tree"},calendar:{icon:"calendar",label:"Calendar"}};for(let t of this.availableModes){let r=e[t];r&&this.createViewTab(this.viewTabsContainer,t,r.icon,r.label)}}updateAvailableModes(e){let t=this.availableModes.length===0;if(this.availableModes=e,e.length===0){this.containerEl.hide(),this.containerEl.toggleClass("other-view",!0);return}if(this.containerEl.toggleClass("other-view",!1),t&&e.length>0){this.render();return}this.containerEl.show(),e.includes(this.currentViewMode)||(this.currentViewMode=e[0],this.onViewModeChange(this.currentViewMode));let r=this.containerEl.querySelector(".fluent-nav-center");r&&(r.show(),this.viewTabsContainer||(this.viewTabsContainer=r.createDiv({cls:"fluent-view-tabs"})),this.renderViewTabs())}getCurrentViewMode(){return this.currentViewMode}registerCustomButton(e){if(!this.customButtonsContainer){console.warn("[FluentTopNavigation] Custom buttons container not initialized");return}if(this.customButtons.has(e.id)){console.warn(`[FluentTopNavigation] Button with id "${e.id}" already registered`);return}let t=this.customButtonsContainer.createDiv({cls:"fluent-nav-custom-button-wrapper"}),r=new ur.ExtraButtonComponent(t).setIcon(e.icon).setTooltip(e.tooltip).onClick(e.onClick);this.customButtons.set(e.id,{buttonEl:t,config:e}),`${e.id}`}unregisterCustomButton(e){let t=this.customButtons.get(e);t&&(t.buttonEl.remove(),this.customButtons.delete(e),`${e}`)}clearCustomButtons(){this.customButtonsContainer&&(this.customButtons.forEach(e=>{e.buttonEl.remove()}),this.customButtons.clear())}setCycleChangeCallback(e){this.onCycleChange=e}showCycleSelector(e=null){if(!this.cycleSelectorContainer){console.warn("[FluentTopNavigation] Cycle selector container not initialized");return}this.selectedCycleId=e,this.renderCycleSelector(),this.cycleSelectorContainer.show()}hideCycleSelector(){this.cycleSelectorContainer&&(this.cycleSelectorContainer.hide(),this.cycleSelectorContainer.empty())}setSelectedCycleId(e){this.selectedCycleId=e,this.cycleSelectorContainer&&this.cycleSelectorContainer.isShown()&&this.renderCycleSelector()}getSelectedCycleId(){return this.selectedCycleId}renderCycleSelector(){if(!this.cycleSelectorContainer)return;this.cycleSelectorContainer.empty();let e=this.cycleSelectorContainer.createEl("button",{cls:"fluent-nav-cycle-button clickable-icon",attr:{"aria-label":c("kanban.cycleSelector")}}),t=e.createDiv({cls:"fluent-nav-cycle-icon"});(0,ur.setIcon)(t,"layers");let r=e.createSpan({cls:"fluent-nav-cycle-label"});if(this.selectedCycleId){let i=(this.plugin.settings.statusCycles||[]).find(s=>s.id===this.selectedCycleId);r.textContent=(i==null?void 0:i.name)||c("kanban.allCycles")}else r.textContent=c("kanban.allCycles");this.registerDomEvent(e,"click",i=>{this.showCycleMenu(i)})}showCycleMenu(e){let t=new ur.Menu;t.addItem(i=>{i.setTitle(c("kanban.allCycles")).setChecked(this.selectedCycleId===null).onClick(()=>{this.selectedCycleId=null,this.renderCycleSelector(),this.onCycleChange&&this.onCycleChange(null)})}),t.addSeparator();let r=(this.plugin.settings.statusCycles||[]).filter(i=>i.enabled).sort((i,s)=>i.priority-s.priority);if(r.length===0)t.addItem(i=>{i.setTitle(c("kanban.noCyclesAvailable")).setDisabled(!0)});else for(let i of r)t.addItem(s=>{s.setTitle(i.name).setChecked(this.selectedCycleId===i.id).onClick(()=>{this.selectedCycleId=i.id,this.renderCycleSelector(),this.onCycleChange&&this.onCycleChange(i.id)})});t.addSeparator(),t.addItem(i=>{i.setTitle(c("Open status cycle settings")),i.onClick(()=>{this.plugin.app.setting.open(),this.plugin.app.setting.openTabById(this.plugin.manifest.id),this.plugin.settingTab.openTab("task-status")})}),t.showAtMouseEvent(e)}};var Qr={WORKSPACE_SWITCHED:"task-genius:ui-workspace-switched",WORKSPACE_OVERRIDES_SAVED:"task-genius:ui-workspace-overrides-saved",WORKSPACE_RESET:"task-genius:ui-workspace-reset",DEFAULT_WORKSPACE_CHANGED:"task-genius:ui-default-workspace-changed",WORKSPACE_CREATED:"task-genius:ui-workspace-created",WORKSPACE_DELETED:"task-genius:ui-workspace-deleted",WORKSPACE_RENAMED:"task-genius:ui-workspace-renamed",SIDEBAR_SELECTION_CHANGED:"task-genius:sidebar-selection-changed",TASK_SELECTED:"task-genius:task-selected"},ZM=(n,a)=>{le(n,Qr.WORKSPACE_SWITCHED,{workspaceId:a,seq:kt.next()})},Il=(n,a,e)=>{le(n,Qr.WORKSPACE_OVERRIDES_SAVED,{workspaceId:a,changedKeys:e,seq:kt.next()})},qj=(n,a)=>{le(n,Qr.WORKSPACE_RESET,{workspaceId:a,seq:kt.next()})},Gj=(n,a)=>{le(n,Qr.DEFAULT_WORKSPACE_CHANGED,{workspaceId:a,seq:kt.next()})},Kj=(n,a,e)=>{le(n,Qr.WORKSPACE_CREATED,{workspaceId:a,baseId:e,seq:kt.next()})},eP=(n,a)=>{le(n,Qr.SIDEBAR_SELECTION_CHANGED,{...a,seq:kt.next()})},Qj=(n,a)=>{le(n,Qr.TASK_SELECTED,{...a,seq:kt.next()})},$T=(n,a)=>Oe(n,Qr.SIDEBAR_SELECTION_CHANGED,a),Xj=(n,a)=>Oe(n,Qr.TASK_SELECTED,a),Jj=(n,a)=>{le(n,Qr.WORKSPACE_DELETED,{workspaceId:a,seq:kt.next()})},Zj=(n,a,e)=>{le(n,Qr.WORKSPACE_RENAMED,{workspaceId:a,newName:e,seq:kt.next()})},dp=(n,a)=>Oe(n,Qr.WORKSPACE_SWITCHED,a),eH=(n,a)=>Oe(n,Qr.WORKSPACE_OVERRIDES_SAVED,a);var tH=(n,a)=>Oe(n,Qr.WORKSPACE_CREATED,a),aH=(n,a)=>Oe(n,Qr.WORKSPACE_DELETED,a);var nx=require("obsidian");z();var lk=require("obsidian");var YT=class extends lk.Component{constructor(e,t,r,i){super();this.plugin=e;this.getCurrentViewId=t;this.getCurrentFilterState=r;this.isInitializing=i;this.isBatchOperating=!1}setCallbacks(e){this.onTasksLoaded=e.onTasksLoaded,this.onLoadingStateChanged=e.onLoadingStateChanged,this.onUpdateNeeded=e.onUpdateNeeded}async loadTasks(e=!0){var t,r,i,s;try{e&&!this.isInitializing()&&((t=this.onLoadingStateChanged)==null||t.call(this,!0));let o=[];this.plugin.dataflowOrchestrator?(o=await this.plugin.dataflowOrchestrator.getQueryAPI().getAllTasks(),`${o.length}`):(o=this.plugin.preloadedTasks||[],`${o.length}`),(r=this.onTasksLoaded)==null||r.call(this,o,null)}catch(o){console.error("[FluentData] Failed to load tasks:",o);let l=o.message||"Failed to load tasks";(i=this.onTasksLoaded)==null||i.call(this,[],l)}finally{(s=this.onLoadingStateChanged)==null||s.call(this,!1)}}applyFilters(e){let t=this.getCurrentViewId(),r=this.getCurrentFilterState();`${t}${e.length}`;let i={textQuery:r.filterInputValue||r.searchQuery||""};t==="working-on"&&(i.v2Filters=i.v2Filters||{}),r.currentFilterState&&r.currentFilterState.filterGroups&&r.currentFilterState.filterGroups.length>0&&(i.advancedFilter=r.currentFilterState),r.viewStateFilters&&Object.keys(r.viewStateFilters).length>0&&(i.v2Filters=r.viewStateFilters),r.selectedProject&&t!=="inbox"&&(i.v2Filters={...i.v2Filters||{},project:r.selectedProject});let s=cr(e,t,this.plugin,i);return t==="working-on"&&(`${s.length}`,s=this.applyWorkingOnFilter(s),`${s.length}`),i.v2Filters&&t!=="working-on"&&(s=this.applyV2Filters(s,i.v2Filters)),`${s.length}${e.length}${t}`,s=this.applySorting(s,t),s}applyV2Filters(e,t){let r=this.getCurrentViewId(),i=[...e],s=o=>(o!=null?o:"").trim().toLowerCase();if(r==="working-on"&&(i=this.applyWorkingOnFilter(i)),t.status&&t.status!=="all")switch(t.status){case"active":i=i.filter(o=>!o.completed);break;case"completed":i=i.filter(o=>o.completed);break;case"overdue":i=i.filter(o=>{var l;return o.completed||!((l=o.metadata)!=null&&l.dueDate)?!1:new Date(o.metadata.dueDate)<new Date});break}if(t.priority&&t.priority!=="all"&&(i=i.filter(o=>{var u;let l=((u=o.metadata)==null?void 0:u.priority)||0,d=typeof t.priority=="string"?parseInt(t.priority):t.priority;return l===d})),t.project&&r!=="inbox"){let o=s(t.project);i=i.filter(l=>{var p,m,h;let d=s((p=l.metadata)==null?void 0:p.project),u=s((h=(m=l.metadata)==null?void 0:m.tgProject)==null?void 0:h.name);return o.length>0&&(o===d||o===u)})}return t.tags&&t.tags.length>0&&(i=i.filter(o=>{var l;return(l=o.metadata)!=null&&l.tags?t.tags.some(d=>o.metadata.tags.includes(d)):!1})),t.dateRange&&(t.dateRange.start&&(i=i.filter(o=>{var l;return(l=o.metadata)!=null&&l.dueDate?new Date(o.metadata.dueDate)>=t.dateRange.start:!1})),t.dateRange.end&&(i=i.filter(o=>{var l;return(l=o.metadata)!=null&&l.dueDate?new Date(o.metadata.dueDate)<=t.dateRange.end:!1}))),t.assignee&&(i=i.filter(o=>{var l;return((l=o.metadata)==null?void 0:l.assignee)===t.assignee})),i}applyWorkingOnFilter(e){var o;`${e.length}`;let t=(this.plugin.settings.taskStatuses.inProgress||">|/").split("|").map(l=>l.trim()).filter(Boolean);`${t.join(", ")}`;let r=null,i=new Set;if((o=this.plugin.settings.taskTimer)!=null&&o.enabled){r=new Ft(this.plugin.settings.taskTimer);let l=r.getAllActiveTimers();`${l.length}`;for(let d of l)(d.status==="running"||d.status==="paused")&&i.add(d.blockId)}let s=e.filter(l=>{var m;if(l.completed)return!1;let d=l.status||" ";if(t.includes(d))return!0;let p=(m=l.metadata)==null?void 0:m.id;return!!(p&&i.has(p))});return`${s.length}`,s}applySorting(e,t){let r=[...e],i=this.plugin.settings.viewConfiguration.find(d=>d.id===t),s=this.plugin.settings.sortCriteria||[],o=(i==null?void 0:i.sortCriteria)||[],l=[...s,...o];return l.length>0&&(`${l.length}${r.length}`,r=pa(r,l,this.plugin.settings)),r}async registerDataflowListeners(){let e=(0,lk.debounce)(async()=>{var i;this.isBatchOperating||this.isInitializing()||(await this.loadTasks(!1),(i=this.onUpdateNeeded)==null||i.call(this,"dataflow"))},500),t=(0,lk.debounce)(()=>{var i;this.isInitializing()||(i=this.onUpdateNeeded)==null||i.call(this,"filter-changed")},400),r=()=>{this.isInitializing()||t()};ip(this.plugin)?(this.registerEvent(Oe(this.plugin.app,Z.BATCH_OPERATION_START,i=>{`${i.count}`,this.isBatchOperating=!0})),this.registerEvent(Oe(this.plugin.app,Z.BATCH_OPERATION_COMPLETE,async i=>{var s;`${i.successCount}${i.failCount}`,this.isBatchOperating=!1,this.isInitializing()||(await this.loadTasks(!1),(s=this.onUpdateNeeded)==null||s.call(this,"batch-operation-complete"))})),this.registerEvent(Oe(this.plugin.app,Z.CACHE_READY,async()=>{var i;await this.loadTasks(),(i=this.onUpdateNeeded)==null||i.call(this,"cache-ready")})),this.registerEvent(Oe(this.plugin.app,Z.TASK_CACHE_UPDATED,e))):this.registerEvent(this.plugin.app.workspace.on("task-genius:task-cache-updated",e)),this.registerEvent(this.plugin.app.workspace.on("task-genius:filter-changed",(i,s)=>{(!s||!s.startsWith("view-config-")&&s!=="global-filter")&&t()})),this.registerEvent(this.plugin.app.workspace.on("task-genius:view-config-changed",i=>{var o;let s=this.getCurrentViewId();i!=null&&i.viewId&&i.viewId!==s||(`${(o=i==null?void 0:i.reason)!=null?o:"unknown"}`,r())})),this.registerEvent(Oe(this.plugin.app,Z.SETTINGS_CHANGED,()=>{r()}))}getActiveFilterCount(){var r,i;let e=this.getCurrentFilterState(),t=0;return(e.searchQuery||e.filterInputValue)&&t++,e.selectedProject&&t++,(i=(r=e.currentFilterState)==null?void 0:r.filterGroups)!=null&&i.length&&(t+=e.currentFilterState.filterGroups.length),t}};var pr=require("obsidian");var vt=require("obsidian");var ck=require("obsidian");z();var qT=class{constructor(a,e,t){this.selectorButton=null;this.workspaceIconEl=null;this.workspaceNameEl=null;this.workspaceLabelEl=null;var r;this.containerEl=a,this.plugin=e,this.currentWorkspaceId=((r=e.workspaceManager)==null?void 0:r.getActiveWorkspace().id)||"",this.onWorkspaceChange=t,this.initialize(),this.updateActiveWorkspaceView()}initialize(){if(this.containerEl.empty(),this.containerEl.addClass("workspace-selector"),!this.plugin.workspaceManager)return;this.selectorButton=this.containerEl.createDiv({cls:"workspace-selector-button"});let a=this.selectorButton.createDiv({cls:"workspace-info"});this.workspaceIconEl=a.createDiv({cls:"workspace-icon"});let e=a.createDiv({cls:"workspace-details"}),t=e.createDiv({cls:"workspace-name-container"});this.workspaceNameEl=t.createSpan({cls:"workspace-name"}),this.workspaceLabelEl=e.createDiv({cls:"workspace-label",text:c("Workspace")});let r=this.selectorButton.createDiv({cls:"workspace-dropdown-icon"});(0,ck.setIcon)(r,"chevron-down"),this.selectorButton.addEventListener("click",i=>{i.preventDefault(),this.showWorkspaceMenu(i)})}updateActiveWorkspaceView(){if(!this.plugin.workspaceManager||!this.selectorButton&&(this.initialize(),!this.selectorButton))return;let a=this.plugin.workspaceManager.getActiveWorkspace();a&&(this.currentWorkspaceId=a.id,this.workspaceIconEl&&(this.workspaceIconEl.style.backgroundColor=this.getWorkspaceColor(a),(0,ck.setIcon)(this.workspaceIconEl,a.icon||"layers")),this.workspaceNameEl&&this.workspaceNameEl.setText(a.name))}getWorkspaceColor(a){let e=["#e74c3c","#3498db","#2ecc71","#f39c12","#9b59b6","#1abc9c","#34495e","#e67e22"],t=Math.abs(a.id.split("").reduce((r,i)=>r+i.charCodeAt(0),0))%e.length;return e[t]}showWorkspaceMenu(a){if(!this.plugin.workspaceManager)return;let e=new ck.Menu,t=this.plugin.workspaceManager.getAllWorkspaces(),r=this.plugin.workspaceManager.getActiveWorkspace();t.forEach(i=>{e.addItem(s=>{var d;let l=((d=this.plugin.workspaceManager)==null?void 0:d.isDefaultWorkspace(i.id))?`${i.name}`:i.name;s.setTitle(l).setIcon(i.icon||"layers").onClick(async()=>{i.id!==this.currentWorkspaceId&&(await this.onWorkspaceChange(i.id),this.currentWorkspaceId=i.id,this.updateActiveWorkspaceView())}),i.id===r.id&&s.setChecked(!0)})}),e.addSeparator(),e.addItem(i=>{i.setTitle(c("Create Workspace")).setIcon("plus").onClick(()=>{this.showCreateWorkspaceDialog()})}),this.plugin.workspaceManager.isDefaultWorkspace(r.id)||(e.addItem(i=>{i.setTitle(c("Rename Current Workspace")).setIcon("edit").onClick(()=>{this.showRenameWorkspaceDialog(r)})}),e.addItem(i=>{i.setTitle(c("Delete Current Workspace")).setIcon("trash").onClick(()=>{this.showDeleteWorkspaceDialog(r)})})),e.addSeparator(),e.addItem(i=>{i.setTitle(c("Manage Workspaces...")).setIcon("settings").onClick(()=>{this.plugin.app.setting.open(),this.plugin.app.setting.openTabById("obsidian-task-progress-bar"),setTimeout(()=>{this.plugin.settingTab&&this.plugin.settingTab.openTab("workspaces")},100)})}),e.showAtMouseEvent(a)}showCreateWorkspaceDialog(){new Vu(this.plugin,a=>{this.onWorkspaceChange(a.id),this.currentWorkspaceId=a.id,this.updateActiveWorkspaceView()}).open()}showRenameWorkspaceDialog(a){new Wu(this.plugin,a,()=>{this.updateActiveWorkspaceView()}).open()}showDeleteWorkspaceDialog(a){new zu(this.plugin,a,()=>{var e;this.currentWorkspaceId=((e=this.plugin.workspaceManager)==null?void 0:e.getActiveWorkspace().id)||"",this.updateActiveWorkspaceView()}).open()}setWorkspace(a){a!==this.currentWorkspaceId&&(this.currentWorkspaceId=a,this.updateActiveWorkspaceView())}};var Xn=require("obsidian");var dk=require("obsidian");z();var GT=class extends dk.Component{constructor(e,t,r,i){super();this.popoverEl=null;this.nameInput=null;this.selectedColor="#3498db";this.popperInstance=null;this.clickHandler=null;this.escapeHandler=null;this.colors=["#e74c3c","#3498db","#2ecc71","#f39c12","#9b59b6","#1abc9c","#34495e","#e67e22","#16a085","#27ae60","#2980b9","#8e44ad","#2c3e50","#f1c40f","#d35400"];this.plugin=e,this.referenceEl=t,this.onSave=r,this.onClose=i}onload(){this.createPopover(),this.setupPopper(),this.setupEventHandlers()}onunload(){this.cleanup()}createPopover(){this.popoverEl=createEl("div"),this.popoverEl.addClass("fluent-project-popover-container"),document.body.appendChild(this.popoverEl);let e=this.popoverEl.createDiv({cls:"fluent-project-popover"});e.createDiv({cls:"fluent-popover-arrow"}).setAttribute("data-popper-arrow","");let r=e.createDiv({cls:"fluent-popover-content"});r.createDiv({cls:"fluent-popover-header"}).createEl("h3",{text:c("New Project")});let s=r.createDiv({cls:"fluent-popover-section"});s.createEl("label",{text:c("Project Name")}),this.nameInput=s.createEl("input",{cls:"fluent-popover-input",attr:{type:"text",placeholder:c("Enter project name")}});let o=r.createDiv({cls:"fluent-popover-section"});o.createEl("label",{text:c("Choose Color")});let l=o.createDiv({cls:"fluent-color-grid"});this.colors.forEach(m=>{let h=l.createDiv({cls:"fluent-color-button",attr:{"data-color":m}});h.style.backgroundColor=m,m===this.selectedColor&&h.addClass("is-selected"),this.registerDomEvent(h,"click",()=>{this.selectColor(m)})});let d=r.createDiv({cls:"fluent-popover-actions"}),u=d.createEl("button",{cls:"fluent-button fluent-button-secondary",text:c("Cancel")});this.registerDomEvent(u,"click",()=>this.close());let p=d.createEl("button",{cls:"fluent-button fluent-button-primary",text:c("Create")});this.registerDomEvent(p,"click",()=>this.save()),this.registerDomEvent(this.nameInput,"keydown",m=>{var h;m.key==="Enter"&&((h=this.nameInput)!=null&&h.value.trim())&&this.save()}),setTimeout(()=>{var m;return(m=this.nameInput)==null?void 0:m.focus()},50)}setupPopper(){if(!this.popoverEl)return;let e=this.popoverEl.querySelector(".fluent-project-popover");e&&(this.popperInstance=Dn(this.referenceEl,e,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,8]}},{name:"arrow",options:{element:".fluent-popover-arrow",padding:8}},{name:"preventOverflow",options:{boundary:"viewport",padding:8}},{name:"flip",options:{fallbackPlacements:["top-start","right","left"]}}]}))}setupEventHandlers(){this.clickHandler=e=>{this.popoverEl&&!this.popoverEl.contains(e.target)&&!this.referenceEl.contains(e.target)&&this.close()},setTimeout(()=>{this.clickHandler&&document.addEventListener("click",this.clickHandler)},0),this.escapeHandler=e=>{e.key==="Escape"&&this.close()},document.addEventListener("keydown",this.escapeHandler)}selectColor(e){if(!this.popoverEl)return;this.selectedColor=e,this.popoverEl.querySelectorAll(".fluent-color-button").forEach(r=>{r.removeClass("is-selected")});let t=this.popoverEl.querySelector(`[data-color="${e}"]`);t==null||t.addClass("is-selected")}save(){if(!this.nameInput)return;let e=this.nameInput.value.trim();if(!e){this.nameInput.focus(),this.nameInput.addClass("is-error"),setTimeout(()=>{var s;return(s=this.nameInput)==null?void 0:s.removeClass("is-error")},300);return}let t=e.replace(/\s+/g,"-"),r=e,i={id:`project-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,name:t,displayName:r,color:this.selectedColor,createdAt:Date.now(),updatedAt:Date.now()};this.onSave(i),this.close()}close(){this.onClose(),this.unload()}cleanup(){this.clickHandler&&(document.removeEventListener("click",this.clickHandler),this.clickHandler=null),this.escapeHandler&&(document.removeEventListener("keydown",this.escapeHandler),this.escapeHandler=null),this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=null),this.popoverEl&&(this.popoverEl.remove(),this.popoverEl=null)}};var KT=class extends dk.Modal{constructor(e,t,r){super(e);this.nameInput=null;this.selectedColor="#3498db";this.eventListeners=[];this.colors=["#e74c3c","#3498db","#2ecc71","#f39c12","#9b59b6","#1abc9c","#34495e","#e67e22","#16a085","#27ae60","#2980b9","#8e44ad","#2c3e50","#f1c40f","#d35400"];this.plugin=t,this.onSave=r}addEventListener(e,t,r){e.addEventListener(t,r),this.eventListeners.push({element:e,event:t,handler:r})}onOpen(){let{contentEl:e}=this;this.modalEl.addClass("fluent-project-modal"),e.createEl("h2",{text:c("Create New Project")});let t=e.createDiv({cls:"fluent-modal-section"});t.createEl("label",{text:c("Project Name")}),this.nameInput=t.createEl("input",{cls:"fluent-modal-input",attr:{type:"text",placeholder:c("Enter project name")}});let r=e.createDiv({cls:"fluent-modal-section"});r.createEl("label",{text:c("Choose Color")});let i=r.createDiv({cls:"fluent-modal-color-grid"});this.colors.forEach(g=>{let f=i.createDiv({cls:"fluent-modal-color-button",attr:{"data-color":g}});f.style.backgroundColor=g,g===this.selectedColor&&f.addClass("is-selected"),this.addEventListener(f,"click",()=>{this.selectColor(g)})});let s=e.createDiv({cls:"fluent-modal-section"});s.createEl("label",{text:c("Preview")});let l=s.createDiv({cls:"fluent-modal-preview"}).createDiv({cls:"fluent-project-item-preview"}),d=l.createDiv({cls:"fluent-project-color"});d.style.backgroundColor=this.selectedColor;let u=l.createSpan({cls:"fluent-project-name"});this.addEventListener(this.nameInput,"input",()=>{var g;u.setText(((g=this.nameInput)==null?void 0:g.value)||c("Project Name"))}),u.setText(c("Project Name"));let p=e.createDiv({cls:"fluent-modal-footer"}),m=p.createEl("button",{cls:"fluent-button fluent-button-secondary",text:c("Cancel")});this.addEventListener(m,"click",()=>this.close());let h=p.createEl("button",{cls:"fluent-button fluent-button-primary",text:c("Create Project")});this.addEventListener(h,"click",()=>this.save()),this.addEventListener(this.nameInput,"keydown",g=>{var f;g.key==="Enter"&&((f=this.nameInput)!=null&&f.value.trim())&&this.save()}),setTimeout(()=>{var g;return(g=this.nameInput)==null?void 0:g.focus()},100)}onClose(){this.eventListeners.forEach(({element:t,event:r,handler:i})=>{t.removeEventListener(r,i)}),this.eventListeners=[];let{contentEl:e}=this;e.empty()}selectColor(e){this.selectedColor=e,this.modalEl.querySelectorAll(".fluent-modal-color-button").forEach(i=>{i.removeClass("is-selected")});let t=this.modalEl.querySelector(`[data-color="${e}"]`);t==null||t.addClass("is-selected");let r=this.modalEl.querySelector(".fluent-project-color");r&&(r.style.backgroundColor=e)}save(){if(!this.nameInput)return;let e=this.nameInput.value.trim();if(!e){this.nameInput.focus(),this.nameInput.addClass("is-error"),setTimeout(()=>{var s;return(s=this.nameInput)==null?void 0:s.removeClass("is-error")},300);return}let t=e.replace(/\s+/g,"-"),r=e,i={id:`project-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,name:t,displayName:r,color:this.selectedColor,createdAt:Date.now(),updatedAt:Date.now()};this.onSave(i),this.close()}},QT=class extends dk.Modal{constructor(e,t,r,i){super(e);this.nameInput=null;this.displayNameInput=null;this.eventListeners=[];this.colors=["#e74c3c","#3498db","#2ecc71","#f39c12","#9b59b6","#1abc9c","#34495e","#e67e22","#16a085","#27ae60","#2980b9","#8e44ad","#2c3e50","#f1c40f","#d35400"];this.plugin=t,this.project={...r},this.onSave=i,this.selectedColor=r.color||"#3498db"}addEventListener(e,t,r){e.addEventListener(t,r),this.eventListeners.push({element:e,event:t,handler:r})}onOpen(){let{contentEl:e}=this;this.modalEl.addClass("fluent-project-modal"),e.createEl("h2",{text:c("Edit Project")});let t=e.createDiv({cls:"fluent-modal-section"});t.createEl("label",{text:c("Display Name")}),this.displayNameInput=t.createEl("input",{cls:"fluent-modal-input",attr:{type:"text",placeholder:c("Enter display name"),value:this.project.displayName||this.project.name}});let r=e.createDiv({cls:"fluent-modal-section"});r.createEl("label",{text:c("Choose Color")});let i=r.createDiv({cls:"fluent-modal-color-grid"});this.colors.forEach(g=>{let f=i.createDiv({cls:"fluent-modal-color-button",attr:{"data-color":g}});f.style.backgroundColor=g,g===this.selectedColor&&f.addClass("is-selected"),this.addEventListener(f,"click",()=>{this.selectColor(g)})});let s=e.createDiv({cls:"fluent-modal-section"});s.createEl("label",{text:c("Preview")});let l=s.createDiv({cls:"fluent-modal-preview"}).createDiv({cls:"fluent-project-item-preview"}),d=l.createDiv({cls:"fluent-project-color"});d.style.backgroundColor=this.selectedColor;let u=l.createSpan({cls:"fluent-project-name"});this.addEventListener(this.displayNameInput,"input",()=>{var g;u.setText(((g=this.displayNameInput)==null?void 0:g.value)||this.project.name)}),u.setText(this.project.displayName||this.project.name);let p=e.createDiv({cls:"fluent-modal-footer"}),m=p.createEl("button",{cls:"fluent-button fluent-button-secondary",text:c("Cancel")});this.addEventListener(m,"click",()=>this.close());let h=p.createEl("button",{cls:"fluent-button fluent-button-primary",text:c("Save Changes")});this.addEventListener(h,"click",()=>this.save()),this.addEventListener(this.displayNameInput,"keydown",g=>{g.key==="Enter"&&this.save()}),setTimeout(()=>{var g,f;(g=this.displayNameInput)==null||g.focus(),(f=this.displayNameInput)==null||f.select()},100)}onClose(){this.eventListeners.forEach(({element:t,event:r,handler:i})=>{t.removeEventListener(r,i)}),this.eventListeners=[];let{contentEl:e}=this;e.empty()}selectColor(e){this.selectedColor=e,this.modalEl.querySelectorAll(".fluent-modal-color-button").forEach(i=>{i.removeClass("is-selected")});let t=this.modalEl.querySelector(`[data-color="${e}"]`);t==null||t.addClass("is-selected");let r=this.modalEl.querySelector(".fluent-project-color");r&&(r.style.backgroundColor=e)}save(){if(!this.displayNameInput)return;let e=this.displayNameInput.value.trim();this.project.displayName=e||this.project.name,this.project.color=this.selectedColor,this.project.updatedAt=Date.now(),this.onSave(this.project),this.close()}};z();var uk=class extends Xn.Component{constructor(e,t,r,i=!1){super();this.projects=[];this.activeProjectId=null;this.currentPopover=null;this.currentSort="name-asc";this.STORAGE_KEY="task-genius-project-sort";this.EXPANDED_KEY="task-genius-project-expanded";this.isTreeView=!1;this.expandedNodes=new Set;this.treeNodes=[];this.refreshTimeoutId=null;this.containerEl=e,this.plugin=t,this.onProjectSelect=r,this.isTreeView=i,this.collator=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"})}async onload(){await this.loadSortPreference(),await this.loadExpandedNodes(),await this.loadProjects(),this.render(),this.registerEvent(dp(this.plugin.app,()=>{this.refreshWithDelay()})),this.registerEvent(Oe(this.plugin.app,Z.CACHE_READY,()=>{this.refreshWithDelay()})),this.registerEvent(Oe(this.plugin.app,Z.TASK_CACHE_UPDATED,()=>{this.refreshWithDelay()})),this.registerEvent(Oe(this.plugin.app,Z.PROJECT_DATA_UPDATED,()=>{this.refreshWithDelay()}))}refreshWithDelay(){this.refreshTimeoutId&&clearTimeout(this.refreshTimeoutId),this.refreshTimeoutId=setTimeout(()=>{this.refresh(),this.refreshTimeoutId=null},100)}onunload(){this.refreshTimeoutId&&(clearTimeout(this.refreshTimeoutId),this.refreshTimeoutId=null),this.currentPopover&&(this.removeChild(this.currentPopover),this.currentPopover=null),this.containerEl.empty()}async loadProjects(){let e=[];this.plugin.dataflowOrchestrator?e=await this.plugin.dataflowOrchestrator.getQueryAPI().getAllTasks():e=this.plugin.preloadedTasks||[];let t=new Map;e.forEach(r=>{let i=qt(r);if(!i)return;let s=i;if(!t.has(s)){let l=i.replace(/-/g," ");t.set(s,{id:s,name:s,filterKey:s,displayName:l,color:this.generateColorForProject(s),taskCount:0})}let o=t.get(s);o&&o.taskCount++}),this.projects=Array.from(t.values()),this.loadCustomProjects(),this.sortProjects(),this.isTreeView&&this.buildTreeStructure(),this.render()}async loadSortPreference(){let e=await this.plugin.app.loadLocalStorage(this.STORAGE_KEY);e&&this.isValidSortOption(e)&&(this.currentSort=e)}async saveSortPreference(){await this.plugin.app.saveLocalStorage(this.STORAGE_KEY,this.currentSort)}isValidSortOption(e){return["name-asc","name-desc","tasks-asc","tasks-desc","created-asc","created-desc"].includes(e)}async loadExpandedNodes(){let e=await this.plugin.app.loadLocalStorage(this.EXPANDED_KEY);e&&Array.isArray(e)&&(this.expandedNodes=new Set(e))}async saveExpandedNodes(){await this.plugin.app.saveLocalStorage(this.EXPANDED_KEY,Array.from(this.expandedNodes))}setViewMode(e){this.isTreeView=e,this.render()}sortProjects(){this.projects.sort((e,t)=>{switch(this.currentSort){case"name-asc":return this.collator.compare(e.displayName||e.name,t.displayName||t.name);case"name-desc":return this.collator.compare(t.displayName||t.name,e.displayName||e.name);case"tasks-asc":return e.taskCount-t.taskCount;case"tasks-desc":return t.taskCount-e.taskCount;case"created-asc":return(e.createdAt||0)-(t.createdAt||0);case"created-desc":return(t.createdAt||0)-(e.createdAt||0);default:return 0}})}buildTreeStructure(){let e=new Map,t=[],r=this.plugin.settings.projectPathSeparator||"/";this.projects.forEach(i=>{let s=this.parseProjectPath(i.name);if(s.length===0)return;let o="",l;for(let d=0;d<s.length;d++){let u=s[d],p=d===s.length-1;o=o?`${o}${r}${u}`:u;let m=e.get(o);m?p&&m.project.isVirtual&&(m.project=i,m.project.filterKey=i.filterKey):(m={project:p?i:{id:o,name:o,filterKey:o,displayName:u,color:this.generateColorForProject(o),taskCount:0,isVirtual:!0},children:[],level:d,expanded:this.expandedNodes.has(o),path:s.slice(0,d+1),fullPath:o,parent:l},e.set(o,m),l?l.children.push(m):t.push(m)),l=m}}),this.sortTreeNodes(t),this.treeNodes=t,this.updateParentTaskCounts(t)}parseProjectPath(e){let t=this.plugin.settings.projectPathSeparator||"/";if(!e||!e.trim())return[];let r=e.trim().replace(new RegExp(`${this.escapeRegExp(t)}+`,"g"),t).replace(new RegExp(`^${this.escapeRegExp(t)}|${this.escapeRegExp(t)}$`,"g"),"");return r?r.split(t):[]}escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}sortTreeNodes(e){e.forEach(t=>{t.children.length>0&&this.sortTreeNodes(t.children)}),e.sort((t,r)=>{switch(this.currentSort){case"name-asc":return this.collator.compare(t.project.displayName||t.project.name,r.project.displayName||r.project.name);case"name-desc":return this.collator.compare(r.project.displayName||r.project.name,t.project.displayName||t.project.name);case"tasks-asc":return t.project.taskCount-r.project.taskCount;case"tasks-desc":return r.project.taskCount-t.project.taskCount;case"created-asc":return(t.project.createdAt||0)-(r.project.createdAt||0);case"created-desc":return(r.project.createdAt||0)-(t.project.createdAt||0);default:return 0}})}updateParentTaskCounts(e){e.forEach(t=>{if(t.children.length>0){this.updateParentTaskCounts(t.children);let r=t.children.reduce((i,s)=>i+s.project.taskCount,0);t.project.isVirtual?t.project.taskCount=r:t.project.taskCount=t.project.taskCount+r}})}toggleNodeExpanded(e){this.expandedNodes.has(e)?this.expandedNodes.delete(e):this.expandedNodes.add(e),this.saveExpandedNodes(),this.render()}generateColorForProject(e){let t=["#e74c3c","#3498db","#2ecc71","#f39c12","#9b59b6","#1abc9c","#34495e","#e67e22"],r=0;for(let i=0;i<e.length;i++)r=e.charCodeAt(i)+((r<<5)-r);return t[Math.abs(r)%t.length]}render(){this.containerEl.empty(),this.containerEl.addClass("fluent-project-list"),this.isTreeView?this.containerEl.addClass("is-tree-view"):this.containerEl.removeClass("is-tree-view");let e=this.containerEl.createDiv({cls:"fluent-project-scroll"});this.isTreeView?(this.buildTreeStructure(),this.renderTreeNodes(e,this.treeNodes,0)):this.projects.forEach(i=>{this.renderProjectItem(e,i,0,!1)});let t=this.containerEl.createDiv({cls:"fluent-project-item fluent-add-project"});t.createDiv({cls:"fluent-project-add-icon"}).createDiv({cls:"fluent-project-color-dashed"}),t.createSpan({cls:"fluent-project-name",text:c("Add Project")}),this.registerDomEvent(t,"click",()=>{this.handleAddProject(t)})}renderTreeNodes(e,t,r){t.forEach(i=>{let s=i.children.length>0;this.renderProjectItem(e,i.project,r,s,i),s&&i.expanded&&this.renderTreeNodes(e,i.children,r+1)})}renderProjectItem(e,t,r,i,s){let o=e.createDiv({cls:"fluent-project-item",attr:{"data-project-id":t.filterKey,"data-level":String(r)}});if(t.isVirtual&&o.addClass("is-virtual"),this.activeProjectId===t.filterKey&&o.addClass("is-active"),this.isTreeView&&r>0&&(o.style.paddingLeft=`${r*20+8}px`),this.isTreeView&&i){let m=o.createDiv({cls:"fluent-project-chevron"}),h=(s==null?void 0:s.expanded)||!1;(0,Xn.setIcon)(m,h?"chevron-down":"chevron-right"),this.registerDomEvent(m,"click",g=>{g.stopPropagation();let f=(s==null?void 0:s.fullPath)||t.id;this.toggleNodeExpanded(f)})}else this.isTreeView&&o.createDiv({cls:"fluent-project-chevron-spacer"});let l=o.createDiv({cls:"fluent-project-color"});l.style.backgroundColor=t.color;let d;if(this.isTreeView)if(t.isVirtual)d=t.displayName||t.name;else{let m=this.plugin.settings.projectPathSeparator||"/",g=t.name.split(m),f=g[g.length-1]||t.name;if(t.displayName&&t.displayName!==t.name){let k=t.displayName.split(m);d=k[k.length-1]||f}else d=f}else d=t.displayName||t.name;let u=o.createSpan({cls:"fluent-project-name",text:d}),p=o.createSpan({cls:"fluent-project-count",text:String(t.taskCount)});this.registerDomEvent(o,"click",m=>{m.target.closest(".fluent-project-chevron")||(t.isVirtual&&s?this.selectVirtualNode(s):(this.setActiveProject(t.filterKey),this.onProjectSelect(t.filterKey)))}),t.isVirtual||this.registerDomEvent(o,"contextmenu",m=>{m.preventDefault(),this.showProjectContextMenu(m,t)})}selectVirtualNode(e){let t=[],r=i=>{i.project.isVirtual||t.push(i.project.filterKey),i.children.forEach(s=>r(s))};r(e),t.length>0&&(this.setActiveProject(t[0]),this.onProjectSelect(t[0]))}setActiveProject(e){if(this.activeProjectId=e,this.containerEl.querySelectorAll(".fluent-project-item").forEach(t=>{t.removeClass("is-active")}),e){let t=this.containerEl.querySelector(`[data-project-id="${e}"]`);t&&t.addClass("is-active")}}getProjects(){return this.projects}refresh(){this.loadProjects()}setEnabled(e){e?this.containerEl.removeClass("tg-project-list-disabled"):this.containerEl.addClass("tg-project-list-disabled")}handleAddProject(e){this.currentPopover&&(this.removeChild(this.currentPopover),this.currentPopover=null),Xn.Platform.isPhone?new KT(this.plugin.app,this.plugin,async r=>{await this.saveProject(r)}).open():(this.currentPopover=new GT(this.plugin,e,async t=>{await this.saveProject(t),this.currentPopover&&(this.removeChild(this.currentPopover),this.currentPopover=null)},()=>{this.currentPopover&&(this.removeChild(this.currentPopover),this.currentPopover=null)}),this.addChild(this.currentPopover))}async saveProject(e){this.plugin.settings.projectConfig||(this.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},customProjects:[]}),this.plugin.settings.projectConfig.customProjects||(this.plugin.settings.projectConfig.customProjects=[]),this.plugin.settings.projectConfig.customProjects.push(e),await this.plugin.saveSettings(),this.loadProjects()}loadCustomProjects(){var t;(((t=this.plugin.settings.projectConfig)==null?void 0:t.customProjects)||[]).forEach(r=>{let i=this.projects.findIndex(s=>s.name===r.name);i===-1?this.projects.push({id:r.id,name:r.name,filterKey:r.name,displayName:r.displayName||r.name,color:r.color,taskCount:0,createdAt:r.createdAt,updatedAt:r.updatedAt}):(this.projects[i].id=r.id,this.projects[i].filterKey=r.name,this.projects[i].color=r.color,this.projects[i].displayName=r.displayName||r.name,this.projects[i].createdAt=r.createdAt,this.projects[i].updatedAt=r.updatedAt)})}showSortMenu(e){let t=new Xn.Menu;[{label:c("Name (A-Z)"),value:"name-asc",icon:"arrow-up-a-z"},{label:c("Name (Z-A)"),value:"name-desc",icon:"arrow-down-a-z"},{label:c("Tasks (Low to High)"),value:"tasks-asc",icon:"arrow-up-1-0"},{label:c("Tasks (High to Low)"),value:"tasks-desc",icon:"arrow-down-1-0"},{label:c("Created (Oldest First)"),value:"created-asc",icon:"clock"},{label:c("Created (Newest First)"),value:"created-desc",icon:"history"}].forEach(i=>{t.addItem(s=>{s.setTitle(i.label).setIcon(i.icon).onClick(async()=>{this.currentSort=i.value,await this.saveSortPreference(),this.sortProjects(),this.render()}),this.currentSort===i.value&&s.setChecked(!0)})}),t.showAtMouseEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0,clientX:e.getBoundingClientRect().left,clientY:e.getBoundingClientRect().bottom}))}showProjectContextMenu(e,t){var s,o;let r=new Xn.Menu,i=(o=(s=this.plugin.settings.projectConfig)==null?void 0:s.customProjects)==null?void 0:o.some(l=>l.id===t.id||l.name===t.name);r.addItem(l=>{l.setTitle(c("Edit Project")).setIcon("edit"),i?l.onClick(()=>{this.editProject(t)}):l.setDisabled(!0)}),r.addItem(l=>{l.setTitle(c("Delete Project")).setIcon("trash"),i?l.onClick(()=>{this.deleteProject(t)}):l.setDisabled(!0)}),r.showAtMouseEvent(e)}editProject(e){var i,s;let t=(s=(i=this.plugin.settings.projectConfig)==null?void 0:i.customProjects)==null?void 0:s.find(o=>o.id===e.id||o.name===e.name);t||(t={id:e.id,name:e.name,displayName:e.displayName||e.name,color:e.color,createdAt:Date.now(),updatedAt:Date.now()}),new QT(this.plugin.app,this.plugin,t,async o=>{await this.updateProject(o)}).open()}async updateProject(e){this.plugin.settings.projectConfig||(this.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},customProjects:[]}),this.plugin.settings.projectConfig.customProjects||(this.plugin.settings.projectConfig.customProjects=[]);let t=this.plugin.settings.projectConfig.customProjects.findIndex(r=>r.id===e.id);t!==-1?this.plugin.settings.projectConfig.customProjects[t]=e:this.plugin.settings.projectConfig.customProjects.push(e),await this.plugin.saveSettings(),this.loadProjects()}deleteProject(e){new class extends Xn.Modal{constructor(r,i){super(r),this.onConfirm=i}onOpen(){let{contentEl:r}=this;r.createEl("h2",{text:c("Delete Project")}),r.createEl("p",{text:c(`Are you sure you want to delete "${e.displayName||e.name}"?`)}),r.createEl("p",{cls:"mod-warning",text:c("This action cannot be undone.")});let i=r.createDiv({cls:"modal-button-container"});i.createEl("button",{text:c("Cancel")}).addEventListener("click",()=>this.close()),i.createEl("button",{text:c("Delete"),cls:"mod-warning"}).addEventListener("click",()=>{this.onConfirm(),this.close()})}onClose(){let{contentEl:r}=this;r.empty()}}(this.plugin.app,async()=>{var r;if((r=this.plugin.settings.projectConfig)!=null&&r.customProjects){let i=this.plugin.settings.projectConfig.customProjects.findIndex(s=>s.id===e.id||s.name===e.name);i!==-1&&(this.plugin.settings.projectConfig.customProjects.splice(i,1),await this.plugin.saveSettings(),this.activeProjectId===e.filterKey&&(this.setActiveProject(null),this.onProjectSelect("")),this.loadProjects())}}).open()}};z();var up=class extends vt.Component{constructor(e,t,r,i,s=!1){var o;super();this.onNavigate=r;this.onProjectSelect=i;this.collapsed=!1;this.isTreeView=!1;this.otherViewsSection=null;this.railEl=null;this.sortables=[];this.SYSTEM_VIEWS={inbox:{icon:"inbox",label:()=>c("Inbox")},today:{icon:"calendar-days",label:()=>c("Today")},upcoming:{icon:"calendar",label:()=>c("Upcoming")},flagged:{icon:"flag",label:()=>c("Flagged")}};this.otherItems=[];this.containerEl=e,this.plugin=t,this.collapsed=s,this.currentWorkspaceId=((o=t.workspaceManager)==null?void 0:o.getActiveWorkspace().id)||""}isViewVisible(e){var i;let t=this.plugin.workspaceManager;if(!t)return!0;let r=this.currentWorkspaceId||((i=t.getActiveWorkspace())==null?void 0:i.id);return!t.isViewHidden(e,r)}destroySortables(){this.sortables.forEach(e=>e.destroy()),this.sortables=[]}ensureSystemViews(){var d;let e=this.plugin.settings.viewConfiguration,t=new Set(e.map(u=>u.id)),r=Object.keys(this.SYSTEM_VIEWS),i=!1,s=(d=this.plugin.settings.changelog)==null?void 0:d.lastVersion;(!s||this.compareVersions(s,"9.12.3")<=0)&&e.forEach(u=>{!r.includes(u.id)&&u.region==="top"&&(u.region="bottom",i=!0)}),e.forEach(u=>{r.includes(u.id)&&u.region!=="top"&&(u.region="top",i=!0)});let l=[];Object.entries(this.SYSTEM_VIEWS).forEach(([u,p])=>{t.has(u)||(l.push({id:u,name:p.label(),icon:p.icon,type:"default",visible:!0,region:"top",hideCompletedAndAbandonedTasks:!0,filterBlanks:!1,filterRules:{}}),i=!0)}),l.length>0&&(this.plugin.settings.viewConfiguration=[...l,...e]),i&&this.plugin.saveSettings()}compareVersions(e,t){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(let o=0;o<s;o++){let l=r[o]||0,d=i[o]||0;if(l<d)return-1;if(l>d)return 1}return 0}getViewItems(e){return this.plugin.settings.viewConfiguration.filter(r=>(r.region||"top")===e&&r.visible!==!1&&this.isViewVisible(r.id)).map(r=>{let i=r.name;return this.SYSTEM_VIEWS[r.id]&&(i=this.SYSTEM_VIEWS[r.id].label()),{id:r.id,label:i,icon:r.icon||"list",type:e==="top"?"primary":"other"}})}render(){var d,u,p,m,h,g,f;if(this.containerEl.empty(),this.destroySortables(),this.containerEl.addClass("fluent-sidebar"),this.containerEl.toggleClass("is-collapsed",this.collapsed),this.collapsed&&!vt.Platform.isPhone){this.railEl=this.containerEl.createDiv({cls:"fluent-sidebar-rail"}),this.renderRailMode();return}let e=this.containerEl.createDiv({cls:"fluent-sidebar-header"}),t=e.createDiv();this.plugin.workspaceManager&&(this.workspaceSelector=new qT(t,this.plugin,k=>this.handleWorkspaceChange(k)));let r=e.createEl("button",{cls:"fluent-new-task-btn"});(0,vt.setIcon)(r.createDiv({cls:"fluent-new-task-icon"}),"plus"),r.createDiv({cls:"fluent-new-task-text",text:c("New Task")}),this.registerDomEvent(r,"click",()=>this.onNavigate("new-task"));let i=this.containerEl.createDiv({cls:"fluent-sidebar-content"}),s=this.getViewItems("top");if(s.length>0){let k=i.createDiv({cls:"fluent-sidebar-section primary",attr:{"data-region":"top"}});this.renderSortableSection(k,s,"top")}if(!((d=this.plugin.workspaceManager)==null?void 0:d.isSidebarComponentHidden("projects-list"))){let k=i.createDiv({cls:"fluent-sidebar-section projects"}),v=k.createDiv({cls:"fluent-section-header"});v.createSpan({text:c("Projects")});let y=v.createDiv({cls:"fluent-project-header-buttons"}),b=y.createDiv({cls:"fluent-tree-toggle-btn",attr:{"aria-label":c("Toggle tree/list view")}});this.isTreeView=this.plugin.app.loadLocalStorage("task-genius-project-view-mode")==="tree",(0,vt.setIcon)(b,this.isTreeView?"git-branch":"list"),this.registerDomEvent(b,"click",()=>{var x,C;this.isTreeView=!this.isTreeView,(0,vt.setIcon)(b,this.isTreeView?"git-branch":"list"),this.plugin.app.saveLocalStorage("task-genius-project-view-mode",this.isTreeView?"tree":"list"),this.projectList&&((C=(x=this.projectList).setViewMode)==null||C.call(x,this.isTreeView))});let w=y.createDiv({cls:"fluent-sort-project-btn",attr:{"aria-label":c("Sort projects")}});(0,vt.setIcon)(w,"arrow-up-down"),this.registerDomEvent(w,"click",()=>{var x,C;(C=(x=this.projectList).showSortMenu)==null||C.call(x,w)});let T=k.createDiv();this.projectList=new uk(T,this.plugin,this.onProjectSelect,this.isTreeView),this.addChild(this.projectList)}if(!((u=this.plugin.workspaceManager)==null?void 0:u.isSidebarComponentHidden("other-views"))){let k=this.getViewItems("bottom"),v=(f=(g=(h=(m=(p=this.plugin)==null?void 0:p.settings)==null?void 0:m.fluentView)==null?void 0:h.fluentConfig)==null?void 0:g.maxOtherViewsBeforeOverflow)!=null?f:5,y=k.slice(0,v),b=k.slice(v),w=i.createDiv({cls:"fluent-sidebar-section other-views",attr:{"data-region":"bottom"}}),T=w.createDiv({cls:"fluent-section-header"});if(T.createSpan({text:c("Other Views")}),b.length>0){let x=T.createDiv({cls:"fluent-section-action",attr:{"aria-label":c("More views")}});(0,vt.setIcon)(x,"more-horizontal"),this.registerDomEvent(x,"click",C=>this.showOtherViewsMenu(C,b))}this.renderSortableSection(w,y,"bottom")}}renderRailMode(){var r,i,s,o,l,d,u;if(!this.railEl)return;this.railEl.empty();let e=this.railEl.createDiv({cls:"fluent-rail-btn",attr:{"aria-label":c("Workspace")}});if((0,vt.setIcon)(e,"layers"),this.registerDomEvent(e,"click",p=>this.showWorkspaceMenuWithManager(p)),this.getViewItems("top").forEach(p=>{this.renderRailButton(p)}),!((r=this.plugin.workspaceManager)!=null&&r.isSidebarComponentHidden("other-views"))){let p=this.getViewItems("bottom"),m=(d=(l=(o=(s=(i=this.plugin)==null?void 0:i.settings)==null?void 0:s.fluentView)==null?void 0:o.fluentConfig)==null?void 0:l.maxOtherViewsBeforeOverflow)!=null?d:5,h=p.slice(0,m),g=p.slice(m);if(h.forEach(f=>{this.renderRailButton(f)}),g.length>0){let f=this.railEl.createDiv({cls:"fluent-rail-btn",attr:{"aria-label":c("More views")}});(0,vt.setIcon)(f,"more-horizontal"),this.registerDomEvent(f,"click",k=>this.showOtherViewsMenu(k,g))}}if(!((u=this.plugin.workspaceManager)!=null&&u.isSidebarComponentHidden("projects-list"))){let p=this.railEl.createDiv({cls:"fluent-rail-btn",attr:{"aria-label":c("Projects")}});(0,vt.setIcon)(p,"folder"),this.registerDomEvent(p,"click",m=>this.showProjectMenu(m))}let t=this.railEl.createDiv({cls:"fluent-rail-btn",attr:{"aria-label":c("New Task")}});(0,vt.setIcon)(t,"plus"),this.registerDomEvent(t,"click",()=>this.onNavigate("new-task"))}renderRailButton(e){if(!this.railEl)return;let t=this.railEl.createDiv({cls:"fluent-rail-btn",attr:{"aria-label":e.label,"data-view-id":e.id}});(0,vt.setIcon)(t,e.icon),this.registerDomEvent(t,"click",()=>{this.setActiveItem(e.id),this.onNavigate(e.id)}),this.registerDomEvent(t,"contextmenu",r=>{this.showViewContextMenu(r,e.id)})}renderSortableSection(e,t,r){let i=e.createDiv({cls:"fluent-navigation-list"});t.forEach(o=>{let l=i.createDiv({cls:"fluent-navigation-item",attr:{"data-view-id":o.id}}),d=l.createDiv({cls:"fluent-navigation-icon"});(0,vt.setIcon)(d,o.icon),l.createSpan({cls:"fluent-navigation-label",text:o.label}),o.badge&&l.createDiv({cls:"fluent-navigation-badge",text:String(o.badge)}),this.registerDomEvent(l,"click",()=>{this.setActiveItem(o.id),this.onNavigate(o.id)}),this.registerDomEvent(l,"contextmenu",u=>{this.showViewContextMenu(u,o.id)})});let s=Pr.create(i,{group:"fluent-sidebar-views",animation:150,ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",delay:vt.Platform.isMobile?200:0,delayOnTouchOnly:!0,onEnd:o=>this.handleReorder(o)});this.sortables.push(s)}async handleReorder(e){let{to:t,from:r,oldIndex:i,newIndex:s}=e;if(t===r&&i===s)return;let o=this.containerEl,l=w=>{let T=o.querySelector(`.fluent-sidebar-section[data-region="${w}"] .fluent-navigation-list`);return T?Array.from(T.children).map(x=>x.getAttribute("data-view-id")).filter(x=>x!==null):[]},d=l("top"),u=l("bottom"),p=new Set([...d,...u]),m=this.plugin.settings.viewConfiguration,h=m.filter(w=>!p.has(w.id)),g=w=>m.find(T=>T.id===w),f=d.map(w=>{let T=g(w);return T&&(T.region="top"),T}).filter(w=>w!==void 0),k=Object.keys(this.SYSTEM_VIEWS),v=u.map(w=>{let T=g(w);return T&&(T.region=k.includes(w)?"top":"bottom"),T}).filter(w=>w!==void 0),y=v.filter(w=>k.includes(w.id)),b=v.filter(w=>!k.includes(w.id));this.plugin.settings.viewConfiguration=[...f,...y,...b,...h],await this.plugin.saveSettings(),y.length>0&&this.render(),this.plugin.app.workspace.trigger("task-genius:view-config-changed",{reason:"sidebar-reorder"})}onload(){if(this.ensureSystemViews(),vt.Platform.isPhone&&this.collapsed){let e=this.collapsed;this.collapsed=!1,this.render(),this.collapsed=e,this.containerEl.addClass("is-collapsed")}else this.render();this.plugin.workspaceManager&&(this.registerEvent(dp(this.plugin.app,e=>{this.currentWorkspaceId=e.workspaceId,this.render()})),this.registerEvent(aH(this.plugin.app,()=>{this.render()})),this.registerEvent(tH(this.plugin.app,()=>{this.render()})))}onunload(){this.destroySortables(),this.containerEl.empty()}setCollapsed(e){this.collapsed=e,vt.Platform.isPhone?this.containerEl.toggleClass("is-collapsed",e):this.render()}async handleWorkspaceChange(e){this.plugin.workspaceManager&&(await this.plugin.workspaceManager.setActiveWorkspace(e),this.currentWorkspaceId=e)}showWorkspaceMenuWithManager(e){if(!this.plugin.workspaceManager)return;let t=new vt.Menu,r=this.plugin.workspaceManager.getAllWorkspaces(),i=this.plugin.workspaceManager.getActiveWorkspace();r.forEach(s=>{t.addItem(o=>{var u;let d=((u=this.plugin.workspaceManager)==null?void 0:u.isDefaultWorkspace(s.id))?`${s.name}`:s.name;o.setTitle(d).setIcon("layers").onClick(async()=>{await this.handleWorkspaceChange(s.id)}),s.id===i.id&&o.setChecked(!0)})}),t.addSeparator(),t.addItem(s=>{s.setTitle(c("Create Workspace")).setIcon("plus").onClick(()=>this.showCreateWorkspaceDialog())}),t.showAtMouseEvent(e)}showCreateWorkspaceDialog(){class e extends vt.Modal{constructor(i,s){super(i.app);this.plugin=i;this.onCreated=s}onOpen(){let{contentEl:i}=this;i.createEl("h2",{text:c("Create New Workspace")});let s=i.createDiv();s.createEl("label",{text:c("Workspace Name:")}),this.nameInput=s.createEl("input",{type:"text",placeholder:c("Enter workspace name...")});let o=i.createDiv({cls:"modal-button-container"}),l=o.createEl("button",{text:c("Create")}),d=o.createEl("button",{text:c("Cancel")});l.addEventListener("click",async()=>{let u=this.nameInput.value.trim();u&&this.plugin.workspaceManager?(await this.plugin.workspaceManager.createWorkspace(u),new vt.Notice(c('Workspace "{{name}}" created',{interpolation:{name:u}})),this.onCreated(),this.close()):new vt.Notice(c("Please enter a workspace name"))}),d.addEventListener("click",()=>{this.close()}),this.nameInput.focus()}onClose(){let{contentEl:i}=this;i.empty()}}new e(this.plugin,()=>this.render()).open()}showProjectMenu(e){let t=[],r=this.projectList;if(r&&typeof r.getProjects=="function")t=r.getProjects();else{let s=createDiv(),o=new uk(s,this.plugin,this.onProjectSelect);typeof o.getProjects=="function"&&(t=o.getProjects())}let i=new vt.Menu;t.forEach(s=>{i.addItem(o=>{o.setTitle(s.name).setIcon("folder").onClick(()=>{this.onProjectSelect(s.filterKey)})})}),i.showAtMouseEvent(e)}showOtherViewsMenu(e,t){let r=new vt.Menu;t.forEach(i=>{r.addItem(s=>{s.setTitle(i.label).setIcon(i.icon).onClick(()=>{this.setActiveItem(i.id),this.onNavigate(i.id)})})}),r.showAtMouseEvent(e)}showViewContextMenu(e,t){e.preventDefault(),e.stopPropagation();let r=new vt.Menu,i=t in this.SYSTEM_VIEWS;r.addItem(o=>{o.setTitle(c("Open in new tab")).setIcon("plus-square").onClick(()=>{this.plugin.app.workspace.getLeaf("tab").setViewState({type:Po,state:{viewId:t}})})}),r.addItem(o=>{o.setTitle(c("Open settings")).setIcon("settings").onClick(async()=>{if(t==="habit"){this.plugin.app.setting.open(),this.plugin.app.setting.openTabById(this.plugin.manifest.id),setTimeout(()=>{this.plugin.settingTab&&this.plugin.settingTab.openTab("habit")},100);return}let l=this.plugin.settings.viewConfiguration.find(u=>u.id===t);if(!l)return;let d=(l==null?void 0:l.filterRules)||{};new gn(this.plugin.app,this.plugin,l,d,(u,p)=>{let m=this.plugin.settings.viewConfiguration.findIndex(h=>h.id===u.id);m!==-1&&(this.plugin.settings.viewConfiguration[m]={...u,filterRules:p},this.plugin.saveSettings(),l.visible!==u.visible&&this.render(),this.plugin.app.workspace.trigger("task-genius:view-config-changed",{reason:"edit",viewId:t}))}).open()})}),i||(r.addItem(o=>{o.setTitle(c("Copy view")).setIcon("copy").onClick(()=>{let l=this.plugin.settings.viewConfiguration.find(d=>d.id===t);l&&new gn(this.plugin.app,this.plugin,null,null,(d,u)=>{this.plugin.settings.viewConfiguration.some(p=>p.id===d.id)?new vt.Notice(c("Error: View ID already exists.")):(this.plugin.settings.viewConfiguration.push({...d,filterRules:u}),this.plugin.saveSettings(),this.render(),this.plugin.app.workspace.trigger("task-genius:view-config-changed",{reason:"create",viewId:d.id}),new vt.Notice(c("View copied successfully: ")+d.name))},l,l.id).open()})}),r.addItem(o=>{o.setTitle(c("Hide in sidebar")).setIcon("eye-off").onClick(()=>{let l=this.plugin.settings.viewConfiguration.find(d=>d.id===t);l&&(l.visible=!1,this.plugin.saveSettings(),this.render(),this.plugin.app.workspace.trigger("task-genius:view-config-changed",{reason:"visibility",viewId:t}))})}));let s=this.plugin.settings.viewConfiguration.find(o=>o.id===t);(s==null?void 0:s.type)==="custom"&&(r.addSeparator(),r.addItem(o=>{o.setTitle(c("Delete")).setIcon("trash").setWarning(!0).onClick(()=>{this.plugin.settings.viewConfiguration=this.plugin.settings.viewConfiguration.filter(l=>l.id!==t),this.plugin.saveSettings(),this.render(),this.plugin.app.workspace.trigger("task-genius:view-config-changed",{reason:"delete",viewId:t}),new vt.Notice(c("View deleted: ")+s.name)})})),r.showAtMouseEvent(e)}setActiveItem(e){this.containerEl.querySelectorAll(".fluent-navigation-item, .fluent-rail-btn[data-view-id]").forEach(r=>{r.removeClass("is-active")}),this.containerEl.querySelectorAll(`[data-view-id="${e}"]`).forEach(r=>r.addClass("is-active"))}updateWorkspace(e){var r,i;let t=typeof e=="string"?e:e.id;this.currentWorkspaceId=t,(r=this.workspaceSelector)==null||r.setWorkspace(t),(i=this.projectList)==null||i.refresh()}setProjectListEnabled(e){this.projectList&&this.projectList.setEnabled(e)}};z();var rH=require("obsidian");z();var Ls="tg-left-sidebar",XT=class extends rH.ItemView{constructor(e,t){super(e);this.plugin=t}getViewType(){return Ls}getDisplayText(){return"Task Genius"+c("Sidebar")}getIcon(){return"panel-left-dashed"}async onOpen(){let e=this.containerEl.children[1];e.empty(),this.rootEl=e.createDiv({cls:"tg-left-sidebar-view"}),this.sidebar=new up(this.rootEl,this.plugin,t=>{var r;eP(this.app,{selectionType:"view",selectionId:t,source:"left",workspaceId:(r=this.plugin.workspaceManager)==null?void 0:r.getActiveWorkspace().id})},t=>{var r;eP(this.app,{selectionType:"project",selectionId:t,source:"left",workspaceId:(r=this.plugin.workspaceManager)==null?void 0:r.getActiveWorkspace().id})},!1),this.addChild(this.sidebar),this.sidebar.load(),this.registerEvent($T(this.app,t=>{var i,s;let r=(i=this.plugin.workspaceManager)==null?void 0:i.getActiveWorkspace().id;t.workspaceId&&r&&t.workspaceId!==r||t.selectionType==="view"&&t.selectionId&&t.source==="main"&&((s=this.sidebar)==null||s.setActiveItem(t.selectionId))}))}async onClose(){}};var JT=class extends pr.Component{constructor(e,t,r,i,s,o,l){super();this.app=e;this.plugin=t;this.view=r;this.rootContainerEl=i;this.headerEl=s;this.titleEl=o;this.getTaskCount=l;this.isSidebarCollapsed=!1;this.isDetailsVisible=!1;this.isMobileDrawerOpen=!1;this.sidebarToggleBtn=null;this.drawerOverlay=null;this.detailsToggleBtn=null;this.sidebar=null;this.detailsComponent=null;this.leaf=r.leaf}setOnSidebarNavigate(e){this.onSidebarNavigate=e}setOnProjectSelect(e){this.onProjectSelect=e}setTaskCallbacks(e){this.onTaskToggleComplete=e.onTaskToggleComplete,this.onTaskEdit=e.onTaskEdit,this.onTaskUpdate=e.onTaskUpdate}setFilterCallbacks(e){this.onFilterReset=e.onFilterReset,this.getLiveFilterState=e.getLiveFilterState}useSideLeaves(){var e;return!!((e=this.plugin.settings.fluentView)!=null&&e.useWorkspaceSideLeaves)}initializeSidebar(e){if(this.useSideLeaves()){e.hide();return}let t=pr.Platform.isPhone?!0:this.isSidebarCollapsed;this.sidebar=new up(e,this.plugin,r=>{var i;(i=this.onSidebarNavigate)==null||i.call(this,r),pr.Platform.isPhone&&this.closeMobileDrawer()},r=>{var i;(i=this.onProjectSelect)==null||i.call(this,r),pr.Platform.isPhone&&this.closeMobileDrawer()},t),this.addChild(this.sidebar)}initializeDetailsComponent(){this.useSideLeaves()||(this.detailsComponent=new qi(this.rootContainerEl,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.detailsComponent.onTaskToggleComplete=e=>{var t;return(t=this.onTaskToggleComplete)==null?void 0:t.call(this,e)},this.detailsComponent.onTaskEdit=e=>{var t;return(t=this.onTaskEdit)==null?void 0:t.call(this,e)},this.detailsComponent.onTaskUpdate=async(e,t)=>{var r;await((r=this.onTaskUpdate)==null?void 0:r.call(this,e,t))},this.detailsComponent.toggleDetailsVisibility=e=>{this.toggleDetailsVisibility(e)},this.detailsComponent.setVisible(this.isDetailsVisible))}createSidebarToggle(){var i,s;let e=pr.Platform.isPhone?(s=this.headerEl)==null?void 0:s.querySelector(".view-header-left"):(i=this.headerEl)==null?void 0:i.querySelector(".view-header-nav-buttons");if(!e){console.warn("[FluentLayout] header buttons container not found");return}let t=e.createDiv({cls:"panel-toggle-container"});this.sidebarToggleBtn=t.createDiv({cls:"panel-toggle-btn"}),new pr.ButtonComponent(this.sidebarToggleBtn).setIcon(pr.Platform.isPhone?"menu":"panel-left-dashed").setTooltip(c("Toggle Sidebar")).setClass("clickable-icon").onClick(()=>this.toggleSidebar()),this.registerEvent(this.plugin.app.workspace.on("task-genius:leaf-width-updated",o=>{o<=600&&o!==0&&!this.isSidebarCollapsed&&this.toggleSidebar()}))}createTaskMark(){this.updateTaskMark()}updateTaskMark(){this.titleEl.setText(c("{{num}} Tasks",{interpolation:{num:this.getTaskCount()}}))}toggleSidebar(){var e,t;if(this.useSideLeaves()){let r=this.app.workspace,i=r.leftSplit;!!(i!=null&&i.collapsed)?(i.expand(),r.ensureSideLeaf(Ls,"left",{active:!1}).then(o=>{var l;o&&((l=r.revealLeaf)==null||l.call(r,o))})):i.collapse();return}pr.Platform.isPhone?this.isMobileDrawerOpen?this.closeMobileDrawer():this.openMobileDrawer():(this.isSidebarCollapsed=!this.isSidebarCollapsed,(e=this.sidebar)==null||e.setCollapsed(this.isSidebarCollapsed),(t=this.rootContainerEl)==null||t.toggleClass("fluent-sidebar-collapsed",this.isSidebarCollapsed))}openMobileDrawer(){var e,t;this.isMobileDrawerOpen=!0,(e=this.rootContainerEl)==null||e.addClass("drawer-open"),this.drawerOverlay&&this.drawerOverlay.show(),(t=this.sidebar)==null||t.setCollapsed(!1)}closeMobileDrawer(){var e,t;this.isMobileDrawerOpen=!1,(e=this.rootContainerEl)==null||e.removeClass("drawer-open"),this.drawerOverlay&&this.drawerOverlay.hide(),(t=this.sidebar)==null||t.setCollapsed(!0)}setupDrawerOverlay(e){pr.Platform.isPhone&&(this.drawerOverlay=e.createDiv({cls:"drawer-overlay"}),this.drawerOverlay.hide(),this.registerDomEvent(this.drawerOverlay,"click",()=>{this.closeMobileDrawer()},{once:!0}))}toggleDetailsVisibility(e){var t,r,i;if(this.isDetailsVisible=e,this.useSideLeaves()){let s=this.app.workspace;e?(t=s.rightSplit)!=null&&t.collapsed&&s.rightSplit.expand():s.rightSplit.collapse(),this.detailsToggleBtn&&(this.detailsToggleBtn.toggleClass("is-active",e),this.detailsToggleBtn.setAttribute("aria-label",e?c("Hide Details"):c("Show Details")));return}(r=this.rootContainerEl)==null||r.toggleClass("details-visible",e),(i=this.rootContainerEl)==null||i.toggleClass("details-hidden",!e),this.detailsComponent&&this.detailsComponent.setVisible(e),this.detailsToggleBtn&&(this.detailsToggleBtn.toggleClass("is-active",e),this.detailsToggleBtn.setAttribute("aria-label",e?c("Hide Details"):c("Show Details"))),pr.Platform.isPhone&&e?setTimeout(()=>{let s=o=>{var d;let l=(d=this.rootContainerEl)==null?void 0:d.querySelector(".task-details");l&&!l.contains(o.target)&&(this.toggleDetailsVisibility(!1),document.removeEventListener("click",s))};document.addEventListener("click",s),this.mobileDetailsOverlayHandler=s},100):pr.Platform.isPhone&&!e&&this.mobileDetailsOverlayHandler&&(document.removeEventListener("click",this.mobileDetailsOverlayHandler),delete this.mobileDetailsOverlayHandler)}setDetailsToggleBtn(e){this.detailsToggleBtn=e,this.detailsToggleBtn.toggleClass("is-active",this.isDetailsVisible)}checkAndCollapseSidebar(){var e,t,r,i;if(!pr.Platform.isPhone)try{let s=(t=(e=this.leaf)==null?void 0:e.width)!=null?t:0;s>0&&s<768&&(this.isSidebarCollapsed=!0,(r=this.sidebar)==null||r.setCollapsed(!0),(i=this.rootContainerEl)==null||i.addClass("fluent-sidebar-collapsed"))}catch(s){}}onResize(){pr.Platform.isPhone||this.checkAndCollapseSidebar()}showTaskDetails(e){var t;this.useSideLeaves()||(t=this.detailsComponent)==null||t.showTaskDetails(e)}setSidebarActiveItem(e){var t;(t=this.sidebar)==null||t.setActiveItem(e)}refreshSidebarProjects(){var e,t;(t=(e=this.sidebar)==null?void 0:e.projectList)==null||t.refresh()}setActiveProject(e){var t,r;(r=(t=this.sidebar)==null?void 0:t.projectList)==null||r.setActiveProject(e)}createActionButtons(){this.detailsToggleBtn=this.view.addAction("panel-right-dashed",c("Details"),()=>{this.toggleDetailsVisibility(!this.isDetailsVisible)}),this.detailsToggleBtn&&(this.detailsToggleBtn.toggleClass("panel-toggle-btn",!0),this.detailsToggleBtn.toggleClass("is-active",this.isDetailsVisible)),this.view.addAction("notebook-pen",c("Capture"),()=>{new ft(this.app,this.plugin,{},!0).open()}),this.view.addAction("filter",c("Filter"),e=>{if(pr.Platform.isDesktop){let t=new Mo(this.app,void 0,this.plugin);t.onClose=r=>{},setTimeout(()=>{var i;let r=(i=this.getLiveFilterState)==null?void 0:i.call(this);r&&t.taskFilterComponent&&t.taskFilterComponent.loadFilterState(r)},100),t.showAtPosition({x:e.clientX,y:e.clientY})}else{let t=new Eo(this.app,this.leaf.id,this.plugin);t.open(),setTimeout(()=>{var i;let r=(i=this.getLiveFilterState)==null?void 0:i.call(this);r&&t.taskFilterComponent&&t.taskFilterComponent.loadFilterState(r)},100)}}),this.updateActionButtons()}updateActionButtons(){var r;let e=this.headerEl.querySelector(".view-action.task-filter-reset");e&&e.remove();let t=(r=this.getLiveFilterState)==null?void 0:r.call(this);t&&t.filterGroups&&t.filterGroups.length>0&&this.view.addAction("reset",c("Reset Filter"),()=>{var i;(i=this.onFilterReset)==null||i.call(this)}).addClass("task-filter-reset")}onunload(){pr.Platform.isPhone&&this.mobileDetailsOverlayHandler&&(document.removeEventListener("click",this.mobileDetailsOverlayHandler),delete this.mobileDetailsOverlayHandler),super.onunload()}};var pk=require("obsidian");z();var AQ={inbox:["list","tree","kanban","calendar"],today:["list","tree","kanban","calendar"],upcoming:["list","tree","kanban","calendar"],flagged:["list","tree","kanban","calendar"],"working-on":["list","tree","kanban","calendar"],projects:[],tags:[],review:[],forecast:[],habit:[],gantt:[],calendar:[],kanban:[]},Jn={STATE:"tg-fluent-error-state",ICON:"tg-fluent-error-icon",TITLE:"tg-fluent-error-title",CONTEXT:"tg-fluent-error-context",CONTEXT_ITEM:"tg-fluent-error-context-item",MESSAGE:"tg-fluent-error-message",DETAILS:"tg-fluent-error-details",STACK:"tg-fluent-error-stack"},ZT=class extends pk.Component{constructor(e,t,r,i,s,o){super();this.app=e;this.plugin=t;this.contentArea=r;this.parentView=i;this.selectionManager=o;this.twoColumnViewComponents=new Map;this.currentVisibleComponent=null;this.topNavigation=null;this.viewHandlers=s}setTopNavigation(e){this.topNavigation=e}initializeViewComponents(){let e={onTaskSelected:t=>this.viewHandlers.onTaskSelected(t),onTaskCompleted:t=>this.viewHandlers.onTaskCompleted(t),onTaskUpdate:async(t,r)=>{await this.viewHandlers.onTaskUpdate(t,r)},onTaskContextMenu:(t,r)=>this.viewHandlers.onTaskContextMenu(t,r)};this.viewComponentManager=new ys(this.parentView,this.app,this.plugin,this.contentArea,e),this.parentView.addChild(this.viewComponentManager),this.contentComponent=new Ps(this.contentArea,this.app,this.plugin,{onTaskSelected:t=>{t&&this.viewHandlers.onTaskSelected(t)},onTaskCompleted:t=>{t&&this.viewHandlers.onTaskCompleted(t)},onTaskUpdate:async(t,r)=>{t&&r&&await this.viewHandlers.onTaskUpdate(t,r)},onTaskContextMenu:(t,r)=>{r&&this.viewHandlers.onTaskContextMenu(t,r)},selectionManager:this.selectionManager}),this.parentView.addChild(this.contentComponent),this.contentComponent.load(),this.forecastComponent=new pn(this.contentArea,this.app,this.plugin,{onTaskSelected:t=>{t&&this.viewHandlers.onTaskSelected(t)},onTaskCompleted:t=>{t&&this.viewHandlers.onTaskCompleted(t)},onTaskUpdate:async(t,r)=>{t&&r&&await this.viewHandlers.onTaskUpdate(t,r)},onTaskContextMenu:(t,r)=>{r&&this.viewHandlers.onTaskContextMenu(t,r)}}),this.parentView.addChild(this.forecastComponent),this.forecastComponent.load(),this.tagsComponent=new Is(this.contentArea,this.app,this.plugin,{onTaskSelected:t=>{t&&this.viewHandlers.onTaskSelected(t)},onTaskCompleted:t=>{t&&this.viewHandlers.onTaskCompleted(t)},onTaskUpdate:async(t,r)=>{t&&r&&await this.viewHandlers.onTaskUpdate(t,r)},onTaskContextMenu:(t,r)=>{r&&this.viewHandlers.onTaskContextMenu(t,r)}}),this.parentView.addChild(this.tagsComponent),this.tagsComponent.load(),this.projectsComponent=new As(this.contentArea,this.app,this.plugin,{onTaskSelected:t=>{t&&this.viewHandlers.onTaskSelected(t)},onTaskCompleted:t=>{t&&this.viewHandlers.onTaskCompleted(t)},onTaskUpdate:async(t,r)=>{t&&r&&await this.viewHandlers.onTaskUpdate(t,r)},onTaskContextMenu:(t,r)=>{r&&this.viewHandlers.onTaskContextMenu(t,r)}}),this.parentView.addChild(this.projectsComponent),this.projectsComponent.load(),this.reviewComponent=new Fs(this.contentArea,this.app,this.plugin,{onTaskSelected:t=>{t&&this.viewHandlers.onTaskSelected(t)},onTaskCompleted:t=>{t&&this.viewHandlers.onTaskCompleted(t)},onTaskUpdate:async(t,r)=>{t&&r&&await this.viewHandlers.onTaskUpdate(t,r)},onTaskContextMenu:(t,r)=>{r&&this.viewHandlers.onTaskContextMenu(t,r)}}),this.parentView.addChild(this.reviewComponent),this.reviewComponent.load(),this.habitComponent=new Rs(this.plugin,this.contentArea),this.parentView.addChild(this.habitComponent),this.habitComponent.load(),this.calendarComponent=new sn(this.app,this.plugin,this.contentArea,[],{onTaskSelected:t=>{t&&this.viewHandlers.onTaskSelected(t)},onTaskCompleted:t=>{t&&this.viewHandlers.onTaskCompleted(t)},onEventContextMenu:(t,r)=>{r&&this.viewHandlers.onTaskContextMenu(t,r)}}),this.parentView.addChild(this.calendarComponent),this.kanbanComponent=new nn(this.app,this.plugin,this.contentArea,[],{onTaskStatusUpdate:async(t,r)=>{this.viewHandlers.onKanbanTaskStatusUpdate(t,r)},onTaskSelected:t=>{t&&this.viewHandlers.onTaskSelected(t)},onTaskCompleted:t=>{t&&this.viewHandlers.onTaskCompleted(t)},onTaskContextMenu:(t,r)=>{r&&this.viewHandlers.onTaskContextMenu(t,r)}}),this.parentView.addChild(this.kanbanComponent),this.ganttComponent=new on(this.plugin,this.contentArea,{onTaskSelected:t=>this.viewHandlers.onTaskSelected(t),onTaskCompleted:t=>this.viewHandlers.onTaskCompleted(t),onTaskContextMenu:(t,r)=>this.viewHandlers.onTaskContextMenu(t,r)}),this.parentView.addChild(this.ganttComponent),this.ganttComponent.load(),this.listContainer=this.contentArea.createDiv({cls:"task-list-container",attr:{style:"display: none;"}}),this.treeContainer=this.contentArea.createDiv({cls:"task-tree-container",attr:{style:"display: none;"}}),this.hideAllComponents(!0)}hideAllComponents(e=!1){var r,i,s,o,l,d,u,p,m,h,g,f,k;let t=e;!t&&this.currentVisibleComponent?((r=this.currentVisibleComponent.containerEl)==null||r.hide(),this.currentVisibleComponent=null):((i=this.contentComponent)==null||i.containerEl.hide(),(s=this.forecastComponent)==null||s.containerEl.hide(),(o=this.tagsComponent)==null||o.containerEl.hide(),(l=this.projectsComponent)==null||l.containerEl.hide(),(d=this.reviewComponent)==null||d.containerEl.hide(),(u=this.habitComponent)==null||u.containerEl.hide(),(p=this.calendarComponent)==null||p.containerEl.hide(),(m=this.kanbanComponent)==null||m.containerEl.hide(),(h=this.ganttComponent)==null||h.containerEl.hide(),(g=this.viewComponentManager)==null||g.hideAllComponents(),this.twoColumnViewComponents.forEach(v=>{v.containerEl.hide()}),(f=this.listContainer)==null||f.hide(),(k=this.treeContainer)==null||k.hide()),this.topNavigation&&this.topNavigation.hideCycleSelector()}switchView(e,t,r,i,s,o){var m,h,g;this.contentArea&&this.contentArea.querySelectorAll(".tg-fluent-loading, .tg-fluent-error-state, .tg-fluent-empty-state").forEach(f=>f.remove()),this.hideAllComponents(),this.topNavigation&&this.topNavigation.clearCustomButtons();let l=this.getAvailableModesForView(e,o);if(l.length>0&&!l.includes(s)&&(s=l[0]),this.isContentBasedView(e)&&l.length>0&&s!=="list"&&s!=="tree"){this.renderContentWithViewMode(e,t,r,s);return}let d=xt(this.plugin,e),u=null,p=e;if(((m=d.specificConfig)==null?void 0:m.viewType)==="twocolumn"){if(!this.twoColumnViewComponents.has(e)){let k=d.specificConfig,v=new un(this.contentArea,this.app,this.plugin,k,e);this.parentView.addChild(v),v.onTaskSelected=y=>this.viewHandlers.onTaskSelected(y),v.onTaskCompleted=y=>this.viewHandlers.onTaskCompleted(y),v.onTaskContextMenu=(y,b)=>this.viewHandlers.onTaskContextMenu(y,b),this.twoColumnViewComponents.set(e,v)}let f=this.twoColumnViewComponents.get(e);if(!f){console.warn(`[FluentComponent] Missing two column component for view ${e}`);return}u=f}else{let f=(h=d.specificConfig)==null?void 0:h.viewType;if(this.viewComponentManager.isSpecialView(e))u=this.viewComponentManager.showComponent(e);else if(f==="forecast"||e==="forecast")u=this.forecastComponent;else switch(e){case"habit":u=this.habitComponent;break;case"tags":u=this.tagsComponent;break;case"projects":o?(u=this.contentComponent,p=e):(u=this.projectsComponent,p=e);break;case"review":u=this.reviewComponent;break;case"calendar":u=this.calendarComponent;break;case"kanban":u=this.kanbanComponent;break;case"gantt":u=this.ganttComponent;break;case"inbox":case"today":case"upcoming":case"flagged":default:u=this.contentComponent,p=e;break}}if((g=u==null?void 0:u.constructor)==null||g.name,u){if(`${e}`,u.constructor.name,u.containerEl.show(),this.currentVisibleComponent=u,u===this.contentComponent&&this.topNavigation&&this.contentComponent.setTopNavigation(this.topNavigation),typeof u.setViewMode=="function"&&(`${e}${p}`,u.setViewMode(p,o)),typeof u.setTasks=="function")if(e==="tags")`${e}${r.length}${t.length}`,u.setTasks(r,t);else if(e==="review")`${e}`,t.length,u.setTasks(t);else if(e==="projects"&&!o)`${r.length}${t.length}`,u.setTasks(r,t);else{let f=[...r];e==="forecast"&&(f=f.filter(k=>!k.badge)),f.length,t.length,u.setTasks(f,t)}if(typeof u.updateTasks=="function"){let f={};i&&i.filterGroups&&i.filterGroups.length>0&&(f.advancedFilter=i),u.updateTasks(cr(t,e,this.plugin,f))}e==="review"&&typeof u.refreshReviewSettings=="function"&&u.refreshReviewSettings()}else console.warn(`[FluentComponent] No target component found for viewId: ${e}`)}renderContentWithViewMode(e,t,r,i){switch(this.hideAllComponents(),this.topNavigation&&(this.topNavigation.clearCustomButtons(),this.topNavigation.hideCycleSelector()),i){case"list":case"tree":if(!this.contentComponent)return;this.contentComponent.containerEl.show(),this.topNavigation&&this.contentComponent.setTopNavigation(this.topNavigation),this.contentComponent.setViewMode(e),this.contentComponent.setIsTreeView(i==="tree"),r.length,this.contentComponent.setTasks(r,t),this.currentVisibleComponent=this.contentComponent;break;case"kanban":if(!this.kanbanComponent)return;if(this.kanbanComponent.containerEl.show(),this.topNavigation){let s=this.kanbanComponent.selectedCycleId||null;this.topNavigation.setCycleChangeCallback(o=>{this.kanbanComponent.selectedCycleId=o,this.kanbanComponent.saveCycleSelection(),this.kanbanComponent.renderColumns()}),this.topNavigation.showCycleSelector(s)}r.length,this.kanbanComponent.setTasks(r),this.currentVisibleComponent=this.kanbanComponent;break;case"calendar":if(!this.calendarComponent)return;this.calendarComponent.containerEl.show(),r.length,this.calendarComponent.setTasks(r),this.currentVisibleComponent=this.calendarComponent;break}}refreshCurrentViewData(e,t,r,i){var l,d,u,p,m,h,g;if(this.isContentBasedView(e)){switch(i){case"kanban":(d=(l=this.kanbanComponent)==null?void 0:l.setTasks)==null||d.call(l,r);break;case"calendar":(p=(u=this.calendarComponent)==null?void 0:u.setTasks)==null||p.call(u,r);break;case"tree":case"list":default:(h=(m=this.contentComponent)==null?void 0:m.setTasks)==null||h.call(m,r,t,!0);break}return}if((g=this.viewComponentManager)!=null&&g.isSpecialView(e)){let f=this.viewComponentManager.getOrCreateComponent(e);f!=null&&f.updateTasks?f.updateTasks(r):f!=null&&f.setTasks&&f.setTasks(r,t);return}let o={forecast:this.forecastComponent,tags:this.tagsComponent,projects:this.contentComponent,review:this.reviewComponent,habit:this.habitComponent,gantt:this.ganttComponent,kanban:this.kanbanComponent,calendar:this.calendarComponent}[e];o!=null&&o.setTasks?e==="projects"||this.isContentBasedView(e)?o.setTasks(r,t,!0):e==="tags"?o.setTasks(r,t):e==="review"?o.setTasks(t):o.setTasks(r):o!=null&&o.updateTasks&&o.updateTasks(r)}renderLoadingState(){if(this.contentArea){this.contentArea.querySelectorAll(".tg-fluent-loading").forEach(t=>t.remove());let e=this.contentArea.createDiv({cls:"tg-fluent-loading"});e.createDiv({cls:"tg-fluent-spinner"}),e.createDiv({cls:"tg-fluent-loading-text",text:c("Loading tasks...")})}}renderErrorState(e,t){if(!this.contentArea)return;let r=this.parseErrorContext(e);this.contentArea.querySelectorAll(`.${Jn.STATE}`).forEach(s=>s.remove());let i=this.contentArea.createDiv({cls:Jn.STATE});this.createErrorIcon(i),this.createErrorTitle(i),this.createErrorContext(i,r),this.createErrorMessage(i,r),this.createTechnicalDetails(i,r),this.createRetryButton(i,t)}parseErrorContext(e){return typeof e=="string"?{userMessage:e,originalError:new Error(e)}:e}createErrorIcon(e){let t=e.createDiv({cls:Jn.ICON});(0,pk.setIcon)(t,"alert-triangle")}createErrorTitle(e){e.createDiv({cls:Jn.TITLE,text:c("Failed to load tasks")})}createErrorContext(e,t){if(!t.viewId&&!t.componentName&&!t.operation)return;let r=e.createDiv({cls:Jn.CONTEXT});if(t.viewId){let i=this.getViewLabel(t.viewId);r.createDiv({cls:Jn.CONTEXT_ITEM,text:`${c("View")}: ${i} (${t.viewId})`})}t.componentName&&r.createDiv({cls:Jn.CONTEXT_ITEM,text:`${c("Component")}: ${t.componentName}`}),t.operation&&r.createDiv({cls:Jn.CONTEXT_ITEM,text:`${c("Operation")}: ${t.operation}`})}createErrorMessage(e,t){var i;let r=t.userMessage||((i=t.originalError)==null?void 0:i.message)||c("An unexpected error occurred");e.createDiv({cls:Jn.MESSAGE,text:r})}createTechnicalDetails(e,t){if(!t.originalError)return;let r=e.createEl("details",{cls:Jn.DETAILS});r.createEl("summary",{text:c("View technical details")});let i=r.createEl("pre",{cls:Jn.STACK}),s="";t.filePath&&(s+=`File: ${t.filePath}
`),t.originalError.stack?s+=t.originalError.stack:s+=t.originalError.message,i.textContent=s}createRetryButton(e,t){e.createEl("button",{cls:"tg-fluent-button tg-fluent-button-primary",text:c("Retry")}).addEventListener("click",t)}getViewLabel(e){return{inbox:c("Inbox"),today:c("Today"),upcoming:c("Upcoming"),flagged:c("Flagged"),projects:c("Projects"),tags:c("Tags"),forecast:c("Forecast"),review:c("Review"),habit:c("Habit"),calendar:c("Calendar"),kanban:c("Kanban"),gantt:c("Gantt")}[e]||e}getCurrentComponentName(){var e;if(this.currentVisibleComponent)return(e=this.currentVisibleComponent.constructor)==null?void 0:e.name}renderEmptyState(){if(this.contentArea){this.contentArea.querySelectorAll(".tg-fluent-empty-state").forEach(i=>i.remove());let e=this.contentArea.createDiv({cls:"tg-fluent-empty-state"}),t=e.createDiv({cls:"tg-fluent-empty-icon"});(0,pk.setIcon)(t,"inbox"),e.createDiv({cls:"tg-fluent-empty-title",text:c("No tasks yet")}),e.createDiv({cls:"tg-fluent-empty-description",text:c("Create your first task to get started with Task Genius")}),e.createEl("button",{cls:"tg-fluent-button tg-fluent-button-primary",text:c("Create Task")}).addEventListener("click",()=>{new ft(this.app,this.plugin).open()})}}isContentBasedView(e){return["inbox","today","upcoming","flagged","projects"].includes(e)}getAvailableModesForView(e,t){var i,s;let r=xt(this.plugin,e);return((i=r==null?void 0:r.specificConfig)==null?void 0:i.viewType)==="twocolumn"?[]:(s=this.viewComponentManager)!=null&&s.isSpecialView(e)?[]:e==="projects"&&t?["list","tree","kanban","calendar"]:AQ[e]||[]}onunload(){super.onunload()}};var tx=require("obsidian"),ex=class extends tx.Component{constructor(e){super();this.rootContainerEl=e;this.touchStartX=0;this.touchStartY=0;this.touchCurrentX=0;this.isSwiping=!1;this.swipeThreshold=50}setDrawerCallbacks(e){this.onOpenDrawer=e.onOpenDrawer,this.onCloseDrawer=e.onCloseDrawer,this.getIsMobileDrawerOpen=e.getIsMobileDrawerOpen}initializeMobileSwipeGestures(){tx.Platform.isPhone&&(this.registerDomEvent(document,"touchstart",e=>{var r,i;if((i=(r=this.getIsMobileDrawerOpen)==null?void 0:r.call(this))!=null?i:!1){let s=e.touches[0];this.touchStartX=s.clientX,this.touchStartY=s.clientY,this.isSwiping=!0}else{let s=e.touches[0];s.clientX<20&&(this.touchStartX=s.clientX,this.touchStartY=s.clientY,this.isSwiping=!0)}}),this.registerDomEvent(document,"touchmove",e=>{var o,l,d,u,p;if(!this.isSwiping)return;let t=e.touches[0];this.touchCurrentX=t.clientX;let r=this.touchCurrentX-this.touchStartX;if(Math.abs(t.clientY-this.touchStartY)>50){this.isSwiping=!1;return}let s=(l=(o=this.getIsMobileDrawerOpen)==null?void 0:o.call(this))!=null?l:!1;if(!s&&r>this.swipeThreshold)(d=this.onOpenDrawer)==null||d.call(this),this.isSwiping=!1;else if(s&&r<-this.swipeThreshold){let m=(u=this.rootContainerEl)==null?void 0:u.querySelector(".tg-fluent-sidebar-container");if(m){let h=m.getBoundingClientRect();this.touchStartX<h.right&&((p=this.onCloseDrawer)==null||p.call(this),this.isSwiping=!1)}}}),this.registerDomEvent(document,"touchend",()=>{this.isSwiping=!1,this.touchStartX=0,this.touchCurrentX=0}),this.registerDomEvent(document,"touchcancel",()=>{this.isSwiping=!1,this.touchStartX=0,this.touchCurrentX=0}))}onunload(){super.onunload()}};var Kc=require("obsidian"),ax=class extends Kc.Component{constructor(e,t,r,i,s,o,l){super();this.app=e;this.plugin=t;this.getWorkspaceId=r;this.getCurrentViewId=i;this.getViewState=s;this.getCurrentFilterState=o;this.getLiveFilterState=l;this.isSavingFilterState=!1;this.persistFilterState=(0,Kc.debounce)(e=>{var m,h;if(!this.plugin.workspaceManager)return;let{workspaceId:t,viewId:r,activeViewId:i,filters:s,selectedProject:o,viewMode:l,searchQuery:d,advancedFilter:u}=e,p=this.plugin.workspaceManager.getEffectiveSettings(t);p.fluentFilterState||(p.fluentFilterState={}),p.fluentFilterState[r]={filters:s,selectedProject:o,advancedFilter:u,viewMode:l},i&&(p.fluentActiveViewId=i),(h=(m=u==null?void 0:u.filterGroups)==null?void 0:m.length)!=null,this.plugin.workspaceManager.saveOverridesQuietly(t,p).then(()=>console.log("[FluentWorkspace] overrides saved quietly",{workspaceId:t,viewId:r})).catch(g=>{console.error("[FluentWorkspace] failed to save overrides",g),new Kc.Notice("Failed to save workspace state. Recent changes may be lost.")})},500)}saveWorkspaceLayout(){let e=this.captureFilterStateSnapshot();e&&(this.saveFilterStateToWorkspace(e),this.app.saveLocalStorage("task-genius-fluent-current-workspace",e.workspaceId))}loadWorkspaceLayout(){let e=this.app.loadLocalStorage("task-genius-fluent-current-workspace");return e||null}async applyWorkspaceSettings(){let e=this.getWorkspaceId();if(!this.plugin.workspaceManager||!e)return;let t=this.plugin.workspaceManager.getEffectiveSettings(e)}async switchWorkspace(e){this.saveWorkspaceLayout()}captureFilterStateSnapshot(){let e=this.getWorkspaceId(),t=this.getCurrentViewId();if(!this.plugin.workspaceManager||!e||!t)return null;let r=this.getViewState(),i=this.getCurrentFilterState();return{workspaceId:e,viewId:t,activeViewId:t,filters:structuredClone(r.filters||{}),selectedProject:r.selectedProject,viewMode:r.viewMode,searchQuery:r.searchQuery,advancedFilter:i?structuredClone(i):null}}getSavedActiveViewId(){let e=this.getWorkspaceId();if(!this.plugin.workspaceManager||!e)return null;let t=this.plugin.workspaceManager.getEffectiveSettings(e),r=t==null?void 0:t.fluentActiveViewId;return typeof r=="string"?r:null}saveFilterStateToWorkspace(e){let t=e!=null?e:this.captureFilterStateSnapshot();t&&this.persistFilterState(t)}async saveFilterStateImmediately(e){let t=e!=null?e:this.captureFilterStateSnapshot();if(!t||!this.plugin.workspaceManager)return;let{workspaceId:r,viewId:i,activeViewId:s,filters:o,selectedProject:l,viewMode:d,advancedFilter:u}=t,p=this.plugin.workspaceManager.getEffectiveSettings(r);p.fluentFilterState||(p.fluentFilterState={}),p.fluentFilterState[i]={filters:o,selectedProject:l,advancedFilter:u,viewMode:d},s&&(p.fluentActiveViewId=s);try{await this.plugin.workspaceManager.saveOverridesQuietly(r,p)}catch(m){console.error("[FluentWorkspace] immediate save failed",m),new Kc.Notice("Failed to save workspace state. Recent changes may be lost.")}}restoreFilterStateFromWorkspace(){var o,l,d;let e=this.getWorkspaceId();if(!this.plugin.workspaceManager||!e)return null;let t=this.plugin.workspaceManager.getEffectiveSettings(e),i=((o=t==null?void 0:t.fluentActiveViewId)!=null?o:this.getCurrentViewId())||this.getCurrentViewId(),s=(d=(l=t.fluentFilterState)==null?void 0:l[i])!=null?d:null;if(s){let u=s;return{filters:u.filters||{},selectedProject:u.selectedProject,advancedFilter:u.advancedFilter||null,liveFilterState:u.advancedFilter||null,viewMode:u.viewMode||"list",shouldClearSearch:!0,activeViewId:i}}else return{filters:{},selectedProject:void 0,advancedFilter:null,liveFilterState:null,viewMode:"list",shouldClearSearch:!0,activeViewId:i}}syncFilterState(e,t){var i,s,o,l;if(!e)return;let r=(s=(i=e.liveFilterState)!=null?i:e.advancedFilter)!=null?s:null;t.setLiveFilterState(r),t.setCurrentFilterState((o=e.advancedFilter)!=null?o:null),t.setViewPreferences({filters:e.filters||{},selectedProject:e.selectedProject,viewMode:e.viewMode,clearSearch:e.shouldClearSearch}),(l=t.onAfterSync)==null||l.call(t,e)}getSavedWorkspaceId(){return this.app.loadLocalStorage("task-genius-fluent-current-workspace")}clearWorkspaceState(){this.app.saveLocalStorage("task-genius-fluent-current-workspace",null)}onunload(){this.saveWorkspaceLayout(),super.onunload()}};var zt=require("obsidian");pd();var Qc=require("obsidian");z();var mk=class extends Qc.Modal{constructor(e,t,r){var i,s;super(e);this.plugin=t;this.options=r;this.resolvePromise=null;this.resolved=!1;this.inputEl=null;this.currentValue=(i=r.initialValue)!=null?i:"",this.allowEmpty=(s=r.allowEmpty)!=null?s:!1}openAndWait(){return new Promise(e=>{this.resolvePromise=e,this.open()})}onOpen(){this.titleEl.setText(this.options.title);let{contentEl:e}=this;e.empty(),new Qc.Setting(e).setName(c("Set value")).addText(i=>{var s;i.setPlaceholder((s=this.options.placeholder)!=null?s:""),i.setValue(this.currentValue),i.onChange(o=>{this.currentValue=o}),this.inputEl=i.inputEl}),this.inputEl&&(this.options.suggestion==="project"?new xr(this.app,this.inputEl,this.plugin):this.options.suggestion==="tag"&&new Zr(this.app,this.inputEl,this.plugin),this.inputKeydownHandler=i=>{i.key==="Enter"&&!i.isComposing&&(i.preventDefault(),this.handleSubmit())},this.inputEl.addEventListener("keydown",this.inputKeydownHandler));let r=new Qc.Setting(e);r.addButton(i=>{var s;i.setButtonText((s=this.options.cancelLabel)!=null?s:c("Cancel")),i.onClick(()=>{this.finish(null)})}),r.addButton(i=>{var s;i.setButtonText((s=this.options.okLabel)!=null?s:c("Save")).setCta(),i.onClick(()=>{this.handleSubmit()})}),window.setTimeout(()=>{this.inputEl&&(this.inputEl.focus(),this.inputEl.select())},50)}onClose(){var e;this.inputEl&&this.inputKeydownHandler&&this.inputEl.removeEventListener("keydown",this.inputKeydownHandler),this.contentEl.empty(),this.resolved||(this.resolved=!0,(e=this.resolvePromise)==null||e.call(this,null))}handleSubmit(){let e=this.currentValue.trim();if(!this.allowEmpty&&e.length===0){new Qc.Notice(c("Value cannot be empty"));return}this.finish(e)}finish(e){var t;this.resolved||(this.resolved=!0,(t=this.resolvePromise)==null||t.call(this,e),this.close())}};function rx(n,a){return!a||typeof n!="number"||Number.isNaN(n)?n:jt(new Date(n),a).getTime()}function tP(n,a,e,t){var i,s;let r={...n.metadata,[a]:e};return t&&(a==="dueDate"&&typeof((i=n.metadata)==null?void 0:i.startDate)=="number"&&n.metadata.startDate>e&&(r.startDate=rx(n.metadata.startDate,t)),a==="dueDate"&&typeof((s=n.metadata)==null?void 0:s.scheduledDate)=="number"&&n.metadata.scheduledDate>e&&(r.scheduledDate=rx(n.metadata.scheduledDate,t))),r}function iH(n){var t;let a=(t=n.metadata)!=null?t:{};return["dueDate","startDate","scheduledDate"].filter(r=>typeof a[r]=="number")}z();var ix=class extends zt.Component{constructor(e,t,r,i){super();this.app=e;this.plugin=t;this.getWorkspaceId=r;this.useSideLeaves=i;this.currentSelectedTaskId=null;this.lastToggleTimestamp=0}setCallbacks(e){this.onTaskSelectionChanged=e.onTaskSelectionChanged,this.onTaskUpdated=e.onTaskUpdated,this.onTaskDeleted=e.onTaskDeleted,this.onNavigateToView=e.onNavigateToView,this.onSearchQueryChanged=e.onSearchQueryChanged,this.onProjectSelected=e.onProjectSelected,this.onViewModeChanged=e.onViewModeChanged,this.showDetailsPanel=e.showDetailsPanel,this.toggleDetailsVisibility=e.toggleDetailsVisibility,this.getIsDetailsVisible=e.getIsDetailsVisible}handleTaskSelection(e){var t,r,i,s,o,l,d,u,p,m,h;if(this.useSideLeaves()&&Qj(this.app,{taskId:(t=e==null?void 0:e.id)!=null?t:null,origin:"main",workspaceId:this.getWorkspaceId()}),e){let g=Date.now(),f=g-this.lastToggleTimestamp;if(this.currentSelectedTaskId!==e.id){this.currentSelectedTaskId=e.id,(r=this.showDetailsPanel)==null||r.call(this,e),((s=(i=this.getIsDetailsVisible)==null?void 0:i.call(this))!=null?s:!1)||(o=this.toggleDetailsVisibility)==null||o.call(this,!0),this.lastToggleTimestamp=g,(l=this.onTaskSelectionChanged)==null||l.call(this,e);return}if(f>150){let k=(u=(d=this.getIsDetailsVisible)==null?void 0:d.call(this))!=null?u:!1;(p=this.toggleDetailsVisibility)==null||p.call(this,!k),this.lastToggleTimestamp=g}}else(m=this.toggleDetailsVisibility)==null||m.call(this,!1),this.currentSelectedTaskId=null,(h=this.onTaskSelectionChanged)==null||h.call(this,null)}async handleTaskEditInFile(e){await this.editTask(e)}async toggleTaskCompletion(e){if(!this.plugin.writeAPI){new zt.Notice("WriteAPI not available");return}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||" ";this.isCompletedMark(t.status)&&(t.status=r)}await this.handleTaskUpdate(e,t)}async handleTaskUpdate(e,t,r){var i;if(!this.plugin.writeAPI){console.error("WriteAPI not available");return}try{let s=this.extractChangedFields(e,t),o=await this.plugin.writeAPI.updateTask({taskId:e.id,updates:s});if(!o.success)throw new Error(o.error||"Failed to update task");let l=o.task||t;(i=this.onTaskUpdated)==null||i.call(this,e.id,l),new zt.Notice(r!=null?r:c("Task updated"))}catch(s){console.error("Failed to update task:",s),new zt.Notice(c("Failed to update task"))}}async handleKanbanTaskStatusUpdate(e,t){`${e.id}`,`${e.status}${t}`;let r=this.isCompletedMark(t),i=r?Date.now():void 0;(e.status!==t||e.completed!==r)&&await this.handleTaskUpdate(e,{...e,status:t,completed:r,metadata:{...e.metadata,completedDate:i}})}handleTaskContextMenu(e,t){let r=new zt.Menu;r.addItem(i=>{i.setTitle(c("Complete")),i.setIcon("check-square"),i.onClick(()=>{this.toggleTaskCompletion(t)})}),r.addItem(i=>{i.setIcon("square-pen"),i.setTitle(c("Switch status"));let s=i.setSubmenu();if(this.plugin.settings.statusCycles&&this.plugin.settings.statusCycles.length>0){let o=t.status||" ",l=im(o,this.plugin.settings.statusCycles);if(l.length>0){s.addItem(u=>{u.setTitle(c("Cycle to next:")),u.setDisabled(!0)});for(let u of l){let p=En(o,[u]);p&&s.addItem(m=>{let h=u.priority===0?"\u2605 ":"";m.titleEl.createEl("span",{cls:"status-option-checkbox"},g=>{gt(p.mark,t,g)}),m.titleEl.createEl("span",{cls:"status-option",text:`${h}${u.name}: \u2192 ${p.statusName}`}),m.onClick(async()=>{let g=this.isCompletedMark(p.mark),f={...t,status:p.mark,completed:g};!t.completed&&g?f.metadata.completedDate=Date.now():t.completed&&!g&&(f.metadata.completedDate=void 0),await this.handleKanbanTaskStatusUpdate(f,p.mark)})})}s.addSeparator(),s.addItem(u=>{u.setTitle(c("Or choose any:")),u.setDisabled(!0)})}let d=py(this.plugin.settings.statusCycles);for(let u of Array.from(d)){let p=" ";for(let m of this.plugin.settings.statusCycles)if(u in m.marks){p=m.marks[u];break}s.addItem(m=>{m.titleEl.createEl("span",{cls:"status-option-checkbox"},h=>{gt(p,t,h)}),m.titleEl.createEl("span",{cls:"status-option",text:u}),m.onClick(async()=>{let h=this.isCompletedMark(p),g={...t,status:p,completed:h};!t.completed&&h?g.metadata.completedDate=Date.now():t.completed&&!h&&(g.metadata.completedDate=void 0),await this.handleKanbanTaskStatusUpdate(g,p)})})}}else{let o=nl(this.plugin.settings);for(let[l,d]of o)s.addItem(u=>{u.titleEl.createEl("span",{cls:"status-option-checkbox"},p=>{gt(l,t,p)}),u.titleEl.createEl("span",{cls:"status-option",text:d}),u.onClick(async()=>{let p=this.isCompletedMark(l),m={...t,status:l,completed:p};!t.completed&&p?m.metadata.completedDate=Date.now():t.completed&&!p&&(m.metadata.completedDate=void 0),await this.handleTaskUpdate(t,m)})})}}),this.addPriorityMenuItems(r,t),this.addDateMenuItems(r,t),this.addTimerMenuItems(r,t),r.addSeparator(),r.addItem(i=>{i.setTitle(c("Set Project")),i.setIcon("folder"),i.onClick(()=>{this.setProject(t)})}),r.addItem(i=>{i.setTitle(c("Add Tags")),i.setIcon("tag"),i.onClick(()=>{this.addTags(t)})}),r.addSeparator(),r.addItem(i=>{i.setTitle(c("Duplicate Task")),i.setIcon("copy"),i.onClick(()=>{this.duplicateTask(t)})}),r.addSeparator(),r.addItem(i=>{i.setTitle(c("Edit")),i.setIcon("pencil"),i.onClick(()=>{this.handleTaskSelection(t)})}),r.addItem(i=>{i.setTitle(c("Edit in File")),i.setIcon("pencil"),i.onClick(()=>{this.editTask(t)})}),r.addSeparator(),r.addItem(i=>{i.setTitle(c("Delete Task")),i.setIcon("trash"),i.onClick(()=>{this.confirmAndDeleteTask(e,t)})}),r.showAtMouseEvent(e)}addPriorityMenuItems(e,t){e.addSeparator(),e.addItem(r=>{let i=r.setTitle(c("Set Priority")).setIcon("flag").setSubmenu();[{level:5,label:"Highest",icon:"alert-triangle"},{level:4,label:"High",icon:"arrow-up"},{level:3,label:"Medium",icon:"minus"},{level:2,label:"Low",icon:"arrow-down"},{level:1,label:"Lowest",icon:"chevron-down"}].forEach(({level:o,label:l,icon:d})=>{i.addItem(u=>{u.setTitle(c(l)).setIcon(d).setChecked(t.metadata.priority===o).onClick(()=>{this.setPriority(t,o)})})})})}async setPriority(e,t){let r={...e,metadata:{...e.metadata,priority:t}};await this.handleTaskUpdate(e,r,c("Priority updated"))}addDateMenuItems(e,t){e.addSeparator();let r=this.getExistingDateTypes(t);["dueDate","startDate","scheduledDate"].forEach(s=>{e.addItem(o=>{o.setTitle(c(`Set ${this.getDateLabel(s)}`)),o.setIcon("calendar"),o.onClick(()=>{this.openDatePicker(t,s)})}),r.includes(s)&&this.addPostponeDateMenu(e,t,s)})}addPostponeDateMenu(e,t,r){e.addItem(i=>{let s=i.setTitle(c(`Postpone ${this.getDateLabel(r)}`)).setIcon("calendar-plus").setSubmenu();[{days:1,label:"1 day"},{days:2,label:"2 days"},{days:3,label:"3 days"},{days:7,label:"1 week"}].forEach(({days:l,label:d})=>{s.addItem(u=>{u.setTitle(c(d)).onClick(()=>{this.postponeDate(t,r,l)})})}),s.addSeparator(),s.addItem(l=>{l.setTitle(c("Custom...")).setIcon("calendar").onClick(()=>{this.openDatePicker(t,r,!0)})})})}async postponeDate(e,t,r){var i;try{let s=(i=e.metadata)==null?void 0:i[t];if(typeof s!="number"){new zt.Notice(c("No date to postpone"));return}let o=rx(s,r),l=tP(e,t,o,r),d={...e,metadata:l},u=r>0?"postponed":"advanced",p=`${this.getDateLabel(t)} ${u} by ${Math.abs(r)} day(s)`;await this.handleTaskUpdate(e,d,c(p))}catch(s){console.error("[FluentActionHandlers] Failed to postpone date:",s),new zt.Notice(c("Failed to postpone date"))}}addTimerMenuItems(e,t){var o,l;if(!((o=this.plugin.settings.taskTimer)!=null&&o.enabled))return;e.addSeparator();let r=new Ft(this.plugin.settings.taskTimer),i=(l=t.metadata)==null?void 0:l.id,s=i?r.getTimerByFileAndBlock(t.filePath,i):null;s&&s.status==="running"?(e.addItem(d=>{d.setTitle(c("Pause Timer")),d.setIcon("pause"),d.onClick(()=>{let u=`taskTimer_${t.filePath}#${i}`;r.pauseTimer(u),new zt.Notice(c("Timer paused"))})}),e.addItem(d=>{d.setTitle(c("Stop Timer")),d.setIcon("square"),d.onClick(async()=>{let u=`taskTimer_${t.filePath}#${i}`,p=r.completeTimer(u);new zt.Notice(c("Timer stopped")+`: ${p}`)})})):s&&s.status==="paused"?(e.addItem(d=>{d.setTitle(c("Resume Timer")),d.setIcon("play"),d.onClick(()=>{let u=`taskTimer_${t.filePath}#${i}`;r.resumeTimer(u),new zt.Notice(c("Timer resumed"))})}),e.addItem(d=>{d.setTitle(c("Stop Timer")),d.setIcon("square"),d.onClick(async()=>{let u=`taskTimer_${t.filePath}#${i}`,p=r.completeTimer(u);new zt.Notice(c("Timer stopped")+`: ${p}`)})})):e.addItem(d=>{d.setTitle(c("Start Timer")),d.setIcon("timer"),d.onClick(async()=>{await this.startTimerForTask(t)})})}async startTimerForTask(e){var t;try{let r=new Ft(this.plugin.settings.taskTimer),i=(t=e.metadata)==null?void 0:t.id;if(!i){i=r.generateBlockId();let l={...e,metadata:{...e.metadata,id:i}};await this.handleTaskUpdate(e,l,c("Block ID added")),e=l}let s=(this.plugin.settings.taskStatuses.inProgress||">|/").split("|"),o=(this.plugin.settings.taskStatuses.completed||"x|X").split("|");if(!e.completed&&!s.includes(e.status||" ")){let l=s[0]||"/",d={...e,status:l};await this.handleTaskUpdate(e,d,c("Task status updated"))}r.startTimer(e.filePath,i),new zt.Notice(c("Timer started"))}catch(r){console.error("[FluentActionHandlers] Failed to start timer:",r),new zt.Notice(c("Failed to start timer"))}}openDatePicker(e,t,r=!1){var l;let i=(l=e.metadata)==null?void 0:l[t],s=typeof i=="number"?new Date(i).toISOString().split("T")[0]:void 0,o=new rs(this.app,this.plugin,s,this.getDateMark(t));o.onDateSelected=async d=>{if(!d)return;let u=new Date(d).getTime();if(Number.isNaN(u)){new zt.Notice(c("Invalid date selected"));return}if(r&&typeof i=="number"){let p=Math.round((u-i)/864e5),m=tP(e,t,u,p),h={...e,metadata:m};await this.handleTaskUpdate(e,h,c(`${this.getDateLabel(t)} updated`))}else{let p={...e,metadata:{...e.metadata,[t]:u}};await this.handleTaskUpdate(e,p,c(`${this.getDateLabel(t)} updated`))}},o.open()}async setProject(e){var o;let t=((o=e.metadata)==null?void 0:o.project)||"",r=await new mk(this.app,this.plugin,{title:c("Set Project"),placeholder:c("Enter project name"),initialValue:t,okLabel:c("Save"),cancelLabel:c("Cancel"),allowEmpty:!0,suggestion:"project"}).openAndWait();if(r===null)return;let i=r.trim(),s={...e,metadata:{...e.metadata,project:i||void 0}};await this.handleTaskUpdate(e,s,c("Project updated"))}async addTags(e){var l;let t=await new mk(this.app,this.plugin,{title:c("Add Tags"),placeholder:c("tag-one, tag-two"),okLabel:c("Add"),cancelLabel:c("Cancel"),suggestion:"tag"}).openAndWait();if(t===null)return;let r=t.split(",").map(d=>d.trim()).filter(Boolean);if(r.length===0)return;let i=(l=e.metadata.tags)!=null?l:[],s=Array.from(new Set([...i,...r])),o={...e,metadata:{...e.metadata,tags:s}};await this.handleTaskUpdate(e,o,c("Tags added"))}async duplicateTask(e){var t,r;try{if(!this.plugin.writeAPI){new zt.Notice(c("WriteAPI not available"));return}let i=d=>{if(typeof d=="number")return new Date(d).toISOString().split("T")[0]},s=(t=e.metadata.tags)!=null?t:[],o={content:`${e.content} (Copy)`,filePath:e.filePath,completed:!1,tags:s.length>0?[...s]:void 0,project:e.metadata.project,context:e.metadata.context,priority:e.metadata.priority,startDate:i(e.metadata.startDate),dueDate:i(e.metadata.dueDate)},l=await this.plugin.writeAPI.createTask(o);if(l.success)new zt.Notice(c("Task duplicated")),(r=this.onTaskUpdated)==null||r.call(this,e.id,e);else throw new Error(l.error||"Failed to duplicate task")}catch(i){console.error("[FluentActionHandlers] Failed to duplicate task:",i),new zt.Notice(c("Failed to duplicate task"))}}getExistingDateTypes(e){return iH(e)}getDateLabel(e){switch(e){case"startDate":return"Start Date";case"scheduledDate":return"Scheduled Date";case"dueDate":default:return"Due Date"}}getDateMark(e){switch(e){case"scheduledDate":return"\u23F3";case"startDate":return"\u{1F680}";case"dueDate":default:return"\u{1F4C5}"}}async editTask(e){let t=this.app.vault.getFileByPath(e.filePath);if(!(t instanceof zt.TFile))return;await this.app.workspace.getLeaf(!1).openFile(t,{eState:{line:e.line}})}confirmAndDeleteTask(e,t){if(t.metadata&&t.metadata.children&&t.metadata.children.length>0){let i=new zt.Menu;i.addItem(s=>{s.setTitle(c("Delete task only")),s.setIcon("trash"),s.onClick(()=>{this.deleteTask(t,!1)})}),i.addItem(s=>{s.setTitle(c("Delete task and all subtasks")),s.setIcon("trash-2"),s.onClick(()=>{this.deleteTask(t,!0)})}),i.addSeparator(),i.addItem(s=>{s.setTitle(c("Cancel"))}),i.showAtMouseEvent(e)}else new oa(this.plugin,{title:c("Delete Task"),message:c("Are you sure you want to delete this task?"),confirmText:c("Delete"),cancelText:c("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 zt.Notice(c("Failed to delete task"));return}try{let i=await this.plugin.writeAPI.deleteTask({taskId:e.id,deleteChildren:t});i.success?(new zt.Notice(c("Task deleted")),(r=this.onTaskDeleted)==null||r.call(this,e.id,t),this.currentSelectedTaskId===e.id&&this.handleTaskSelection(null)):new zt.Notice(c("Failed to delete task")+": "+(i.error||"Unknown error"))}catch(i){console.error("Error deleting task:",i),new zt.Notice(c("Failed to delete task")+": "+i.message)}}handleNavigate(e){var t;e==="new-task"?new ft(this.app,this.plugin).open():(`${e}`,(t=this.onNavigateToView)==null||t.call(this,e))}handleSearch(e){var t;(t=this.onSearchQueryChanged)==null||t.call(this,e)}handleProjectSelect(e){var t;`${e}`,(t=this.onProjectSelected)==null||t.call(this,e)}handleViewModeChange(e){var t;(t=this.onViewModeChanged)==null||t.call(this,e)}handleSettingsClick(){this.app.setting.open(),this.app.setting.openTabById(this.plugin.manifest.id)}isCompletedMark(e){var t;if(!e)return!1;try{let r=e.toLowerCase();return String(((t=this.plugin.settings.taskStatuses)==null?void 0:t.completed)||"x").split("|").map(o=>o.trim().toLowerCase()).filter(Boolean).includes(r)}catch(r){return!1}}extractChangedFields(e,t){var l,d;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","id"];for(let u of o){let p=(l=e.metadata)==null?void 0:l[u],m=(d=t.metadata)==null?void 0:d[u];if(u==="tags"){let h=p||[],g=m||[];(h.length!==g.length||!h.every((f,k)=>f===g[k]))&&(i.tags=g,s=!0)}else p!==m&&(i[u]=m,s=!0)}return s&&(r.metadata=i),r}getCurrentSelectedTaskId(){return this.currentSelectedTaskId}clearSelection(){var e;this.currentSelectedTaskId=null,(e=this.onTaskSelectionChanged)==null||e.call(this,null)}};var yn="fluent-task-genius-view",sx=class extends Xc.ItemView{constructor(e,t){var r;super(e);this.DEBUG_MODE=!1;this.tasks=[];this.filteredTasks=[];this.isLoading=!1;this.loadError=null;this.currentViewId="inbox";this.viewState={currentWorkspace:"",viewMode:"list",viewModeByViewId:{},searchQuery:"",filters:{},filterInputValue:"",selectedProject:void 0};this.currentFilterState=null;this.liveFilterState=null;this.selectedTask=null;this.workspaceId="";this.isInitializing=!0;this.updateWorkspaceLeafWidth=(0,Xc.debounce)(()=>{this.app.workspace.trigger("task-genius:leaf-width-updated",this.leaf.width)},200);this.handleFilterChanged=(0,Xc.debounce)((e,t)=>{t&&!t.startsWith("view-config-")&&t!=="global-filter"?(this.liveFilterState=e,this.currentFilterState=e):t||(this.liveFilterState=e,this.currentFilterState=e);try{let r=(e==null?void 0:e.filterGroups)||[],i=[];for(let s of r)for(let o of s.filters||[])o.property==="project"&&o.condition==="is"&&typeof o.value=="string"&&o.value.trim()!==""&&i.push(o.value);i.length>0?this.viewState.selectedProject=i[0]:this.viewState.selectedProject=void 0}catch(r){console.warn("[Task Genius] Failed to sync selectedProject from filter state",r)}this.workspaceStateManager.saveFilterStateToWorkspace(),this.layoutManager.updateActionButtons(),this.filteredTasks=this.dataManager.applyFilters(this.tasks),this.updateView()},150);this.plugin=t,this.tasks=this.plugin.preloadedTasks||[],this.workspaceId=((r=t.workspaceManager)==null?void 0:r.getActiveWorkspace().id)||"",this.viewState.currentWorkspace=this.workspaceId}getViewType(){return yn}getDisplayText(){return c("Task Genius")}getIcon(){return"task-genius"}useSideLeaves(){var e;return!!((e=this.plugin.settings.fluentView)!=null&&e.useWorkspaceSideLeaves)}getInterfaceStyle(){var e,t;return(t=(e=this.plugin.settings.fluentView)==null?void 0:e.interfaceStyle)!=null?t:"modern"}onResize(){this.updateWorkspaceLeafWidth()}ensureViewModeForView(e){var s,o,l;let t=(o=(s=this.componentManager)==null?void 0:s.getAvailableModesForView(e,this.viewState.selectedProject))!=null?o:[],r=(l=this.viewState.viewModeByViewId)==null?void 0:l[e],i=()=>t.length===0?r!=null?r:"list":t.includes("list")?"list":t[0];if(r&&(t.length===0||t.includes(r)))return r;if(t.includes("tree")||t.includes("list")){if(dn(this.app,this.plugin,e)&&t.includes("tree"))return"tree";if(t.includes("list"))return"list"}return i()}recordViewModeForView(e,t){var i;this.viewState.viewModeByViewId||(this.viewState.viewModeByViewId={});let r=(i=this.componentManager)==null?void 0:i.getAvailableModesForView(e,this.viewState.selectedProject);r&&r.length>0&&!r.includes(t)||(this.viewState.viewModeByViewId[e]=t)}async onOpen(){this.isInitializing=!0;try{this.DEBUG_MODE,this.contentEl.empty(),this.contentEl.toggleClass(["task-genius-fluent-view","task-genius-view"],!0),this.getInterfaceStyle()==="modern"?this.leaf.containerEl.addClass("fluent-modern"):this.leaf.containerEl.addClass("fluent-classic"),this.rootContainerEl=this.contentEl.createDiv({cls:"tg-fluent-container"}),nx.Platform.isPhone&&this.rootContainerEl.addClass("is-mobile"),this.initializeManagers(),await this.buildUIStructure(),this.registerEvents(),this.DEBUG_MODE,this.DEBUG_MODE;let e=this.workspaceStateManager.getSavedWorkspaceId();e&&e!==this.workspaceId&&(this.workspaceId=e,this.viewState.currentWorkspace=e,this.DEBUG_MODE&&`${e}`),await this.workspaceStateManager.applyWorkspaceSettings();let t=this.workspaceStateManager.restoreFilterStateFromWorkspace();t!=null&&t.activeViewId&&(this.currentViewId=t.activeViewId),this.workspaceStateManager.syncFilterState(t,{setLiveFilterState:r=>{this.liveFilterState=r,this.app.saveLocalStorage("task-genius-view-filter",r||null)},setCurrentFilterState:r=>{this.currentFilterState=r},setViewPreferences:({filters:r,selectedProject:i,viewMode:s,clearSearch:o})=>{var d;this.viewState.filters=r,this.viewState.selectedProject=i;let l=(()=>{var p,m;let u=(m=(p=this.componentManager)==null?void 0:p.getAvailableModesForView(this.currentViewId,i))!=null?m:[];return u.length>0&&!u.includes(s)?this.ensureViewModeForView(this.currentViewId):s})();this.viewState.viewMode=l,this.recordViewModeForView(this.currentViewId,l),(d=this.topNavigation)==null||d.setViewMode(l),o&&(this.viewState.searchQuery="",this.viewState.filterInputValue="")},onAfterSync:()=>{var r;(r=this.layoutManager)==null||r.updateActionButtons()}}),await this.dataManager.loadTasks(!1),await this.dataManager.registerDataflowListeners(),`${this.tasks.length}${this.filteredTasks.length}`,this.updateView(),this.DEBUG_MODE,this.layoutManager.checkAndCollapseSidebar()}catch(e){console.error("[Task Genius] \u274C Initialization error:",e),console.error("[Task Genius] Error stack:",e.stack),this.loadError=e.message||"Failed to initialize view"}finally{this.DEBUG_MODE&&`${this.isInitializing}`,this.isInitializing=!1,this.DEBUG_MODE,this.updateView()}}initializeManagers(){this.dataManager=new YT(this.plugin,()=>this.currentViewId,()=>({liveFilterState:this.liveFilterState,currentFilterState:this.currentFilterState,viewStateFilters:this.viewState.filters,selectedProject:this.viewState.selectedProject||void 0,searchQuery:this.viewState.searchQuery||"",filterInputValue:this.viewState.filterInputValue||""}),()=>this.isInitializing),this.dataManager.setCallbacks({onTasksLoaded:(e,t)=>{var r;t?(this.loadError=t,this.isLoading=!1,(r=this.componentManager)==null||r.renderErrorState(this.createErrorContext(t,c("Loading tasks"),"src/components/features/fluent/managers/FluentComponentManager.ts"),()=>{this.dataManager.loadTasks()})):(this.tasks=e,this.loadError=null,this.isLoading=!1,this.filteredTasks=this.dataManager.applyFilters(this.tasks),this.updateView())},onLoadingStateChanged:e=>{var t;this.isLoading=e,e&&!this.isInitializing&&((t=this.componentManager)==null||t.renderLoadingState())},onUpdateNeeded:e=>{`${e}`,this.filteredTasks=this.dataManager.applyFilters(this.tasks),this.updateView()}}),this.addChild(this.dataManager),this.actionHandlers=new ix(this.app,this.plugin,()=>this.workspaceId,()=>this.useSideLeaves()),this.actionHandlers.setCallbacks({onTaskSelectionChanged:e=>{this.selectedTask=e,e&&this.layoutManager.showTaskDetails(e)},onTaskUpdated:(e,t)=>{let r=this.tasks.findIndex(i=>i.id===e);r!==-1&&(this.tasks[r]=t,this.filteredTasks=this.dataManager.applyFilters(this.tasks),this.updateView())},onTaskDeleted:(e,t)=>{if(t){let r=new Set([e]),i=s=>{var l;let o=this.tasks.find(d=>d.id===s);if((l=o==null?void 0:o.metadata)!=null&&l.children)for(let d of o.metadata.children)r.add(d),i(d)};i(e),this.tasks=this.tasks.filter(s=>!r.has(s.id))}else this.tasks=this.tasks.filter(r=>r.id!==e);this.filteredTasks=this.dataManager.applyFilters(this.tasks),this.updateView()},onNavigateToView:e=>{var r;if(`${e}${this.currentViewId}`,this.recordViewModeForView(this.currentViewId,this.viewState.viewMode),this.currentViewId=e,`${this.currentViewId}`,e==="projects"){this.viewState.selectedProject=void 0;try{if(this.liveFilterState){let i={...this.liveFilterState};i.filterGroups=(i.filterGroups||[]).map(s=>({...s,filters:(s.filters||[]).filter(o=>o.property!=="project")})).filter(s=>s.filters&&s.filters.length>0),this.liveFilterState=i,this.currentFilterState=i,this.app.saveLocalStorage("task-genius-view-filter",i),this.app.workspace.trigger("task-genius:filter-changed",i)}}catch(i){console.warn("[Task Genius] Failed to clear project filter",i)}}this.filteredTasks=this.dataManager.applyFilters(this.tasks);let t=this.ensureViewModeForView(e);this.viewState.viewMode=t,this.recordViewModeForView(e,t),(r=this.topNavigation)==null||r.setViewMode(t),this.updateView(),this.workspaceStateManager.saveFilterStateToWorkspace()},onSearchQueryChanged:e=>{this.viewState.searchQuery=e,this.viewState.filterInputValue=e,this.filteredTasks=this.dataManager.applyFilters(this.tasks),this.updateView()},onProjectSelected:e=>{var r;`${e}`,this.viewState.selectedProject=e,this.recordViewModeForView(this.currentViewId,this.viewState.viewMode),this.currentViewId="projects",this.filteredTasks=this.dataManager.applyFilters(this.tasks);let t=this.ensureViewModeForView(this.currentViewId);this.viewState.viewMode=t,this.recordViewModeForView(this.currentViewId,t),(r=this.topNavigation)==null||r.setViewMode(t);try{let i=Date.now(),s=this.liveFilterState||{rootCondition:"all",filterGroups:[]};s.filterGroups=(s.filterGroups||[]).map(o=>({...o,filters:(o.filters||[]).filter(l=>l.property!=="project")})).filter(o=>o.filters&&o.filters.length>0),e&&e.trim()!==""&&s.filterGroups.push({id:`fluent-proj-group-${i}`,groupCondition:"all",filters:[{id:`fluent-proj-filter-${i}`,property:"project",condition:"is",value:e}]}),this.liveFilterState=s,this.currentFilterState=s,this.app.saveLocalStorage("task-genius-view-filter",s),this.app.workspace.trigger("task-genius:filter-changed",s)}catch(i){console.warn("[Task Genius] Failed to project-sync filter UI state",i),this.filteredTasks=this.dataManager.applyFilters(this.tasks),this.updateView()}this.workspaceStateManager.saveFilterStateToWorkspace()},onViewModeChanged:e=>{this.viewState.viewMode=e,this.recordViewModeForView(this.currentViewId,e),(e==="list"||e==="tree")&&cn(this.app,this.currentViewId,e==="tree"),this.updateView(),this.workspaceStateManager.saveFilterStateToWorkspace()},showDetailsPanel:e=>{this.layoutManager.showTaskDetails(e)},toggleDetailsVisibility:e=>{this.layoutManager.toggleDetailsVisibility(e)},getIsDetailsVisible:()=>this.layoutManager.isDetailsVisible}),this.addChild(this.actionHandlers),this.workspaceStateManager=new ax(this.app,this.plugin,()=>this.workspaceId,()=>this.currentViewId,()=>({filters:this.viewState.filters||{},selectedProject:this.viewState.selectedProject||void 0,searchQuery:this.viewState.searchQuery||"",viewMode:this.viewState.viewMode}),()=>this.currentFilterState,()=>this.liveFilterState),this.addChild(this.workspaceStateManager),this.selectionManager=new Ns(this.app,this.plugin,this),this.addChild(this.selectionManager),this.scope=new Xc.Scope(this.app.scope),this.scope.register(null,"Escape",()=>{this.selectionManager.clearSelection()}),this.updateWorkspaceLeafWidth()}async buildUIStructure(){let e=this.rootContainerEl.createDiv({cls:"tg-fluent-layout"}),t=e.createDiv({cls:"tg-fluent-sidebar-container"});nx.Platform.isPhone&&t.addClass("is-mobile-drawer");let r=e.createDiv({cls:"tg-fluent-main-container"}),i=r.createDiv({cls:"tg-fluent-top-nav"}),s=r.createDiv({cls:"tg-fluent-content-wrapper"});this.contentArea=s.createDiv({cls:"tg-fluent-content"});let o=this.useSideLeaves();this.layoutManager=new JT(this.app,this.plugin,this,this.rootContainerEl,this.headerEl,this.titleEl,()=>this.filteredTasks.length),this.layoutManager.setOnSidebarNavigate(l=>{this.actionHandlers.handleNavigate(l)}),this.layoutManager.setOnProjectSelect(l=>{this.actionHandlers.handleProjectSelect(l)}),this.layoutManager.setTaskCallbacks({onTaskToggleComplete:l=>{this.actionHandlers.toggleTaskCompletion(l)},onTaskEdit:l=>{this.actionHandlers.handleTaskEditInFile(l)},onTaskUpdate:async(l,d)=>{await this.actionHandlers.handleTaskUpdate(l,d)}}),this.addChild(this.layoutManager),o?t.hide():(this.layoutManager.initializeDetailsComponent(),this.layoutManager.initializeSidebar(t),nx.Platform.isPhone&&this.layoutManager.setupDrawerOverlay(e)),this.topNavigation=new UT(i,this.plugin,l=>this.actionHandlers.handleSearch(l),l=>this.actionHandlers.handleViewModeChange(l),()=>{},()=>{},()=>this.actionHandlers.handleSettingsClick(),[]),this.addChild(this.topNavigation),this.componentManager=new ZT(this.app,this.plugin,this.contentArea,this,{onTaskSelected:l=>{this.actionHandlers.handleTaskSelection(l)},onTaskCompleted:l=>{this.actionHandlers.toggleTaskCompletion(l)},onTaskUpdate:async(l,d)=>{await this.actionHandlers.handleTaskUpdate(l,d)},onTaskContextMenu:(l,d)=>{this.actionHandlers.handleTaskContextMenu(l,d)},onKanbanTaskStatusUpdate:(l,d)=>{`${l}${d}`,`${this.tasks.length}`;let u=this.tasks.find(p=>p.id===l);u?this.actionHandlers.handleKanbanTaskStatusUpdate(u,d):(console.error(`[FluentTaskView] CRITICAL: Task ${l} not found in local task list`),console.error("[FluentTaskView] Available task IDs:",this.tasks.slice(0,5).map(p=>p.id)),console.error("[FluentTaskView] This indicates a synchronization issue between kanban and main view"))}},this.selectionManager),this.addChild(this.componentManager),this.componentManager.initializeViewComponents(),this.componentManager.setTopNavigation(this.topNavigation),this.layoutManager.createSidebarToggle(),this.layoutManager.createTaskMark(),this.gestureManager=new ex(this.rootContainerEl),this.gestureManager.setDrawerCallbacks({onOpenDrawer:()=>this.layoutManager.openMobileDrawer(),onCloseDrawer:()=>this.layoutManager.closeMobileDrawer(),getIsMobileDrawerOpen:()=>this.layoutManager.isMobileDrawerOpen}),this.gestureManager.initializeMobileSwipeGestures(),this.addChild(this.gestureManager),this.layoutManager.setFilterCallbacks({onFilterReset:()=>this.resetCurrentFilter(),getLiveFilterState:()=>this.liveFilterState}),this.layoutManager.createActionButtons()}registerEvents(){this.plugin.workspaceManager&&(this.registerEvent(dp(this.app,async e=>{if(e.workspaceId!==this.workspaceId){let t=this.workspaceStateManager.captureFilterStateSnapshot();t&&await this.workspaceStateManager.saveFilterStateImmediately(t),this.workspaceId=e.workspaceId,this.viewState.currentWorkspace=e.workspaceId,await this.workspaceStateManager.applyWorkspaceSettings();let r=this.workspaceStateManager.restoreFilterStateFromWorkspace();r!=null&&r.activeViewId&&(this.currentViewId=r.activeViewId),this.workspaceStateManager.syncFilterState(r,{setLiveFilterState:i=>{this.liveFilterState=i,this.app.saveLocalStorage("task-genius-view-filter",i||null)},setCurrentFilterState:i=>{this.currentFilterState=i},setViewPreferences:({filters:i,selectedProject:s,viewMode:o,clearSearch:l})=>{var u;this.viewState.filters=i,this.viewState.selectedProject=s;let d=(()=>{var m,h;let p=(h=(m=this.componentManager)==null?void 0:m.getAvailableModesForView(this.currentViewId,s))!=null?h:[];return p.length>0&&!p.includes(o)?this.ensureViewModeForView(this.currentViewId):o})();this.viewState.viewMode=d,this.recordViewModeForView(this.currentViewId,d),(u=this.topNavigation)==null||u.setViewMode(d),l&&(this.viewState.searchQuery="",this.viewState.filterInputValue="")},onAfterSync:()=>{var i;(i=this.layoutManager)==null||i.updateActionButtons()}}),await this.dataManager.loadTasks()}})),this.registerEvent(eH(this.app,async e=>{e.workspaceId===this.workspaceId&&(await this.workspaceStateManager.applyWorkspaceSettings(),await this.dataManager.loadTasks())})),this.registerEvent(Oe(this.app,Z.SETTINGS_CHANGED,async()=>{await this.dataManager.loadTasks()}))),this.registerEvent(this.app.workspace.on("task-genius:filter-changed",(e,t)=>{this.handleFilterChanged(e,t)})),this.useSideLeaves()&&this.registerEvent($T(this.app,e=>{e.workspaceId===this.workspaceId&&(e.selectionType==="view"&&e.selectionId&&(this.currentViewId=e.selectionId,this.filteredTasks=this.dataManager.applyFilters(this.tasks),this.updateView(),this.workspaceStateManager.saveFilterStateToWorkspace()),e.selectionType==="project"&&e.selectionId!==void 0&&this.actionHandlers.handleProjectSelect(e.selectionId||""))})),this.registerDomEvent(window,"resize",()=>{this.layoutManager.onResize()}),this.registerDomEvent(document,"keydown",e=>{e.key==="Escape"&&this.selectionManager.isSelectionMode&&(e.preventDefault(),this.selectionManager.exitSelectionMode("user_action"))})}updateView(){var i,s,o,l,d;if(this.isInitializing)return;`${this.currentViewId}`;let e=(s=(i=this.componentManager)==null?void 0:i.getAvailableModesForView(this.currentViewId,this.viewState.selectedProject))!=null?s:[];(o=this.topNavigation)==null||o.updateAvailableModes(e),this.layoutManager.updateTaskMark(),this.layoutManager.setSidebarActiveItem(this.currentViewId);let t=this.currentViewId==="projects"&&!this.viewState.selectedProject;if((l=this.layoutManager.sidebar)==null||l.setProjectListEnabled(!t),this.isLoading){this.componentManager.renderLoadingState();return}if(this.loadError){this.componentManager.renderErrorState(this.createErrorContext(this.loadError,c("Updating view"),"src/pages/FluentTaskView.ts"),()=>{this.dataManager.loadTasks()});return}if(this.tasks.length===0){this.componentManager.renderEmptyState();return}this.selectionManager.updateTaskCache(this.filteredTasks);let r=this.ensureViewModeForView(this.currentViewId);r!==this.viewState.viewMode&&(this.viewState.viewMode=r,this.recordViewModeForView(this.currentViewId,r),(d=this.topNavigation)==null||d.setViewMode(r)),this.componentManager.switchView(this.currentViewId,this.tasks,this.filteredTasks,this.currentFilterState,this.viewState.viewMode,this.viewState.selectedProject)}resetCurrentFilter(){this.liveFilterState=null,this.currentFilterState=null,this.viewState.selectedProject=void 0,this.app.saveLocalStorage("task-genius-view-filter",null),this.workspaceStateManager.saveFilterStateToWorkspace(),this.app.workspace.trigger("task-genius:filter-changed",{rootCondition:"all",filterGroups:[]}),this.layoutManager.setActiveProject(null),this.filteredTasks=this.dataManager.applyFilters(this.tasks),this.updateView(),this.layoutManager.updateActionButtons()}getState(){return{...this.viewState,currentViewId:this.currentViewId}}createErrorContext(e,t,r){var i;return{viewId:this.currentViewId,componentName:(i=this.componentManager)==null?void 0:i.getCurrentComponentName(),operation:t,filePath:r,userMessage:typeof e=="string"?e:e==null?void 0:e.message,originalError:e instanceof Error?e:new Error(String(e))}}async setState(e,t){}async onClose(){this.workspaceStateManager.saveWorkspaceLayout(),this.selectionManager.isSelectionMode&&this.selectionManager.exitSelectionMode("view_change"),this.actionHandlers.clearSelection()}};var nH=require("obsidian");z();var Al="tg-right-detail",ox=class extends nH.ItemView{constructor(e,t){super(e);this.plugin=t}getViewType(){return Al}getDisplayText(){return"Task Genius"+c("Details")}getIcon(){return"panel-right-dashed"}async onOpen(){let e=this.containerEl.children[1];e.empty(),this.rootEl=e.createDiv({cls:"tg-right-detail-view"}),this.details=new qi(this.rootEl,this.app,this.plugin),this.addChild(this.details),this.details.onTaskUpdate=async(t,r)=>{this.plugin.writeAPI&&await this.plugin.writeAPI.updateTask({taskId:t.id,updates:r})},this.details.onTaskToggleComplete=async t=>{this.plugin.writeAPI&&await this.plugin.writeAPI.updateTaskStatus({taskId:t.id,completed:!t.completed})},this.registerEvent(Xj(this.app,async t=>{var r,i;this.app;try{let s=(r=this.plugin.workspaceManager)==null?void 0:r.getActiveWorkspace().id;if(t.workspaceId,t.workspaceId&&s&&t.workspaceId!==s)return}catch(s){}if(t.taskId&&this.app.workspace.revealLeaf(this.leaf),!t.taskId){this.details.showTaskDetails(null);return}try{let s=(i=this.plugin.dataflowOrchestrator)==null?void 0:i.getRepository(),o=s&&await s.getTaskById(t.taskId);o&&this.details.showTaskDetails(o)}catch(s){console.warn("[TG] RightDetailView failed to load task",s)}}))}async onClose(){}};z();var lx=class{constructor(a){this.revealingSideLeaves=!1;this.plugin=a}register(){var a;this.isFluentEnabled()&&(this.plugin.registerView(yn,e=>new sx(e,this.plugin)),(a=this.plugin.settings.fluentView)!=null&&a.useWorkspaceSideLeaves&&(this.plugin.registerView(Ls,e=>new XT(e,this.plugin)),this.plugin.registerView(Al,e=>new ox(e,this.plugin))),this.plugin.registerEvent(this.plugin.app.workspace.on("active-leaf-change",async e=>{var o,l,d,u;if(this.revealingSideLeaves||!!!((o=this.plugin.settings.fluentView)!=null&&o.useWorkspaceSideLeaves)||!((l=e==null?void 0:e.view)!=null&&l.getViewType))return;let r=e.view.getViewType();if(!new Set([yn,Ls,Al]).has(r))return;let s=this.plugin.app.workspace;this.revealingSideLeaves=!0;try{let p=await s.ensureSideLeaf(Ls,"left",{active:!1}),m=await s.ensureSideLeaf(Al,"right",{active:!1});p&&s.revealLeaf(p),m&&s.revealLeaf(m),(d=s.leftSplit)!=null&&d.collapsed&&typeof s.leftSplit.expand=="function"&&s.leftSplit.expand(),(u=s.rightSplit)!=null&&u.collapsed&&typeof s.rightSplit.expand=="function"&&s.rightSplit.expand(),s.setActiveLeaf&&e&&s.setActiveLeaf(e,{focus:!0})}catch(p){}finally{this.revealingSideLeaves=!1}})))}async openFluentView(){let{workspace:a}=this.plugin.app,e=a.getLeavesOfType(yn);if(e.length>0){a.revealLeaf(e[0]),await this.ensureSideLeavesIfEnabled();return}let t=a.getLeaf("tab");await t.setViewState({type:yn,active:!0}),a.revealLeaf(t),await this.ensureSideLeavesIfEnabled()}async ensureSideLeavesIfEnabled(){var t;!!((t=this.plugin.settings.fluentView)!=null&&t.useWorkspaceSideLeaves)||(this.plugin.app.workspace.getLeavesOfType(Ls).length>0&&this.plugin.app.workspace.detachLeavesOfType(Ls),this.plugin.app.workspace.getLeavesOfType(Al).length>0&&this.plugin.app.workspace.detachLeavesOfType(Al));let e=this.plugin.app.workspace;await e.ensureSideLeaf(Ls,"left",{active:!1}),await e.ensureSideLeaf(Al,"right",{active:!1})}isFluentEnabled(){var a,e;return(e=(a=this.plugin.settings.fluentView)==null?void 0:a.enableFluent)!=null?e:!1}async migrateSettings(){this.plugin.settings.fluentView||(this.plugin.settings.fluentView={enableFluent:!1}),this.plugin.settings.fluentView.workspaces||(this.plugin.settings.fluentView.workspaces=[{id:"default",name:c("Default"),color:"#3498db"}]),this.plugin.settings.fluentView.fluentConfig===void 0&&(this.plugin.settings.fluentView.fluentConfig={enableWorkspaces:!0,defaultWorkspace:"default",maxOtherViewsBeforeOverflow:5});let a=this.plugin.settings.fluentView;a.useWorkspaceSideLeaves===void 0&&(a.useWorkspaceSideLeaves=!1),await this.plugin.saveSettings()}async toggleVersion(){var r;let{workspace:a}=this.plugin.app;if(a.getLeavesOfType(Gn).forEach(i=>i.detach()),a.getLeavesOfType(yn).forEach(i=>i.detach()),this.plugin.settings.fluentView||(this.plugin.settings.fluentView={enableFluent:!1}),this.plugin.settings.fluentView.enableFluent=!this.plugin.settings.fluentView.enableFluent,await this.plugin.saveSettings(),(r=this.plugin.settings.fluentView)!=null&&r.enableFluent)await this.openFluentView();else{let i=a.getLeaf("tab");await i.setViewState({type:Gn,active:!0}),a.revealLeaf(i)}}};var Ao=require("obsidian");z();var cx=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 Ao.Notice(c("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 Ao.Notice(c("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 d=(u=l.textContent)==null?void 0:u.toLowerCase();d&&d.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){var r;let e=(r=this.plugin.app.setting)==null?void 0:r.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===c("Test"));r&&r.click()}break;case"regenerate-token":if(e==="mcp-integration"){let r=Array.from(t.containerEl.querySelectorAll("button")).find(i=>i.textContent===c("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 Ao.Notice(c("Task content is required"));return}let d=i?i.split(",").map(p=>p.trim()):[];try{if(!this.plugin.writeAPI){new Ao.Notice(c("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:d,priority:s?parseInt(s):void 0,dueDate:o||void 0,startDate:l||void 0,filePath:p}),new Ao.Notice(c("Task created successfully"))}catch(p){console.error("Failed to create task from URI:",p),new Ao.Notice(c("Failed to create task"))}}async handleOpenViewUri(a){let{type:e}=a;if(!e){new Ao.Notice(c("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 Ao.Notice(c("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}`}};z();function FQ(n){if(n.statusCycles&&n.statusCycles.length>0||!n.taskStatusCycle||n.taskStatusCycle.length===0)return;let a={id:"legacy-default",name:c("Default Cycle"),description:c("Migrated from legacy settings"),priority:0,cycle:[...n.taskStatusCycle],marks:{...n.taskStatusMarks},enabled:!0};n.statusCycles=[a]}function sH(n){FQ(n)}function RQ(n){if(!n.id||!n.name||n.priority===void 0||!n.cycle||n.cycle.length===0)return!1;for(let a of n.cycle)if(!(a in n.marks))return!1;return!0}function OQ(n){return[...n].sort((a,e)=>a.priority-e.priority)}function oH(n){if(!n||n.length===0)return n;let a=[],e=new Set;for(let t=0;t<n.length;t++){let r={...n[t]};e.has(r.id)&&(r.id=`${r.id}-${Date.now()}-${t}`,console.warn(`[Task Genius] Fixed duplicate cycle ID: ${n[t].id} -> ${r.id}`)),e.add(r.id),typeof r.priority!="number"&&(r.priority=t),typeof r.enabled!="boolean"&&(r.enabled=!0),RQ(r)?a.push(r):console.warn(`[Task Genius] Removed invalid status cycle: ${r.name}`)}return OQ(a)}var lH=require("obsidian");var dx=class extends lH.Component{constructor(e,t){super();this.app=e;this.plugin=t;this.VERSION_STORAGE_KEY="plugin-version";this.persister=new qu(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 d=this.compareVersions(this.currentVersion,e);r=d>0,i=d<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}}};var cH=require("obsidian"),ux=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 cH.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 mr=require("obsidian");var px=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 d=((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!!(d&&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 d;return l.completed||!((d=l.metadata)!=null&&d.dueDate)||this.isIcsBadge(l)?!1:l.metadata.dueDate<=i.getTime()});return s.sort((l,d)=>{var u,p;return(((u=l.metadata)==null?void 0:u.dueDate)||0)-(((p=d.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 d of i){let u=d.content.length>50?d.content.slice(0,50)+"\u2026":d.content;s.push({label:u,submenu:[{label:"Open",click:()=>e.openTask(d)},{label:"Complete",click:()=>e.completeTask(d.id)},{type:"separator"},{label:"Snooze 1d",click:()=>e.postponeTask(d,1440*6e4)},{label:"Snooze 2d",click:()=>e.postponeTask(d,2880*6e4)},{label:"Snooze 3d",click:()=>e.postponeTask(d,4320*6e4)},{label:"Snooze 1w",click:()=>e.postponeTask(d,10080*6e4)},{label:"Custom date\u2026",click:()=>e.pickCustomDate(d)},{type:"separator"},{label:"Priority",submenu:[{label:"Highest",click:()=>e.setPriority(d,5)},{label:"High",click:()=>e.setPriority(d,4)},{label:"Medium",click:()=>e.setPriority(d,3)},{label:"Low",click:()=>e.setPriority(d,2)},{label:"Lowest",click:()=>e.setPriority(d,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(d){}}};z();var Fo=require("obsidian");z();var mx=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 Fo.Notice(c("Failed to open quick capture window")),e(t)}}):(new Fo.Notice(c("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 d=await this.getDataForWindow(s[0]);(l=(o=this.captureWindow)==null?void 0:o.webContents)==null||l.executeJavaScript(`
window.receiveSuggestions('${s[0]}', ${JSON.stringify(d)});
`)}}),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:d,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),d){let g=this.parseDueDate(d);g&&(m.dueDate=g)}let h=await this.createTask(m);if(h.success)new Fo.Notice(c("Task captured successfully")),this.isClosingNormally=!0,this.captureResolve&&(this.captureResolve(h.task),this.captureResolve=null,this.captureReject=null),this.closeCaptureWindow();else throw new Error(h.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)return;let e=a.trim(),t=r=>{if(!(!r||!r.isValid()))return hs(r.toDate(),{includeSeconds:!1})};try{let r=[{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 l of r){let d=e.match(l.pattern);if(d){let u=l.offsetMatch?parseInt(d[l.offsetMatch]):l.offset,p=(0,Fo.moment)().add(u,"days"),m=t(p);if(m)return m}}let i=(0,Fo.moment)(e,[Fo.moment.ISO_8601,"YYYY-MM-DD HH:mm","YYYY-MM-DDTHH:mm","YYYY-MM-DD"],!0),s=t(i);if(s)return s;let o=(0,Fo.moment)(e);return t(o)}catch(r){return}}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="datetime-local" 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="datetime-local" 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="datetime-local" 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 trimmed = input.trim();
const lower = trimmed.toLowerCase();
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(trimmed);
if (!isNaN(parsed.getTime())) {
return formatDate(parsed);
}
} catch {}
// If not a natural language pattern, return original
return trimmed;
}
function formatDate(date) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const hasTime =
date.getHours() !== 0 ||
date.getMinutes() !== 0 ||
date.getSeconds() !== 0 ||
date.getMilliseconds() !== 0;
if (!hasTime) {
return year + '-' + month + '-' + day;
}
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
return (
year +
'-' +
month +
'-' +
day +
' ' +
hours +
':' +
minutes
);
}
<\/script>
</body>
</html>`}destroy(){this.closeCaptureWindow(),this.cleanupIPCHandlers()}};var aP=class extends mr.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(!mr.Platform.isDesktopApp)return;this.electronQuickCapture=new mx(this.plugin);try{this.beforeUnloadHandler=()=>{var i,s,o,l,d;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&&((d=(l=this.electronTray)==null?void 0:l.destroy)==null||d.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,d,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)||((d=p==null?void 0:p.remote)==null?void 0:d.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,d,u,p,m,h,g,f,k,v,y,b;try{let w=this.getElectron();if(!w)return!1;let T=((e=w.remote)==null?void 0:e.Tray)||w.Tray,x=((t=w.remote)==null?void 0:t.nativeImage)||w.nativeImage;if(!T||!x)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=(d=this.electronTray).removeAllListeners)==null||u.call(d);let R=async()=>{var I,H;await this.sendDailySummary();try{(H=(I=this.plugin).activateTaskView)==null||H.call(I)}catch(U){}};(m=(p=this.electronTray).on)==null||m.call(p,"click",R),S[C].clickHandler=R,await this.applyThemeToTray(x),this.subscribeNativeTheme(x)}catch(R){}return!0}}catch(E){delete S[C]}this.electronTray=new T(x.createEmpty());try{this.electronTray.setToolTip("Task Genius")}catch(E){}try{await this.applyThemeToTray(x),this.subscribeNativeTheme(x)}catch(E){}this.trayClickHandler=async()=>{var E,R;await this.sendDailySummary();try{(R=(E=this.plugin).activateTaskView)==null||R.call(E)}catch(I){}},(g=(h=this.electronTray).removeAllListeners)==null||g.call(h),(k=(f=this.electronTray).on)==null||k.call(f,"click",this.trayClickHandler);let D=Symbol("tg-tray-owner");try{(b=(y=(v=S[C])==null?void 0:v.tray)==null?void 0:y.removeAllListeners)==null||b.call(y)}catch(E){}return S[C]={tray:this.electronTray,owner:D,clickHandler:this.trayClickHandler},this.trayOwnerToken=D,!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=mr.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 d,u;let l=this.getNativeTheme();try{(d=l==null?void 0:l.off)==null||d.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=mr.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),d=new Image,u=new Blob([l],{type:"image/svg+xml"}),p=URL.createObjectURL(u);await new Promise(g=>{d.onload=()=>g(),d.src=p}),s.clearRect(0,0,r,r),s.drawImage(d,0,0,r,r),URL.revokeObjectURL(p);let m=i.toDataURL("image/png"),h=e.createFromDataURL(m);try{t&&h.setTemplateImage&&h.setTemplateImage(!0)}catch(g){}return h}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 CT().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(d){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 d,u,p,m,h,g;let e=(d=this.plugin.settings.notifications)==null?void 0:d.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 f of i){if(f.completed||this.isIcsBadge(f))continue;let k=(h=f.metadata)==null?void 0:h.dueDate;if(!k)continue;let v=k-s;if(v>=o&&v<l){let y=`${f.id||((g=f.metadata)==null?void 0:g.id)||f.filePath+":"+f.line}@${k}`;if(this.notifiedKeys.has(y))continue;this.notifiedKeys.add(y),this.showTaskDueNotification(f,k,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(d=>{var u;return!d.completed&&((u=d.metadata)==null?void 0:u.dueDate)&&d.metadata.dueDate<=s.getTime()}).filter(d=>!this.isIcsBadge(d));try{mr.Platform.isMacOS&&this.electronTray.setTitle&&this.electronTray.setTitle(o.length>0?` ${o.length} ${c("Tasks")}`:" "+c("No Tasks"))}catch(d){}try{(t=(e=this.electronTray).setToolTip)==null||t.call(e,o.length>0?`${o.length} ${c("tasks due or overdue")}`:c("No due today"))}catch(d){}await new px(this.plugin).applyToTray(this.electronTray,{openVault:()=>this.openVault(),openTaskView:()=>{var d,u;try{(u=(d=this.plugin).activateTaskView)==null||u.call(d)}catch(p){}},openTask:d=>this.openTask(d),completeTask:d=>this.completeTask(d),postponeTask:(d,u)=>this.postponeTask(d,u),setPriority:(d,u)=>this.setPriority(d,u),pickCustomDate:d=>this.openDatePickerForTask(d),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 d=l.getTime()-o.getTime();this.dailyTimeout=window.setTimeout(async()=>{await this.sendDailySummary(),this.setupDailySummary()},d)}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 d;return!l.completed&&((d=l.metadata)==null?void 0:d.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} ${c("Tasks")}`:c("No Tasks"),l.style.cursor="pointer",l.onclick=async d=>{let u=new mr.Menu;u.addItem(m=>{m.setTitle("Open Task Genius").setIcon("task-genius").onClick(()=>{var h,g;try{(g=(h=this.plugin).activateTaskView)==null||g.call(h)}catch(f){}})}),u.addSeparator(),u.addItem(m=>{m.setTitle("Quick Capture...").setIcon("plus-circle").onClick(()=>{this.openQuickCaptureWindow()})}),u.addSeparator();let p=s.sort((m,h)=>{var g,f;return(((g=m.metadata)==null?void 0:g.dueDate)||0)-(((f=h.metadata)==null?void 0:f.dueDate)||0)}).slice(0,7);for(let m of p){let h=m.content.length>50?m.content.slice(0,50)+"\u2026":m.content;u.addItem(g=>{var k;g.setTitle(h).setIcon("circle-dot");let f=(k=g.setSubmenu)==null?void 0:k.call(g);f&&(f.addItem(v=>v.setTitle("Edit in file").setIcon("file-pen").onClick(()=>this.openTask(m))),f.addItem(v=>v.setTitle("Complete").setIcon("check").onClick(()=>this.completeTask(m.id))),f.addSeparator(),f.addItem(v=>v.setTitle("Snooze 1d").setIcon("calendar").onClick(()=>this.postponeTask(m,1440*6e4))),f.addItem(v=>v.setTitle("Snooze 2d").setIcon("calendar").onClick(()=>this.postponeTask(m,2880*6e4))),f.addItem(v=>v.setTitle("Snooze 3d").setIcon("calendar").onClick(()=>this.postponeTask(m,4320*6e4))),f.addItem(v=>v.setTitle("Snooze 1w").setIcon("calendar").onClick(()=>this.postponeTask(m,10080*6e4))),f.addItem(v=>v.setTitle("Custom date\u2026").setIcon("calendar-plus").onClick(()=>this.openDatePickerForTask(m))),f.addSeparator(),f.addItem(v=>{var b;v.setTitle("Priority").setIcon("flag");let y=(b=v.setSubmenu)==null?void 0:b.call(v);y==null||y.addItem(w=>w.setTitle("\u{1F53A} Highest").onClick(()=>this.setPriority(m,5))),y==null||y.addItem(w=>w.setTitle("\u23EB High").onClick(()=>this.setPriority(m,4))),y==null||y.addItem(w=>w.setTitle("\u{1F53C} Medium").onClick(()=>this.setPriority(m,3))),y==null||y.addItem(w=>w.setTitle("\u{1F53D} Low").onClick(()=>this.setPriority(m,2))),y==null||y.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(d)},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 d=l.metadata.dueDate;return d>=r&&d<=i});if(!s.length){new mr.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 d;this.openTask(e).catch(()=>{}),(d=l.close)==null||d.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(()=>(pd(),CA)),r=new t(this.plugin.app,this.plugin,void 0,"\u{1F4C5}");r.onDateSelected=async i=>{var l,d,u,p,m;if(!i)return;let s=((l=window.moment)==null?void 0:l.call(window,i))||((u=(d=this.plugin.app).moment)==null?void 0:u.call(d,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 mr.Notice(`${e}: ${t}`,5e3)}catch(r){console.warn("Notification error",r),new mr.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 mr.TFile&&await r.openFile(t,{eState:{line:e.line}})}async openQuickCaptureWindow(){if(!this.electronQuickCapture){new mr.Notice(c("Quick capture not available"));return}try{await this.electronQuickCapture.openCaptureWindow()}catch(e){console.error("Failed to open quick capture:",e),new mr.Notice(c("Failed to open quick capture window"))}}focusObsidianWindow(){var e,t,r,i,s,o,l;try{let d=this.getElectron();if(!d)return;let u=((e=d.remote)==null?void 0:e.BrowserWindow)||d.BrowserWindow,p=((t=d.remote)==null?void 0:t.getCurrentWindow)||(()=>{var g,f,k,v,y;let h=((f=(g=d.remote)==null?void 0:g.getCurrentWebContents)==null?void 0:f.call(g))||((v=(k=d.webContents)==null?void 0:k.getFocusedWebContents)==null?void 0:v.call(k));return h?(y=u==null?void 0:u.fromWebContents)==null?void 0:y.call(u,h):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),mr.Platform.isWin&&((l=m.setAlwaysOnTop)==null||l.call(m,!0),setTimeout(()=>{var h;(h=m.setAlwaysOnTop)==null||h.call(m,!1)},100)))}catch(d){}}},dH=aP;var wx=require("obsidian");var yr=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=Os.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=Os.findTextNode(s,o);if(!l)return{success:!1,error:`Canvas text node not found: ${o}`};let d=this.updateTaskInTextNode(l,a,e);if(!d.success)return d;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&&le(this.plugin.app,Z.WRITE_OPERATION_START,{path:r.path,taskId:a.id}),await this.vault.modify(r,u),this.plugin.app&&le(this.plugin.app,Z.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 d=this.updateCompleteTaskLine(l,e,t);s[o]=d,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=g=>g&&hs(g,{includeSeconds:!1})||void 0,s=i(a.metadata.dueDate),o=i(a.metadata.startDate),l=i(a.metadata.scheduledDate),d=i(a.metadata.completedDate),u=g=>{var f;return((f=g.metadata.tgProject)==null?void 0:f.readonly)===!0};if(a.metadata.tags&&a.metadata.tags.length>0){let g=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project",f=a.metadata.tags.filter(v=>!(typeof v!="string"||v.startsWith(`#${g}/`)||v.startsWith("@")&&a.metadata.context&&v===`@${a.metadata.context}`)),k=[...new Set(f)].map(v=>v.startsWith("#")?v:`#${v}`).filter(v=>v.length>1);k.length>0&&r.push(...k)}if(a.metadata.project&&!u(e))if(t){let f=`[${this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project"}:: ${a.metadata.project}]`;r.includes(f)||r.push(f)}else{let f=`#${this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project"}/${a.metadata.project}`;r.includes(f)||r.push(f)}if(a.metadata.context)if(t){let f=`[${this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"context"}:: ${a.metadata.context}]`;r.includes(f)||r.push(f)}else{let g=`@${a.metadata.context}`;r.includes(g)||r.push(g)}if(a.metadata.priority)if(t){let g;switch(a.metadata.priority){case 5:g="highest";break;case 4:g="high";break;case 3:g="medium";break;case 2:g="low";break;case 1:g="lowest";break;default:g=a.metadata.priority}r.push(`[priority:: ${g}]`)}else{let g="";switch(a.metadata.priority){case 5:g="\u{1F53A}";break;case 4:g="\u23EB";break;case 3:g="\u{1F53C}";break;case 2:g="\u{1F53D}";break;case 1:g="\u23EC";break}g&&r.push(g)}let m=a.metadata.dependsOn,h;if(Array.isArray(m)?h=m.filter(g=>typeof g=="string"&&g.trim().length>0):typeof m=="string"&&(h=m.split(",").map(g=>g.trim()).filter(g=>g.length>0)),h&&h.length>0){let g=h.join(", ");r.push(t?`[dependsOn:: ${g}]`:`\u26D4 ${g}`)}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}`)),d&&a.completed&&r.push(t?`[completion:: ${d}]`:`\u2705 ${d}`),r}removeExistingMetadata(a){let e=a,t="\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{1,2}:\\d{2}(?::\\d{2})?)?";["\u{1F4C5}","\u{1F4C6}","\u2705","\u2795","\u23F3"].forEach(o=>{e=e.replace(new RegExp(`${o}\\s*${t}`,"g"),"")}),["(?:due|\u{1F4C5})","(?:completion|\u2705)","(?:created|\u2795)","(?:start|\u{1F6EB})","(?:scheduled|\u23F3)"].forEach(o=>{e=e.replace(new RegExp(`\\[${o}::\\s*${t}\\]`,"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 i=this.plugin.settings.projectTagPrefix[this.plugin.settings.preferMetadataFormat]||"project",s=this.plugin.settings.contextTagPrefix[this.plugin.settings.preferMetadataFormat]||"@";return e=e.replace(new RegExp(`\\[${i}::\\s*[^\\]]+\\]`,"gi"),""),e=e.replace(new RegExp(`\\[${s}::\\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=Os.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=Os.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 d=JSON.stringify(i,null,2);return await this.vault.modify(t,d),{success:!0,updatedContent:d}}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=Os.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 d=this.addTaskToTextNode(l,e,r);if(!d.success)return d;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 d=0;d<r.length;d++){let u=r[d];if(this.isTaskLine(u)&&this.lineMatchesTask(u,e)){o=d,i=!0;break}}if(!i)return{success:!1,error:`Task not found in Canvas text node: ${e.originalMarkdown}`};let l=[o];if(t){let d=r[o],u=this.getIndentLevel(d);for(let p=o+1;p<r.length;p++){let m=r[p],h=this.getIndentLevel(m);if(this.isTaskLine(m)&&h<=u)break;this.isTaskLine(m)&&h>u&&l.push(p)}}l.sort((d,u)=>u-d);for(let d of l)s.splice(d,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 yi=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 yr.isCanvasTask(a)}getCanvasTaskUpdater(a){let e=a.plugin;return e!=null&&e.writeAPI?e.writeAPI.canvasTaskUpdater:new yr(a.app.vault,a.plugin)}};var hx=class extends yi{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(d=>{var u;return d.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 d=o.join(`
`);return await r.vault.modify(i,d),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 gx=class extends yi{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 fx=class extends yi{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 h=await a.plugin.writeAPI.updateTask({taskId:m.id,updates:m});if(!h.success)throw new Error(h.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 kx=class extends yi{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 d=t.targetSection?` (section: ${t.targetSection})`:"";return this.createSuccessResult(`Task moved to Canvas file ${t.targetFile}${d} 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(g){return this.createErrorResult(`Failed to create target file: ${t.targetFile}`)}let l=await i.vault.read(s),d=await i.vault.read(o),u=l.split(`
`),p=d.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 g=p.findIndex(f=>f.trim().startsWith("#")&&f.includes(t.targetSection));if(g!==-1){let f=p.length;for(let k=g+1;k<p.length;k++)if(p[k].trim().startsWith("#")){f=k;break}p.splice(f,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 h=t.targetSection?` (section: ${t.targetSection})`:"";return this.createSuccessResult(`Task moved to ${t.targetFile}${h} 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(h){return this.createErrorResult(`Failed to create target file: ${e.targetFile}`)}let l=(await r.vault.read(s)).split(`
`),d=l.length;if(e.targetSection){for(let h=0;h<l.length;h++)if(l[h].trim().toLowerCase().includes(e.targetSection.toLowerCase())){d=h+1;break}}l.splice(d,0,i),await r.vault.modify(s,l.join(`
`));let p=await this.getCanvasTaskUpdater(a).deleteCanvasTask(t);if(!p.success){let h=e.targetSection?` (section: ${e.targetSection})`:"";return this.createErrorResult(`Task moved successfully to ${e.targetFile}${h}, 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 vx=class extends yi{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,d=r.archiveSection||this.DEFAULT_ARCHIVE_SECTION,u=await this.addTaskToArchiveFile(s,o,l,d,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 d=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(d);if(!m)try{let C=d.substring(0,d.lastIndexOf("/"));C&&!s.vault.getAbstractFileByPath(C)&&await s.vault.createFolder(C),m=await s.vault.create(d,`# Archive
## ${u}
`)}catch(C){return this.createErrorResult(`Failed to create archive file: ${d}`)}let h=await s.vault.read(p),g=await s.vault.read(m),f=h.split(`
`),k=g.split(`
`);if(i.line===void 0||i.line>=f.length)return this.createErrorResult("Task line not found in source file");let v=f[i.line];v=this.removeOnCompletionMetadata(v),v=this.ensureTaskIsCompleted(v);let y=new Date().toISOString().split("T")[0],b=`(from ${i.filePath})`,w=this.getCompletionMarker(e,y),T=`${v} ${w} ${b}`;f.splice(i.line,1);let x=k.findIndex(C=>C.trim().startsWith("#")&&C.includes(u));if(x!==-1){let C=k.length;for(let S=x+1;S<k.length;S++)if(k[S].trim().startsWith("#")){C=S;break}k.splice(C,0,T)}else k.push("",`## ${u}`,T);return await s.vault.modify(p,f.join(`
`)),await s.vault.modify(m,k.join(`
`)),this.createSuccessResult(`Task archived to ${d} (section: ${u})`)}catch(d){return this.createErrorResult(`Failed to archive task: ${d.message}`)}}async addTaskToArchiveFile(e,t,r,i,s){try{let o=e.vault.getFileByPath(r);if(!o)try{let g=r.substring(0,r.lastIndexOf("/"));g&&!e.vault.getAbstractFileByPath(g)&&await e.vault.createFolder(g),o=await e.vault.create(r,`# Archive
## ${i}
`)}catch(g){return{success:!1,error:`Failed to create archive file: ${r}`}}let d=(await e.vault.read(o)).split(`
`),u=new Date().toISOString().split("T")[0],p=this.getCompletionMarker(s,u),m=`${t} ${p}`,h=d.findIndex(g=>g.trim().startsWith("#")&&g.includes(i));if(h!==-1){let g=d.length;for(let f=h+1;f<d.length;f++)if(d[f].trim().startsWith("#")){g=f;break}d.splice(g,0,m)}else d.push("",`## ${i}`,m);return await e.vault.modify(o,d.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 d=s;d<t.length;d++)if(t[d]==="{"&&o++,t[d]==="}"&&o--,o===0){l=d;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 rP=require("obsidian");var yx=class extends yi{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 d=o!==r.filePath?`to ${t.targetFile}`:"in same file",u=t.targetSection?` (section: ${t.targetSection})`:"";return this.createSuccessResult(`Task duplicated ${d}${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 rP.TFile))return this.createErrorResult(`Source file not found: ${r.filePath}`);let o;if(t.targetFile){if(o=i.vault.getFileByPath(t.targetFile),!(o instanceof rP.TFile))try{o=await i.vault.create(t.targetFile,"")}catch(g){return this.createErrorResult(`Failed to create target file: ${t.targetFile}`)}}else o=s;let d=(await i.vault.read(s)).split(`
`);if(r.line===void 0||r.line>=d.length)return this.createErrorResult("Task line not found in source file");let u=d[r.line],p=this.createDuplicateTaskLine(u,t);if(o.path!==s.path){let f=(await i.vault.read(o)).split(`
`);if(t.targetSection){let k=f.findIndex(v=>v.trim().startsWith("#")&&v.includes(t.targetSection));k!==-1?f.splice(k+1,0,p):f.push("",`## ${t.targetSection}`,p)}else f.push(p);await i.vault.modify(o,f.join(`
`))}else d.splice(r.line+1,0,p),await i.vault.modify(s,d.join(`
`));let m=o.path!==s.path?`to ${t.targetFile}`:"in same file",h=t.targetSection?` (section: ${t.targetSection})`:"";return this.createSuccessResult(`Task duplicated ${m}${h}`)}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}(?:\s+\d{1,2}:\d{2})?/g,"").replace(/⏰\s*\d{4}-\d{2}-\d{2}(?:\s+\d{1,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(g){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 g=0;g<u.length;g++)if(u[g].trim().toLowerCase().includes(e.targetSection.toLowerCase())){p=g+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",h=e.targetSection?` (section: ${e.targetSection})`:"";return this.createSuccessResult(`Task duplicated from Canvas ${m}${h}`)}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}(?:\s+\d{1,2}:\d{2})?/g,"").replace(/⏰\s*\d{4}-\d{2}-\d{2}(?:\s+\d{1,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"}};z();var bx=class extends wx.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 hx),this.executors.set("keep",new gx),this.executors.set("complete",new fx),this.executors.set("move",new kx),this.executors.set("archive",new vx),this.executors.set("duplicate",new yx)}async handleTaskCompleted(e){if(await this.autoStopTimerForCompletedTask(e),!!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}`}}}async autoStopTimerForCompletedTask(e){var r,i;if(!((r=this.plugin.settings.taskTimer)!=null&&r.enabled))return;let t=(i=e.metadata)==null?void 0:i.id;if(t)try{let s=new Ft(this.plugin.settings.taskTimer),o=s.getTimerByFileAndBlock(e.filePath,t);if(o&&(o.status==="running"||o.status==="paused")){let l=s.completeTimer(o.taskId);l&&(`${l}`,new wx.Notice(c("Timer stopped")+`: ${l}`))}}catch(s){console.error("[OnCompletionManager] Error auto-stopping timer:",s)}}onunload(){this.executors.clear()}};var Xt=require("obsidian");z();var br={contentProperty:"title",statusProperty:"status",completedProperty:"completed",createdDateProperty:"createdDate",startDateProperty:"startDate",scheduledDateProperty:"scheduledDate",dueDateProperty:"dueDate",completedDateProperty:"completionDate",recurrenceProperty:"repeat",tagsProperty:"tags",projectProperty:"project",contextProperty:"context",priorityProperty:"priority",estimatedTimeProperty:"estimatedTime",actualTimeProperty:"actualTime"};var NQ="task-genius",Tx=class Tx extends Xt.BasesView{constructor(e,t,r,i){super(e);this.plugin=r;this.type=NQ;this.twoColumnViewComponents=new Map;this.currentViewId="inbox";this.forcedViewMode=null;this.activeComponent=null;this.currentSelectedTaskId=null;this.isDetailsVisible=!1;this.currentFilterState=null;this.liveFilterState=null;this.tasks=[];this.taskContentProp=null;this.taskStatusProp=null;this.taskPriorityProp=null;this.taskProjectProp=null;this.taskTagsProp=null;this.taskDueDateProp=null;this.taskStartDateProp=null;this.taskCompletedDateProp=null;this.taskContextProp=null;this.viewConfig={};this.handleKanbanTaskStatusUpdate=async(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){let o={...r,status:t,completed:i};o.metadata&&(o.metadata.completedDate=s),await this.updateTask(r,o)}}};i&&(this.currentViewId=i),this.scrollEl=t,this.containerEl=t.createDiv({cls:"task-genius-bases-container task-genius-view",attr:{tabIndex:0}}),this.rootContainerEl=this.containerEl.createDiv({cls:"task-genius-container no-sidebar"}),this.initializeComponents()}setForcedViewMode(e){this.forcedViewMode=e,this.currentViewId=e}onload(){this.registerEvent(this.app.workspace.on("task-genius:task-cache-updated",(0,Xt.debounce)(async()=>{await this.loadTasks()},150))),this.registerEvent(this.app.workspace.on("task-genius:filter-changed",(e,t)=>{t===this.containerEl.getAttribute("data-leaf-id")&&(this.liveFilterState=e,this.currentFilterState=e,this.applyCurrentFilter())})),this.registerDomEvent(document,"keydown",e=>{var t;e.key==="Escape"&&((t=this.selectionManager)!=null&&t.isSelectionMode)&&(e.preventDefault(),this.selectionManager.exitSelectionMode("user_action"))})}onunload(){var e,t;if((e=this.selectionManager)!=null&&e.isSelectionMode&&this.selectionManager.exitSelectionMode("view_change"),(t=this.activeComponent)!=null&&t.instance){let r=this.activeComponent.instance;r.containerEl&&r.containerEl.remove(),typeof r.unload=="function"&&this.removeChild(r)}this.twoColumnViewComponents.forEach(r=>{this.removeChild(r)}),this.twoColumnViewComponents.clear(),this.rootContainerEl&&(this.rootContainerEl.empty(),this.rootContainerEl.detach())}onDataUpdated(){this.loadConfig(),this.data&&(this.tasks=this.convertBasesEntriesToTasks(this.data.data),this.switchView(this.currentViewId,this.currentProject,!0))}getBasesConfig(){let e=this.config;return e||null}loadConfig(){let e=this.getBasesConfig();if(!e)return;this.applyForcedViewModeConfig(e),this.loadPropertyMappings(e);let t=e.get("viewMode");this.forcedViewMode?this.currentViewId=this.forcedViewMode:t&&typeof t=="string"&&(this.currentViewId=t),this.loadViewSpecificConfig(e)}loadPropertyMappings(e){let t=i=>i?this.getMappedFrontmatterKey(i):"",r={taskContent:"file.basename",taskStatus:`note.${t(br.statusProperty)}`,taskPriority:`note.${t(br.priorityProperty)}`,taskProject:`note.${t(br.projectProperty)}`,taskTags:`note.${t(br.tagsProperty)}`,taskDueDate:`note.${t(br.dueDateProperty)}`,taskStartDate:`note.${t(br.startDateProperty)}`,taskCompletedDate:`note.${t(br.completedDateProperty)}`,taskContext:`note.${t(br.contextProperty)}`};for(let[i,s]of Object.entries(r)){let o=e.get(i);if(o==null||o==="")e.set(i,s);else if(typeof o=="string"&&o.startsWith("note.")){let l=o.substring(5),d=this.getMappedFrontmatterKey(l);d!==l&&e.set(i,`note.${d}`)}}this.taskContentProp=e.getAsPropertyId("taskContent"),this.taskStatusProp=e.getAsPropertyId("taskStatus"),this.taskPriorityProp=e.getAsPropertyId("taskPriority"),this.taskProjectProp=e.getAsPropertyId("taskProject"),this.taskTagsProp=e.getAsPropertyId("taskTags"),this.taskDueDateProp=e.getAsPropertyId("taskDueDate"),this.taskStartDateProp=e.getAsPropertyId("taskStartDate"),this.taskCompletedDateProp=e.getAsPropertyId("taskCompletedDate"),this.taskContextProp=e.getAsPropertyId("taskContext")}loadViewSpecificConfig(e){this.viewConfig.kanban={groupBy:this.getStringConfig(e,"tg_groupBy","status"),customColumns:this.getCustomColumnsConfig(e,"customColumns"),hideEmptyColumns:this.getBooleanConfig(e,"hideEmptyColumns",!1),defaultSortField:this.getStringConfig(e,"defaultSortField","priority"),defaultSortOrder:this.getStringConfig(e,"defaultSortOrder","desc")},this.viewConfig.calendar={firstDayOfWeek:this.getNumericConfig(e,"firstDayOfWeek"),hideWeekends:this.getBooleanConfig(e,"hideWeekends",!1)},this.viewConfig.gantt={showTaskLabels:this.getBooleanConfig(e,"showTaskLabels",!0),useMarkdownRenderer:this.getBooleanConfig(e,"useMarkdownRenderer",!1)},this.viewConfig.forecast={firstDayOfWeek:this.getNumericConfig(e,"firstDayOfWeek"),hideWeekends:this.getBooleanConfig(e,"hideWeekends",!1)},this.viewConfig.quadrant={urgentTag:this.getStringConfig(e,"urgentTag","#urgent"),importantTag:this.getStringConfig(e,"importantTag","#important"),urgentThresholdDays:this.getNumericConfig(e,"urgentThresholdDays",3)||3,usePriorityForClassification:this.getBooleanConfig(e,"usePriorityForClassification",!1),urgentPriorityThreshold:this.getNumericConfig(e,"urgentPriorityThreshold"),importantPriorityThreshold:this.getNumericConfig(e,"importantPriorityThreshold")}}applyForcedViewModeConfig(e){if(!this.forcedViewMode)return;let t=e!=null?e:this.getBasesConfig();if(!t||typeof t.get!="function"||typeof t.set!="function")return;t.get("viewMode")!==this.forcedViewMode&&t.set("viewMode",this.forcedViewMode)}getNumericConfig(e,t,r){let i=e.get(t);return i!=null&&typeof i=="number"?i:r}getStringConfig(e,t,r){let i=e.get(t);return i!=null&&typeof i=="string"&&i.length>0?i:r}getBooleanConfig(e,t,r){let i=e.get(t);return i!=null&&typeof i=="boolean"?i:r}getCustomColumnsConfig(e,t){let r=e.get(t);if(r&&Array.isArray(r))return r}getStringConfigWithFallback(e,t,r,i){let s=e.get(t);if(typeof s=="string"&&s.length>0)return s;let o=e.get(r);return typeof o=="string"&&o.length>0?o:i}getBooleanConfigWithFallback(e,t,r,i){let s=e.get(t);if(typeof s=="boolean")return s;let o=e.get(r);return typeof o=="boolean"?o:i}getCustomColumnsConfigWithFallback(e,t,r){let i=e.get(t);if(i&&Array.isArray(i))return i;let s=e.get(r);if(s&&Array.isArray(s))return s}convertBasesEntriesToTasks(e){return e.map((t,r)=>this.convertEntryToTask(t,r))}convertEntryToTask(e,t){var d,u;let r=this.extractStringValue(e,this.taskStatusProp)||" ",i=this.mapStatusToSymbol(r),s=this.isCompletedStatus(i),o=this.extractStringValue(e,this.taskContentProp)||e.file.basename,l={id:`bases-${e.file.path}-${t}`,content:o,completed:s,status:i,line:0,filePath:e.file.path,originalMarkdown:o,metadata:{priority:this.extractNumberValue(e,this.taskPriorityProp),project:this.extractStringValue(e,this.taskProjectProp),tags:this.extractArrayValue(e,this.taskTagsProp),context:this.extractStringValue(e,this.taskContextProp),dueDate:this.extractDateValue(e,this.taskDueDateProp),startDate:this.extractDateValue(e,this.taskStartDateProp),completedDate:this.extractDateValue(e,this.taskCompletedDateProp),children:[]}};if(o.includes("\u9003\u907F\u4E3B\u4E49")){let p={};try{let m=["note.status","note.Status","note.state","note.taskStatus"];for(let h of m)try{let g=e.getValue(h);g&&(p[h]=g.toString())}catch(g){}}catch(m){}this.taskStatusProp,(d=this.plugin.settings.fileSource)==null||d.statusMapping,(u=this.plugin.settings.fileSource)==null||u.metadataMappings,e.file.path}return l}mapStatusToSymbol(e){var l,d;let t=(l=this.plugin.settings.fileSource)==null?void 0:l.statusMapping,r=(d=t==null?void 0:t.caseSensitive)!=null?d:!1,i=r?e:e.toLowerCase();if(t!=null&&t.symbolToMetadata&&e in t.symbolToMetadata)return e;if(t!=null&&t.enabled&&t.metadataToSymbol){for(let[u,p]of Object.entries(t.metadataToSymbol))if((r?u:u.toLowerCase())===i)return p}let s=String(e).toLowerCase(),o=Tx.DEFAULT_STATUS_MAPPINGS[s];return o!==void 0?o:e}isCompletedStatus(e){var r;return(((r=this.plugin.settings.taskStatuses)==null?void 0:r.completed)||"x").split("|").map(i=>i.trim().toLowerCase()).includes(e.toLowerCase())}mapSymbolToMetadata(e){var r;let t=(r=this.plugin.settings.fileSource)==null?void 0:r.statusMapping;return!t||!t.enabled?e:t.symbolToMetadata&&t.symbolToMetadata[e]?t.symbolToMetadata[e]:e}getFrontmatterKey(e){if(!e)return null;let t=(0,Xt.parsePropertyId)(e);return t.type==="note"?t.name:null}getMappedFrontmatterKey(e){let t=this.plugin.settings.fileSource,i=((t==null?void 0:t.metadataMappings)||[]).find(s=>s.enabled&&s.targetKey===e&&s.sourceKey);return i?i.sourceKey:e}extractStringValue(e,t){if(t)try{let r=e.getValue(t);if(r instanceof Xt.StringValue&&r.isTruthy()||r&&r.isTruthy())return r.toString()}catch(r){}}extractBooleanValue(e,t){if(!t)return!1;try{let r=e.getValue(t);if(r instanceof Xt.BooleanValue)return r.isTruthy();if(r instanceof Xt.StringValue){let i=r.toString().toLowerCase();return i==="x"||i==="true"||i==="done"||i==="completed"}}catch(r){}return!1}extractNumberValue(e,t){if(t)try{let r=e.getValue(t);if(r instanceof Xt.NumberValue&&r.isTruthy()){let i=r.toString();return Number(i)}if(r instanceof Xt.StringValue&&r.isTruthy()){let i=r.toString(),s=parseInt(i);return isNaN(s)?void 0:s}}catch(r){}}extractDateValue(e,t){if(t)try{let r=e.getValue(t);if(r instanceof Xt.DateValue&&r.isTruthy()){let i=r.date;if(i instanceof Date)return i.getTime()}if(r instanceof Xt.StringValue&&r.isTruthy()){let i=r.toString(),s=new Date(i);return isNaN(s.getTime())?void 0:s.getTime()}}catch(r){}}extractArrayValue(e,t){if(!t)return[];try{let r=e.getValue(t);if(r instanceof Xt.ListValue&&r.isTruthy()){let i=[];for(let s=0;s<r.length();s++){let o=r.get(s);if(o){let l=o.toString();i.push(l)}}return i}if(r instanceof Xt.StringValue&&r.isTruthy())return r.toString().split(",").map(s=>s.trim()).filter(s=>s.length>0)}catch(r){}return[]}initializeComponents(){this.selectionManager=new Ns(this.app,this.plugin),this.addChild(this.selectionManager),this.detailsComponent=new qi(this.rootContainerEl,this.app,this.plugin),this.addChild(this.detailsComponent),this.detailsComponent.load(),this.viewComponentManager=new ys(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()}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)}}activateComponent(e,t){if(!(!t||!t.containerEl)){if(this.activeComponent&&this.activeComponent.instance!==t){let r=this.activeComponent.instance;r!=null&&r.containerEl&&r.containerEl.hide()}t.containerEl.show(),this.activeComponent={key:e,instance:t}}}switchView(e,t,r=!1){var u,p;this.forcedViewMode&&(e=this.forcedViewMode),this.currentViewId=e,this.currentProject=t;let i=null,s=e,o=e,l=xt(this.plugin,e);if(((u=l.specificConfig)==null?void 0:u.viewType)==="twocolumn"){if(!this.twoColumnViewComponents.has(e)){let m=l.specificConfig,h=new un(this.rootContainerEl,this.app,this.plugin,m,e);this.addChild(h),h.onTaskSelected=g=>{this.handleTaskSelection(g)},h.onTaskCompleted=g=>{this.toggleTaskCompletion(g)},h.onTaskContextMenu=(g,f)=>{this.handleTaskContextMenu(g,f)},this.twoColumnViewComponents.set(e,h),h.containerEl.hide()}i=(p=this.twoColumnViewComponents.get(e))!=null?p:null,s=`twocolumn:${e}`}else if(this.viewComponentManager.isSpecialView(e)){let m=this.viewComponentManager.getOrCreateComponent(e);if(m){i=m,s=`special:${e}`;let h=m;if(typeof h.setConfigOverride=="function"){let g=e==="kanban"?this.viewConfig.kanban:e==="calendar"?this.viewConfig.calendar:e==="gantt"?this.viewConfig.gantt:e==="forecast"?this.viewConfig.forecast:e==="quadrant"?this.viewConfig.quadrant:null;h.setConfigOverride(g!=null?g:null)}}}else{if(s=e,o=e,this.activeComponent&&this.activeComponent.key!==e){let m=this.activeComponent.instance;m!=null&&m.containerEl&&m.containerEl.remove(),m&&typeof m.unload=="function"&&this.removeChild(m)}switch(e){case"inbox":case"flagged":let m=new Ps(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:x=>this.handleTaskSelection(x),onTaskCompleted:x=>this.toggleTaskCompletion(x),onTaskContextMenu:(x,C)=>this.handleTaskContextMenu(x,C),selectionManager:this.selectionManager});this.addChild(m),m.load(),i=m;break;case"forecast":let h=new pn(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:x=>this.handleTaskSelection(x),onTaskCompleted:x=>this.toggleTaskCompletion(x),onTaskUpdate:async(x,C)=>await this.handleTaskUpdate(x,C),onTaskContextMenu:(x,C)=>this.handleTaskContextMenu(x,C)});this.addChild(h),h.load(),i=h;break;case"tags":let g=new Is(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:x=>this.handleTaskSelection(x),onTaskCompleted:x=>this.toggleTaskCompletion(x),onTaskContextMenu:(x,C)=>this.handleTaskContextMenu(x,C)});this.addChild(g),g.load(),i=g;break;case"projects":let f=new As(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:x=>this.handleTaskSelection(x),onTaskCompleted:x=>this.toggleTaskCompletion(x),onTaskContextMenu:(x,C)=>this.handleTaskContextMenu(x,C)});this.addChild(f),f.load(),i=f;break;case"review":let k=new Fs(this.rootContainerEl,this.plugin.app,this.plugin,{onTaskSelected:x=>this.handleTaskSelection(x),onTaskCompleted:x=>this.toggleTaskCompletion(x),onTaskContextMenu:(x,C)=>this.handleTaskContextMenu(x,C)});this.addChild(k),k.load(),i=k;break;case"calendar":let v=new sn(this.plugin.app,this.plugin,this.rootContainerEl,this.tasks,{onTaskSelected:x=>this.handleTaskSelection(x),onTaskCompleted:x=>this.toggleTaskCompletion(x),onEventContextMenu:(x,C)=>{var D;let S=(D=C==null?void 0:C.metadata)==null?void 0:D.originalTask;S?this.handleTaskContextMenu(x,S):this.handleTaskContextMenu(x,C)}});this.addChild(v),v.load(),i=v;break;case"kanban":let y=new nn(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(y),y.load(),i=y;break;case"gantt":let b=new on(this.plugin,this.rootContainerEl,{onTaskSelected:this.handleTaskSelection.bind(this),onTaskCompleted:this.toggleTaskCompletion.bind(this),onTaskContextMenu:this.handleTaskContextMenu.bind(this)});this.addChild(b),i=b;break;case"quadrant":let w=new Cu(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),onTaskUpdated:async x=>{await this.updateTask(x,x)}});this.addChild(w),w.load(),i=w;break;case"habit":let T=new Rs(this.plugin,this.rootContainerEl);this.addChild(T),i=T;break;default:i=null;break}}if(!i){this.handleTaskSelection(null);return}if(this.activateComponent(s,i),typeof i.setTasks=="function"){let m={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(m.advancedFilter=this.currentFilterState);let h=cr(this.tasks,e,this.plugin,m);e==="forecast"&&(h=h.filter(g=>!g.badge)),i.setTasks(h,this.tasks,r)}if(typeof i.updateTasks=="function"){let m={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(m.advancedFilter=this.currentFilterState),i.updateTasks(cr(this.tasks,e,this.plugin,m))}typeof i.setViewMode=="function"&&i.setViewMode(o,t),this.twoColumnViewComponents.forEach(m=>{if(m&&typeof m.setTasks=="function"&&m.getViewId()===e){let h={};this.currentFilterState&&this.currentFilterState.filterGroups&&this.currentFilterState.filterGroups.length>0&&(h.advancedFilter=this.currentFilterState);let g=cr(this.tasks,m.getViewId(),this.plugin,h);m.getViewId()==="forecast"&&(g=g.filter(f=>!f.badge)),m.setTasks(g)}}),e==="review"&&typeof i.refreshReviewSettings=="function"&&i.refreshReviewSettings(),this.handleTaskSelection(null)}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?c("Hide Details"):c("Show Details"))),e||(this.currentSelectedTaskId=null)}handleTaskSelection(e){e?this.currentSelectedTaskId!==e.id?(this.currentSelectedTaskId=e.id,this.detailsComponent.showTaskDetails(e),this.isDetailsVisible||this.toggleDetailsVisibility(!0)):this.toggleDetailsVisibility(!this.isDetailsVisible):(this.toggleDetailsVisibility(!1),this.currentSelectedTaskId=null)}handleTaskContextMenu(e,t){let r=new Xt.Menu;r.addItem(i=>{i.setTitle(c("Complete")),i.setIcon("check-square"),i.onClick(()=>{this.toggleTaskCompletion(t)})}).addItem(i=>{i.setIcon("square-pen"),i.setTitle(c("Switch status"));let s=i.setSubmenu(),o=this.plugin.settings.taskStatusMarks,l=new Map;for(let d of Object.keys(o)){let u=o[d];Array.from(l.values()).includes(u)||l.set(d,u)}for(let[d,u]of l)s.addItem(p=>{p.titleEl.createEl("span",{cls:"status-option-checkbox"},m=>{gt(u,t,m)}),p.titleEl.createEl("span",{cls:"status-option",text:d}),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(c("Edit")),i.setIcon("pencil"),i.onClick(()=>{this.handleTaskSelection(t)})}).addItem(i=>{i.setTitle(c("Edit in File")),i.setIcon("file-edit"),i.onClick(()=>{this.editTask(t)})}),r.showAtMouseEvent(e)}async toggleTaskCompletion(e){var i;let t={...e,completed:!e.completed};if(t.completed){t.metadata&&(t.metadata.completedDate=Date.now());let s=(this.plugin.settings.taskStatuses.completed||"x").split("|")[0];t.status!==s&&(t.status=s)}else{t.metadata&&(t.metadata.completedDate=void 0);let s=this.plugin.settings.taskStatuses.notStarted||" ";t.status.toLowerCase()==="x"&&(t.status=s)}if(e.id.startsWith("bases-")&&((i=this.data)!=null&&i.data)){let s=this.tasks.findIndex(l=>l.id===e.id);if(s!==-1&&this.data.data[s]){let l=this.data.data[s],d=this.app.vault.getAbstractFileByPath(l.file.path);d&&d instanceof Xt.TFile&&await this.app.fileManager.processFrontMatter(d,u=>{var h;let p=this.getFrontmatterKey(this.taskStatusProp);if(p){let g=this.mapSymbolToMetadata(t.status);u[p]=g}let m=this.getFrontmatterKey(this.taskCompletedDateProp);m&&((h=t.metadata)!=null&&h.completedDate?u[m]=new Date(t.metadata.completedDate).toISOString().split("T")[0]:t.completed||delete u[m])})}let o=this.tasks.findIndex(l=>l.id===e.id);o!==-1&&(this.tasks[o]=t);return}else if(this.plugin.writeAPI){let s=await this.plugin.writeAPI.updateTask({taskId:t.id,updates:t});if(!s.success)throw new Error(s.error||"Failed to update task")}let r=this.tasks.findIndex(s=>s.id===e.id);r!==-1&&(this.tasks[r]=t,this.switchView(this.currentViewId,this.currentProject,!0))}async handleTaskUpdate(e,t){await this.updateTask(e,t)}async updateTask(e,t){var i;if(e.id.startsWith("bases-")&&((i=this.data)!=null&&i.data)){let s=this.tasks.findIndex(l=>l.id===e.id);if(s!==-1&&this.data.data[s]){let l=this.data.data[s],d=this.app.vault.getAbstractFileByPath(l.file.path);d&&d instanceof Xt.TFile&&await this.app.fileManager.processFrontMatter(d,u=>{var w,T,x,C,S,D,E,R,I,H,U,q,L,_,V,K,te,ce,pe,Ne,He,Be;let p=this.getFrontmatterKey(this.taskContentProp);p&&t.content!==e.content&&(u[p]=t.content);let m=this.getFrontmatterKey(this.taskStatusProp);m&&t.status!==e.status&&(u[m]=this.mapSymbolToMetadata(t.status));let h=this.getFrontmatterKey(this.taskPriorityProp);h&&((w=t.metadata)==null?void 0:w.priority)!==((T=e.metadata)==null?void 0:T.priority)&&(((x=t.metadata)==null?void 0:x.priority)!==void 0?u[h]=t.metadata.priority:delete u[h]);let g=this.getFrontmatterKey(this.taskProjectProp);g&&((C=t.metadata)==null?void 0:C.project)!==((S=e.metadata)==null?void 0:S.project)&&((D=t.metadata)!=null&&D.project?u[g]=t.metadata.project:delete u[g]);let f=this.getFrontmatterKey(this.taskTagsProp);f&&((E=t.metadata)==null?void 0:E.tags)!==((R=e.metadata)==null?void 0:R.tags)&&((H=(I=t.metadata)==null?void 0:I.tags)!=null&&H.length?u[f]=t.metadata.tags:delete u[f]);let k=this.getFrontmatterKey(this.taskContextProp);k&&((U=t.metadata)==null?void 0:U.context)!==((q=e.metadata)==null?void 0:q.context)&&((L=t.metadata)!=null&&L.context?u[k]=t.metadata.context:delete u[k]);let v=this.getFrontmatterKey(this.taskDueDateProp);v&&((_=t.metadata)==null?void 0:_.dueDate)!==((V=e.metadata)==null?void 0:V.dueDate)&&((K=t.metadata)!=null&&K.dueDate?u[v]=new Date(t.metadata.dueDate).toISOString().split("T")[0]:delete u[v]);let y=this.getFrontmatterKey(this.taskStartDateProp);y&&((te=t.metadata)==null?void 0:te.startDate)!==((ce=e.metadata)==null?void 0:ce.startDate)&&((pe=t.metadata)!=null&&pe.startDate?u[y]=new Date(t.metadata.startDate).toISOString().split("T")[0]:delete u[y]);let b=this.getFrontmatterKey(this.taskCompletedDateProp);b&&((Ne=t.metadata)==null?void 0:Ne.completedDate)!==((He=e.metadata)==null?void 0:He.completedDate)&&((Be=t.metadata)!=null&&Be.completedDate?u[b]=new Date(t.metadata.completedDate).toISOString().split("T")[0]:delete u[b])})}let o=this.tasks.findIndex(l=>l.id===e.id);return o!==-1&&(this.tasks[o]=t),this.currentSelectedTaskId===t.id&&(this.detailsComponent.isCurrentlyEditing()?this.detailsComponent.currentTask=t:this.detailsComponent.showTaskDetails(t)),t}else if(this.plugin.writeAPI){let s=await this.plugin.writeAPI.updateTask({taskId:e.id,updates:t});if(!s.success)throw new Error(s.error||"Failed to update task");s.task&&(t=s.task)}let r=this.tasks.findIndex(s=>s.id===e.id);return r!==-1&&(this.tasks[r]=t,this.switchView(this.currentViewId,this.currentProject,!0)),this.currentSelectedTaskId===t.id&&(this.detailsComponent.isCurrentlyEditing()?this.detailsComponent.currentTask=t:this.detailsComponent.showTaskDetails(t)),t}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})}applyCurrentFilter(){this.loadTasks()}async loadTasks(){if(this.data)this.tasks=this.convertBasesEntriesToTasks(this.data.data);else if(this.plugin.dataflowOrchestrator)try{let e=this.plugin.dataflowOrchestrator.getQueryAPI();this.tasks=await e.getAllTasks()}catch(e){console.error("Error loading tasks from dataflow:",e),this.tasks=[]}else this.tasks=[];this.currentViewId&&this.switchView(this.currentViewId,this.currentProject,!0)}static getViewOptions(e){let t=[];return t.push({displayName:"Property Mappings",type:"group",items:[{displayName:"Task Content",type:"property",key:"taskContent",placeholder:"Property containing task text",default:"file.basename"},{displayName:"Task Status",type:"property",key:"taskStatus",filter:r=>!r.startsWith("file."),placeholder:"Property for completion status",default:`note.${br.statusProperty}`},{displayName:"Priority",type:"property",key:"taskPriority",filter:r=>!r.startsWith("file."),placeholder:"Property for task priority",default:`note.${br.priorityProperty}`},{displayName:"Project",type:"property",key:"taskProject",filter:r=>!r.startsWith("file."),placeholder:"Property for project assignment",default:`note.${br.projectProperty}`},{displayName:"Tags",type:"property",key:"taskTags",filter:r=>!r.startsWith("file."),placeholder:"Property for task tags",default:`note.${br.tagsProperty}`},{displayName:"Context",type:"property",key:"taskContext",filter:r=>!r.startsWith("file."),placeholder:"Property for task context",default:`note.${br.contextProperty}`}]},{displayName:"Date Properties",type:"group",items:[{displayName:"Due Date",type:"property",key:"taskDueDate",filter:r=>!r.startsWith("file."),placeholder:"Property for due date",default:`note.${br.dueDateProperty}`},{displayName:"Start Date",type:"property",key:"taskStartDate",filter:r=>!r.startsWith("file."),placeholder:"Property for start date",default:`note.${br.startDateProperty}`},{displayName:"Completed Date",type:"property",key:"taskCompletedDate",filter:r=>!r.startsWith("file."),placeholder:"Property for completion date",default:`note.${br.completedDateProperty}`}]}),(!e||e==="kanban")&&t.push({displayName:"Kanban View Settings",type:"group",items:[{displayName:"Group By",type:"dropdown",key:"tg_groupBy",options:{status:"Status",priority:"Priority",tags:"Tags",project:"Project",context:"Context",dueDate:"Due Date",startDate:"Start Date"},default:"status"},{displayName:"Hide Empty Columns",type:"toggle",key:"hideEmptyColumns",default:!1},{displayName:"Default Sort Field",type:"dropdown",key:"defaultSortField",options:{priority:"Priority",dueDate:"Due Date",scheduledDate:"Scheduled Date",startDate:"Start Date",createdDate:"Created Date"},default:"priority"},{displayName:"Default Sort Order",type:"dropdown",key:"defaultSortOrder",options:{asc:"Ascending",desc:"Descending"},default:"desc"}]}),(!e||e==="calendar")&&t.push({displayName:c("Calendar Settings"),type:"group",items:[{displayName:"First Day of Week",type:"slider",key:"firstDayOfWeek",min:0,max:6,step:1,default:0},{displayName:"Hide Weekends",type:"toggle",key:"hideWeekends",default:!1}]}),(!e||e==="gantt")&&t.push({displayName:"Gantt View Settings",type:"group",items:[{displayName:"Show Task Labels",type:"toggle",key:"showTaskLabels",default:!0},{displayName:"Use Markdown Renderer",type:"toggle",key:"useMarkdownRenderer",default:!1}]}),(!e||e==="forecast")&&t.push({displayName:"Forecast View Settings",type:"group",items:[{displayName:"First Day of Week",type:"slider",key:"firstDayOfWeek",min:0,max:6,step:1,default:0},{displayName:"Hide Weekends",type:"toggle",key:"hideWeekends",default:!1}]}),(!e||e==="quadrant")&&t.push({displayName:"Quadrant View Settings",type:"group",items:[{displayName:"Urgent Tag",type:"text",key:"urgentTag",placeholder:"#urgent",default:"#urgent"},{displayName:"Important Tag",type:"text",key:"importantTag",placeholder:"#important",default:"#important"},{displayName:"Urgent Threshold (Days)",type:"slider",key:"urgentThresholdDays",min:1,max:14,step:1,default:3},{displayName:"Use Priority for Classification",type:"toggle",key:"usePriorityForClassification",default:!1},{displayName:"Urgent Priority Threshold",type:"slider",key:"urgentPriorityThreshold",min:1,max:5,step:1,default:4},{displayName:"Important Priority Threshold",type:"slider",key:"importantPriorityThreshold",min:1,max:5,step:1,default:3}]}),t}};Tx.DEFAULT_STATUS_MAPPINGS={completed:"x",done:"x",finished:"x","in-progress":"/","in progress":"/",doing:"/",planned:"?",todo:"?",cancelled:"-",canceled:"-","not-started":" ","not started":" "};var hk=Tx;var LQ=[{id:"task-genius-inbox",name:"Inbox (Task Genius)",icon:"lucide-inbox",defaultViewMode:"inbox",description:"View and manage tasks in inbox mode"},{id:"task-genius-forecast",name:"Forecast (Task Genius)",icon:"lucide-calendar-days",defaultViewMode:"forecast",description:"View tasks in forecast timeline"},{id:"task-genius-projects",name:"Projects (Task Genius)",icon:"lucide-folder-tree",defaultViewMode:"projects",description:"Organize tasks by projects"},{id:"task-genius-tags",name:"Tags (Task Genius)",icon:"lucide-tags",defaultViewMode:"tags",description:"Browse tasks by tags"},{id:"task-genius-calendar",name:"Calendar (Task Genius)",icon:"lucide-calendar",defaultViewMode:"calendar",description:"View tasks in calendar layout"},{id:"task-genius-kanban",name:"Kanban (Task Genius)",icon:"lucide-columns-3",defaultViewMode:"kanban",description:"Manage tasks in kanban board"},{id:"task-genius-gantt",name:"Gantt (Task Genius)",icon:"lucide-gantt-chart-square",defaultViewMode:"gantt",description:"View tasks in Gantt chart"},{id:"task-genius-review",name:"Review (Task Genius)",icon:"lucide-list-checks",defaultViewMode:"review",description:"Review and process tasks"},{id:"task-genius-habits",name:"Habits (Task Genius)",icon:"lucide-target",defaultViewMode:"habit",description:"Track habits and recurring tasks"},{id:"task-genius-flagged",name:"Flagged (Task Genius)",icon:"lucide-flag",defaultViewMode:"flagged",description:"View high-priority flagged tasks"},{id:"task-genius-quadrant",name:"Quadrant (Task Genius)",icon:"lucide-grid",defaultViewMode:"quadrant",description:"Organize tasks using the Eisenhower Matrix"}];function jQ(n){return()=>{var r,i;let a=n.defaultViewMode,e=hk.getViewOptions(a),t=e.find(s=>s.displayName==="View Settings"&&s.type==="group");return t&&"items"in t&&(t.items=(r=t.items)==null?void 0:r.filter(s=>s.key!=="viewMode"),(i=t.items)==null||i.unshift({displayName:"View Type",type:"text",key:"__viewType",placeholder:`This is a ${n.name} view`,default:n.name,readonly:!0})),e}}function uH(n){LQ.forEach(a=>{try{n.registerBasesView(a.id,{name:a.name,icon:a.icon,factory:(e,t)=>{let r=new hk(e,t,n,a.defaultViewMode);return r.setForcedViewMode(a.defaultViewMode),r},options:jQ(a)}),`${a.name}${a.id}`}catch(e){console.error(`Failed to register Bases view ${a.id}:`,e)}})}var gk=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;let t="taskTimer_activeList",r=window.app.loadLocalStorage(t),i=[];try{i=r?JSON.parse(r):[]}catch(s){i=[]}for(let s of e.activeTimers){let o=[];s.segments&&Array.isArray(s.segments)?o=s.segments:s.startTime&&o.push({startTime:s.startTime,endTime:s.pausedTime,duration:s.pausedTime?s.pausedTime-s.startTime-(s.totalPausedDuration||0):void 0});let l={taskId:s.taskId,filePath:s.filePath,blockId:s.blockId,segments:o,status:s.status,createdAt:s.createdAt,legacyStartTime:s.startTime,legacyPausedTime:s.pausedTime,legacyTotalPausedDuration:s.totalPausedDuration||0};window.app.saveLocalStorage(s.taskId,JSON.stringify(l)),i.includes(s.taskId)||i.push(s.taskId)}return window.app.saveLocalStorage(t,JSON.stringify(i)),`${e.activeTimers.length}`,!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="taskTimer_activeList",t=window.app.loadLocalStorage(e),r=[];try{r=t?JSON.parse(t):[]}catch(o){r=[]}let i=0,s=0;for(let o of a.timers)try{if(o.status==="running"||o.status==="paused"){let l=[];o.startTime&&l.push({startTime:o.startTime,endTime:o.endTime,duration:o.endTime?o.endTime-o.startTime-(o.totalPausedDuration||0):void 0});let d={taskId:o.taskId,filePath:o.filePath,blockId:o.blockId,segments:l,status:o.status,createdAt:o.createdAt||Date.now(),legacyStartTime:o.startTime,legacyPausedTime:o.endTime,legacyTotalPausedDuration:o.totalPausedDuration||0};window.app.saveLocalStorage(o.taskId,JSON.stringify(d)),r.includes(o.taskId)||r.push(o.taskId),s++,i++}else if(o.status==="idle"||o.endTime){let l=`taskTimer_history_${o.blockId}_${o.startTime}`;window.app.saveLocalStorage(l,JSON.stringify({...o,importedAt:Date.now()})),i++}}catch(l){console.warn("Failed to import timer:",o.taskId,l)}return window.app.saveLocalStorage(e,JSON.stringify(r)),`${i}${s}`,i>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 d=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 Vs=require("obsidian");var pp=require("obsidian"),xx=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:d,context:u}=a.filter;s!==void 0&&(e=e.filter(p=>p.completed===s)),o&&(e=e.filter(p=>{var h,g,f;return(((h=p.metadata)==null?void 0:h.project)||((f=(g=p.metadata)==null?void 0:g.tgProject)==null?void 0:f.name))===o})),l&&l.length>0&&(e=e.filter(p=>{var h;let m=((h=p.metadata)==null?void 0:h.tags)||[];return l.some(g=>m.includes(g))})),d!==void 0&&(e=e.filter(p=>{var m;return((m=p.metadata)==null?void 0:m.priority)===d})),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,d)=>{let u=l,p=d,m=s.split(".");for(let h of m)u=u==null?void 0:u[h],p=p==null?void 0:p[h];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,pp.moment)(a.from).valueOf():void 0,t=a.to?(0,pp.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,d,u,p,m,h;for(let g of r)switch(g){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(k=>k.toLowerCase().includes(t)))return!0;break;case"project":{let k=((d=s.metadata)==null?void 0:d.project)||((p=(u=s.metadata)==null?void 0:u.tgProject)==null?void 0:p.name);if(k!=null&&k.toLowerCase().includes(t))return!0;break}case"context":if((h=(m=s.metadata)==null?void 0:m.context)!=null&&h.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,pp.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,pp.moment)(a.from).valueOf(),to:(0,pp.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 za=require("obsidian"),Bs=xp(UM());var fk=["MO","TU","WE","TH","FR","SA","SU"],Wa=(function(){function n(a,e){if(e===0)throw new Error("Can't create weekday with n == 0");this.weekday=a,this.n=e}return n.fromStr=function(a){return new n(fk.indexOf(a))},n.prototype.nth=function(a){return this.n===a?this:new n(this.weekday,a)},n.prototype.equals=function(a){return this.weekday===a.weekday&&this.n===a.n},n.prototype.toString=function(){var a=fk[this.weekday];return this.n&&(a=(this.n>0?"+":"")+String(this.n)+a),a},n.prototype.getJsWeekday=function(){return this.weekday===6?0:this.weekday+1},n})();var Kt=function(n){return n!=null},Oi=function(n){return typeof n=="number"},iP=function(n){return typeof n=="string"&&fk.includes(n)},wr=Array.isArray,bn=function(n,a){a===void 0&&(a=n),arguments.length===1&&(a=n,n=0);for(var e=[],t=n;t<a;t++)e.push(t);return e};var rt=function(n,a){var e=0,t=[];if(wr(n))for(;e<a;e++)t[e]=[].concat(n);else for(;e<a;e++)t[e]=n;return t},pH=function(n){return wr(n)?n:[n]};function Jc(n,a,e){e===void 0&&(e=" ");var t=String(n);return a=a>>0,t.length>a?String(t):(a=a-t.length,a>e.length&&(e+=rt(e,a/e.length)),e.slice(0,a)+String(t))}var mH=function(n,a,e){var t=n.split(a);return e?t.slice(0,e).concat([t.slice(e).join(a)]):t},Fr=function(n,a){var e=n%a;return e*a<0?e+a:e},Cx=function(n,a){return{div:Math.floor(n/a),mod:Fr(n,a)}},Ni=function(n){return!Kt(n)||n.length===0},Sa=function(n){return!Ni(n)},ot=function(n,a){return Sa(n)&&n.indexOf(a)!==-1};var js=function(n,a,e,t,r,i){return t===void 0&&(t=0),r===void 0&&(r=0),i===void 0&&(i=0),new Date(Date.UTC(n,a-1,e,t,r,i))},HQ=[31,28,31,30,31,30,31,31,30,31,30,31],gH=1e3*60*60*24,Sx=9999,fH=js(1970,1,1),BQ=[6,0,1,2,3,4,5];var mp=function(n){return n%4===0&&n%100!==0||n%400===0},nP=function(n){return n instanceof Date},Zc=function(n){return nP(n)&&!isNaN(n.getTime())};var VQ=function(n,a){var e=n.getTime(),t=a.getTime(),r=e-t;return Math.round(r/gH)},kk=function(n){return VQ(n,fH)},Dx=function(n){return new Date(fH.getTime()+n*gH)},WQ=function(n){var a=n.getUTCMonth();return a===1&&mp(n.getUTCFullYear())?29:HQ[a]},Ro=function(n){return BQ[n.getUTCDay()]},sP=function(n,a){var e=js(n,a+1,1);return[Ro(e),WQ(e)]},Ex=function(n,a){return a=a||n,new Date(Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),a.getHours(),a.getMinutes(),a.getSeconds(),a.getMilliseconds()))},Mx=function(n){var a=new Date(n.getTime());return a},oP=function(n){for(var a=[],e=0;e<n.length;e++)a.push(Mx(n[e]));return a},Oo=function(n){n.sort(function(a,e){return a.getTime()-e.getTime()})},hp=function(n,a){a===void 0&&(a=!0);var e=new Date(n);return[Jc(e.getUTCFullYear().toString(),4,"0"),Jc(e.getUTCMonth()+1,2,"0"),Jc(e.getUTCDate(),2,"0"),"T",Jc(e.getUTCHours(),2,"0"),Jc(e.getUTCMinutes(),2,"0"),Jc(e.getUTCSeconds(),2,"0"),a?"Z":""].join("")},vk=function(n){var a=/^(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2})Z?)?$/,e=a.exec(n);if(!e)throw new Error("Invalid UNTIL value: ".concat(n));return new Date(Date.UTC(parseInt(e[1],10),parseInt(e[2],10)-1,parseInt(e[3],10),parseInt(e[5],10)||0,parseInt(e[6],10)||0,parseInt(e[7],10)||0))},hH=function(n,a){var e=n.toLocaleString("sv-SE",{timeZone:a});return e.replace(" ","T")+"Z"},kH=function(n,a){var e=Intl.DateTimeFormat().resolvedOptions().timeZone,t=new Date(hH(n,e)),r=new Date(hH(n,a!=null?a:"UTC")),i=r.getTime()-t.getTime();return new Date(n.getTime()-i)};var zQ=(function(){function n(a,e){this.minDate=null,this.maxDate=null,this._result=[],this.total=0,this.method=a,this.args=e,a==="between"?(this.maxDate=e.inc?e.before:new Date(e.before.getTime()-1),this.minDate=e.inc?e.after:new Date(e.after.getTime()+1)):a==="before"?this.maxDate=e.inc?e.dt:new Date(e.dt.getTime()-1):a==="after"&&(this.minDate=e.inc?e.dt:new Date(e.dt.getTime()+1))}return n.prototype.accept=function(a){++this.total;var e=this.minDate&&a<this.minDate,t=this.maxDate&&a>this.maxDate;if(this.method==="between"){if(e)return!0;if(t)return!1}else if(this.method==="before"){if(t)return!1}else if(this.method==="after")return e?!0:(this.add(a),!1);return this.add(a)},n.prototype.add=function(a){return this._result.push(a),!0},n.prototype.getValue=function(){var a=this._result;switch(this.method){case"all":case"between":return a;case"before":case"after":default:return a.length?a[a.length-1]:null}},n.prototype.clone=function(){return new n(this.method,this.args)},n})(),No=zQ;var lP=function(n,a){return lP=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},lP(n,a)};function gp(n,a){if(typeof a!="function"&&a!==null)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");lP(n,a);function e(){this.constructor=n}n.prototype=a===null?Object.create(a):(e.prototype=a.prototype,new e)}var Tr=function(){return Tr=Object.assign||function(a){for(var e,t=1,r=arguments.length;t<r;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(a[i]=e[i])}return a},Tr.apply(this,arguments)};function oe(n,a,e){if(e||arguments.length===2)for(var t=0,r=a.length,i;t<r;t++)(i||!(t in a))&&(i||(i=Array.prototype.slice.call(a,0,t)),i[t]=a[t]);return n.concat(i||Array.prototype.slice.call(a))}var _Q=(function(n){gp(a,n);function a(e,t,r){var i=n.call(this,e,t)||this;return i.iterator=r,i}return a.prototype.add=function(e){return this.iterator(e,this._result.length)?(this._result.push(e),!0):!1},a})(No),cP=_Q;var UQ={dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],tokens:{SKIP:/^[ \r\n\t]+|^\.$/,number:/^[1-9][0-9]*/,numberAsText:/^(one|two|three)/i,every:/^every/i,"day(s)":/^days?/i,"weekday(s)":/^weekdays?/i,"week(s)":/^weeks?/i,"hour(s)":/^hours?/i,"minute(s)":/^minutes?/i,"month(s)":/^months?/i,"year(s)":/^years?/i,on:/^(on|in)/i,at:/^(at)/i,the:/^the/i,first:/^first/i,second:/^second/i,third:/^third/i,nth:/^([1-9][0-9]*)(\.|th|nd|rd|st)/i,last:/^last/i,for:/^for/i,"time(s)":/^times?/i,until:/^(un)?til/i,monday:/^mo(n(day)?)?/i,tuesday:/^tu(e(s(day)?)?)?/i,wednesday:/^we(d(n(esday)?)?)?/i,thursday:/^th(u(r(sday)?)?)?/i,friday:/^fr(i(day)?)?/i,saturday:/^sa(t(urday)?)?/i,sunday:/^su(n(day)?)?/i,january:/^jan(uary)?/i,february:/^feb(ruary)?/i,march:/^mar(ch)?/i,april:/^apr(il)?/i,may:/^may/i,june:/^june?/i,july:/^july?/i,august:/^aug(ust)?/i,september:/^sep(t(ember)?)?/i,october:/^oct(ober)?/i,november:/^nov(ember)?/i,december:/^dec(ember)?/i,comma:/^(,\s*|(and|or)\s*)+/i}},ed=UQ;var vH=function(n,a){return n.indexOf(a)!==-1},$Q=function(n){return n.toString()},YQ=function(n,a,e){return"".concat(a," ").concat(e,", ").concat(n)},qQ=(function(){function n(a,e,t,r){if(e===void 0&&(e=$Q),t===void 0&&(t=ed),r===void 0&&(r=YQ),this.text=[],this.language=t||ed,this.gettext=e,this.dateFormatter=r,this.rrule=a,this.options=a.options,this.origOptions=a.origOptions,this.origOptions.bymonthday){var i=[].concat(this.options.bymonthday),s=[].concat(this.options.bynmonthday);i.sort(function(u,p){return u-p}),s.sort(function(u,p){return p-u}),this.bymonthday=i.concat(s),this.bymonthday.length||(this.bymonthday=null)}if(Kt(this.origOptions.byweekday)){var o=wr(this.origOptions.byweekday)?this.origOptions.byweekday:[this.origOptions.byweekday],l=String(o);this.byweekday={allWeeks:o.filter(function(u){return!u.n}),someWeeks:o.filter(function(u){return!!u.n}),isWeekdays:l.indexOf("MO")!==-1&&l.indexOf("TU")!==-1&&l.indexOf("WE")!==-1&&l.indexOf("TH")!==-1&&l.indexOf("FR")!==-1&&l.indexOf("SA")===-1&&l.indexOf("SU")===-1,isEveryDay:l.indexOf("MO")!==-1&&l.indexOf("TU")!==-1&&l.indexOf("WE")!==-1&&l.indexOf("TH")!==-1&&l.indexOf("FR")!==-1&&l.indexOf("SA")!==-1&&l.indexOf("SU")!==-1};var d=function(u,p){return u.weekday-p.weekday};this.byweekday.allWeeks.sort(d),this.byweekday.someWeeks.sort(d),this.byweekday.allWeeks.length||(this.byweekday.allWeeks=null),this.byweekday.someWeeks.length||(this.byweekday.someWeeks=null)}else this.byweekday=null}return n.isFullyConvertible=function(a){var e=!0;if(!(a.options.freq in n.IMPLEMENTED)||a.origOptions.until&&a.origOptions.count)return!1;for(var t in a.origOptions){if(vH(["dtstart","tzid","wkst","freq"],t))return!0;if(!vH(n.IMPLEMENTED[a.options.freq],t))return!1}return e},n.prototype.isFullyConvertible=function(){return n.isFullyConvertible(this.rrule)},n.prototype.toString=function(){var a=this.gettext;if(!(this.options.freq in n.IMPLEMENTED))return a("RRule error: Unable to fully convert this rrule to text");if(this.text=[a("every")],this[we.FREQUENCIES[this.options.freq]](),this.options.until){this.add(a("until"));var e=this.options.until;this.add(this.dateFormatter(e.getUTCFullYear(),this.language.monthNames[e.getUTCMonth()],e.getUTCDate()))}else this.options.count&&this.add(a("for")).add(this.options.count.toString()).add(this.plural(this.options.count)?a("times"):a("time"));return this.isFullyConvertible()||this.add(a("(~ approximate)")),this.text.join("")},n.prototype.HOURLY=function(){var a=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?a("hours"):a("hour"))},n.prototype.MINUTELY=function(){var a=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?a("minutes"):a("minute"))},n.prototype.DAILY=function(){var a=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.byweekday&&this.byweekday.isWeekdays?this.add(this.plural(this.options.interval)?a("weekdays"):a("weekday")):this.add(this.plural(this.options.interval)?a("days"):a("day")),this.origOptions.bymonth&&(this.add(a("in")),this._bymonth()),this.bymonthday?this._bymonthday():this.byweekday?this._byweekday():this.origOptions.byhour&&this._byhour()},n.prototype.WEEKLY=function(){var a=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()).add(this.plural(this.options.interval)?a("weeks"):a("week")),this.byweekday&&this.byweekday.isWeekdays?this.options.interval===1?this.add(this.plural(this.options.interval)?a("weekdays"):a("weekday")):this.add(a("on")).add(a("weekdays")):this.byweekday&&this.byweekday.isEveryDay?this.add(this.plural(this.options.interval)?a("days"):a("day")):(this.options.interval===1&&this.add(a("week")),this.origOptions.bymonth&&(this.add(a("in")),this._bymonth()),this.bymonthday?this._bymonthday():this.byweekday&&this._byweekday(),this.origOptions.byhour&&this._byhour())},n.prototype.MONTHLY=function(){var a=this.gettext;this.origOptions.bymonth?(this.options.interval!==1&&(this.add(this.options.interval.toString()).add(a("months")),this.plural(this.options.interval)&&this.add(a("in"))),this._bymonth()):(this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?a("months"):a("month"))),this.bymonthday?this._bymonthday():this.byweekday&&this.byweekday.isWeekdays?this.add(a("on")).add(a("weekdays")):this.byweekday&&this._byweekday()},n.prototype.YEARLY=function(){var a=this.gettext;this.origOptions.bymonth?(this.options.interval!==1&&(this.add(this.options.interval.toString()),this.add(a("years"))),this._bymonth()):(this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?a("years"):a("year"))),this.bymonthday?this._bymonthday():this.byweekday&&this._byweekday(),this.options.byyearday&&this.add(a("on the")).add(this.list(this.options.byyearday,this.nth,a("and"))).add(a("day")),this.options.byweekno&&this.add(a("in")).add(this.plural(this.options.byweekno.length)?a("weeks"):a("week")).add(this.list(this.options.byweekno,void 0,a("and")))},n.prototype._bymonthday=function(){var a=this.gettext;this.byweekday&&this.byweekday.allWeeks?this.add(a("on")).add(this.list(this.byweekday.allWeeks,this.weekdaytext,a("or"))).add(a("the")).add(this.list(this.bymonthday,this.nth,a("or"))):this.add(a("on the")).add(this.list(this.bymonthday,this.nth,a("and")))},n.prototype._byweekday=function(){var a=this.gettext;this.byweekday.allWeeks&&!this.byweekday.isWeekdays&&this.add(a("on")).add(this.list(this.byweekday.allWeeks,this.weekdaytext)),this.byweekday.someWeeks&&(this.byweekday.allWeeks&&this.add(a("and")),this.add(a("on the")).add(this.list(this.byweekday.someWeeks,this.weekdaytext,a("and"))))},n.prototype._byhour=function(){var a=this.gettext;this.add(a("at")).add(this.list(this.origOptions.byhour,void 0,a("and")))},n.prototype._bymonth=function(){this.add(this.list(this.options.bymonth,this.monthtext,this.gettext("and")))},n.prototype.nth=function(a){a=parseInt(a.toString(),10);var e,t=this.gettext;if(a===-1)return t("last");var r=Math.abs(a);switch(r){case 1:case 21:case 31:e=r+t("st");break;case 2:case 22:e=r+t("nd");break;case 3:case 23:e=r+t("rd");break;default:e=r+t("th")}return a<0?e+" "+t("last"):e},n.prototype.monthtext=function(a){return this.language.monthNames[a-1]},n.prototype.weekdaytext=function(a){var e=Oi(a)?(a+1)%7:a.getJsWeekday();return(a.n?this.nth(a.n)+" ":"")+this.language.dayNames[e]},n.prototype.plural=function(a){return a%100!==1},n.prototype.add=function(a){return this.text.push(" "),this.text.push(a),this},n.prototype.list=function(a,e,t,r){var i=this;r===void 0&&(r=","),wr(a)||(a=[a]);var s=function(l,d,u){for(var p="",m=0;m<l.length;m++)m!==0&&(m===l.length-1?p+=" "+u+" ":p+=d+" "),p+=l[m];return p};e=e||function(l){return l.toString()};var o=function(l){return e&&e.call(i,l)};return t?s(a.map(o),r,t):a.map(o).join(r+" ")},n})(),Hs=qQ;var GQ=(function(){function n(a){this.done=!0,this.rules=a}return n.prototype.start=function(a){return this.text=a,this.done=!1,this.nextSymbol()},n.prototype.isDone=function(){return this.done&&this.symbol===null},n.prototype.nextSymbol=function(){var a,e;this.symbol=null,this.value=null;do{if(this.done)return!1;var t=void 0;a=null;for(var r in this.rules){t=this.rules[r];var i=t.exec(this.text);i&&(a===null||i[0].length>a[0].length)&&(a=i,e=r)}if(a!=null&&(this.text=this.text.substr(a[0].length),this.text===""&&(this.done=!0)),a==null){this.done=!0,this.symbol=null,this.value=null;return}}while(e==="SKIP");return this.symbol=e,this.value=a,!0},n.prototype.accept=function(a){if(this.symbol===a){if(this.value){var e=this.value;return this.nextSymbol(),e}return this.nextSymbol(),!0}return!1},n.prototype.acceptNumber=function(){return this.accept("number")},n.prototype.expect=function(a){if(this.accept(a))return!0;throw new Error("expected "+a+" but found "+this.symbol)},n})();function yk(n,a){a===void 0&&(a=ed);var e={},t=new GQ(a.tokens);if(!t.start(n))return null;return r(),e;function r(){t.expect("every");var m=t.acceptNumber();if(m&&(e.interval=parseInt(m[0],10)),t.isDone())throw new Error("Unexpected end");switch(t.symbol){case"day(s)":e.freq=we.DAILY,t.nextSymbol()&&(s(),p());break;case"weekday(s)":e.freq=we.WEEKLY,e.byweekday=[we.MO,we.TU,we.WE,we.TH,we.FR],t.nextSymbol(),s(),p();break;case"week(s)":e.freq=we.WEEKLY,t.nextSymbol()&&(i(),s(),p());break;case"hour(s)":e.freq=we.HOURLY,t.nextSymbol()&&(i(),p());break;case"minute(s)":e.freq=we.MINUTELY,t.nextSymbol()&&(i(),p());break;case"month(s)":e.freq=we.MONTHLY,t.nextSymbol()&&(i(),p());break;case"year(s)":e.freq=we.YEARLY,t.nextSymbol()&&(i(),p());break;case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":e.freq=we.WEEKLY;var h=t.symbol.substr(0,2).toUpperCase();if(e.byweekday=[we[h]],!t.nextSymbol())return;for(;t.accept("comma");){if(t.isDone())throw new Error("Unexpected end");var g=l();if(!g)throw new Error("Unexpected symbol "+t.symbol+", expected weekday");e.byweekday.push(we[g]),t.nextSymbol()}s(),u(),p();break;case"january":case"february":case"march":case"april":case"may":case"june":case"july":case"august":case"september":case"october":case"november":case"december":if(e.freq=we.YEARLY,e.bymonth=[o()],!t.nextSymbol())return;for(;t.accept("comma");){if(t.isDone())throw new Error("Unexpected end");var f=o();if(!f)throw new Error("Unexpected symbol "+t.symbol+", expected month");e.bymonth.push(f),t.nextSymbol()}i(),p();break;default:throw new Error("Unknown symbol")}}function i(){var m=t.accept("on"),h=t.accept("the");if(m||h)do{var g=d(),f=l(),k=o();if(g)f?(t.nextSymbol(),e.byweekday||(e.byweekday=[]),e.byweekday.push(we[f].nth(g))):(e.bymonthday||(e.bymonthday=[]),e.bymonthday.push(g),t.accept("day(s)"));else if(f)t.nextSymbol(),e.byweekday||(e.byweekday=[]),e.byweekday.push(we[f]);else if(t.symbol==="weekday(s)")t.nextSymbol(),e.byweekday||(e.byweekday=[we.MO,we.TU,we.WE,we.TH,we.FR]);else if(t.symbol==="week(s)"){t.nextSymbol();var v=t.acceptNumber();if(!v)throw new Error("Unexpected symbol "+t.symbol+", expected week number");for(e.byweekno=[parseInt(v[0],10)];t.accept("comma");){if(v=t.acceptNumber(),!v)throw new Error("Unexpected symbol "+t.symbol+"; expected monthday");e.byweekno.push(parseInt(v[0],10))}}else if(k)t.nextSymbol(),e.bymonth||(e.bymonth=[]),e.bymonth.push(k);else return}while(t.accept("comma")||t.accept("the")||t.accept("on"))}function s(){var m=t.accept("at");if(m)do{var h=t.acceptNumber();if(!h)throw new Error("Unexpected symbol "+t.symbol+", expected hour");for(e.byhour=[parseInt(h[0],10)];t.accept("comma");){if(h=t.acceptNumber(),!h)throw new Error("Unexpected symbol "+t.symbol+"; expected hour");e.byhour.push(parseInt(h[0],10))}}while(t.accept("comma")||t.accept("at"))}function o(){switch(t.symbol){case"january":return 1;case"february":return 2;case"march":return 3;case"april":return 4;case"may":return 5;case"june":return 6;case"july":return 7;case"august":return 8;case"september":return 9;case"october":return 10;case"november":return 11;case"december":return 12;default:return!1}}function l(){switch(t.symbol){case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":return t.symbol.substr(0,2).toUpperCase();default:return!1}}function d(){switch(t.symbol){case"last":return t.nextSymbol(),-1;case"first":return t.nextSymbol(),1;case"second":return t.nextSymbol(),t.accept("last")?-2:2;case"third":return t.nextSymbol(),t.accept("last")?-3:3;case"nth":var m=parseInt(t.value[1],10);if(m<-366||m>366)throw new Error("Nth out of range: "+m);return t.nextSymbol(),t.accept("last")?-m:m;default:return!1}}function u(){t.accept("on"),t.accept("the");var m=d();if(m)for(e.bymonthday=[m],t.nextSymbol();t.accept("comma");){if(m=d(),!m)throw new Error("Unexpected symbol "+t.symbol+"; expected monthday");e.bymonthday.push(m),t.nextSymbol()}}function p(){if(t.symbol==="until"){var m=Date.parse(t.text);if(!m)throw new Error("Cannot parse until date:"+t.text);e.until=new Date(m)}else t.accept("for")&&(e.count=parseInt(t.value[0],10),t.expect("number"))}}var Qe;(function(n){n[n.YEARLY=0]="YEARLY",n[n.MONTHLY=1]="MONTHLY",n[n.WEEKLY=2]="WEEKLY",n[n.DAILY=3]="DAILY",n[n.HOURLY=4]="HOURLY",n[n.MINUTELY=5]="MINUTELY",n[n.SECONDLY=6]="SECONDLY"})(Qe||(Qe={}));function bk(n){return n<Qe.HOURLY}var yH=function(n,a){return a===void 0&&(a=ed),new we(yk(n,a)||void 0)},fp=["count","until","interval","byweekday","bymonthday","bymonth"];Hs.IMPLEMENTED=[];Hs.IMPLEMENTED[Qe.HOURLY]=fp;Hs.IMPLEMENTED[Qe.MINUTELY]=fp;Hs.IMPLEMENTED[Qe.DAILY]=["byhour"].concat(fp);Hs.IMPLEMENTED[Qe.WEEKLY]=fp;Hs.IMPLEMENTED[Qe.MONTHLY]=fp;Hs.IMPLEMENTED[Qe.YEARLY]=["byweekno","byyearday"].concat(fp);var bH=function(n,a,e,t){return new Hs(n,a,e,t).toString()},wH=Hs.isFullyConvertible;var kp=(function(){function n(a,e,t,r){this.hour=a,this.minute=e,this.second=t,this.millisecond=r||0}return n.prototype.getHours=function(){return this.hour},n.prototype.getMinutes=function(){return this.minute},n.prototype.getSeconds=function(){return this.second},n.prototype.getMilliseconds=function(){return this.millisecond},n.prototype.getTime=function(){return(this.hour*60*60+this.minute*60+this.second)*1e3+this.millisecond},n})();var TH=(function(n){gp(a,n);function a(e,t,r,i,s,o,l){var d=n.call(this,i,s,o,l)||this;return d.year=e,d.month=t,d.day=r,d}return a.fromDate=function(e){return new this(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.valueOf()%1e3)},a.prototype.getWeekday=function(){return Ro(new Date(this.getTime()))},a.prototype.getTime=function(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond)).getTime()},a.prototype.getDay=function(){return this.day},a.prototype.getMonth=function(){return this.month},a.prototype.getYear=function(){return this.year},a.prototype.addYears=function(e){this.year+=e},a.prototype.addMonths=function(e){if(this.month+=e,this.month>12){var t=Math.floor(this.month/12),r=Fr(this.month,12);this.month=r,this.year+=t,this.month===0&&(this.month=12,--this.year)}},a.prototype.addWeekly=function(e,t){t>this.getWeekday()?this.day+=-(this.getWeekday()+1+(6-t))+e*7:this.day+=-(this.getWeekday()-t)+e*7,this.fixDay()},a.prototype.addDaily=function(e){this.day+=e,this.fixDay()},a.prototype.addHours=function(e,t,r){for(t&&(this.hour+=Math.floor((23-this.hour)/e)*e);;){this.hour+=e;var i=Cx(this.hour,24),s=i.div,o=i.mod;if(s&&(this.hour=o,this.addDaily(s)),Ni(r)||ot(r,this.hour))break}},a.prototype.addMinutes=function(e,t,r,i){for(t&&(this.minute+=Math.floor((1439-(this.hour*60+this.minute))/e)*e);;){this.minute+=e;var s=Cx(this.minute,60),o=s.div,l=s.mod;if(o&&(this.minute=l,this.addHours(o,!1,r)),(Ni(r)||ot(r,this.hour))&&(Ni(i)||ot(i,this.minute)))break}},a.prototype.addSeconds=function(e,t,r,i,s){for(t&&(this.second+=Math.floor((86399-(this.hour*3600+this.minute*60+this.second))/e)*e);;){this.second+=e;var o=Cx(this.second,60),l=o.div,d=o.mod;if(l&&(this.second=d,this.addMinutes(l,!1,r,i)),(Ni(r)||ot(r,this.hour))&&(Ni(i)||ot(i,this.minute))&&(Ni(s)||ot(s,this.second)))break}},a.prototype.fixDay=function(){if(!(this.day<=28)){var e=sP(this.year,this.month-1)[1];if(!(this.day<=e))for(;this.day>e;){if(this.day-=e,++this.month,this.month===13&&(this.month=1,++this.year,this.year>Sx))return;e=sP(this.year,this.month-1)[1]}}},a.prototype.add=function(e,t){var r=e.freq,i=e.interval,s=e.wkst,o=e.byhour,l=e.byminute,d=e.bysecond;switch(r){case Qe.YEARLY:return this.addYears(i);case Qe.MONTHLY:return this.addMonths(i);case Qe.WEEKLY:return this.addWeekly(i,s);case Qe.DAILY:return this.addDaily(i);case Qe.HOURLY:return this.addHours(i,t,o);case Qe.MINUTELY:return this.addMinutes(i,t,o,l);case Qe.SECONDLY:return this.addSeconds(i,t,o,l,d)}},a})(kp);function dP(n){for(var a=[],e=Object.keys(n),t=0,r=e;t<r.length;t++){var i=r[t];ot(SH,i)||a.push(i),nP(n[i])&&!Zc(n[i])&&a.push(i)}if(a.length)throw new Error("Invalid options: "+a.join(", "));return Tr({},n)}function xH(n){var a=Tr(Tr({},wk),dP(n));if(Kt(a.byeaster)&&(a.freq=we.YEARLY),!(Kt(a.freq)&&we.FREQUENCIES[a.freq]))throw new Error("Invalid frequency: ".concat(a.freq," ").concat(n.freq));if(a.dtstart||(a.dtstart=new Date(new Date().setMilliseconds(0))),Kt(a.wkst)?Oi(a.wkst)||(a.wkst=a.wkst.weekday):a.wkst=we.MO.weekday,Kt(a.bysetpos)){Oi(a.bysetpos)&&(a.bysetpos=[a.bysetpos]);for(var e=0;e<a.bysetpos.length;e++){var t=a.bysetpos[e];if(t===0||!(t>=-366&&t<=366))throw new Error("bysetpos must be between 1 and 366, or between -366 and -1")}}if(!(a.byweekno||Sa(a.byweekno)||Sa(a.byyearday)||a.bymonthday||Sa(a.bymonthday)||Kt(a.byweekday)||Kt(a.byeaster)))switch(a.freq){case we.YEARLY:a.bymonth||(a.bymonth=a.dtstart.getUTCMonth()+1),a.bymonthday=a.dtstart.getUTCDate();break;case we.MONTHLY:a.bymonthday=a.dtstart.getUTCDate();break;case we.WEEKLY:a.byweekday=[Ro(a.dtstart)];break}if(Kt(a.bymonth)&&!wr(a.bymonth)&&(a.bymonth=[a.bymonth]),Kt(a.byyearday)&&!wr(a.byyearday)&&Oi(a.byyearday)&&(a.byyearday=[a.byyearday]),!Kt(a.bymonthday))a.bymonthday=[],a.bynmonthday=[];else if(wr(a.bymonthday)){for(var r=[],i=[],e=0;e<a.bymonthday.length;e++){var t=a.bymonthday[e];t>0?r.push(t):t<0&&i.push(t)}a.bymonthday=r,a.bynmonthday=i}else a.bymonthday<0?(a.bynmonthday=[a.bymonthday],a.bymonthday=[]):(a.bynmonthday=[],a.bymonthday=[a.bymonthday]);if(Kt(a.byweekno)&&!wr(a.byweekno)&&(a.byweekno=[a.byweekno]),!Kt(a.byweekday))a.bynweekday=null;else if(Oi(a.byweekday))a.byweekday=[a.byweekday],a.bynweekday=null;else if(iP(a.byweekday))a.byweekday=[Wa.fromStr(a.byweekday).weekday],a.bynweekday=null;else if(a.byweekday instanceof Wa)!a.byweekday.n||a.freq>we.MONTHLY?(a.byweekday=[a.byweekday.weekday],a.bynweekday=null):(a.bynweekday=[[a.byweekday.weekday,a.byweekday.n]],a.byweekday=null);else{for(var s=[],o=[],e=0;e<a.byweekday.length;e++){var l=a.byweekday[e];if(Oi(l)){s.push(l);continue}else if(iP(l)){s.push(Wa.fromStr(l).weekday);continue}!l.n||a.freq>we.MONTHLY?s.push(l.weekday):o.push([l.weekday,l.n])}a.byweekday=Sa(s)?s:null,a.bynweekday=Sa(o)?o:null}return Kt(a.byhour)?Oi(a.byhour)&&(a.byhour=[a.byhour]):a.byhour=a.freq<we.HOURLY?[a.dtstart.getUTCHours()]:null,Kt(a.byminute)?Oi(a.byminute)&&(a.byminute=[a.byminute]):a.byminute=a.freq<we.MINUTELY?[a.dtstart.getUTCMinutes()]:null,Kt(a.bysecond)?Oi(a.bysecond)&&(a.bysecond=[a.bysecond]):a.bysecond=a.freq<we.SECONDLY?[a.dtstart.getUTCSeconds()]:null,{parsedOptions:a}}function CH(n){var a=n.dtstart.getTime()%1e3;if(!bk(n.freq))return[];var e=[];return n.byhour.forEach(function(t){n.byminute.forEach(function(r){n.bysecond.forEach(function(i){e.push(new kp(t,r,i,a))})})}),e}function xk(n){var a=n.split(`
`).map(KQ).filter(function(e){return e!==null});return Tr(Tr({},a[0]),a[1])}function Tk(n){var a={},e=/DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\s]+)/i.exec(n);if(!e)return a;var t=e[1],r=e[2];return t&&(a.tzid=t),a.dtstart=vk(r),a}function KQ(n){if(n=n.replace(/^\s+|\s+$/,""),!n.length)return null;var a=/^([A-Z]+?)[:;]/.exec(n.toUpperCase());if(!a)return DH(n);var e=a[1];switch(e.toUpperCase()){case"RRULE":case"EXRULE":return DH(n);case"DTSTART":return Tk(n);default:throw new Error("Unsupported RFC prop ".concat(e," in ").concat(n))}}function DH(n){var a=n.replace(/^RRULE:/i,""),e=Tk(a),t=n.replace(/^(?:RRULE|EXRULE):/i,"").split(";");return t.forEach(function(r){var i=r.split("="),s=i[0],o=i[1];switch(s.toUpperCase()){case"FREQ":e.freq=Qe[o.toUpperCase()];break;case"WKST":e.wkst=wn[o.toUpperCase()];break;case"COUNT":case"INTERVAL":case"BYSETPOS":case"BYMONTH":case"BYMONTHDAY":case"BYYEARDAY":case"BYWEEKNO":case"BYHOUR":case"BYMINUTE":case"BYSECOND":var l=QQ(o),d=s.toLowerCase();e[d]=l;break;case"BYWEEKDAY":case"BYDAY":e.byweekday=XQ(o);break;case"DTSTART":case"TZID":var u=Tk(n);e.tzid=u.tzid,e.dtstart=u.dtstart;break;case"UNTIL":e.until=vk(o);break;case"BYEASTER":e.byeaster=Number(o);break;default:throw new Error("Unknown RRULE property '"+s+"'")}}),e}function QQ(n){if(n.indexOf(",")!==-1){var a=n.split(",");return a.map(EH)}return EH(n)}function EH(n){return/^[+-]?\d+$/.test(n)?Number(n):n}function XQ(n){var a=n.split(",");return a.map(function(e){if(e.length===2)return wn[e];var t=e.match(/^([+-]?\d{1,2})([A-Z]{2})$/);if(!t||t.length<3)throw new SyntaxError("Invalid weekday string: ".concat(e));var r=Number(t[1]),i=t[2],s=wn[i].weekday;return new Wa(s,r)})}var td=(function(){function n(a,e){if(isNaN(a.getTime()))throw new RangeError("Invalid date passed to DateWithZone");this.date=a,this.tzid=e}return Object.defineProperty(n.prototype,"isUTC",{get:function(){return!this.tzid||this.tzid.toUpperCase()==="UTC"},enumerable:!1,configurable:!0}),n.prototype.toString=function(){var a=hp(this.date.getTime(),this.isUTC);return this.isUTC?":".concat(a):";TZID=".concat(this.tzid,":").concat(a)},n.prototype.getTime=function(){return this.date.getTime()},n.prototype.rezonedDate=function(){return this.isUTC?this.date:kH(this.date,this.tzid)},n})();function Ck(n){for(var a=[],e="",t=Object.keys(n),r=Object.keys(wk),i=0;i<t.length;i++)if(t[i]!=="tzid"&&ot(r,t[i])){var s=t[i].toUpperCase(),o=n[t[i]],l="";if(!(!Kt(o)||wr(o)&&!o.length)){switch(s){case"FREQ":l=we.FREQUENCIES[n.freq];break;case"WKST":Oi(o)?l=new Wa(o).toString():l=o.toString();break;case"BYWEEKDAY":s="BYDAY",l=pH(o).map(function(h){return h instanceof Wa?h:wr(h)?new Wa(h[0],h[1]):new Wa(h)}).toString();break;case"DTSTART":e=JQ(o,n.tzid);break;case"UNTIL":l=hp(o,!n.tzid);break;default:if(wr(o)){for(var d=[],u=0;u<o.length;u++)d[u]=String(o[u]);l=d.toString()}else l=String(o)}l&&a.push([s,l])}}var p=a.map(function(h){var g=h[0],f=h[1];return"".concat(g,"=").concat(f.toString())}).join(";"),m="";return p!==""&&(m="RRULE:".concat(p)),[e,m].filter(function(h){return!!h}).join(`
`)}function JQ(n,a){return n?"DTSTART"+new td(new Date(n),a).toString():""}function ZQ(n,a){return Array.isArray(n)?!Array.isArray(a)||n.length!==a.length?!1:n.every(function(e,t){return e.getTime()===a[t].getTime()}):n instanceof Date?a instanceof Date&&n.getTime()===a.getTime():n===a}var MH=(function(){function n(){this.all=!1,this.before=[],this.after=[],this.between=[]}return n.prototype._cacheAdd=function(a,e,t){e&&(e=e instanceof Date?Mx(e):oP(e)),a==="all"?this.all=e:(t._value=e,this[a].push(t))},n.prototype._cacheGet=function(a,e){var t=!1,r=e?Object.keys(e):[],i=function(u){for(var p=0;p<r.length;p++){var m=r[p];if(!ZQ(e[m],u[m]))return!0}return!1},s=this[a];if(a==="all")t=this.all;else if(wr(s))for(var o=0;o<s.length;o++){var l=s[o];if(!(r.length&&i(l))){t=l._value;break}}if(!t&&this.all){for(var d=new No(a,e),o=0;o<this.all.length&&d.accept(this.all[o]);o++);t=d.getValue(),this._cacheAdd(a,t,e)}return wr(t)?oP(t):t instanceof Date?Mx(t):t},n})();var PH=oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe([],rt(1,31),!0),rt(2,28),!0),rt(3,31),!0),rt(4,30),!0),rt(5,31),!0),rt(6,30),!0),rt(7,31),!0),rt(8,31),!0),rt(9,30),!0),rt(10,31),!0),rt(11,30),!0),rt(12,31),!0),rt(1,7),!0),IH=oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe([],rt(1,31),!0),rt(2,29),!0),rt(3,31),!0),rt(4,30),!0),rt(5,31),!0),rt(6,30),!0),rt(7,31),!0),rt(8,31),!0),rt(9,30),!0),rt(10,31),!0),rt(11,30),!0),rt(12,31),!0),rt(1,7),!0),eX=bn(1,29),tX=bn(1,30),Fl=bn(1,31),Rr=bn(1,32),AH=oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe([],Rr,!0),tX,!0),Rr,!0),Fl,!0),Rr,!0),Fl,!0),Rr,!0),Rr,!0),Fl,!0),Rr,!0),Fl,!0),Rr,!0),Rr.slice(0,7),!0),FH=oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe([],Rr,!0),eX,!0),Rr,!0),Fl,!0),Rr,!0),Fl,!0),Rr,!0),Rr,!0),Fl,!0),Rr,!0),Fl,!0),Rr,!0),Rr.slice(0,7),!0),aX=bn(-28,0),rX=bn(-29,0),Rl=bn(-30,0),Or=bn(-31,0),RH=oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe([],Or,!0),rX,!0),Or,!0),Rl,!0),Or,!0),Rl,!0),Or,!0),Or,!0),Rl,!0),Or,!0),Rl,!0),Or,!0),Or.slice(0,7),!0),OH=oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe(oe([],Or,!0),aX,!0),Or,!0),Rl,!0),Or,!0),Rl,!0),Or,!0),Or,!0),Rl,!0),Or,!0),Rl,!0),Or,!0),Or.slice(0,7),!0),NH=[0,31,60,91,121,152,182,213,244,274,305,335,366],LH=[0,31,59,90,120,151,181,212,243,273,304,334,365],uP=(function(){for(var n=[],a=0;a<55;a++)n=n.concat(bn(7));return n})();function jH(n,a){var e=js(n,1,1),t=mp(n)?366:365,r=mp(n+1)?366:365,i=kk(e),s=Ro(e),o=Tr(Tr({yearlen:t,nextyearlen:r,yearordinal:i,yearweekday:s},iX(n)),{wnomask:null});if(Ni(a.byweekno))return o;o.wnomask=rt(0,t+7);var l,d,u=l=Fr(7-s+a.wkst,7);u>=4?(u=0,d=o.yearlen+Fr(s-a.wkst,7)):d=t-u;for(var p=Math.floor(d/7),m=Fr(d,7),h=Math.floor(p+m/4),g=0;g<a.byweekno.length;g++){var f=a.byweekno[g];if(f<0&&(f+=h+1),f>0&&f<=h){var k=void 0;f>1?(k=u+(f-1)*7,u!==l&&(k-=7-l)):k=u;for(var v=0;v<7&&(o.wnomask[k]=1,k++,o.wdaymask[k]!==a.wkst);v++);}}if(ot(a.byweekno,1)){var k=u+h*7;if(u!==l&&(k-=7-l),k<t)for(var g=0;g<7&&(o.wnomask[k]=1,k+=1,o.wdaymask[k]!==a.wkst);g++);}if(u){var y=void 0;if(ot(a.byweekno,-1))y=-1;else{var b=Ro(js(n-1,1,1)),w=Fr(7-b.valueOf()+a.wkst,7),T=mp(n-1)?366:365,x=void 0;w>=4?(w=0,x=T+Fr(b-a.wkst,7)):x=t-u,y=Math.floor(52+Fr(x,7)/4)}if(ot(a.byweekno,y))for(var k=0;k<u;k++)o.wnomask[k]=1}return o}function iX(n){var a=mp(n)?366:365,e=js(n,1,1),t=Ro(e);return a===365?{mmask:PH,mdaymask:FH,nmdaymask:OH,wdaymask:uP.slice(t),mrange:LH}:{mmask:IH,mdaymask:AH,nmdaymask:RH,wdaymask:uP.slice(t),mrange:NH}}function HH(n,a,e,t,r,i){var s={lastyear:n,lastmonth:a,nwdaymask:[]},o=[];if(i.freq===we.YEARLY)if(Ni(i.bymonth))o=[[0,e]];else for(var l=0;l<i.bymonth.length;l++)a=i.bymonth[l],o.push(t.slice(a-1,a+1));else i.freq===we.MONTHLY&&(o=[t.slice(a-1,a+1)]);if(Ni(o))return s;s.nwdaymask=rt(0,e);for(var l=0;l<o.length;l++)for(var d=o[l],u=d[0],p=d[1]-1,m=0;m<i.bynweekday.length;m++){var h=void 0,g=i.bynweekday[m],f=g[0],k=g[1];k<0?(h=p+(k+1)*7,h-=Fr(r[h]-f,7)):(h=u+(k-1)*7,h+=Fr(7-r[h]+f,7)),u<=h&&h<=p&&(s.nwdaymask[h]=1)}return s}function BH(n,a){a===void 0&&(a=0);var e=n%19,t=Math.floor(n/100),r=n%100,i=Math.floor(t/4),s=t%4,o=Math.floor((t+8)/25),l=Math.floor((t-o+1)/3),d=Math.floor(19*e+t-i-l+15)%30,u=Math.floor(r/4),p=r%4,m=Math.floor(32+2*s+2*u-d-p)%7,h=Math.floor((e+11*d+22*m)/451),g=Math.floor((d+m-7*h+114)/31),f=(d+m-7*h+114)%31+1,k=Date.UTC(n,g-1,f+a),v=Date.UTC(n,0,1);return[Math.ceil((k-v)/(1e3*60*60*24))]}var nX=(function(){function n(a){this.options=a}return n.prototype.rebuild=function(a,e){var t=this.options;if(a!==this.lastyear&&(this.yearinfo=jH(a,t)),Sa(t.bynweekday)&&(e!==this.lastmonth||a!==this.lastyear)){var r=this.yearinfo,i=r.yearlen,s=r.mrange,o=r.wdaymask;this.monthinfo=HH(a,e,i,s,o,t)}Kt(t.byeaster)&&(this.eastermask=BH(a,t.byeaster))},Object.defineProperty(n.prototype,"lastyear",{get:function(){return this.monthinfo?this.monthinfo.lastyear:null},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"lastmonth",{get:function(){return this.monthinfo?this.monthinfo.lastmonth:null},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"yearlen",{get:function(){return this.yearinfo.yearlen},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"yearordinal",{get:function(){return this.yearinfo.yearordinal},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"mrange",{get:function(){return this.yearinfo.mrange},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"wdaymask",{get:function(){return this.yearinfo.wdaymask},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"mmask",{get:function(){return this.yearinfo.mmask},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"wnomask",{get:function(){return this.yearinfo.wnomask},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"nwdaymask",{get:function(){return this.monthinfo?this.monthinfo.nwdaymask:[]},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"nextyearlen",{get:function(){return this.yearinfo.nextyearlen},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"mdaymask",{get:function(){return this.yearinfo.mdaymask},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"nmdaymask",{get:function(){return this.yearinfo.nmdaymask},enumerable:!1,configurable:!0}),n.prototype.ydayset=function(){return[bn(this.yearlen),0,this.yearlen]},n.prototype.mdayset=function(a,e){for(var t=this.mrange[e-1],r=this.mrange[e],i=rt(null,this.yearlen),s=t;s<r;s++)i[s]=s;return[i,t,r]},n.prototype.wdayset=function(a,e,t){for(var r=rt(null,this.yearlen+7),i=kk(js(a,e,t))-this.yearordinal,s=i,o=0;o<7&&(r[i]=i,++i,this.wdaymask[i]!==this.options.wkst);o++);return[r,s,i]},n.prototype.ddayset=function(a,e,t){var r=rt(null,this.yearlen),i=kk(js(a,e,t))-this.yearordinal;return r[i]=i,[r,i,i+1]},n.prototype.htimeset=function(a,e,t,r){var i=this,s=[];return this.options.byminute.forEach(function(o){s=s.concat(i.mtimeset(a,o,t,r))}),Oo(s),s},n.prototype.mtimeset=function(a,e,t,r){var i=this.options.bysecond.map(function(s){return new kp(a,e,s,r)});return Oo(i),i},n.prototype.stimeset=function(a,e,t,r){return[new kp(a,e,t,r)]},n.prototype.getdayset=function(a){switch(a){case Qe.YEARLY:return this.ydayset.bind(this);case Qe.MONTHLY:return this.mdayset.bind(this);case Qe.WEEKLY:return this.wdayset.bind(this);case Qe.DAILY:return this.ddayset.bind(this);default:return this.ddayset.bind(this)}},n.prototype.gettimeset=function(a){switch(a){case Qe.HOURLY:return this.htimeset.bind(this);case Qe.MINUTELY:return this.mtimeset.bind(this);case Qe.SECONDLY:return this.stimeset.bind(this)}},n})(),VH=nX;function WH(n,a,e,t,r,i){for(var s=[],o=0;o<n.length;o++){var l=void 0,d=void 0,u=n[o];u<0?(l=Math.floor(u/a.length),d=Fr(u,a.length)):(l=Math.floor((u-1)/a.length),d=Fr(u-1,a.length));for(var p=[],m=e;m<t;m++){var h=i[m];Kt(h)&&p.push(h)}var g=void 0;l<0?g=p.slice(l)[0]:g=p[l];var f=a[d],k=Dx(r.yearordinal+g),v=Ex(k,f);ot(s,v)||s.push(v)}return Oo(s),s}function Px(n,a){var e=a.dtstart,t=a.freq,r=a.interval,i=a.until,s=a.bysetpos,o=a.count;if(o===0||r===0)return Lo(n);var l=TH.fromDate(e),d=new VH(a);d.rebuild(l.year,l.month);for(var u=lX(d,l,a);;){var p=d.getdayset(t)(l.year,l.month,l.day),m=p[0],h=p[1],g=p[2],f=oX(m,h,g,d,a);if(Sa(s))for(var k=WH(s,u,h,g,d,m),v=0;v<k.length;v++){var y=k[v];if(i&&y>i)return Lo(n);if(y>=e){var b=zH(y,a);if(!n.accept(b)||o&&(--o,!o))return Lo(n)}}else for(var v=h;v<g;v++){var w=m[v];if(Kt(w))for(var T=Dx(d.yearordinal+w),x=0;x<u.length;x++){var C=u[x],y=Ex(T,C);if(i&&y>i)return Lo(n);if(y>=e){var b=zH(y,a);if(!n.accept(b)||o&&(--o,!o))return Lo(n)}}}if(a.interval===0||(l.add(a,f),l.year>Sx))return Lo(n);bk(t)||(u=d.gettimeset(t)(l.hour,l.minute,l.second,0)),d.rebuild(l.year,l.month)}}function sX(n,a,e){var t=e.bymonth,r=e.byweekno,i=e.byweekday,s=e.byeaster,o=e.bymonthday,l=e.bynmonthday,d=e.byyearday;return Sa(t)&&!ot(t,n.mmask[a])||Sa(r)&&!n.wnomask[a]||Sa(i)&&!ot(i,n.wdaymask[a])||Sa(n.nwdaymask)&&!n.nwdaymask[a]||s!==null&&!ot(n.eastermask,a)||(Sa(o)||Sa(l))&&!ot(o,n.mdaymask[a])&&!ot(l,n.nmdaymask[a])||Sa(d)&&(a<n.yearlen&&!ot(d,a+1)&&!ot(d,-n.yearlen+a)||a>=n.yearlen&&!ot(d,a+1-n.yearlen)&&!ot(d,-n.nextyearlen+a-n.yearlen))}function zH(n,a){return new td(n,a.tzid).rezonedDate()}function Lo(n){return n.getValue()}function oX(n,a,e,t,r){for(var i=!1,s=a;s<e;s++){var o=n[s];i=sX(t,o,r),i&&(n[o]=null)}return i}function lX(n,a,e){var t=e.freq,r=e.byhour,i=e.byminute,s=e.bysecond;return bk(t)?CH(e):t>=we.HOURLY&&Sa(r)&&!ot(r,a.hour)||t>=we.MINUTELY&&Sa(i)&&!ot(i,a.minute)||t>=we.SECONDLY&&Sa(s)&&!ot(s,a.second)?[]:n.gettimeset(t)(a.hour,a.minute,a.second,a.millisecond)}var wn={MO:new Wa(0),TU:new Wa(1),WE:new Wa(2),TH:new Wa(3),FR:new Wa(4),SA:new Wa(5),SU:new Wa(6)},wk={freq:Qe.YEARLY,dtstart:null,interval:1,wkst:wn.MO,count:null,until:null,tzid:null,bysetpos:null,bymonth:null,bymonthday:null,bynmonthday:null,byyearday:null,byweekno:null,byweekday:null,bynweekday:null,byhour:null,byminute:null,bysecond:null,byeaster:null},SH=Object.keys(wk),we=(function(){function n(a,e){a===void 0&&(a={}),e===void 0&&(e=!1),this._cache=e?null:new MH,this.origOptions=dP(a);var t=xH(a).parsedOptions;this.options=t}return n.parseText=function(a,e){return yk(a,e)},n.fromText=function(a,e){return yH(a,e)},n.fromString=function(a){return new n(n.parseString(a)||void 0)},n.prototype._iter=function(a){return Px(a,this.options)},n.prototype._cacheGet=function(a,e){return this._cache?this._cache._cacheGet(a,e):!1},n.prototype._cacheAdd=function(a,e,t){if(this._cache)return this._cache._cacheAdd(a,e,t)},n.prototype.all=function(a){if(a)return this._iter(new cP("all",{},a));var e=this._cacheGet("all");return e===!1&&(e=this._iter(new No("all",{})),this._cacheAdd("all",e)),e},n.prototype.between=function(a,e,t,r){if(t===void 0&&(t=!1),!Zc(a)||!Zc(e))throw new Error("Invalid date passed in to RRule.between");var i={before:e,after:a,inc:t};if(r)return this._iter(new cP("between",i,r));var s=this._cacheGet("between",i);return s===!1&&(s=this._iter(new No("between",i)),this._cacheAdd("between",s,i)),s},n.prototype.before=function(a,e){if(e===void 0&&(e=!1),!Zc(a))throw new Error("Invalid date passed in to RRule.before");var t={dt:a,inc:e},r=this._cacheGet("before",t);return r===!1&&(r=this._iter(new No("before",t)),this._cacheAdd("before",r,t)),r},n.prototype.after=function(a,e){if(e===void 0&&(e=!1),!Zc(a))throw new Error("Invalid date passed in to RRule.after");var t={dt:a,inc:e},r=this._cacheGet("after",t);return r===!1&&(r=this._iter(new No("after",t)),this._cacheAdd("after",r,t)),r},n.prototype.count=function(){return this.all().length},n.prototype.toString=function(){return Ck(this.origOptions)},n.prototype.toText=function(a,e,t){return bH(this,a,e,t)},n.prototype.isFullyConvertibleToText=function(){return wH(this)},n.prototype.clone=function(){return new n(this.origOptions)},n.FREQUENCIES=["YEARLY","MONTHLY","WEEKLY","DAILY","HOURLY","MINUTELY","SECONDLY"],n.YEARLY=Qe.YEARLY,n.MONTHLY=Qe.MONTHLY,n.WEEKLY=Qe.WEEKLY,n.DAILY=Qe.DAILY,n.HOURLY=Qe.HOURLY,n.MINUTELY=Qe.MINUTELY,n.SECONDLY=Qe.SECONDLY,n.MO=wn.MO,n.TU=wn.TU,n.WE=wn.WE,n.TH=wn.TH,n.FR=wn.FR,n.SA=wn.SA,n.SU=wn.SU,n.parseString=xk,n.optionsToString=Ck,n})();function _H(n,a,e,t,r,i){var s={},o=n.accept;function l(m,h){e.forEach(function(g){g.between(m,h,!0).forEach(function(f){s[Number(f)]=!0})})}r.forEach(function(m){var h=new td(m,i).rezonedDate();s[Number(h)]=!0}),n.accept=function(m){var h=Number(m);return isNaN(h)?o.call(this,m):!s[h]&&(l(new Date(h-1),new Date(h+1)),!s[h])?(s[h]=!0,o.call(this,m)):!0},n.method==="between"&&(l(n.args.after,n.args.before),n.accept=function(m){var h=Number(m);return s[h]?!0:(s[h]=!0,o.call(this,m))});for(var d=0;d<t.length;d++){var u=new td(t[d],i).rezonedDate();if(!n.accept(new Date(u.getTime())))break}a.forEach(function(m){Px(n,m.options)});var p=n._result;switch(Oo(p),n.method){case"all":case"between":return p;case"before":return p.length&&p[p.length-1]||null;case"after":default:return p.length&&p[0]||null}}var UH={dtstart:null,cache:!1,unfold:!1,forceset:!1,compatible:!1,tzid:null};function cX(n,a){var e=[],t=[],r=[],i=[],s=Tk(n),o=s.dtstart,l=s.tzid,d=hX(n,a.unfold);return d.forEach(function(u){var p;if(u){var m=mX(u),h=m.name,g=m.parms,f=m.value;switch(h.toUpperCase()){case"RRULE":if(g.length)throw new Error("unsupported RRULE parm: ".concat(g.join(",")));e.push(xk(u));break;case"RDATE":var k=(p=/RDATE(?:;TZID=([^:=]+))?/i.exec(u))!==null&&p!==void 0?p:[],v=k[1];v&&!l&&(l=v),t=t.concat($H(f,g));break;case"EXRULE":if(g.length)throw new Error("unsupported EXRULE parm: ".concat(g.join(",")));r.push(xk(f));break;case"EXDATE":i=i.concat($H(f,g));break;case"DTSTART":break;default:throw new Error("unsupported property: "+h)}}}),{dtstart:o,tzid:l,rrulevals:e,rdatevals:t,exrulevals:r,exdatevals:i}}function dX(n,a){var e=cX(n,a),t=e.rrulevals,r=e.rdatevals,i=e.exrulevals,s=e.exdatevals,o=e.dtstart,l=e.tzid,d=a.cache===!1;if(a.compatible&&(a.forceset=!0,a.unfold=!0),a.forceset||t.length>1||r.length||i.length||s.length){var u=new mP(d);return u.dtstart(o),u.tzid(l||void 0),t.forEach(function(m){u.rrule(new we(pP(m,o,l),d))}),r.forEach(function(m){u.rdate(m)}),i.forEach(function(m){u.exrule(new we(pP(m,o,l),d))}),s.forEach(function(m){u.exdate(m)}),a.compatible&&a.dtstart&&u.rdate(o),u}var p=t[0]||{};return new we(pP(p,p.dtstart||a.dtstart||o,p.tzid||a.tzid||l),d)}function vp(n,a){return a===void 0&&(a={}),dX(n,uX(a))}function pP(n,a,e){return Tr(Tr({},n),{dtstart:a,tzid:e})}function uX(n){var a=[],e=Object.keys(n),t=Object.keys(UH);if(e.forEach(function(r){ot(t,r)||a.push(r)}),a.length)throw new Error("Invalid options: "+a.join(", "));return Tr(Tr({},UH),n)}function pX(n){if(n.indexOf(":")===-1)return{name:"RRULE",value:n};var a=mH(n,":",1),e=a[0],t=a[1];return{name:e,value:t}}function mX(n){var a=pX(n),e=a.name,t=a.value,r=e.split(";");if(!r)throw new Error("empty property name");return{name:r[0].toUpperCase(),parms:r.slice(1),value:t}}function hX(n,a){if(a===void 0&&(a=!1),n=n&&n.trim(),!n)throw new Error("Invalid empty string");if(!a)return n.split(/\s/);for(var e=n.split(`
`),t=0;t<e.length;){var r=e[t]=e[t].replace(/\s+$/g,"");r?t>0&&r[0]===" "?(e[t-1]+=r.slice(1),e.splice(t,1)):t+=1:e.splice(t,1)}return e}function gX(n){n.forEach(function(a){if(!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(a))throw new Error("unsupported RDATE/EXDATE parm: "+a)})}function $H(n,a){return gX(a),n.split(",").map(function(e){return vk(e)})}function YH(n){var a=this;return function(e){if(e!==void 0&&(a["_".concat(n)]=e),a["_".concat(n)]!==void 0)return a["_".concat(n)];for(var t=0;t<a._rrule.length;t++){var r=a._rrule[t].origOptions[n];if(r)return r}}}var mP=(function(n){gp(a,n);function a(e){e===void 0&&(e=!1);var t=n.call(this,{},e)||this;return t.dtstart=YH.apply(t,["dtstart"]),t.tzid=YH.apply(t,["tzid"]),t._rrule=[],t._rdate=[],t._exrule=[],t._exdate=[],t}return a.prototype._iter=function(e){return _H(e,this._rrule,this._exrule,this._rdate,this._exdate,this.tzid())},a.prototype.rrule=function(e){qH(e,this._rrule)},a.prototype.exrule=function(e){qH(e,this._exrule)},a.prototype.rdate=function(e){GH(e,this._rdate)},a.prototype.exdate=function(e){GH(e,this._exdate)},a.prototype.rrules=function(){return this._rrule.map(function(e){return vp(e.toString())})},a.prototype.exrules=function(){return this._exrule.map(function(e){return vp(e.toString())})},a.prototype.rdates=function(){return this._rdate.map(function(e){return new Date(e.getTime())})},a.prototype.exdates=function(){return this._exdate.map(function(e){return new Date(e.getTime())})},a.prototype.valueOf=function(){var e=[];return!this._rrule.length&&this._dtstart&&(e=e.concat(Ck({dtstart:this._dtstart}))),this._rrule.forEach(function(t){e=e.concat(t.toString().split(`
`))}),this._exrule.forEach(function(t){e=e.concat(t.toString().split(`
`).map(function(r){return r.replace(/^RRULE:/,"EXRULE:")}).filter(function(r){return!/^DTSTART/.test(r)}))}),this._rdate.length&&e.push(KH("RDATE",this._rdate,this.tzid())),this._exdate.length&&e.push(KH("EXDATE",this._exdate,this.tzid())),e},a.prototype.toString=function(){return this.valueOf().join(`
`)},a.prototype.clone=function(){var e=new a(!!this._cache);return this._rrule.forEach(function(t){return e.rrule(t.clone())}),this._exrule.forEach(function(t){return e.exrule(t.clone())}),this._rdate.forEach(function(t){return e.rdate(new Date(t.getTime()))}),this._exdate.forEach(function(t){return e.exdate(new Date(t.getTime()))}),e},a})(we);function qH(n,a){if(!(n instanceof we))throw new TypeError(String(n)+" is not RRule instance");ot(a.map(String),String(n))||a.push(n)}function GH(n,a){if(!(n instanceof Date))throw new TypeError(String(n)+" is not Date instance");ot(a.map(Number),Number(n))||(a.push(n),Oo(a))}function KH(n,a,e){var t=!e||e.toUpperCase()==="UTC",r=t?"".concat(n,":"):"".concat(n,";TZID=").concat(e,":"),i=a.map(function(s){return hp(s.valueOf(),t)}).join(",");return"".concat(r).concat(i)}var yp=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 yr(e,r),this.writeQueue=Promise.resolve()}enqueueWrite(a){let e=this.writeQueue.catch(()=>{}).then(a);return this.writeQueue=e.then(()=>{},()=>{}),e}async updateTaskStatus(a){return this.enqueueWrite(()=>this.performUpdateTaskStatus(a))}async performUpdateTaskStatus(a){var e,t,r,i;try{let s=await Promise.resolve(this.getTaskById(a.taskId));if(!s)return{success:!1,error:"Task not found"};if(yr.isCanvasTask(s))return this.updateCanvasTask({taskId:a.taskId,updates:{status:a.status,completed:a.completed}});let o=this.vault.getAbstractFileByPath(s.filePath);if(!o)return{success:!1,error:"File not found"};let d=(await this.vault.read(o)).split(`
`);if(s.line<0||s.line>=d.length)return{success:!1,error:"Invalid line number"};let u=d[s.line],p=(((e=this.plugin.settings.taskStatuses)==null?void 0:e.completed)||"x").split("|")[0],m=a.completed===!0||a.status!==void 0&&(typeof a.status.toLowerCase=="function"&&a.status.toLowerCase()==="x"||a.status===p),h=a.status!==void 0?a.status:m?"x":" ";u=u.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${h}$2`);let g=s.status||" ",f=m&&!s.completed,k=h==="-"&&g!=="-",v=(h===">"||h==="/")&&(g===" "||g==="?");if(f&&!/(\[completion::|✅)/.test(u)){let w=(0,za.moment)().format("YYYY-MM-DD"),x=this.plugin.settings.preferMetadataFormat==="dataview"?`[completion:: ${w}]`:`\u2705 ${w}`;u=this.insertDateAtCorrectPosition(u,x,"completed")}if(k&&((t=this.plugin.settings.autoDateManager)!=null&&t.manageCancelledDate)&&!/(\[cancelled::|❌)/.test(u)){let w=(0,za.moment)().format("YYYY-MM-DD"),x=this.plugin.settings.preferMetadataFormat==="dataview"?`[cancelled:: ${w}]`:`\u274C ${w}`;u=this.insertDateAtCorrectPosition(u,x,"cancelled")}if(v&&((r=this.plugin.settings.autoDateManager)!=null&&r.manageStartDate)&&!/(\[start::|🛫|🚀)/.test(u)){let w=(0,za.moment)().format("YYYY-MM-DD"),x=this.plugin.settings.preferMetadataFormat==="dataview"?`[start:: ${w}]`:`\u{1F6EB} ${w}`;u=this.insertDateAtCorrectPosition(u,x,"start")}if(d[s.line]=u,m&&!s.completed&&((i=s.metadata)==null?void 0:i.recurrence))try{let b=u.match(/^(\s*)/),w=b?b[0]:"",T=this.createRecurringTask({...s,completed:!0,metadata:{...s.metadata,completedDate:Date.now()}},w);d.splice(s.line+1,0,T)}catch(b){console.error("WriteAPI: failed to create next recurring task from updateTaskStatus:",b)}if(le(this.app,Z.WRITE_OPERATION_START,{path:o.path,taskId:a.taskId}),await this.vault.modify(o,d.join(`
`)),le(this.app,Z.WRITE_OPERATION_COMPLETE,{path:o.path,taskId:a.taskId}),a.completed===!0&&!s.completed){let b={...s,completed:!0};this.app.workspace.trigger("task-genius:task-completed",b)}return{success:!0}}catch(s){return console.error("WriteAPI: Error updating task status:",s),{success:!1,error:String(s)}}}async updateTask(a){return this.enqueueWrite(()=>this.performUpdateTask(a))}async performUpdateTask(a){var e,t,r,i,s,o,l,d,u,p,m,h,g,f,k,v;try{let y=await Promise.resolve(this.getTaskById(a.taskId));if(!y)return{success:!1,error:"Task not found"};if(yr.isCanvasTask(y))return this.updateCanvasTask(a);if(((e=y==null?void 0:y.metadata)==null?void 0:e.source)==="file-source"||y.id.startsWith("file-source:"))return this.updateFileSourceTask(y,a.updates,a.taskId);let w=this.vault.getAbstractFileByPath(y.filePath);if(!w)return{success:!1,error:"File not found"};let x=(await this.vault.read(w)).split(`
`);if(y.line<0||y.line>=x.length)return{success:!1,error:"Invalid line number"};let C={...y,...a.updates},S=x[y.line],D=y.status||" ",E=D;if(a.updates.status!==void 0){let _=a.updates.status;E=_,S=S.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${_}$2`)}else if(a.updates.completed!==void 0){let _=a.updates.completed?"x":" ";E=_,S=S.replace(/(\s*[-*+]\s*\[)[^\]]*(\]\s*)/,`$1${_}$2`)}let R=(((t=this.plugin.settings.taskStatuses)==null?void 0:t.completed)||"x").split("|")[0],I=(E==="x"||E===R)&&D!=="x"&&D!==R,H=E==="-"&&D!=="-",U=(E===">"||E==="/")&&(D===" "||D==="?");if(I&&!((r=a.updates.metadata)!=null&&r.completedDate)&&!/(\[completion::|✅)/.test(S)){let V=(0,za.moment)().format("YYYY-MM-DD"),te=this.plugin.settings.preferMetadataFormat==="dataview"?`[completion:: ${V}]`:`\u2705 ${V}`;S=this.insertDateAtCorrectPosition(S,te,"completed")}if(H&&((i=this.plugin.settings.autoDateManager)!=null&&i.manageCancelledDate)&&!/(\[cancelled::|❌)/.test(S)){let V=(0,za.moment)().format("YYYY-MM-DD"),te=this.plugin.settings.preferMetadataFormat==="dataview"?`[cancelled:: ${V}]`:`\u274C ${V}`;S=this.insertDateAtCorrectPosition(S,te,"cancelled")}if(U&&((s=this.plugin.settings.autoDateManager)!=null&&s.manageStartDate)&&!/(\[start::|🛫|🚀)/.test(S)){let V=(0,za.moment)().format("YYYY-MM-DD"),te=this.plugin.settings.preferMetadataFormat==="dataview"?`[start:: ${V}]`:`\u{1F6EB} ${V}`;S=this.insertDateAtCorrectPosition(S,te,"start")}if(a.updates.content!==void 0&&a.updates.content!==""){let _=S.match(/^(\s*[-*+]\s*\[[^\]]*\]\s*)/);if(_){let V=_[1],K=S.substring(V.length),te=K.replace(/\[\[[^\]]*\]\]/g,Fe=>"x".repeat(Fe.length)).replace(/\[[^\]]*\]\([^\)]*\)/g,Fe=>"x".repeat(Fe.length)).replace(/`[^`]*`/g,Fe=>"x".repeat(Fe.length)),ce=Fe=>Fe.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),pe=((o=this.plugin.settings.projectTagPrefix)==null?void 0:o.dataview)||"project",Ne=((l=this.plugin.settings.contextTagPrefix)==null?void 0:l.dataview)||"context",He=["tags",ce(pe),ce(Ne),"priority","repeat","start","scheduled","due","completion","cancelled","onCompletion","dependsOn","id"].join("|"),Be="(\u{1F53A}|\u23EB|\u{1F53C}|\u{1F53D}|\u23EC|\u{1F6EB}|\u23F3|\u{1F4C5}|\u2705|\u{1F501})",We=`\\[(?:${He})\\s*::[^\\]]*\\]`,lt=rm.source,_t=ly.source,mt=`(?:${`(?:${Be}[^\\n]*)`}|${We}|${lt}|${_t})`,J=new RegExp(`(?:\\s+${mt})+$`),ue=te.match(J),Ae=ue?K.slice(K.length-(((d=ue[0])==null?void 0:d.length)||0)):"";S=`${V}${a.updates.content}${Ae}`}}else a.updates.content===""&&console.warn("[WriteAPI] Prevented clearing task content for task:",y.id);if(a.updates.metadata){let _=a.updates.metadata||{},V=Object.keys(_);if(V.length>0&&V.every(te=>te==="completedDate")){if(S=S.replace(/\s*\[completion::\s*[^\]]+\]/i,"").replace(/\s*✅\s*\d{4}-\d{2}-\d{2}(?:\s+\d{1,2}:\d{2})?/,""),_.completedDate){let te=typeof _.completedDate=="number"?(0,za.moment)(_.completedDate).format("YYYY-MM-DD"):String(_.completedDate),pe=this.plugin.settings.preferMetadataFormat==="dataview"?`[completion:: ${te}]`:`\u2705 ${te}`;S=`${S} ${pe}`}}else{let te=new Set(["tags","project","context","priority","repeat","startDate","dueDate","scheduledDate","recurrence","completedDate","onCompletion","dependsOn","id"]);if(V.some(pe=>te.has(pe))){let pe=S.match(/^(\s*[-*+]\s*\[[^\]]*\]\s*)/);if(pe){let Ne=pe[1],He=S.substring(Ne.length),Be=He.replace(/\[\[[^\]]*\]\]/g,ba=>"x".repeat(ba.length)).replace(/\[[^\]]*\]\([^\)]*\)/g,ba=>"x".repeat(ba.length)).replace(/`[^`]*`/g,ba=>"x".repeat(ba.length)),We=ba=>ba.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),lt=((u=this.plugin.settings.projectTagPrefix)==null?void 0:u.dataview)||"project",_t=((p=this.plugin.settings.contextTagPrefix)==null?void 0:p.dataview)||"context",ke=["tags",We(lt),We(_t),"priority","repeat","start","scheduled","due","completion","cancelled","onCompletion","dependsOn","id"].join("|"),mt="(\u{1F53A}|\u23EB|\u{1F53C}|\u{1F53D}|\u23EC|\u{1F6EB}|\u23F3|\u{1F4C5}|\u2705|\u{1F501})",J=`\\[(?:${ke})\\s*::[^\\]]*\\]`,ue=((m=this.plugin.settings.projectTagPrefix)==null?void 0:m.tasks)||"project",Ae=((h=this.plugin.settings.contextTagPrefix)==null?void 0:h.tasks)||"@",Fe=`#${We(ue)}/[^\\n\\r]*`,Xe=`${We(Ae)}[^\\n\\r]*`,De=rm.source,ht=ly.source,Ut=`(?:${`(?:${mt}[^\\n]*)`}|${J}|${Fe}|${Xe}|${De}|${ht})`,Et=new RegExp(`(?:\\s+${Ut})+$`),it=Be.match(Et),na=it?He.substring(0,Be.length-(((g=it[0])==null?void 0:g.length)||0)).trim():He.trim();try{let ba=((f=this.plugin.settings.projectTagPrefix)==null?void 0:f.dataview)||"project",Zn=((k=this.plugin.settings.projectTagPrefix)==null?void 0:k.tasks)||"project",Tn=new RegExp(`\\[\\s*${We(ba)}\\s*::[^\\]]*\\]`,"gi");na=na.replace(Tn,"").trim();let Nl=new RegExp(`(^|\\s)#${We(Zn)}/[^\\s#@+]+`,"g");na=na.replace(Nl,"$1"),na=na.replace(/\s{2,}/g," ").trim()}catch(ba){}let Ee={...y.metadata,...a.updates.metadata},bi=a.updates.completed!==void 0?!!a.updates.completed:!!y.completed,$t=this.generateMetadata({tags:Ee.tags,project:Ee.project,context:Ee.context,priority:Ee.priority,startDate:Ee.startDate,dueDate:Ee.dueDate,scheduledDate:Ee.scheduledDate,recurrence:Ee.recurrence,completed:bi,completedDate:Ee.completedDate,onCompletion:Ee.onCompletion,dependsOn:Ee.dependsOn,id:Ee.id});S=`${Ne}${na}${$t?` ${$t}`:""}`}}}}if(x[y.line]=S,!y.completed&&a.updates.completed===!0&&((v=y.metadata)==null?void 0:v.recurrence))try{let _=S.match(/^(\s*)/),V=_?_[0]:"",K=this.createRecurringTask({...y,...a.updates,metadata:{...y.metadata,...a.updates.metadata||{}}},V);x.splice(y.line+1,0,K),`${y.line}`}catch(_){console.error("Error creating recurring task:",_)}le(this.app,Z.WRITE_OPERATION_START,{path:w.path,taskId:a.taskId}),await this.vault.modify(w,x.join(`
`));let L={...y,...a.updates,metadata:{...y.metadata,...a.updates.metadata||{}},originalMarkdown:S};return le(this.app,Z.WRITE_OPERATION_COMPLETE,{path:w.path,taskId:a.taskId}),a.updates.completed===!0&&!y.completed&&this.app.workspace.trigger("task-genius:task-completed",L),{success:!0,task:L}}catch(y){return console.error("WriteAPI: Error updating task:",y),{success:!1,error:String(y)}}}async updateTasksSequentially(a){return this.enqueueWrite(async()=>{le(this.app,Z.BATCH_OPERATION_START,{count:a.length});let e={successCount:0,failCount:0,errors:[],totalCount:a.length};try{for(let t of a){let r=await Promise.resolve(this.getTaskById(t.taskId)),i=await this.performUpdateTask(t);i.success?e.successCount++:(e.failCount++,e.errors.push({taskId:t.taskId,taskContent:(r==null?void 0:r.content)||"",error:i.error||"Unknown error"}))}return e}finally{le(this.app,Z.BATCH_OPERATION_COMPLETE,{successCount:e.successCount,failCount:e.failCount})}})}async updateFileSourceTask(a,e,t){var h,g,f,k,v,y;let r=this.vault.getAbstractFileByPath(a.filePath);if(!r)return{success:!1,error:"File not found"};le(this.app,Z.WRITE_OPERATION_START,{path:r.path,taskId:t});let i=a.filePath,s=this.plugin.settings.fileSource,o=b=>{let T=((s==null?void 0:s.metadataMappings)||[]).find(x=>x.enabled&&x.targetKey===b&&x.sourceKey);return T?T.sourceKey:b},l=e.status!==void 0&&e.status!==a.status,d=e.completed!==void 0&&e.completed!==a.completed,u=e.metadata!==void 0,p=b=>this.formatDateForWrite(b);if(l||d||u)try{await this.app.fileManager.processFrontMatter(r,b=>{if(l&&e.status!==void 0){let w=s==null?void 0:s.statusMapping,T=e.status;w!=null&&w.enabled&&w.symbolToMetadata&&(T=w.symbolToMetadata[e.status]||e.status);let x=o("status");b[x]=T,`${x}${a.status}${T}${e.status}`}if(u&&e.metadata){let w=e.metadata;if(w.priority!==void 0){let T=o("priority");w.priority===null||w.priority===0?delete b[T]:b[T]=w.priority}if(w.dueDate!==void 0){let T=o("dueDate");if(w.dueDate){let x=p(w.dueDate);x&&(b[T]=x)}else delete b[T]}if(w.startDate!==void 0){let T=o("startDate");if(w.startDate){let x=p(w.startDate);x&&(b[T]=x)}else delete b[T]}if(w.scheduledDate!==void 0){let T=o("scheduledDate");if(w.scheduledDate){let x=p(w.scheduledDate);x&&(b[T]=x)}else delete b[T]}if(w.completedDate!==void 0){let T=o("completedDate");if(w.completedDate){let x=p(w.completedDate);x&&(b[T]=x)}else delete b[T]}if(w.project!==void 0){let T=o("project");w.project?b[T]=w.project:delete b[T]}if(w.context!==void 0){let T=o("context");w.context?b[T]=w.context:delete b[T]}if(w.tags!==void 0){let T=o("tags");Array.isArray(w.tags)&&w.tags.length>0?b[T]=w.tags:delete b[T]}if(w.area!==void 0){let T=o("area");w.area?b[T]=w.area:delete b[T]}if(w.recurrence!==void 0){let T=o("recurrence");w.recurrence?b[T]=w.recurrence:delete b[T]}}}),`${r.path}`}catch(b){return console.error("WriteAPI: Error updating file-source task frontmatter:",b),{success:!1,error:String(b)}}if(e.content!==void 0&&e.content!==a.content)try{let b=((h=this.plugin.settings.fileSource)==null?void 0:h.fileTaskProperties)||{},w=b.contentSource||"filename",T=b.preferFrontmatterTitle,x=b.customContentField;switch(w){case"title":{await this.app.fileManager.processFrontMatter(r,S=>{S.title=e.content}),e.content;let C=this.app.metadataCache.getFileCache(r);(g=C==null?void 0:C.frontmatter)==null||g.title;break}case"h1":{await this.updateH1Heading(r,e.content);break}case"custom":{if(x){await this.app.fileManager.processFrontMatter(r,S=>{S[x]=e.content}),e.content;let C=this.app.metadataCache.getFileCache(r);(f=C==null?void 0:C.frontmatter)==null||f[x]}else if(T){await this.app.fileManager.processFrontMatter(r,S=>{S.title=e.content}),e.content;let C=this.app.metadataCache.getFileCache(r);(k=C==null?void 0:C.frontmatter)==null||k.title}else i=await this.renameFile(r,e.content);break}case"filename":default:{if(T){await this.app.fileManager.processFrontMatter(r,S=>{S.title=e.content}),e.content;let C=this.app.metadataCache.getFileCache(r);(v=C==null?void 0:C.frontmatter)==null||v.title}else i=await this.renameFile(r,e.content);break}}le(this.app,Z.WRITE_OPERATION_COMPLETE,{path:i,taskId:t})}catch(b){return console.error("WriteAPI: Error updating file-source task content:",b),{success:!1,error:String(b)}}let m={...a,...e,filePath:i,id:a.id.startsWith("file-source:")&&i!==a.filePath?`file-source:${i}`:a.id,originalMarkdown:`[${(y=e.content)!=null?y:a.content}](${i})`};return le(this.app,Z.FILE_TASK_UPDATED,{task:m}),{success:!0,task:m}}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 d=this.app.workspace.getActiveFile();if(d)e=d.path;else return{success:!1,error:"No filePath provided and no active file"}}let t=this.vault.getAbstractFileByPath(e);if(!t)return{success:!1,error:"File not found"};let r=await this.vault.read(t),s=`- ${a.completed?"[x]":"[ ]"} ${a.content}`,o=this.generateMetadata({tags:a.tags,project:a.project,context:a.context,priority:a.priority,startDate:a.startDate?(0,za.moment)(a.startDate).valueOf():void 0,dueDate:a.dueDate?(0,za.moment)(a.dueDate).valueOf():void 0,completed:a.completed,completedDate:a.completedDate?(0,za.moment)(a.completedDate).valueOf():void 0});o&&(s+=` ${o}`);let l=r;return a.parent?l=this.insertSubtask(r,a.parent,s):l=r?`${r}
${s}`:s,le(this.app,Z.WRITE_OPERATION_START,{path:t.path}),await this.vault.modify(t,l),le(this.app,Z.WRITE_OPERATION_COMPLETE,{path:t.path}),{success:!0}}catch(e){return console.error("WriteAPI: Error creating task:",e),{success:!1,error:String(e)}}}async deleteTask(a){try{let e=await Promise.resolve(this.getTaskById(a.taskId));if(!e)return{success:!1,error:"Task not found"};if(yr.isCanvasTask(e))return this.deleteCanvasTask(a);let t=this.vault.getAbstractFileByPath(e.filePath);if(!t)return{success:!1,error:"File not found"};let i=(await this.vault.read(t)).split(`
`),s=[a.taskId];if(a.deleteChildren){let d=await this.getDescendantTaskIds(a.taskId);s.push(...d)}let o=new Set;for(let d of s){let u=await Promise.resolve(this.getTaskById(d));u&&u.filePath===t.path&&o.add(u.line)}let l=Array.from(o).sort((d,u)=>u-d);for(let d of l)i.splice(d,1);return le(this.app,Z.WRITE_OPERATION_START,{path:t.path,taskId:a.taskId}),await this.vault.modify(t,i.join(`
`)),le(this.app,Z.WRITE_OPERATION_COMPLETE,{path:t.path,taskId:a.taskId}),le(this.app,Z.TASK_DELETED,{taskId:a.taskId,filePath:e.filePath,deletedTaskIds:s,mode:a.deleteChildren?"subtree":"single"}),{success:!0}}catch(e){return console.error("WriteAPI: Error deleting task:",e),{success:!1,error:String(e)}}}async batchUpdateText(a){var e,t,r;try{let i=0,s=new Map;for(let o of a.taskIds){let l=await Promise.resolve(this.getTaskById(o));if(!l||yr.isCanvasTask(l))continue;let d=l.content.replace(a.findText,a.replaceText);d!==l.content&&(s.has(l.filePath)||s.set(l.filePath,new Map),s.get(l.filePath).set(l.line,d),i++)}for(let[o,l]of s){let d=this.vault.getAbstractFileByPath(o);if(!d)continue;let p=(await this.vault.read(d)).split(`
`);for(let[m,h]of l)if(m>=0&&m<p.length){let g=p[m],f=g.match(/^(\s*[-*+]\s*\[[^\]]*\]\s*)/);if(f){let k=f[1],v=g.substring(k.length),y=v.replace(/\[\[[^\]]*\]\]/g,L=>"x".repeat(L.length)).replace(/\[[^\]]*\]\([^\)]*\)/g,L=>"x".repeat(L.length)).replace(/`[^`]*`/g,L=>"x".repeat(L.length)),b=L=>L.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),w=((e=this.plugin.settings.projectTagPrefix)==null?void 0:e.dataview)||"project",T=((t=this.plugin.settings.contextTagPrefix)==null?void 0:t.dataview)||"context",x=["tags",b(w),b(T),"priority","repeat","start","scheduled","due","completion","cancelled","onCompletion","dependsOn","id"].join("|"),C="(\u{1F53A}|\u23EB|\u{1F53C}|\u{1F53D}|\u23EC|\u{1F6EB}|\u23F3|\u{1F4C5}|\u2705|\u{1F501})",S=`\\[(?:${x})\\s*::[^\\]]*\\]`,D=rm.source,E=ly.source,I=`(?:${`(?:${C}[^\\n]*)`}|${S}|${D}|${E})`,H=new RegExp(`(?:\\s+${I})+$`),U=y.match(H),q=U?v.slice(v.length-(((r=U[0])==null?void 0:r.length)||0)):"";p[m]=`${k}${h}${q}`}}le(this.app,Z.WRITE_OPERATION_START,{path:d.path}),await this.vault.modify(d,p.join(`
`)),le(this.app,Z.WRITE_OPERATION_COMPLETE,{path:d.path})}return{success:!0,updatedCount:i}}catch(i){return console.error("WriteAPI: Error in batch update text:",i),{success:!1,updatedCount:0,error:String(i)}}}async batchCreateSubtasks(a){try{let e=await Promise.resolve(this.getTaskById(a.parentTaskId));if(!e)return{success:!1,createdCount:0,error:"Parent task not found"};if(yr.isCanvasTask(e))return{success:!1,createdCount:0,error:"Canvas task subtasks not supported yet"};let t=this.vault.getAbstractFileByPath(e.filePath);if(!t)return{success:!1,createdCount:0,error:"File not found"};let i=(await this.vault.read(t)).split(`
`),o=i[e.line].match(/^(\s*)/),l=o?o[0]:"",d=l+" ",u=[];for(let h of a.subtasks){let g=`${d}- [ ] ${h.content}`,f=this.generateMetadata({priority:h.priority,dueDate:h.dueDate?(0,za.moment)(h.dueDate).valueOf():void 0});f&&(g+=` ${f}`),u.push(g)}let p=e.line+1,m=l.length;for(;p<i.length;){let h=i[p],g=h.match(/^(\s*)/);if((g?g[0].length:0)<=m&&h.trim()!=="")break;p++}return i.splice(p,0,...u),le(this.app,Z.WRITE_OPERATION_START,{path:t.path,taskId:a.parentTaskId}),await this.vault.modify(t,i.join(`
`)),le(this.app,Z.WRITE_OPERATION_COMPLETE,{path:t.path,taskId:a.parentTaskId}),{success:!0,createdCount:u.length}}catch(e){return console.error("WriteAPI: Error creating subtasks:",e),{success:!1,createdCount:0,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=[],i=(s=>{let o=Date.parse(s);if(!isNaN(o))return o;let l=s.match(/^\+(\d+)([dwmy])$/i);if(!l)return null;let d=parseInt(l[1],10),u=l[2].toLowerCase(),p=new Date;switch(u){case"d":p.setDate(p.getDate()+d);break;case"w":p.setDate(p.getDate()+d*7);break;case"m":p.setMonth(p.getMonth()+d);break;case"y":p.setFullYear(p.getFullYear()+d);break}return p.getTime()})(a.newDate);if(i===null)return{updated:[],failed:a.taskIds.map(s=>({id:s,error:"Invalid date format"}))};for(let s of a.taskIds){let o=await this.updateTask({taskId:s,updates:{metadata:{dueDate:i}}});o.success?e.push(s):t.push({id:s,error:o.error||"Unknown error"})}return{updated:e,failed:t}}async getDescendantTaskIds(a){let e=[];return await Promise.resolve(this.getTaskById(a)),e}findTaskLineById(a,e){return null}getIndent(a){let e=a.match(/^(\s*)/);return e?e[0]:""}async addTaskToDailyNote(a){var e,t,r,i;try{let s;if((0,Bs.appHasDailyNotesPluginLoaded)()){let g=(0,Bs.getAllDailyNotes)(),f=(0,za.moment)(),k=(0,Bs.getDailyNote)(f,g);k||(k=await(0,Bs.createDailyNote)(f)),s=k}else{let g=this.plugin.settings.quickCapture,f=((e=g==null?void 0:g.dailyNoteSettings)==null?void 0:e.folder)||"",k=((t=g==null?void 0:g.dailyNoteSettings)==null?void 0:t.format)||"YYYY-MM-DD";if(!f)try{f=(0,Bs.getDailyNoteSettings)().folder||""}catch(T){}let v=(0,za.moment)().format(k),y=f?`${f}/${v}.md`:`${v}.md`,b=y.split("/");if(b.length>1){let T=b.slice(0,-1).join("/");try{await this.vault.createFolder(T)}catch(x){}}let w=this.vault.getAbstractFileByPath(y);w||(w=await this.vault.create(y,"")),s=w}let d=`- ${a.completed?"[x]":"[ ]"} ${a.content}`,u=this.generateMetadata({tags:a.tags,project:a.project,context:a.context,priority:a.priority,startDate:a.startDate?(0,za.moment)(a.startDate).valueOf():void 0,dueDate:a.dueDate?(0,za.moment)(a.dueDate).valueOf():void 0,completed:a.completed,completedDate:a.completedDate?(0,za.moment)(a.completedDate).valueOf():void 0});u&&(d+=` ${u}`);let p=s,m=await this.vault.read(p),h=m;if(a.parent)h=this.insertSubtask(m,a.parent,d);else{let g=a.heading||((i=(r=this.plugin.settings.quickCapture)==null?void 0:r.targetHeading)==null?void 0:i.trim());if(g){let f=new RegExp(`^#{1,6}\\s+${g.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`,"m");f.test(m)?h=m.replace(f,`$&
${d}`):h=`${m}${m.endsWith(`
`)?"":`
`}
## ${g}
${d}`}else h=m?`${m}
${d}`:d}return le(this.app,Z.WRITE_OPERATION_START,{path:p.path}),await this.vault.modify(p,h),le(this.app,Z.WRITE_OPERATION_COMPLETE,{path:p.path}),{success:!0}}catch(s){return console.error("WriteAPI: Error creating task in daily note:",s),{success:!1,error:String(s)}}}async createTaskInDailyNote(a){return this.addTaskToDailyNote({content:a.content,parent:a.parent,tags:a.tags,project:a.project,context:a.context,priority:a.priority,startDate:a.startDate,dueDate:a.dueDate,heading:a.heading,completed:!!a.completed,completedDate:a.completedDate})}async addProjectTaskToQuickCapture(a){var e,t,r;try{if(!this.plugin.settings.quickCapture)throw new Error("Quick Capture settings not found");let o=`- ${a.completed?"[x]":"[ ]"} ${a.content}`,l=this.generateMetadata({tags:a.tags,project:a.project,context:a.context,priority:a.priority,startDate:a.startDate?(0,za.moment)(a.startDate).valueOf():void 0,dueDate:a.dueDate?(0,za.moment)(a.dueDate).valueOf():void 0,completed:a.completed,completedDate:a.completedDate?(0,za.moment)(a.completedDate).valueOf():void 0});l&&(o+=` ${l}`),await pl(this.app,o,{targetHeading:a.heading,targetFile:(e=this.plugin.settings.quickCapture)==null?void 0:e.targetFile,targetType:((t=this.plugin.settings.quickCapture)==null?void 0:t.targetType)||"fixed",appendToFile:"append"});let d=((r=this.plugin.settings.quickCapture)==null?void 0:r.targetFile)||"quick-capture.md";return le(this.app,Z.WRITE_OPERATION_START,{path:d}),le(this.app,Z.WRITE_OPERATION_COMPLETE,{path:d}),{filePath:d,success:!0}}catch(i){throw console.error("WriteAPI: Error adding project task to quick capture:",i),i}}formatDateForWrite(a){return hs(a,{includeSeconds:!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(d=>d.startsWith("#")?d:`#${d}`))),a.project)if(t){let d=((i=this.plugin.settings.projectTagPrefix)==null?void 0:i.dataview)||"project";e.push(`[${d}:: ${a.project}]`)}else{let d=((s=this.plugin.settings.projectTagPrefix)==null?void 0:s.tasks)||"project",u=String(a.project).trim().replace(/\s+/g,"-");e.push(`#${d}/${u}`)}if(a.context)if(t){let d=((o=this.plugin.settings.contextTagPrefix)==null?void 0:o.dataview)||"context";e.push(`[${d}:: ${a.context}]`)}else{let d=((l=this.plugin.settings.contextTagPrefix)==null?void 0:l.tasks)||"@",u=String(a.context).trim().replace(/\s+/g,"-");e.push(`${d}${u}`)}if(typeof a.priority=="number"&&a.priority>=1&&a.priority<=5)if(t){let d;switch(a.priority){case 5:d="highest";break;case 4:d="high";break;case 3:d="medium";break;case 2:d="low";break;case 1:d="lowest";break;default:d=String(a.priority)}e.push(`[priority:: ${d}]`)}else{let d="";switch(a.priority){case 5:d="\u{1F53A}";break;case 4:d="\u23EB";break;case 3:d="\u{1F53C}";break;case 2:d="\u{1F53D}";break;case 1:d="\u23EC";break}d&&e.push(d)}if(a.recurrence&&e.push(t?`[repeat:: ${a.recurrence}]`:`\u{1F501} ${a.recurrence}`),a.startDate){let d=this.formatDateForWrite(a.startDate);d&&e.push(t?`[start:: ${d}]`:`\u{1F6EB} ${d}`)}if(a.scheduledDate){let d=this.formatDateForWrite(a.scheduledDate);d&&e.push(t?`[scheduled:: ${d}]`:`\u23F3 ${d}`)}if(a.dueDate){let d=this.formatDateForWrite(a.dueDate);d&&e.push(t?`[due:: ${d}]`:`\u{1F4C5} ${d}`)}if(a.completed&&a.completedDate){let d=this.formatDateForWrite(a.completedDate);d&&e.push(t?`[completion:: ${d}]`:`\u2705 ${d}`)}if(a.onCompletion&&e.push(t?`[onCompletion:: ${a.onCompletion}]`:`\u{1F3C1} ${a.onCompletion}`),a.dependsOn&&(!Array.isArray(a.dependsOn)||a.dependsOn.length>0)){let d=Array.isArray(a.dependsOn)?a.dependsOn.join(", "):a.dependsOn;e.push(t?`[dependsOn:: ${d}]`:`\u26D4 ${d}`)}return a.id&&e.push(t?`[id:: ${a.id}]`:`\u{1F194} ${a.id}`),e.join(" ")}insertSubtask(a,e,t){let r=a.split(`
`),i=this.findTaskLineById(r,e);if(i){let s=this.getIndent(r[i.line]),l=`${s+" "}${t}`,d=i.line+1,u=s.length;for(;d<r.length;){let p=r[d];if(this.getIndent(p).length<=u&&p.trim()!=="")break;d++}return r.splice(d,0,l),r.join(`
`)}return a?`${a}
${t}`:t}parseSimpleRecurrence(a){let e=a.match(/(\d+)\s*([dwmy])/i);if(e)return{interval:parseInt(e[1]),unit:e[2].toLowerCase()};let t=a.match(/every\s+(\d+)?\s*(day|week|month|year)s?/i);return t?{interval:t[1]?parseInt(t[1]):1,unit:t[2].toLowerCase().charAt(0)}:{interval:1,unit:"d"}}addInterval(a,e,t){let r=e;switch(t){case"d":a.setDate(a.getDate()+r);break;case"w":a.setDate(a.getDate()+r*7);break;case"m":a.setMonth(a.getMonth()+r);break;case"y":a.setFullYear(a.getFullYear()+r);break}return a.setHours(0,0,0,0),a.getTime()}async updateCanvasTask(a){try{let e=await Promise.resolve(this.getTaskById(a.taskId));if(!e)return{success:!1,error:"Task not found"};if(!yr.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?(le(this.app,Z.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(!yr.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&&le(this.app,Z.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?yr.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?yr.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 yr.isCanvasTask(a)}insertDateAtCorrectPosition(a,e,t){var w,T,x;let r=/\s*(\^[a-zA-Z0-9-]+)$/,i=a.match(r);if(i&&i.index!==void 0){let C=i.index;return a.slice(0,C)+" "+e+a.slice(C)}if(t==="completed")return a+" "+e;let s=a.replace(/\[\[[^\]]*\]\]/g,C=>"x".repeat(C.length)).replace(/\[[^\]]*\]\([^\)]*\)/g,C=>"x".repeat(C.length)).replace(/`[^`]*`/g,C=>"x".repeat(C.length)),o=C=>C.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),l=((w=this.plugin.settings.projectTagPrefix)==null?void 0:w.dataview)||"project",d=((T=this.plugin.settings.contextTagPrefix)==null?void 0:T.dataview)||"context",u=["tags",o(l),o(d),"priority","repeat","start","scheduled","due","completion","cancelled","onCompletion","dependsOn","id"].join("|"),p="(\u{1F53A}|\u23EB|\u{1F53C}|\u{1F53D}|\u23EC|\u{1F6EB}|\u23F3|\u{1F4C5}|\u2705|\u{1F501})",m=`\\[(?:${u})\\s*::[^\\]]*\\]`,v=`(?:${`(?:${p}[^\\n]*)`}|${m}|#[A-Za-z][\\w/-]*|@[A-Za-z][\\w/-]*|\\+[A-Za-z][\\w/-]*)`,y=new RegExp(`(?:\\s+${v})+$`),b=s.match(y);if(b){let C=a.length-(((x=b[0])==null?void 0:x.length)||0);return a.slice(0,C)+" "+e+a.slice(C)}return a+" "+e}createRecurringTask(a,e){let t=this.calculateNextDueDate(a),r={...a};r.completed=!1,r.metadata.completedDate=void 0;let i=this.plugin.settings.recurrenceDateBase||"due";i==="scheduled"?(r.metadata.scheduledDate=t,a.metadata.dueDate||(r.metadata.dueDate=void 0)):i==="due"?(r.metadata.dueDate=t,a.metadata.scheduledDate||(r.metadata.scheduledDate=void 0)):a.metadata.dueDate?r.metadata.dueDate=t:a.metadata.scheduledDate?r.metadata.scheduledDate=t:r.metadata.dueDate=t;let s="- ";if(a.originalMarkdown){let d=a.originalMarkdown.match(/^(\s*)([*\-+]|\d+\.)\s+\[/);if(d&&d[2]&&(s=d[2]+" ",/^\d+\.$/.test(d[2]))){let u=d[2].replace(/\.$/,"");s=parseInt(u)+1+". "}}let o=`${e}${s}[ ] ${a.content}`,l=this.generateMetadata({tags:r.metadata.tags,project:r.metadata.project,context:r.metadata.context,priority:r.metadata.priority,startDate:r.metadata.startDate,dueDate:r.metadata.dueDate,scheduledDate:r.metadata.scheduledDate,recurrence:r.metadata.recurrence,onCompletion:r.metadata.onCompletion,dependsOn:r.metadata.dependsOn,id:r.metadata.id});return l&&(o+=` ${l}`),o}calculateNextDueDate(a){var r;if(!((r=a.metadata)!=null&&r.recurrence))return;let e,t=this.plugin.settings.recurrenceDateBase||"due";t==="current"?e=new Date:t==="scheduled"&&a.metadata.scheduledDate?e=new Date(a.metadata.scheduledDate):t==="due"&&a.metadata.dueDate?e=new Date(a.metadata.dueDate):e=new Date,e.setHours(0,0,0,0);try{try{let h=vp(a.metadata.recurrence,{dtstart:e}),g=new Date,f=new Date(g);f.setHours(0,0,0,0);let k=new Date(Math.max(e.getTime(),f.getTime())+1e3),v=h.after(k);if(v){if(v.setHours(0,0,0,0),v.getTime()>f.getTime()){let b=v.getFullYear(),w=v.getMonth(),T=v.getDate();return Date.UTC(b,w,T,12,0,0)}let y=h.after(new Date(f.getTime()+864e5));if(y){y.setHours(0,0,0,0);let b=y.getFullYear(),w=y.getMonth(),T=y.getDate();return Date.UTC(b,w,T,12,0,0)}}}catch(h){`${a.metadata.recurrence}`}let i=a.metadata.recurrence.trim().toLowerCase(),s=new Date,o=new Date(s);if(o.setHours(0,0,0,0),i.startsWith("every")){let h=i.split(" ");if(h.length>=2){let g=1,f=h[1];h.length>=3&&!isNaN(parseInt(h[1]))&&(g=parseInt(h[1]),f=h[2]),f.endsWith("s")&&(f=f.substring(0,f.length-1));let k=new Date(e),v=e.getDate(),y=()=>{switch(f){case"day":k.setDate(k.getDate()+g);break;case"week":k.setDate(k.getDate()+g*7);break;case"month":{k.setMonth(k.getMonth()+g),k.getDate()!==v&&k.setDate(0);break}case"year":k.setFullYear(k.getFullYear()+g);break;default:k.setDate(k.getDate()+g);break}};for(y();k.getTime()<=o.getTime();)y();k.setHours(0,0,0,0);let b=k.getFullYear(),w=k.getMonth(),T=k.getDate();return Date.UTC(b,w,T,12,0,0)}}let l=i.match(/^(\d+)([dwmy])$/);if(l){let h=parseInt(l[1]),g=l[2],f=new Date(e),k=e.getDate(),v=()=>{switch(g){case"d":f.setDate(f.getDate()+h);break;case"w":f.setDate(f.getDate()+h*7);break;case"m":f.setMonth(f.getMonth()+h),f.getDate()!==k&&f.setDate(0);break;case"y":f.setFullYear(f.getFullYear()+h);break}};for(v();f.getTime()<=o.getTime();)v();f.setHours(0,0,0,0);let y=f.getFullYear(),b=f.getMonth(),w=f.getDate();return Date.UTC(y,b,w,12,0,0)}let d=new Date(o);d.setDate(d.getDate()+1);let u=d.getFullYear(),p=d.getMonth(),m=d.getDate();return Date.UTC(u,p,m,12,0,0)}catch(i){console.error("Error calculating next due date:",i);let s=new Date;s.setDate(s.getDate()+1),s.setHours(0,0,0,0);let o=s.getFullYear(),l=s.getMonth(),d=s.getDate();return Date.UTC(o,l,d,12,0,0)}}};var fX=require("http"),kX=require("url"),vX=new Set(["_subtaskInheritanceRules","_computed","_internal","useAsDateType","heading","dependsOn"]);function gP(n){if(n==null||typeof n!="object")return n;if(Array.isArray(n))return n.map(e=>gP(e));let a={};for(let e of Object.keys(n)){if(vX.has(e))continue;let t=n[e];typeof t=="object"&&t!==null?a[e]=gP(t):a[e]=t}return a}function hP(n,a){if(!n||typeof n!="object")return n;let e={};for(let t of a){let r=t.split("."),i=n,s=e;for(let o=0;o<r.length;o++){let l=r[o];if(i==null||!(l in i))break;o===r.length-1?s[l]=i[l]:(s[l]||(s[l]={}),s=s[l],i=i[l])}}return e}function yX(n,a,e=!0){let t=n;return a&&a.length>0&&(n&&Array.isArray(n.tasks)?t={...n,tasks:n.tasks.map(r=>hP(r,a))}:Array.isArray(n)?t=n.map(r=>hP(r,a)):t=hP(n,a)),e&&(t=gP(t)),t}var Ix=class{constructor(a,e){this.plugin=a;this.config=e;this.isRunning=!1;this.requestCount=0;this.sessions=new Map;this.logs=[];this.MAX_LOGS=1e3;this.authMiddleware=new vo(e.authToken),this.bridgeReady=this.initializeTaskBridge()}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"}}truncateForLog(a,e=500){let t=JSON.stringify(a);return t.length<=e?a:Array.isArray(a)&&a.length>0?{_truncated:!0,_type:"array",_count:a.length,_sample:a.slice(0,2)}:{_truncated:!0,_preview:t.substring(0,e)+"..."}}addLog(a){this.logs.unshift(a),this.logs.length>this.MAX_LOGS&&(this.logs=this.logs.slice(0,this.MAX_LOGS))}getLogs(){return[...this.logs]}clearLogs(){this.logs=[]}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}]}]}async initializeTaskBridge(){var a,e,t;try{let r=(e=(a=this.plugin.dataflowOrchestrator)==null?void 0:a.getQueryAPI())!=null?e:new Gu(this.plugin.app,this.plugin.app.vault,this.plugin.app.metadataCache);this.plugin.dataflowOrchestrator||(await r.initialize(),typeof r.ensureCache=="function"&&await r.ensureCache());let i=(t=this.plugin.writeAPI)!=null?t:new yp(this.plugin.app,this.plugin.app.vault,this.plugin.app.metadataCache,this.plugin,async s=>{let o=await r.getRepository().getTaskById(s);return o!=null?o:null});this.taskBridge=new xx(this.plugin,r,i)}catch(r){throw console.error("MCP Server: Failed to initialize DataflowBridge",r),r}}async ensureBridgeReady(){if(!this.taskBridge&&(await this.bridgeReady,!this.taskBridge))throw new Error("Dataflow bridge failed to initialize")}async requireTaskBridge(){return await this.ensureBridgeReady(),this.taskBridge}getResources(){return[]}getTools(){return[{name:"mcp_list_tools",title:"List Tools (Summary)",description:"List all available tools with brief descriptions. Use this to discover tools without fetching full schemas.",inputSchema:{type:"object",properties:{category:{type:"string",enum:["query","write","batch","meta","all"],description:"Filter by category: query (read operations), write (modifications), batch (bulk operations), meta (tool discovery), all (default)"}}}},{name:"mcp_get_tool_schema",title:"Get Tool Schema",description:"Get the detailed input schema for a specific tool. Use after mcp_list_tools to get parameter details.",inputSchema:{type:"object",properties:{toolName:{type:"string",description:"The exact name of the tool"}},required:["toolName"]}},{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"},fields:{type:"array",items:{type:"string"},description:"Only return these fields (e.g., ['id', 'content', 'metadata.dueDate'])"}},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"},fields:{type:"array",items:{type:"string"},description:"Only return these fields (e.g., ['id', 'content', 'metadata.dueDate'])"}},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"]}}},fields:{type:"array",items:{type:"string"},description:"Only return these fields to reduce token usage (e.g., ['id', 'content', 'completed', 'metadata.priority']). Supports dot notation for nested fields."}}}},{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"},fields:{type:"array",items:{type:"string"},description:"Only return these fields (e.g., ['id', 'content', 'completed'])"}},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"},fields:{type:"array",items:{type:"string"},description:"Only return these fields (e.g., ['id', 'content', 'completed'])"}},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"},fields:{type:"array",items:{type:"string"},description:"Only return these fields (e.g., ['id', 'content', 'metadata.priority'])"}},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"},fields:{type:"array",items:{type:"string"},description:"Only return these fields (e.g., ['id', 'content', 'metadata.dueDate'])"}}}},{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"},fields:{type:"array",items:{type:"string"},description:"Only return these fields (e.g., ['id', 'content', 'metadata.startDate'])"}}}},{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"]}},fields:{type:"array",items:{type:"string"},description:"Only return these fields (e.g., ['id', 'content', 'metadata.tags'])"}},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,d=`Search for tasks matching: "${s}"`;o&&(d+=` in project "${o}"`),l&&(d+=` with priority ${l}`),t.push({role:"user",content:{type:"text",text:`${d}. 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}getToolCategory(a){return a.startsWith("mcp_")?"meta":a.startsWith("batch_")?"batch":a.startsWith("query_")||a.startsWith("search_")||a.startsWith("list_")?"query":"write"}async executeTool(a,e,t){let r=Date.now(),i,s;try{switch(a){case"mcp_list_tools":{let u=this.getTools(),p=e.category||"all",m=u;p!=="all"&&(m=u.filter(h=>this.getToolCategory(h.name)===p)),i=m.map(h=>({name:h.name,title:h.title,description:h.description,category:this.getToolCategory(h.name)}));break}case"mcp_get_tool_schema":{let u=this.getTools().find(p=>p.name===e.toolName);if(!u)throw new Error(`Tool '${e.toolName}' not found`);i=u;break}default:{let u=await this.requireTaskBridge();switch(a){case"query_tasks":i=await u.queryTasks(e);break;case"update_task":i=await u.updateTask(e);break;case"delete_task":i=await u.deleteTask(e);break;case"create_task":i=await u.createTask(e);break;case"create_task_in_daily_note":i=await u.createTaskInDailyNote(e);break;case"query_project_tasks":i=await u.queryProjectTasks(e.project);break;case"query_context_tasks":i=await u.queryContextTasks(e.context);break;case"query_by_priority":i=await u.queryByPriority(e.priority,e.limit);break;case"query_by_due_date":i=await u.queryByDate({dateType:"due",from:e.from,to:e.to,limit:e.limit});break;case"query_by_start_date":i=await u.queryByDate({dateType:"start",from:e.from,to:e.to,limit:e.limit});break;case"batch_update_text":i=await u.batchUpdateText(e);break;case"batch_create_subtasks":i=await u.batchCreateSubtasks(e);break;case"search_tasks":i=await u.searchTasks(e);break;case"batch_create_tasks":i=await u.batchCreateTasks(e);break;case"add_project_quick_capture":i=await u.addProjectTaskToQuickCapture(e);break;case"update_task_status":i=await u.updateTaskStatus(e);break;case"batch_update_task_status":i=await u.batchUpdateTaskStatus(e);break;case"postpone_tasks":i=await u.postponeTasks(e);break;case"list_all_metadata":i=u.listAllTagsProjectsContexts();break;case"list_tasks_for_period":i=await u.listTasksForPeriod(e);break;case"list_tasks_in_range":typeof u.listTasksInRange=="function"?i=await u.listTasksInRange(e):i={error:"Not implemented in DataflowBridge"};break;default:throw new Error(`Tool not found: ${a}`)}break}}let o=e.fields&&Array.isArray(e.fields)&&e.fields.length>0,l=e.raw!==!0;(o||l)&&(i=yX(i,o?e.fields:[],l));let d=Date.now()-r;return this.addLog({timestamp:new Date,sessionId:t,method:"tools/call",toolName:a,arguments:e,result:this.truncateForLog(i),duration:d,truncated:JSON.stringify(i).length>500}),{content:[{type:"text",text:JSON.stringify(i)}]}}catch(o){s=o.message;let l=Date.now()-r;if(this.addLog({timestamp:new Date,sessionId:t,method:"tools/call",toolName:a,arguments:e,result:null,error:s,duration:l}),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,d=this.getPrompts().find(m=>m.name===o);return d?{jsonrpc:"2.0",id:i,result:{...d,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,e);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 await this.ensureBridgeReady(),this.httpServer=fX.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=kX.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"]||"",d=this.authMiddleware.getClientAppId(a),u=l||d||"";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":d?"authorization":"none"}}}));return}this.requestCount++;let p=a.headers["mcp-session-id"];a.setEncoding("utf8");let m="";a.on("data",h=>{m+=h}),a.on("end",async()=>{m.includes("content")&&m.substring(0,300);let h;try{h=JSON.parse(m)}catch(g){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(h.method!=="initialize"){if(!p){console.warn("Missing session ID for method:",h.method),e.statusCode=200,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify({jsonrpc:"2.0",id:h.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:h.id,error:{code:-32603,message:"Invalid or expired session"}}));return}}this.config.logLevel;let g=await this.handleMcpRequest(h,p);this.config.logLevel,g._sessionId&&(e.setHeader("Mcp-Session-Id",g._sessionId),delete g._sessionId),e.statusCode=200,e.setHeader("Content-Type","application/json"),e.end(JSON.stringify(g))}catch(g){console.error("MCP request error:",g),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 Ax=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:vo.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(){Vs.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 Vs.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 Ix(this.plugin,this.config),await this.server.start(),this.autoRestartAttempts=0;let e=this.server.getStatus();new Vs.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 Vs.Notice(`Port ${this.config.port} on ${this.config.host} is already in use. Please change the port in settings.`);return}new Vs.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 Vs.Notice("MCP Server stopped")}catch(a){console.error("Failed to stop MCP Server:",a),new Vs.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 Vs.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=vo.generateToken();return this.config.authToken=a,this.server&&this.server.updateConfig({authToken:a}),this.saveConfig(),a}getServer(){return this.server}async cleanup(){await this.stop()}};var XH=require("obsidian"),JH=new WeakMap,QH=(n,a)=>{n&&JH.set(n,!!a)},bX=n=>!!(n&&JH.get(n)),ZH=new Set(["tg-left-sidebar","tg-right-detail","tg-timeline-sidebar-view"]);function e3(...n){for(let a of n)a&&ZH.add(a)}function wX(n){var a,e;try{let t=(e=(a=n==null?void 0:n.view)==null?void 0:a.getViewType)==null?void 0:e.call(a);return typeof t=="string"&&ZH.has(t)}catch(t){return!1}}var TX="task-genius/workspace-dnd:onDragLeaf",xX="task-genius/workspace-dnd:getDropLocation";function t3(n){let a=sm(XH.Workspace.prototype,{onDragLeaf(e){return W0(TX,e,function(t,r){var o,l;let i=wX(r);if(i&&QH(this,!0),i){let d=(l=(o=r==null?void 0:r.view)==null?void 0:o.getViewType)==null?void 0:l.call(o);console.debug("[Task Genius] onDragLeaf(restricted)",d)}else console.debug("[Task Genius] onDragLeaf");let s=this;if(i){let d=()=>{QH(s,!1),window.removeEventListener("dragend",d,!0),window.removeEventListener("drop",d,!0)};window.addEventListener("dragend",d,!0),window.addEventListener("drop",d,!0)}return e&&e.apply(this,[t,r])})},getDropLocation(e){return W0(xX,e,function(...t){let r=e&&e.apply(this,t);try{if(bX(this)&&r){let i=typeof(r==null?void 0:r.getRoot)=="function"?r.getRoot():void 0;if(i&&i===this.rootSplit&&r!==this.leftSplit&&r!==this.rightSplit)return console.debug("[Task Genius] Blocked center drop location for restricted leaf"),null}}catch(i){console.warn("[Task Genius] getDropLocation patch error",i)}return r})}});n.register(a)}function Sk(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]\])/,d=t.match(l),u=n.cm;if(d)u.dispatch({changes:{from:r+(d.index||0),to:r+(d.index||0)+(((o=d[0])==null?void 0:o.length)||0),insert:a},annotations:[Un.of(!0)]});else{let p=r+s[1].length;u.dispatch({changes:{from:p,to:p,insert:` ${a}`},annotations:[Un.of(!0)]})}}}function fP(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:[Un.of(!0)]})}var Fx=require("obsidian");var jo=["filters","sort","group","columns","viewMode","calendar","kanban","gantt","displayOptions","viewConfiguration","taskListDisplayOption","forecastOption","customProjectGroupsAndNames","tagCustomOrder","fluentFilterState","fluentActiveViewId","hiddenModules"],a3=["fluentFilterState","fluentActiveViewId","hiddenModules"];z();var Rx=class{constructor(a){this.effectiveCache=new Map;this.isSaving=!1;this.plugin=a,this.app=a.app}getWorkspacesConfig(){return this.plugin.settings.workspaces?this.plugin.settings.workspaces:this.initializeWorkspaces()}initializeWorkspaces(){let a=this.generateId();return this.plugin.settings.workspaces={version:2,defaultWorkspaceId:a,activeWorkspaceId:a,order:[a],byId:{[a]:{id:a,name:c("Default"),updatedAt:Date.now(),settings:{}}}},this.plugin.settings.workspaces}isWorkspaceOnlyKey(a){return a3.includes(a)}ensureDefaultWorkspaceInvariant(){let a=this.getWorkspacesConfig();if(!a.defaultWorkspaceId||!a.byId[a.defaultWorkspaceId]){let t=this.generateId();a.defaultWorkspaceId=t,a.byId[t]={id:t,name:c("Default"),updatedAt:Date.now(),settings:{}},a.order.includes(t)||a.order.unshift(t)}let e=a.byId[a.defaultWorkspaceId];if(e.settings&&Object.keys(e.settings).length>0){let t=Object.fromEntries(Object.entries(e.settings).filter(([r])=>this.isWorkspaceOnlyKey(r)));this.mergeIntoGlobal(e.settings),e.settings=Object.keys(t).length>0?t:{}}(!a.activeWorkspaceId||!a.byId[a.activeWorkspaceId])&&(a.activeWorkspaceId=a.defaultWorkspaceId),this.removeDeprecatedHiddenFeatures(a)}removeDeprecatedHiddenFeatures(a){var t,r;let e=!1;for(let i of Object.values(a.byId))(r=(t=i.settings)==null?void 0:t.hiddenModules)!=null&&r.features&&i.settings.hiddenModules.features.length>0&&(i.settings.hiddenModules.features=[],e=!0);e&&this.plugin.saveSettings()}mergeIntoGlobal(a){for(let e of Object.keys(a))jo.includes(e)&&!this.isWorkspaceOnlyKey(e)&&(this.plugin.settings[e]=structuredClone(a[e]))}getEffectiveSettings(a){let e=this.getWorkspacesConfig(),t=a||e.activeWorkspaceId||e.defaultWorkspaceId;if(e.activeWorkspaceId,e.defaultWorkspaceId,this.effectiveCache.has(t),this.effectiveCache.has(t))return this.effectiveCache.get(t);let r=e.byId[t];if(!r)return this.getEffectiveSettings(e.defaultWorkspaceId);let i={...this.plugin.settings};if(i.fluentFilterState=void 0,i.fluentActiveViewId=void 0,t!==e.defaultWorkspaceId&&r.settings)for(let s of jo)r.settings[s]!==void 0&&(i[s]=structuredClone(r.settings[s]));return r.settings&&r.settings.fluentFilterState!==void 0&&(i.fluentFilterState=structuredClone(r.settings.fluentFilterState)),r.settings&&r.settings.fluentActiveViewId!==void 0&&(i.fluentActiveViewId=structuredClone(r.settings.fluentActiveViewId)),this.effectiveCache.set(t,i),i}toOverrides(a){let e={};for(let t of jo){let r=a[t],i=this.plugin.settings[t];if(this.isWorkspaceOnlyKey(t)){r!==void 0&&(e[t]=structuredClone(r));continue}JSON.stringify(r)!==JSON.stringify(i)&&(e[t]=structuredClone(r))}return e}normalizeOverrides(){let a=this.getWorkspacesConfig();for(let e of a.order){if(e===a.defaultWorkspaceId)continue;let t=a.byId[e];if(t.settings){for(let r of jo)if(t.settings[r]!==void 0){let i=this.plugin.settings[r];JSON.stringify(t.settings[r])===JSON.stringify(i)&&delete t.settings[r]}}}}clearCache(...a){if(a.length>0){for(let e of a)e&&this.effectiveCache.delete(e);return}this.effectiveCache.clear()}getAllWorkspaces(){let a=this.getWorkspacesConfig();return a.order.map(e=>a.byId[e]).filter(e=>e!==void 0)}getWorkspace(a){return this.getWorkspacesConfig().byId[a]}getActiveWorkspace(){let a=this.getWorkspacesConfig(),e=a.activeWorkspaceId||a.defaultWorkspaceId;return a.byId[e]||a.byId[a.defaultWorkspaceId]}async setActiveWorkspace(a){var r;(r=this.getActiveWorkspace())==null||r.id;let e=this.getWorkspacesConfig(),t=e.activeWorkspaceId;e.byId[a]||(new Fx.Notice("Workspace not found. Using default workspace."),a=e.defaultWorkspaceId),e.activeWorkspaceId!==a&&(e.activeWorkspaceId=a,this.clearCache(t,a),await this.plugin.saveSettings(),e.activeWorkspaceId,ZM(this.app,a))}async createWorkspace(a,e,t,r){let i=this.getWorkspacesConfig(),s=this.generateId(),o=e||i.activeWorkspaceId||i.defaultWorkspaceId,l=i.byId[o],d={};o!==i.defaultWorkspaceId&&(l!=null&&l.settings)?d=structuredClone(l.settings):o===i.defaultWorkspaceId&&(d={});let u={id:s,name:a,updatedAt:Date.now(),settings:d};return t?u.icon=t:l!=null&&l.icon&&o!==i.defaultWorkspaceId&&(u.icon=l.icon),r?u.color=r:l!=null&&l.color&&o!==i.defaultWorkspaceId&&(u.color=l.color),i.byId[s]=u,i.order.push(s),await this.plugin.saveSettings(),Kj(this.app,s,o),u}async deleteWorkspace(a){let e=this.getWorkspacesConfig();if(a===e.defaultWorkspaceId){new Fx.Notice("Cannot delete the default workspace");return}if(!e.byId[a])return;delete e.byId[a];let t=e.order.indexOf(a);t!==-1&&e.order.splice(t,1),e.activeWorkspaceId===a&&(e.activeWorkspaceId=e.defaultWorkspaceId,ZM(this.app,e.defaultWorkspaceId)),this.clearCache(),await this.plugin.saveSettings(),Jj(this.app,a)}async renameWorkspace(a,e,t,r){let s=this.getWorkspacesConfig().byId[a];s&&(s.name=e,t!==void 0&&(s.icon=t),r!==void 0&&(s.color=r),s.updatedAt=Date.now(),await this.plugin.saveSettings(),Zj(this.app,a,e))}async saveOverrides(a,e){if(this.isSaving){console.warn("[TG-WORKSPACE] Recursive saveOverrides detected, skipping to prevent loop",{workspaceId:a});return}this.isSaving=!0;try{let t=this.getWorkspacesConfig();if(a===t.defaultWorkspaceId){let o=[];for(let l of jo)e[l]!==void 0&&!this.isWorkspaceOnlyKey(l)&&(this.plugin.settings[l]=structuredClone(e[l]),o.push(l));if(e.fluentFilterState!==void 0){let l=t.byId[a];l.settings=l.settings||{},l.settings.fluentFilterState=structuredClone(e.fluentFilterState),l.updatedAt=Date.now(),o.push("fluentFilterState")}if(e.fluentActiveViewId!==void 0){let l=t.byId[a];l.settings=l.settings||{},l.settings.fluentActiveViewId=structuredClone(e.fluentActiveViewId),l.updatedAt=Date.now(),o.push("fluentActiveViewId")}this.clearCache(),await this.plugin.saveSettings(),Il(this.app,a,o.length?o:void 0),le(this.app,Z.SETTINGS_CHANGED);return}let r=t.byId[a];if(!r)return;let i=this.toOverrides(e),s=Object.keys(i);r.settings=i,r.updatedAt=Date.now(),this.clearCache(),await this.plugin.saveSettings(),Il(this.app,a,s),le(this.app,Z.SETTINGS_CHANGED)}finally{this.isSaving=!1}}async saveOverridesQuietly(a,e){let t=this.getWorkspacesConfig();if(a===t.defaultWorkspaceId){for(let s of jo)e[s]!==void 0&&!this.isWorkspaceOnlyKey(s)&&(this.plugin.settings[s]=structuredClone(e[s]));if(e.fluentFilterState!==void 0){let s=t.byId[a];s.settings=s.settings||{},s.settings.fluentFilterState=structuredClone(e.fluentFilterState),s.updatedAt=Date.now()}if(e.fluentActiveViewId!==void 0){let s=t.byId[a];s.settings=s.settings||{},s.settings.fluentActiveViewId=structuredClone(e.fluentActiveViewId),s.updatedAt=Date.now()}jo.filter(s=>e[s]!==void 0),this.clearCache(),await this.plugin.saveSettings();return}let r=t.byId[a];if(!r)return;let i=this.toOverrides(e);Object.keys(i),r.settings=i,r.updatedAt=Date.now(),this.clearCache(),await this.plugin.saveSettings()}async resetOverrides(a){let e=this.getWorkspacesConfig();if(a===e.defaultWorkspaceId)return;let t=e.byId[a];t&&(t.settings={},t.updatedAt=Date.now(),this.clearCache(),await this.plugin.saveSettings(),qj(this.app,a),le(this.app,Z.SETTINGS_CHANGED))}async setDefaultWorkspace(a){let e=this.getWorkspacesConfig();if(!e.byId[a]||e.defaultWorkspaceId===a)return;let t=e.defaultWorkspaceId,r=e.byId[a],i={};for(let s of jo){let o=this.plugin.settings[s];o!==void 0&&(i[s]=structuredClone(o))}r.settings&&this.mergeIntoGlobal(r.settings),e.byId[t].settings=i,r.settings={},e.defaultWorkspaceId=a,this.normalizeOverrides(),this.clearCache(),await this.plugin.saveSettings(),Gj(this.app,a),le(this.app,Z.SETTINGS_CHANGED)}generateId(){return`ws_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}async reorderWorkspaces(a){let e=this.getWorkspacesConfig(),t=a.filter(i=>e.byId[i]),r=t.indexOf(e.defaultWorkspaceId);r>0?(t.splice(r,1),t.unshift(e.defaultWorkspaceId)):r===-1&&t.unshift(e.defaultWorkspaceId),e.order=t,await this.plugin.saveSettings()}isDefaultWorkspace(a){let e=this.getWorkspacesConfig();return a===e.defaultWorkspaceId}exportWorkspace(a){let e=this.getWorkspace(a);if(!e)return null;let t={name:e.name,settings:e.settings,exportedAt:Date.now(),version:1};return JSON.stringify(t,null,2)}async importWorkspace(a,e){try{let t=JSON.parse(a),r=e||t.name||"Imported Workspace",i=t.settings||{},s=await this.createWorkspace(r);return s.settings=i,await this.plugin.saveSettings(),s}catch(t){return new Fx.Notice("Failed to import workspace configuration"),console.error("Workspace import error:",t),null}}ensureHiddenModulesInitialized(a){return a.settings||(a.settings={}),a.settings.hiddenModules||(a.settings.hiddenModules={views:[],sidebarComponents:[],features:[],calendarViews:[]}),a.settings.hiddenModules.views||(a.settings.hiddenModules.views=[]),a.settings.hiddenModules.sidebarComponents||(a.settings.hiddenModules.sidebarComponents=[]),a.settings.hiddenModules.features?a.settings.hiddenModules.features.length>0&&(a.settings.hiddenModules.features=[]):a.settings.hiddenModules.features=[],a.settings.hiddenModules.calendarViews||(a.settings.hiddenModules.calendarViews=[]),a.settings.hiddenModules}isViewHidden(a,e){var r,i;let t=e?this.getWorkspace(e):this.getActiveWorkspace();return(i=(r=t==null?void 0:t.settings)==null?void 0:r.hiddenModules)!=null&&i.views?t.settings.hiddenModules.views.includes(a):!1}normalizeSidebarComponentId(a){var t;return(t={"projects-list":"projects-list","other-views":"other-views","view-switcher":"other-views","tags-list":null,"top-views":null,"bottom-views":null}[a])!=null?t:null}isSidebarComponentHidden(a,e){var i,s;let t=e?this.getWorkspace(e):this.getActiveWorkspace();if(!((s=(i=t==null?void 0:t.settings)==null?void 0:i.hiddenModules)!=null&&s.sidebarComponents))return!1;let r=this.normalizeSidebarComponentId(a);return r===null?!1:t.settings.hiddenModules.sidebarComponents.includes(r)}isFeatureHidden(a,e){return!1}getVisibleViews(a){var i,s;let e=a?this.getWorkspace(a):this.getActiveWorkspace(),t=((s=(i=e==null?void 0:e.settings)==null?void 0:i.hiddenModules)==null?void 0:s.views)||[];return this.plugin.settings.viewConfiguration.map(o=>o.id).filter(o=>!t.includes(o))}async toggleViewVisibility(a,e){let t=e?this.getWorkspace(e):this.getActiveWorkspace();if(!t)return;let r=this.ensureHiddenModulesInitialized(t),i=r.views.indexOf(a);i>-1?r.views.splice(i,1):r.views.push(a),t.updatedAt=Date.now(),this.clearCache(),await this.plugin.saveSettings(),Il(this.app,t.id,["hiddenModules"])}async setHiddenViews(a,e){let t=e?this.getWorkspace(e):this.getActiveWorkspace();if(!t)return;let r=this.ensureHiddenModulesInitialized(t);r.views=[...a],t.updatedAt=Date.now(),this.clearCache(),await this.plugin.saveSettings(),Il(this.app,t.id,["hiddenModules"])}async setHiddenSidebarComponents(a,e){let t=e?this.getWorkspace(e):this.getActiveWorkspace();if(!t)return;let r=a.map(s=>this.normalizeSidebarComponentId(s)).filter(s=>s!==null),i=this.ensureHiddenModulesInitialized(t);i.sidebarComponents=r,t.updatedAt=Date.now(),this.clearCache(),await this.plugin.saveSettings(),Il(this.app,t.id,["hiddenModules"])}async setHiddenCalendarViews(a,e){let t=e?this.getWorkspace(e):this.getActiveWorkspace();if(!t)return;let r=this.ensureHiddenModulesInitialized(t);r.calendarViews=[...a],t.updatedAt=Date.now(),this.clearCache(),await this.plugin.saveSettings(),Il(this.app,t.id,["hiddenModules"])}async setHiddenFeatures(a,e){let t=e?this.getWorkspace(e):this.getActiveWorkspace();if(!t)return;let r=this.ensureHiddenModulesInitialized(t),i=r.features.length>0;i&&(r.features=[]),a.length>0&&console.warn("[WorkspaceManager] Feature hiding is deprecated and will be ignored.",{requestedFeatures:a}),!(!i&&a.length===0)&&(t.updatedAt=Date.now(),this.clearCache(),await this.plugin.saveSettings(),Il(this.app,t.id,["hiddenModules"]))}};var Lx=require("obsidian");var Dk="task-genius-changelog-cache",n3=n=>n?"beta":"stable",r3=n=>{if(!n||typeof n!="object")return!1;let a=n;return typeof a.version=="string"&&typeof a.markdown=="string"&&typeof a.sourceUrl=="string"&&typeof a.updatedAt=="number"},i3=n=>{if(!n)return{};let a=n;if(typeof a=="string")try{a=JSON.parse(a)}catch(r){return{}}if(!a||typeof a!="object")return{};let e=a,t={};return r3(e.stable)&&(t.stable=e.stable),r3(e.beta)&&(t.beta=e.beta),t},s3=()=>{var n;try{return typeof window=="undefined"?null:(n=window.localStorage)!=null?n:null}catch(a){return null}},o3=n=>{try{let e=n.loadLocalStorage(Dk);return e?i3(e):{}}catch(e){console.warn("[ChangelogCache] Failed to load via app localStorage",e)}let a=s3();if(!a)return{};try{let e=a.getItem(Dk);return e?i3(JSON.parse(e)):{}}catch(e){return console.warn("[ChangelogCache] Failed to load via window localStorage",e),{}}},CX=(n,a)=>{try{let t=!n.stable&&!n.beta?"{}":JSON.stringify(n);a.saveLocalStorage(Dk,t);return}catch(t){console.warn("[ChangelogCache] Failed to save via app localStorage",t)}let e=s3();if(e)try{if(!n.stable&&!n.beta){e.removeItem(Dk);return}e.setItem(Dk,JSON.stringify(n))}catch(t){console.warn("[ChangelogCache] Failed to save via window localStorage",t)}},Ox=(n,a,e)=>{let t=o3(e),r=n3(a),i=t[r];return!i||i.version!==n?null:i};var l3=(n,a,e,t)=>{let r=o3(t),i=n3(a);r[i]={version:n,markdown:e.markdown,sourceUrl:e.sourceUrl,updatedAt:Date.now()},CX(r,t)};z();var Ol="task-genius-changelog",Nx=class extends Lx.ItemView{constructor(e,t){super(e);this.content=null;this.isLoading=!1;this.error=null;this.plugin=t}getViewType(){return Ol}getDisplayText(){return c("Changelog")}getIcon(){return"task-genius"}async onOpen(){this.tryLoadCachedContent(),await this.render()}async onClose(){this.containerEl.empty()}tryLoadCachedContent(){var i;let e=(i=this.plugin.manifest)==null?void 0:i.version;if(!e)return;let t=e.toLowerCase().includes("beta"),r=Ox(e,t,this.app);r&&(this.isLoading=!1,this.error=null,this.content={version:r.version,markdown:r.markdown,sourceUrl:r.sourceUrl})}showLoading(e){this.isLoading=!0,this.error=null,this.content={version:e,markdown:"",sourceUrl:""},this.render()}async setContent(e){this.isLoading=!1,this.error=null,this.content=e,await this.render()}showError(e){this.isLoading=!1,this.error=e,this.render()}async render(){var i,s;let{containerEl:e}=this;e.empty(),e.addClass("tg-changelog-view");let t=e.createDiv({cls:"tg-changelog-header"});if(t.createEl("h2",{text:c("Task Genius Changelog")}),(i=this.content)!=null&&i.version){let o=t.createDiv({cls:"tg-changelog-meta"});o.createSpan({text:`Version ${this.content.version}`}),this.content.sourceUrl&&(o.createSpan({text:" \u2022 "}),o.createEl("a",{text:"View full changelog",href:"https://taskgenius.md/changelog",attr:{target:"_blank",rel:"noopener noreferrer"}}))}let r=e.createDiv({cls:"tg-changelog-body markdown-preview-view"});if(this.isLoading){r.createEl("p",{text:"Loading changelog..."});return}if(this.error){r.createEl("p",{text:this.error,attr:{class:"tg-changelog-error"}});return}if((s=this.content)!=null&&s.markdown){await Lx.MarkdownRenderer.render(this.plugin.app,this.content.markdown,r,"",this.plugin);return}r.createEl("p",{text:"No changelog information available."})}};var c3=require("obsidian");var SX="https://raw.githubusercontent.com/quorafind/obsidian-task-genius/master",DX="https://github.com/quorafind/obsidian-task-genius/releases/tag",EX=10,jx=class{constructor(a){this.plugin=a;this.currentVersionDisplayed=null}async openChangelog(a,e){try{let t=await this.getOrCreateView();if(this.currentVersionDisplayed===a){this.plugin.app.workspace.revealLeaf(t.leaf);return}let r=Ox(a,e,this.plugin.app);if(r){this.currentVersionDisplayed=a,await t.setContent({version:a,markdown:r.markdown,sourceUrl:r.sourceUrl}),this.plugin.settings.changelog.lastVersion=a,await this.plugin.saveSettings();return}t.showLoading(a),this.currentVersionDisplayed=a;let i=await this.fetchAndPrepareChangelog(e);if(!i){t.showError("Failed to load changelog."),this.currentVersionDisplayed=null;return}l3(a,e,i,this.plugin.app),await t.setContent({version:a,markdown:i.markdown,sourceUrl:i.sourceUrl}),this.plugin.settings.changelog.lastVersion=a,await this.plugin.saveSettings()}catch(t){console.error("[Changelog] Failed to open changelog view:",t);let r=this.tryGetExistingView();r==null||r.showError("Failed to load changelog."),this.currentVersionDisplayed=null}}async fetchAndPrepareChangelog(a){var e;try{let r=`${SX}/${a?"CHANGELOG-BETA.md":"CHANGELOG.md"}`,s=(e=(await(0,c3.requestUrl)({url:r})).text)==null?void 0:e.trim();return s?{markdown:this.extractLatestSections(s,a),sourceUrl:r}:(console.warn("[Changelog] Received empty changelog content"),null)}catch(t){return console.error("[Changelog] Failed to fetch changelog:",t),null}}extractLatestSections(a,e){var p,m;let t=a.search(/^## /m),r=t>=0?a.slice(0,t).trim():"",i=/^## [\s\S]*?(?=^## |\Z)/gm,o=((p=a.match(i))!=null?p:[]).slice(0,EX).map(h=>{let[g,...f]=h.split(`
`);return[this.ensureReleaseLink(g,e),...f].join(`
`)}),l=[],d=r.trim();return d&&!/^#\s*changelog$/i.test((m=d.split(`
`)[0])!=null?m:"")&&l.push(d),[...l,...o].filter(h=>h&&h.trim().length>0).map(h=>h.trim()).join(`
`)}ensureReleaseLink(a,e){if(a.includes("]("))return a;let t=a.match(/^(##\s+)([^\s(]+)/);if(!t)return a;let[,r,i]=t,s=i.replace(/^\[|\]$/g,""),o=this.buildReleaseUrl(s,e);return a.replace(/^(##\s+)([^\s(]+)/,`${r}[${s}](${o})`)}buildReleaseUrl(a,e){let t=a.replace(/^\[|\]$/g,"");return`${DX}/${t}`}async getOrCreateView(){let{workspace:a}=this.plugin.app,e=a.getLeavesOfType(Ol)[0];if(e)return a.revealLeaf(e),e.view;let t=a.getLeaf("tab");return await t.setViewState({type:Ol}),a.revealLeaf(t),t.view}tryGetExistingView(){let{workspace:a}=this.plugin.app,e=a.getLeavesOfType(Ol)[0];return(e==null?void 0:e.view)||null}};var Hx=class extends _e.Plugin{constructor(){super(...arguments);this.preloadedTasks=[];this.coreCommandsRegistered=!1;this.viewsRegistered=!1;this.onboardingViewRegistered=!1;this.viewCommandsRegistered=!1;this.extendedCommandsScheduled=!1;this.editorExtensionsRegistered=!1;this.iconsDeferred=!1;this.isActivatingView=!1;this.isActivatingSidebar=!1}async onload(){await this.loadSettings(),this.versionManager=new dx(this.app,this),this.addChild(this.versionManager),this.changelogManager=new jx(this),this.registerView(Ol,e=>new Nx(e,this)),this.onboardingConfigManager=new Iu(this),this.settingsChangeDetector=new Au(this),this.globalSuggestManager=new Ec(this.app,this),this.workspaceManager=new Rx(this),this.workspaceManager.ensureDefaultWorkspaceInvariant(),this.uriHandler=new cx(this),this.uriHandler.register(),this.rebuildProgressManager=new ux,this.settings.enableIndexer&&this.settings.enableView&&this.loadViews(),this.settingTab=new Ow(this.app,this),this.addSettingTab(this.settingTab),this.registerEvent(this.app.workspace.on("editor-menu",(e,t)=>{this.settings.enablePriorityKeyboardShortcuts&&e.addItem(r=>{r.setTitle(c("Set priority")),r.setIcon("list-ordered");let i=r.setSubmenu();Object.entries(Mf).forEach(([s,o])=>{s!=="none"&&i.addItem(l=>{l.setTitle(`${c("Set priority")}: ${o.text}`),l.setIcon("arrow-big-up-dash"),l.onClick(()=>{Sk(t,o.emoji)})})}),i.addSeparator(),Object.entries(Pf).forEach(([s,o])=>{i.addItem(l=>{l.setTitle(`${c("Set priority")}: ${s}`),l.setIcon("a-arrow-up"),l.onClick(()=>{Sk(t,`[#${s}]`)})})}),i.addItem(s=>{s.setTitle(c("Remove Priority")),s.setIcon("list-x"),s.setWarning(!0),s.onClick(()=>{fP(t)})})}),this.settings.workflow.enableWorkflow&&X2(e,t,this)})),this.app.workspace.onLayoutReady(async()=>{await this.initializeDeferredStartup();let e=this.app.workspace.getLeavesOfType(Gn),t=this.app.workspace.getLeavesOfType(Po),r=this.app.workspace.getLeavesOfType(yn);[...e,...t,...r].forEach(i=>{i.loadIfDeferred()}),this.taskGeniusIconManager=new PT(this),this.addChild(this.taskGeniusIconManager),_e.Platform.isDesktopApp&&(this.mcpServerManager=new Ax(this),this.mcpServerManager.initialize(),this.notificationManager=new dH(this),this.addChild(this.notificationManager),this.registerEvent(this.app.workspace.on(Z.TASK_CACHE_UPDATED,()=>{var i;return(i=this.notificationManager)==null?void 0:i.onTaskCacheUpdated()}))),await this.checkMigrationAndMaybeShowOnboarding(),this.checkAndShowOnboarding(),this.settings.autoCompleteParent&&this.registerEditorExtension([eL(this.app,this)]),this.registerMarkdownPostProcessor((i,s)=>{this.settings.enableTaskStatusSwitcher&&g2({plugin:this,element:i,ctx:s}),this.settings.enableProgressbarInReadingMode&&this.settings.progressBarDisplayMode!=="none"&&h2({plugin:this,element:i,ctx:s})}),this.settings.habit.enableHabits&&(this.habitManager=new MT(this),this.addChild(this.habitManager)),this.settings.icsIntegration.sources.length>0&&(this.icsManager=new zT(this.settings.icsIntegration,this.settings,this),this.addChild(this.icsManager),this.icsManager.initialize().catch(i=>{console.error("Failed to initialize ICS manager:",i)})),this.settings.timelineSidebar.enableTimelineSidebar&&this.settings.timelineSidebar.autoOpenOnStartup&&setTimeout(()=>{this.activateTimelineSidebarView().catch(i=>{console.error("Failed to auto-open timeline sidebar:",i)})},1e3),this.maybeShowChangelog()}),await this.migratePresetTaskFiltersIfNeeded(),this.registerCoreCommands()}async initializeDeferredStartup(){if(this.registerOnboardingView(),!this.settings.enableIndexer){this.scheduleExtendedCommands();return}if(await this.ensureFluentIntegration(),this.settings.enableView&&(this.registerTaskViews(),this.installWorkspaceGuards(),this.registerViewCommands(),this.deferIconRegistration()),!await this.initializeDataflowOrchestrator()){this.scheduleExtendedCommands();return}try{await this.initializeDataflowWithVersionCheck()}catch(t){console.error("[Plugin] Dataflow version check failed during startup:",t)}this.initializeWriteAPI(),this.initializeOnCompletionManager(),this.settings.rewards.enableRewards&&this.initializeRewardManager(),this.scheduleExtendedCommands()}async ensureFluentIntegration(){this.fluentIntegration||(this.fluentIntegration=new lx(this),await this.fluentIntegration.migrateSettings(),this.fluentIntegration.register())}registerTaskViews(){if(!this.viewsRegistered){this.viewsRegistered=!0,this.registerOnboardingView(),this.registerView(Gn,e=>new Kf(e,this)),this.registerView(Po,e=>new wT(e,this)),this.registerView(qc,e=>new Qf(e,this));try{uH(this)}catch(e){}}}registerOnboardingView(){this.onboardingViewRegistered||(this.onboardingViewRegistered=!0,this.registerView(Bc,e=>new vw(e,this,()=>{e.detach()})))}registerViewCommands(){this.viewCommandsRegistered||(this.viewCommandsRegistered=!0,this.addCommand({id:"open-task-genius-view",name:c("Open Task Genius view"),callback:()=>{this.activateTaskView()}}),this.addCommand({id:"open-timeline-sidebar-view",name:c("Open Timeline Sidebar"),callback:()=>{this.activateTimelineSidebarView()}}),this.addCommand({id:"open-task-genius-setup",name:c("Open Task Genius Setup"),callback:()=>{this.openOnboardingView()}}),this.addCommand({id:"open-task-genius-changelog",name:c("Open Task Genius changelog"),callback:()=>{var r;if(!this.changelogManager)return;let e=((r=this.manifest)==null?void 0:r.version)||this.settings.changelog.lastVersion;if(!e)return;let t=e.toLowerCase().includes("beta");this.changelogManager.openChangelog(e,t)}}))}deferIconRegistration(){if(this.iconsDeferred)return;this.iconsDeferred=!0;let e=()=>{(0,_e.addIcon)("task-genius",CT()),(0,_e.addIcon)("completed",Pl("completed")),(0,_e.addIcon)("inProgress",Pl("inProgress")),(0,_e.addIcon)("planned",Pl("planned")),(0,_e.addIcon)("abandoned",Pl("abandoned")),(0,_e.addIcon)("notStarted",Pl("notStarted")),this.addRibbonIcon("task-genius",c("Open Task Genius view"),()=>{this.activateTaskView()})},t=window==null?void 0:window.requestIdleCallback;typeof t=="function"?t(e):setTimeout(e,0)}installWorkspaceGuards(){t3(this);try{e3(yn)}catch(e){}}async initializeDataflowOrchestrator(){var e,t,r,i,s,o,l,d,u,p,m,h,g,f,k,v,y,b,w,T;try{return this.dataflowOrchestrator=await mj(this.app,this.app.vault,this.app.metadataCache,this,{configFileName:((t=(e=this.settings.projectConfig)==null?void 0:e.configFile)==null?void 0:t.fileName)||"project.md",searchRecursively:(s=(i=(r=this.settings.projectConfig)==null?void 0:r.configFile)==null?void 0:i.searchRecursively)!=null?s:!0,metadataKey:((l=(o=this.settings.projectConfig)==null?void 0:o.metadataConfig)==null?void 0:l.metadataKey)||"project",pathMappings:((d=this.settings.projectConfig)==null?void 0:d.pathMappings)||[],metadataMappings:((u=this.settings.projectConfig)==null?void 0:u.metadataMappings)||[],defaultProjectNaming:((p=this.settings.projectConfig)==null?void 0:p.defaultProjectNaming)||{strategy:"filename",stripExtension:!0,enabled:!1},enhancedProjectEnabled:(h=(m=this.settings.projectConfig)==null?void 0:m.enableEnhancedProject)!=null?h:!1,metadataConfigEnabled:(k=(f=(g=this.settings.projectConfig)==null?void 0:g.metadataConfig)==null?void 0:f.enabled)!=null?k:!1,configFileEnabled:(b=(y=(v=this.settings.projectConfig)==null?void 0:v.configFile)==null?void 0:y.enabled)!=null?b:!1,detectionMethods:((T=(w=this.settings.projectConfig)==null?void 0:w.metadataConfig)==null?void 0:T.detectionMethods)||[]}),!0}catch(x){return console.error("[Plugin] Failed to initialize dataflow orchestrator:",x),new _e.Notice(c("Failed to initialize task system. Please restart Obsidian.")),this.dataflowOrchestrator=void 0,!1}}initializeWriteAPI(){let e=this.dataflowOrchestrator;if(!e)return;let t=e.getRepository(),r=async i=>{try{let s=await t.getTaskById(i);return s!=null?s:null}catch(s){return console.warn("Failed to get task from dataflow",s),null}};this.writeAPI=new yp(this.app,this.app.vault,this.app.metadataCache,this,r)}initializeOnCompletionManager(){this.onCompletionManager||(this.onCompletionManager=new bx(this.app,this),this.addChild(this.onCompletionManager))}initializeRewardManager(){this.rewardManager||(this.rewardManager=new ET(this),this.addChild(this.rewardManager),this.registerEditorExtension([Fj(this.app,this)]))}scheduleExtendedCommands(){this.extendedCommandsScheduled||(this.extendedCommandsScheduled=!0,setTimeout(()=>{try{this.registerCommands(),this.ensureEditorExtensionsRegistered()}catch(e){console.error("[Plugin] Failed registering deferred commands:",e)}},100))}ensureEditorExtensionsRegistered(){this.editorExtensionsRegistered||(this.editorExtensionsRegistered=!0,this.registerEditorExt())}registerCoreCommands(){this.coreCommandsRegistered||(this.coreCommandsRegistered=!0,this.addCommand({id:"quick-capture",name:c("Quick Capture"),callback:()=>{new ft(this.app,this,void 0,!0).open()}}),this.addCommand({id:"minimal-quick-capture",name:c("Minimal Quick Capture"),callback:()=>{new Kw(this.app,this).open()}}),this.addCommand({id:"quick-file-create",name:c("Quick File Create"),callback:()=>{new ft(this.app,this,{location:"file"}).open()}}),this.addCommand({id:"toggle-task-filter",name:c("Toggle task filter panel"),editorCallback:e=>{let t=e.cm;t&&t.dispatch({effects:Wc.of(!t.state.field(xf))})}}))}async migratePresetTaskFiltersIfNeeded(){var t;let e=(t=this.settings.taskFilter)==null?void 0:t.presetTaskFilters;e&&(this.settings.taskFilter.presetTaskFilters=e.map(r=>(r.options&&(r.options=Cf(r.options)),r)),await this.saveSettings())}registerCommands(){var e,t;this.settings.sortTasks&&(this.addCommand({id:"sort-tasks-by-due-date",name:c("Sort Tasks in Section"),editorCallback:(r,i)=>{let s=r.cm;if(!s)return;cE(s,this,!1)&&new _e.Notice(c("Tasks sorted (using settings). Change application needs refinement."))}}),this.addCommand({id:"sort-tasks-in-entire-document",name:c("Sort Tasks in Entire Document"),editorCallback:(r,i)=>{let s=r.cm;if(!s)return;let o=cE(s,this,!0);if(o){let l=s.state.field(_e.editorInfoField);if(!l||!l.file)return;this.app.vault.process(l.file,d=>o),new _e.Notice(c("Entire document sorted (using settings)."))}else new _e.Notice(c("Tasks already sorted or no tasks found."))}})),this.addCommand({id:"cycle-task-status-forward",name:c("Cycle task status forward"),editorCheckCallback:(r,i,s)=>mL(r,i,s,this)}),this.addCommand({id:"cycle-task-status-backward",name:c("Cycle task status backward"),editorCheckCallback:(r,i,s)=>hL(r,i,s,this)}),this.settings.enableIndexer&&this.addCommand({id:"force-reindex-tasks",name:c("Force reindex all tasks"),callback:async()=>{var r;try{if((r=this.settings)!=null&&r.enableIndexer&&this.dataflowOrchestrator){new _e.Notice(c("Clearing task cache and rebuilding index...")),await this.dataflowOrchestrator.rebuild();let i=this.dataflowOrchestrator.icsSource;i&&await i.refresh(),new _e.Notice(c("Task index completely rebuilt"))}else new _e.Notice(c("Task system not initialized"))}catch(i){console.error("Failed to force reindex tasks:",i),new _e.Notice(c("Failed to force reindex tasks"))}}}),this.addCommand({id:"reindex-habits",name:c("Reindex habits"),callback:async()=>{var r;try{await((r=this.habitManager)==null?void 0:r.initializeHabits()),new _e.Notice(c("Habit index refreshed"))}catch(i){console.error("Failed to reindex habits",i),new _e.Notice(c("Failed to refresh habit index"))}}}),this.settings.enablePriorityKeyboardShortcuts&&(Object.entries(Mf).forEach(([r,i])=>{r!=="none"&&this.addCommand({id:`set-priority-${r}`,name:`${c("Set priority")} ${i.text}`,editorCallback:s=>{Sk(s,i.emoji)}})}),Object.entries(Pf).forEach(([r,i])=>{this.addCommand({id:`set-priority-letter-${r}`,name:`${c("Set priority")} ${r}`,editorCallback:s=>{Sk(s,`[#${r}]`)}})}),this.addCommand({id:"remove-priority",name:c("Remove priority"),editorCallback:r=>{fP(r)}})),this.addCommand({id:"move-task-to-file",name:c("Move task to another file"),editorCheckCallback:(r,i,s)=>vL(r,i,s,this)}),this.settings.completedTaskMover.enableCompletedTaskMover&&(this.addCommand({id:"move-completed-subtasks-to-file",name:c("Move all completed subtasks to another file"),editorCheckCallback:(r,i,s)=>Uw(r,i,s,this,"allCompleted")}),this.addCommand({id:"move-direct-completed-subtasks-to-file",name:c("Move direct completed subtasks to another file"),editorCheckCallback:(r,i,s)=>Uw(r,i,s,this,"directChildren")}),this.addCommand({id:"move-all-subtasks-to-file",name:c("Move all subtasks to another file"),editorCheckCallback:(r,i,s)=>Uw(r,i,s,this,"all")}),this.settings.completedTaskMover.enableAutoMove&&(this.addCommand({id:"auto-move-completed-subtasks",name:c("Auto-move completed subtasks to default file"),editorCheckCallback:(r,i,s)=>Uu(r,i,s,this,"allCompleted")}),this.addCommand({id:"auto-move-direct-completed-subtasks",name:c("Auto-move direct completed subtasks to default file"),editorCheckCallback:(r,i,s)=>Uu(r,i,s,this,"directChildren")}),this.addCommand({id:"auto-move-all-subtasks",name:c("Auto-move all subtasks to default file"),editorCheckCallback:(r,i,s)=>Uu(r,i,s,this,"all")}))),this.settings.completedTaskMover.enableIncompletedTaskMover&&(this.addCommand({id:"move-incompleted-subtasks-to-file",name:c("Move all incomplete subtasks to another file"),editorCheckCallback:(r,i,s)=>pM(r,i,s,this,"allIncompleted")}),this.addCommand({id:"move-direct-incompleted-subtasks-to-file",name:c("Move direct incomplete subtasks to another file"),editorCheckCallback:(r,i,s)=>pM(r,i,s,this,"directIncompletedChildren")}),this.settings.completedTaskMover.enableIncompletedAutoMove&&(this.addCommand({id:"auto-move-incomplete-subtasks",name:c("Auto-move incomplete subtasks to default file"),editorCheckCallback:(r,i,s)=>Uu(r,i,s,this,"allIncompleted")}),this.addCommand({id:"auto-move-direct-incomplete-subtasks",name:c("Auto-move direct incomplete subtasks to default file"),editorCheckCallback:(r,i,s)=>Uu(r,i,s,this,"directIncompletedChildren")}))),this.addCommand({id:"toggle-quick-capture",name:c("Toggle quick capture panel in editor"),editorCallback:r=>{let i=r.cm;try{let s=i.state.field(bM);i.dispatch({effects:Co.of(!s)})}catch(s){i.dispatch({effects:Co.of(!0)})}}}),this.addCommand({id:"toggle-quick-capture-globally",name:c("Toggle quick capture panel in editor (Globally)"),callback:()=>{let r=this.app.workspace.getActiveViewOfType(_e.MarkdownView);if(r&&r.editor){let i=r.editor.cm;try{i.dispatch({effects:Co.of(!0)})}catch(s){this.registerEditorExtension([wM(this.app,this)]),setTimeout(()=>{try{i.dispatch({effects:Co.of(!0)})}catch(o){new _e.Notice(c("Could not open quick capture panel in the current editor"))}},100)}}}}),this.settings.workflow.enableWorkflow&&(this.addCommand({id:"create-quick-workflow",name:c("Create quick workflow"),editorCheckCallback:(r,i,s)=>If(r,i,s,this)}),this.addCommand({id:"convert-task-to-workflow",name:c("Convert task to workflow template"),editorCheckCallback:(r,i,s)=>Af(r,i,s,this)}),this.addCommand({id:"start-workflow-here",name:c("Start workflow here"),editorCheckCallback:(r,i,s)=>Ff(r,i,s,this)}),this.addCommand({id:"convert-to-workflow-root",name:c("Convert current task to workflow root"),editorCheckCallback:(r,i,s)=>tM(r,i,s,this)}),this.addCommand({id:"duplicate-workflow",name:c("Duplicate workflow"),editorCheckCallback:(r,i,s)=>aM(r,i,s,this)}),this.addCommand({id:"workflow-quick-actions",name:c("Workflow quick actions"),editorCheckCallback:(r,i,s)=>U2(r,i,s,this)})),(e=this.settings.taskTimer)!=null&&e.enabled&&(this.taskTimerManager||(this.taskTimerManager=new Ft(this.settings.taskTimer)),this.taskTimerExporter||(this.taskTimerExporter=new gk(this.taskTimerManager))),(t=this.settings.taskTimer)!=null&&t.enabled&&this.taskTimerExporter&&(this.addCommand({id:"export-task-timer-data",name:"Export task timer data",callback:async()=>{try{let r=this.taskTimerExporter.getExportStats();if(r.activeTimers===0){new _e.Notice("No timer data to export");return}let i=this.taskTimerExporter.exportToJSON(!0),s=new Blob([i],{type:"application/json"}),o=URL.createObjectURL(s),l=document.createElement("a");l.href=o,l.download=`task-timer-data-${new Date().toISOString().split("T")[0]}.json`,document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(o),new _e.Notice(`Exported ${r.activeTimers} timer records`)}catch(r){console.error("Error exporting timer data:",r),new _e.Notice("Failed to export timer data")}}}),this.addCommand({id:"import-task-timer-data",name:"Import task timer data",callback:async()=>{try{let r=document.createElement("input");r.type="file",r.accept=".json",r.onchange=async i=>{var o;let s=(o=i.target.files)==null?void 0:o[0];if(s)try{let l=await s.text();this.taskTimerExporter.importFromJSON(l)?new _e.Notice("Timer data imported successfully"):new _e.Notice("Failed to import timer data - invalid format")}catch(l){console.error("Error importing timer data:",l),new _e.Notice("Failed to import timer data")}},r.click()}catch(r){console.error("Error setting up import:",r),new _e.Notice("Failed to set up import")}}}),this.addCommand({id:"export-task-timer-yaml",name:"Export task timer data (YAML)",callback:async()=>{try{let r=this.taskTimerExporter.getExportStats();if(r.activeTimers===0){new _e.Notice("No timer data to export");return}let i=this.taskTimerExporter.exportToYAML(!0),s=new Blob([i],{type:"text/yaml"}),o=URL.createObjectURL(s),l=document.createElement("a");l.href=o,l.download=`task-timer-data-${new Date().toISOString().split("T")[0]}.yaml`,document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(o),new _e.Notice(`Exported ${r.activeTimers} timer records to YAML`)}catch(r){console.error("Error exporting timer data to YAML:",r),new _e.Notice("Failed to export timer data to YAML")}}}),this.addCommand({id:"backup-task-timer-data",name:"Create task timer backup",callback:async()=>{try{let r=this.taskTimerExporter.createBackup(),i=new Blob([r],{type:"application/json"}),s=URL.createObjectURL(i),o=document.createElement("a");o.href=s,o.download=`task-timer-backup-${new Date().toISOString().replace(/[:.]/g,"-")}.json`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(s),new _e.Notice("Task timer backup created")}catch(r){console.error("Error creating timer backup:",r),new _e.Notice("Failed to create timer backup")}}}),this.addCommand({id:"show-task-timer-stats",name:"Show task timer statistics",callback:()=>{try{let r=this.taskTimerExporter.getExportStats(),i=`Task Timer Statistics:
`;i+=`Active timers: ${r.activeTimers}
`,i+=`Total duration: ${Math.round(r.totalDuration/6e4)} minutes
`,r.oldestTimer&&(i+=`Oldest timer: ${r.oldestTimer}
`),r.newestTimer&&(i+=`Newest timer: ${r.newestTimer}`),new _e.Notice(i,1e4)}catch(r){console.error("Error getting timer stats:",r),new _e.Notice("Failed to get timer statistics")}}}))}registerEditorExt(){var e;this.registerEditorExtension([s2(this.app,this)]),(e=this.settings.taskTimer)!=null&&e.enabled&&(this.taskTimerManager||(this.taskTimerManager=new Ft(this.settings.taskTimer)),this.taskTimerExporter||(this.taskTimerExporter=new gk(this.taskTimerManager)),this.registerEditorExtension([d2(this)])),this.settings.taskGutter.enableTaskGutter&&this.registerEditorExtension([Vj(this.app,this)]),this.settings.enableTaskStatusSwitcher&&this.settings.enableCustomTaskMarks&&this.registerEditorExtension([l2(this.app,this)]),this.settings.enablePriorityPicker&&this.registerEditorExtension([j2(this.app,this)]),this.settings.enableDatePicker&&this.registerEditorExtension([xL(this.app,this)]),this.settings.workflow.enableWorkflow&&(this.registerEditorExtension([K2(this.app,this)]),this.registerEditorExtension([lL(this.app,this)]),this.registerEditorExtension([pL(this.app,this)])),this.settings.autoDateManager.enabled&&this.registerEditorExtension([_j(this.app,this)]),this.settings.enableCycleCompleteStatus&&this.registerEditorExtension([rL(this.app,this)]),this.settings.quickCapture.enableQuickCapture&&this.registerEditorExtension([wM(this.app,this)]),this.settings.quickCapture.enableMinimalMode&&(this.minimalQuickCaptureSuggest=new Qw(this.app,this),this.registerEditorSuggest(this.minimalQuickCaptureSuggest)),this.settings.taskFilter.enableTaskFilter&&this.registerEditorExtension([S2(this)]),this.registerEditorExtension([Yj()])}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(Bc)[0];if(t){e.revealLeaf(t);return}let r=e.getLeaf("tab");await r.setViewState({type:Bc}),e.revealLeaf(r)}async closeAllViewsFromTaskGenius(){let{workspace:e}=this.app;e.getLeavesOfType(Gn).forEach(l=>l.detach()),e.getLeavesOfType(yn).forEach(l=>l.detach()),e.getLeavesOfType(Po).forEach(l=>l.detach()),e.getLeavesOfType(qc).forEach(l=>l.detach()),e.getLeavesOfType(Ol).forEach(l=>l.detach())}compareVersions(e,t){if(e===t)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(let o=0;o<s;o++){let l=r[o]||0,d=i[o]||0;if(l<d)return-1;if(l>d)return 1}return 0}async checkMigrationAndMaybeShowOnboarding(){var e,t;try{let i=(await this.versionManager.checkVersionChange()).versionInfo.previous,s=((e=this.settings.changelog)==null?void 0:e.lastVersion)||"",o=(t=this.manifest)==null?void 0:t.version;if(!o)return;i&&this.compareVersions(i,"9.8.14")>0&&this.compareVersions(i,"9.9.0")<0&&s!=="9.9.0"&&(`${i}${o}`,this.openOnboardingView(),this.settings.changelog.lastVersion=o,await this.saveSettings())}catch(r){console.error("[Task Genius] Failed to check migration onboarding:",r)}}maybeShowChangelog(){var e;try{if(!this.changelogManager)return;let t=(e=this.manifest)==null?void 0:e.version;if(!t)return;let r=this.settings.changelog;if(!(r!=null&&r.enabled))return;let i=r.lastVersion||"";if(t===i)return;let s=t.toLowerCase().includes("beta");this.changelogManager.openChangelog(t,s)}catch(t){console.error("[Task Genius] Failed to show changelog:",t)}}async loadSettings(){var t;let e=await this.loadData();this.settings=Object.assign({},xe,e),this.settings.changelog=Object.assign({enabled:!0,lastVersion:""},(t=this.settings.changelog)!=null?t:{});try{console.debug("[Plugin][loadSettings] fileMetadataInheritance (raw):",e==null?void 0:e.fileMetadataInheritance),console.debug("[Plugin][loadSettings] fileMetadataInheritance (effective):",this.settings.fileMetadataInheritance)}catch(r){}sH(this.settings),this.settings.statusCycles&&(this.settings.statusCycles=oH(this.settings.statusCycles)),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=xe.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(){var e;if(!this.isActivatingView){this.isActivatingView=!0;try{let{workspace:t}=this.app,r=(e=this.settings.fluentView)!=null&&e.enableFluent?yn:Gn,i=t.getLeavesOfType(r);if(i.length>0){t.revealLeaf(i[0]);for(let o=1;o<i.length;o++)i[o].detach();return}let s=t.getLeaf("tab");await s.setViewState({type:r}),await t.revealLeaf(s)}finally{this.isActivatingView=!1}}}async activateTimelineSidebarView(){if(!this.isActivatingSidebar){this.isActivatingSidebar=!0;try{let{workspace:e}=this.app,t=e.getLeavesOfType(qc);if(t.length>0){e.revealLeaf(t[0]);for(let i=1;i<t.length;i++)t[i].detach();return}let r=e.getRightLeaf(!1);r&&(await r.setViewState({type:qc}),e.revealLeaf(r))}finally{this.isActivatingSidebar=!1}}}async triggerViewUpdate(){let e=this.app.workspace.getLeavesOfType(Gn);if(e.length>0)for(let r of e)r.view instanceof Kf&&(Array.isArray(this.preloadedTasks)&&this.preloadedTasks.length>0&&(r.view.tasks=this.preloadedTasks),r.view.triggerViewUpdate());let t=this.app.workspace.getLeavesOfType(qc);if(t.length>0)for(let r of t)r.view instanceof Qf&&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(d=>d.extension==="md"||d.extension==="canvas");this.rebuildProgressManager.startRebuild(i.length,r.rebuildReason);try{await((e=this.habitManager)==null?void 0:e.initializeHabits())}catch(d){console.warn("Failed to refresh habits after rebuild",d)}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(d=>d.extension==="md"||d.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 */