0&&(e+=`
-`),e+=this.filters[i].explainFilterIndented("");return this._limit!==void 0&&(e+=`
-
-At most ${this._limit} task`,this._limit!==1&&(e+="s"),e+=`.
-`),e}get limit(){return this._limit}get layoutOptions(){return this._layoutOptions}get filters(){return this._filters}get sorting(){return this._sorting}get grouping(){return this._grouping}get error(){return this._error}applyQueryToTasks(e){this.filters.forEach(n=>{e=e.filter(n.filterFunction)});let t=si.by(this.sorting,e).slice(0,this.limit);return Mr.by(this.grouping,t)}parseHideOptions({line:e}){let t=e.match(this.hideOptionsRegexp);if(t!==null){let n=t[1]==="hide";switch(t[2]){case"task count":this._layoutOptions.hideTaskCount=n;break;case"backlink":this._layoutOptions.hideBacklinks=n;break;case"priority":this._layoutOptions.hidePriority=n;break;case"start date":this._layoutOptions.hideStartDate=n;break;case"scheduled date":this._layoutOptions.hideScheduledDate=n;break;case"due date":this._layoutOptions.hideDueDate=n;break;case"done date":this._layoutOptions.hideDoneDate=n;break;case"recurrence rule":this._layoutOptions.hideRecurrenceRule=n;break;case"edit button":this._layoutOptions.hideEditButton=n;break;case"urgency":this._layoutOptions.hideUrgency=n;break;default:this._error="do not understand hide/show option"}}}parseFilter(e){let t=go(e);return t!=null?(t.filter?this._filters.push(t.filter):this._error=t.error,!0):!1}parseLimit({line:e}){let t=e.match(this.limitRegexp);t!==null?this._limit=Number.parseInt(t[2],10):this._error="do not understand query limit"}parseSortBy({line:e}){let t=sT(e);return t?(this._sorting.push(t),!0):!1}parseGroupBy({line:e}){let t=e.match(this.groupByRegexp);t!==null?this._grouping.push(Mr.fromGroupingProperty(t[1])):this._error="do not understand query grouping"}parseGroupBy2({line:e}){let t=aT(e);return t?(this._grouping.push(t),!0):!1}};var ko=class{constructor({plugin:e,events:t}){this.addQueryRenderChild=this._addQueryRenderChild.bind(this);this.app=e.app,this.events=t,e.registerMarkdownCodeBlockProcessor("tasks",this._addQueryRenderChild.bind(this))}_addQueryRenderChild(e,t,n){return N(this,null,function*(){n.addChild(new pf({app:this.app,events:this.events,container:t,source:e,filePath:n.sourcePath}))})}},pf=class extends Ao.MarkdownRenderChild{constructor({app:t,events:n,container:i,source:s,filePath:a}){super(i);switch(this.app=t,this.events=n,this.source=s,this.filePath=a,this.containerEl.className){case"block-language-tasks":this.query=new fi({source:s}),this.queryType="tasks";break;default:this.query=new fi({source:s}),this.queryType="tasks";break}}onload(){this.events.triggerRequestCacheUpdate(this.render.bind(this)),this.renderEventRef=this.events.onCacheUpdate(this.render.bind(this)),this.reloadQueryAtMidnight()}onunload(){this.renderEventRef!==void 0&&this.events.off(this.renderEventRef),this.queryReloadTimeout!==void 0&&clearTimeout(this.queryReloadTimeout)}reloadQueryAtMidnight(){let t=new Date;t.setHours(24,0,0,0);let n=new Date,i=t.getTime()-n.getTime();this.queryReloadTimeout=setTimeout(()=>{this.query=new fi({source:this.source}),this.events.triggerRequestCacheUpdate(this.render.bind(this)),this.reloadQueryAtMidnight()},i+1e3)}render(i){return N(this,arguments,function*({tasks:t,state:n}){var a;let s=this.containerEl.createEl("div");if(n==="Warm"&&this.query.error===void 0){console.debug(`Render ${this.queryType} called for a block in active file "${this.filePath}", to select from ${t.length} tasks: plugin state: ${n}`),this.query.layoutOptions.explainQuery&&this.createExplanation(s);let o=this.query.applyQueryToTasks(t);for(let l of o.groups){this.addGroupHeadings(s,l.groupHeadings);let{taskList:c}=yield this.createTasksList({tasks:l.tasks,content:s});s.appendChild(c)}let u=o.totalTasksCount();console.debug(`${u} of ${t.length} tasks displayed in a block in "${this.filePath}"`),this.addTaskCount(s,u)}else this.query.error!==void 0?s.createDiv().innerHTML=`Tasks query: ${this.query.error.replace(/\n/g," ")} `:s.setText("Loading Tasks ...");(a=this.containerEl.firstChild)==null||a.replaceWith(s)})}createExplanation(t){let n=this.query.explainQuery(),i=t.createEl("pre");i.addClasses(["plugin-tasks-query-explanation"]),i.setText(n),t.appendChild(i)}createTasksList(i){return N(this,arguments,function*({tasks:t,content:n}){let s=t.length,a=n.createEl("ul");a.addClasses(["contains-task-list","plugin-tasks-query-result"]);for(let o=0;oh.remove());let f=this.query.layoutOptions.shortMode;this.query.layoutOptions.hideUrgency||this.addUrgency(c,u),this.query.layoutOptions.hideBacklinks||this.addBacklinks(c,u,f,l),this.query.layoutOptions.hideEditButton||this.addEditButton(c,u),a.appendChild(c)}return{taskList:a,tasksCount:s}})}addEditButton(t,n){t.createEl("a",{cls:"tasks-edit"}).onClickEvent(s=>{s.preventDefault();let a=u=>{sa({originalTask:n,newTasks:st.removeInferredStatusIfNeeded(n,u)})};new Qn({app:this.app,task:n,onSubmit:a}).open()})}addUrgency(t,n){let i=new Intl.NumberFormat().format(n.urgency);t.createSpan({text:i,cls:"tasks-urgency"})}addGroupHeadings(t,n){for(let i of n)this.addGroupHeading(t,i)}addGroupHeading(t,n){return N(this,null,function*(){let i;n.nestingLevel===0?i=t.createEl("h4",{cls:"tasks-group-heading"}):n.nestingLevel===1?i=t.createEl("h5",{cls:"tasks-group-heading"}):i=t.createEl("h6",{cls:"tasks-group-heading"}),yield Ao.MarkdownRenderer.renderMarkdown(n.name,i,this.filePath,this)})}addBacklinks(t,n,i,s){var l;let a=t.createSpan({cls:"tasks-backlink"});i||a.append(" (");let o=a.createEl("a");if(o.href=n.path,o.setAttribute("data-href",n.path),o.rel="noopener",o.target="_blank",o.addClass("internal-link"),i&&o.addClass("internal-link-short-mode"),n.precedingHeader!==null){let c=n.precedingHeader.replace(/#/g,"");o.href=o.href+"#"+c,o.setAttribute("data-href",o.getAttribute("data-href")+"#"+c)}let u;i?u=" \u{1F517}":u=(l=n.getLinkText({isFilenameUnique:s}))!=null?l:"",o.setText(u),i||a.append(")")}addTaskCount(t,n){this.query.layoutOptions.hideTaskCount||t.createDiv({text:`${n} task${n!==1?"s":""}`,cls:"tasks-count"})}isFilenameUnique({task:t}){let n=t.path.match(/([^/]*)\..+$/i);if(n===null)return;let i=n[1];return this.app.vault.getMarkdownFiles().filter(a=>{if(a.basename===i)return!0}).length<2}};var he=require("obsidian");function oT(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],[">","Rescheduled","x","TODO"],["<","Scheduled","x","TODO"],["!","Important","x","TODO"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],["?","Question","x","TODO"],["*","Star","x","TODO"],["n","Note","x","TODO"],["l","Location","x","TODO"],["i","Information","x","TODO"],["I","Idea","x","TODO"],["S","Amount","x","TODO"],["p","Pro","x","TODO"],["c","Con","x","TODO"],["b","Bookmark","x","TODO"],['"',"Quote","x","TODO"],["0","Speech bubble 0","0","NON_TASK"],["1","Speech bubble 1","1","NON_TASK"],["2","Speech bubble 2","2","NON_TASK"],["3","Speech bubble 3","3","NON_TASK"],["4","Speech bubble 4","4","NON_TASK"],["5","Speech bubble 5","5","NON_TASK"],["6","Speech bubble 6","6","NON_TASK"],["7","Speech bubble 7","7","NON_TASK"],["8","Speech bubble 8","8","NON_TASK"],["9","Speech bubble 9","9","NON_TASK"]]}function uT(){return[[" ","incomplete","x","TODO"],["x","complete / done"," ","DONE"],["-","cancelled"," ","CANCELLED"],[">","deferred","x","TODO"],["/","in progress, or half-done","x","IN_PROGRESS"],["!","Important","x","TODO"],["?","question","x","TODO"],["R","review","x","TODO"],["+","Inbox / task that should be processed later","x","TODO"],["b","bookmark","x","TODO"],["B","brainstorm","x","TODO"],["D","deferred or scheduled","x","TODO"],["I","Info","x","TODO"],["i","idea","x","TODO"],["N","note","x","TODO"],["Q","quote","x","TODO"],["W","win / success / reward","x","TODO"],["P","pro","x","TODO"],["C","con","x","TODO"]]}function lT(){return[[" ","Unchecked","x","TODO"],["x","Checked"," ","DONE"],["-","Cancelled"," ","CANCELLED"],["/","In Progress","x","IN_PROGRESS"],[">","Deferred","x","TODO"],["!","Important","x","TODO"],["?","Question","x","TODO"],["r","Review","x","TODO"]]}function cT(){return[[" ","Unchecked","x","TODO"],["x","Regular"," ","DONE"],["X","Checked"," ","DONE"],["-","Dropped"," ","CANCELLED"],[">","Forward","x","TODO"],["D","Date","x","TODO"],["?","Question","x","TODO"],["/","Half Done","x","IN_PROGRESS"],["+","Add","x","TODO"],["R","Research","x","TODO"],["!","Important","x","TODO"],["i","Idea","x","TODO"],["B","Brainstorm","x","TODO"],["P","Pro","x","TODO"],["C","Con","x","TODO"],["Q","Quote","x","TODO"],["N","Note","x","TODO"],["b","Bookmark","x","TODO"],["I","Information","x","TODO"],["p","Paraphrase","x","TODO"],["L","Location","x","TODO"],["E","Example","x","TODO"],["A","Answer","x","TODO"],["r","Reward","x","TODO"],["c","Choice","x","TODO"],["d","Doing","x","IN_PROGRESS"],["T","Time","x","TODO"],["@","Character / Person","x","TODO"],["t","Talk","x","TODO"],["O","Outline / Plot","x","TODO"],["~","Conflict","x","TODO"],["W","World","x","TODO"],["f","Clue / Find","x","TODO"],["F","Foreshadow","x","TODO"],["H","Favorite / Health","x","TODO"],["&","Symbolism","x","TODO"],["s","Secret","x","TODO"]]}function dT(){return[[" ","to-do","x","TODO"],["/","incomplete","x","IN_PROGRESS"],["x","done"," ","DONE"],["-","canceled"," ","CANCELLED"],[">","forwarded","x","TODO"],["<","scheduling","x","TODO"],["?","question","x","TODO"],["!","important","x","TODO"],["*","star","x","TODO"],['"',"quote","x","TODO"],["l","location","x","TODO"],["b","bookmark","x","TODO"],["i","information","x","TODO"],["S","savings","x","TODO"],["I","idea","x","TODO"],["p","pros","x","TODO"],["c","cons","x","TODO"],["f","fire","x","TODO"],["k","key","x","TODO"],["w","win","x","TODO"],["u","up","x","TODO"],["d","down","x","TODO"]]}function fT(){return[[" ","to-do","x","TODO"],["/","incomplete","x","IN_PROGRESS"],["x","done"," ","DONE"],["-","canceled"," ","CANCELLED"],[">","forwarded","x","TODO"],["<","scheduling","x","TODO"],["?","question","x","TODO"],["!","important","x","TODO"],["*","star","x","TODO"],['"',"quote","x","TODO"],["l","location","x","TODO"],["b","bookmark","x","TODO"],["i","information","x","TODO"],["S","savings","x","TODO"],["I","idea","x","TODO"],["p","pros","x","TODO"],["c","cons","x","TODO"],["f","fire","x","TODO"],["k","key","x","TODO"],["w","win","x","TODO"],["u","up","x","TODO"],["d","down","x","TODO"]]}var pT=[{text:"Core Statuses",level:"h3",class:"",open:!0,notice:{class:"setting-item-description",text:null,html:" These are the core statuses that Tasks supports natively, with no need for custom CSS styling or theming.
You can add edit and add your own custom statuses in the section below.
"},settings:[{name:"",description:"",type:"function",initialValue:"",placeholder:"",settingName:"insertTaskCoreStatusSettings",featureFlag:"",notice:null}]},{text:"Custom Statuses",level:"h3",class:"",open:!0,notice:{class:"setting-item-description",text:null,html:`You should first select and install a CSS Snippet or Theme to style custom checkboxes.
Then, use the buttons below to set up your custom statuses, to match your chosen CSS checkboxes.
Note Any statuses with the same symbol as any earlier statuses will be ignored. You can confirm the actually loaded statuses by running the 'Create or edit task' command and looking at the Status drop-down.
See the documentation to get started!
`},settings:[{name:"",description:"",type:"function",initialValue:"",placeholder:"",settingName:"insertCustomTaskStatusSettings",featureFlag:"",notice:null}]}];var Vt=require("obsidian");var vn=class{validate(e){let t=[];return t.push(...this.validateSymbol(e)),t.push(...this.validateName(e)),t.push(...this.validateNextSymbol(e)),t}validateStatusCollectionEntry(e){let[t,n,i,s]=e,a=[];if(a.push(...this.validateType(s)),t===i&&s!=="NON_TASK"&&a.push(`Status symbol '${t}' toggles to itself`),a.length>0)return a;let o=W.createFromImportedValue(e).configuration;return a.push(...this.validateSymbolTypeConventions(o)),a.push(...this.validate(o)),a}validateSymbol(e){return vn.validateOneSymbol(e.symbol,"Task Status Symbol")}validateNextSymbol(e){return vn.validateOneSymbol(e.nextStatusSymbol,"Task Next Status Symbol")}validateName(e){let t=[];return e.name.length===0&&t.push("Task Status Name cannot be empty."),t}validateType(e){let t=Rt[e],n=[];return t||n.push(`Status Type "${e}" is not a valid type`),t=="EMPTY"&&n.push('Status Type "EMPTY" is not permitted in user data'),n}validateSymbolTypeConventions(e){let t=[],n=e.symbol,i=new de,s=n==="X"?"x":n,a=i.bySymbol(s);return a.type!=="EMPTY"&&(e.nextStatusSymbol!==a.nextStatusSymbol&&t.push(`Next Status Symbol for symbol '${n}': '${e.nextStatusSymbol}' is inconsistent with convention '${a.nextStatusSymbol}'`),e.type!==a.type&&t.push(`Status Type for symbol '${n}': '${e.type}' is inconsistent with convention '${a.type}'`)),t}static validateOneSymbol(e,t){let n=[];return e.length===0&&n.push(`${t} cannot be empty.`),e.length>1&&n.push(`${t} ("${e}") must be a single character.`),n}};var En=new vn,bt=class extends Vt.Modal{constructor(t,n,i){super(t.app);this.plugin=t;this.saved=!1;this.error=!1;this.statusSymbol=n.symbol,this.statusName=n.name,this.statusNextSymbol=n.nextStatusSymbol,this.statusAvailableAsCommand=n.availableAsCommand,this.type=n.type,this.isCoreStatus=i}statusConfiguration(){return new Fe(this.statusSymbol,this.statusName,this.statusNextSymbol,this.statusAvailableAsCommand,this.type)}display(){return N(this,null,function*(){let{contentEl:t}=this;t.empty();let n=t.createDiv(),i;new Vt.Setting(n).setName("Task Status Symbol").setDesc("This is the character between the square braces. (It can only be edited for Custom statuses, and not Core statuses.)").addText(l=>{i=l,l.setValue(this.statusSymbol).onChange(c=>{this.statusSymbol=c,bt.setValid(l,En.validateSymbol(this.statusConfiguration()))})}).setDisabled(this.isCoreStatus).then(l=>{bt.setValid(i,En.validateSymbol(this.statusConfiguration()))});let s;new Vt.Setting(n).setName("Task Status Name").setDesc("This is the friendly name of the task status.").addText(l=>{s=l,l.setValue(this.statusName).onChange(c=>{this.statusName=c,bt.setValid(l,En.validateName(this.statusConfiguration()))})}).then(l=>{bt.setValid(s,En.validateName(this.statusConfiguration()))});let a;new Vt.Setting(n).setName("Task Next Status Symbol").setDesc("When clicked on this is the symbol that should be used next.").addText(l=>{a=l,l.setValue(this.statusNextSymbol).onChange(c=>{this.statusNextSymbol=c,bt.setValid(l,En.validateNextSymbol(this.statusConfiguration()))})}).then(l=>{bt.setValid(a,En.validateNextSymbol(this.statusConfiguration()))}),new Vt.Setting(n).setName("Task Status Type").setDesc("Control how the status behaves for searching and toggling.").addDropdown(l=>{["TODO","IN_PROGRESS","DONE","CANCELLED","NON_TASK"].forEach(d=>{l.addOption(d,d)}),l.setValue(this.type).onChange(d=>{this.type=W.getTypeFromStatusTypeString(d)})}),W.tasksPluginCanCreateCommandsForStatuses()&&new Vt.Setting(n).setName("Available as command").setDesc("If enabled this status will be available as a command so you can assign a hotkey and toggle the status using it.").addToggle(l=>{l.setValue(this.statusAvailableAsCommand).onChange(c=>N(this,null,function*(){this.statusAvailableAsCommand=c}))});let o=t.createDiv(),u=new Vt.Setting(o);u.addButton(l=>(l.setTooltip("Save").setIcon("checkmark").onClick(()=>N(this,null,function*(){let c=En.validate(this.statusConfiguration());if(c.length>0){let d=c.join(`
-`)+`
-
-Fix errors before saving.`;new Vt.Notice(d);return}this.saved=!0,this.close()})),l)),u.addExtraButton(l=>(l.setIcon("cross").setTooltip("Cancel").onClick(()=>{this.saved=!1,this.close()}),l))})}onOpen(){this.display()}static setValidationError(t){t.inputEl.addClass("tasks-settings-is-invalid")}static removeValidationError(t){t.inputEl.removeClass("tasks-settings-is-invalid")}static setValid(t,n){n.length===0?bt.removeValidationError(t):bt.setValidationError(t)}};var pi=class extends he.PluginSettingTab{constructor({plugin:t}){super(t.app,t);this.customFunctions={insertTaskCoreStatusSettings:this.insertTaskCoreStatusSettings.bind(this),insertCustomTaskStatusSettings:this.insertCustomTaskStatusSettings.bind(this)};this.plugin=t}saveSettings(t){return N(this,null,function*(){yield this.plugin.saveSettings(),t&&this.display()})}display(){let{containerEl:t}=this;t.empty(),this.containerEl.addClass("tasks-settings"),t.createEl("h3",{text:"Tasks Settings"}),t.createEl("p",{cls:"tasks-setting-important",text:"Changing any settings requires a restart of obsidian."}),t.createEl("h4",{text:"Global filter Settings"}),new he.Setting(t).setName("Global task filter").setDesc(pi.createFragmentWithHTML('Recommended: Leave empty if you want all checklist items in your vault to be tasks managed by this plugin.
Use a global filter if you want Tasks to only act on a subset of your "- [ ]" checklist items, so that a checklist item must include the specified string in its description in order to be considered a task.
For example, if you set the global filter to #task, the Tasks plugin will only handle checklist items tagged with #task.Other checklist items will remain normal checklist items and not appear in queries or get a done date set.
See the documentation .
')).addText(i=>{let s=U();i.setPlaceholder("e.g. #task or TODO").setValue(s.globalFilter).onChange(a=>N(this,null,function*(){it({globalFilter:a}),yield this.plugin.saveSettings()}))}),new he.Setting(t).setName("Remove global filter from description").setDesc("Enabling this removes the string that you set as global filter from the task description when displaying a task.").addToggle(i=>{let s=U();i.setValue(s.removeGlobalFilter).onChange(a=>N(this,null,function*(){it({removeGlobalFilter:a}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Task Statuses"});let{headingOpened:n}=U();pT.forEach(i=>{this.addOneSettingsBlock(t,i,n)}),t.createEl("h4",{text:"Date Settings"}),new he.Setting(t).setName("Set done date on every completed task").setDesc("Enabling this will add a timestamp \u2705 YYYY-MM-DD at the end when a task is toggled to done").addToggle(i=>{let s=U();i.setValue(s.setDoneDate).onChange(a=>N(this,null,function*(){it({setDoneDate:a}),yield this.plugin.saveSettings()}))}),new he.Setting(t).setName("Use filename as Scheduled date for undated tasks").setDesc(pi.createFragmentWithHTML('Save time entering Scheduled (\u23F3) dates.If this option is enabled, any undated tasks will be given a default Scheduled date extracted from their file name.The date in the file name must be in one of YYYY-MM-DD or YYYYMMDD formats.Undated tasks have none of Due (\u{1F4C5} ), Scheduled (\u23F3) and Start (\u{1F6EB}) dates.See the documentation .
')).addToggle(i=>{let s=U();i.setValue(s.useFilenameAsScheduledDate).onChange(a=>N(this,null,function*(){it({useFilenameAsScheduledDate:a}),yield this.plugin.saveSettings()}))}),new he.Setting(t).setName("Folders with default Scheduled dates").setDesc("Leave empty if you want to use default Scheduled dates everywhere, or enter a comma-separated list of folders.").addText(i=>N(this,null,function*(){let s=U();yield this.plugin.saveSettings(),i.setValue(pi.renderFolderArray(s.filenameAsDateFolders)).onChange(a=>N(this,null,function*(){let o=pi.parseCommaSeparatedFolders(a);it({filenameAsDateFolders:o}),yield this.plugin.saveSettings()}))})),t.createEl("h4",{text:"Auto-suggest Settings"}),new he.Setting(t).setName("Auto-suggest task content").setDesc("Enabling this will open an intelligent suggest menu while typing inside a recognized task line.").addToggle(i=>{let s=U();i.setValue(s.autoSuggestInEditor).onChange(a=>N(this,null,function*(){it({autoSuggestInEditor:a}),yield this.plugin.saveSettings()}))}),new he.Setting(t).setName("Minimum match length for auto-suggest").setDesc("If higher than 0, auto-suggest will be triggered only when the beginning of any supported keywords is recognized.").addSlider(i=>{let s=U();i.setLimits(0,3,1).setValue(s.autoSuggestMinMatch).setDynamicTooltip().onChange(a=>N(this,null,function*(){it({autoSuggestMinMatch:a}),yield this.plugin.saveSettings()}))}),new he.Setting(t).setName("Maximum number of auto-suggestions to show").setDesc('How many suggestions should be shown when an auto-suggest menu pops up (including the "\u23CE" option).').addSlider(i=>{let s=U();i.setLimits(3,12,1).setValue(s.autoSuggestMaxItems).setDynamicTooltip().onChange(a=>N(this,null,function*(){it({autoSuggestMaxItems:a}),yield this.plugin.saveSettings()}))}),t.createEl("h4",{text:"Dialog Settings"}),new he.Setting(t).setName("Provide access keys in dialogs").setDesc("If the access keys (keyboard shortcuts) for various controls in dialog boxes conflict with system keyboard shortcuts or assistive technology functionality that is important for you, you may want to deactivate them here.").addToggle(i=>{let s=U();i.setValue(s.provideAccessKeys).onChange(a=>N(this,null,function*(){it({provideAccessKeys:a}),yield this.plugin.saveSettings()}))})}addOneSettingsBlock(t,n,i){let s=t.createEl("details",{cls:"tasks-nested-settings",attr:Re({},n.open||i[n.text]?{open:!0}:{})});s.empty(),s.ontoggle=()=>{i[n.text]=s.open,it({headingOpened:i}),this.plugin.saveSettings()};let a=s.createEl("summary");if(new he.Setting(a).setHeading().setName(n.text),a.createDiv("collapser").createDiv("handle"),n.notice!==null){let o=s.createEl("div",{cls:n.notice.class,text:n.notice.text});n.notice.html!==null&&o.insertAdjacentHTML("beforeend",n.notice.html)}n.settings.forEach(o=>{if(!(o.featureFlag!==""&&!Wp(o.featureFlag))&&(o.type==="checkbox"?new he.Setting(s).setName(o.name).setDesc(o.description).addToggle(u=>{let l=U();l.generalSettings[o.settingName]||Xr(o.settingName,o.initialValue),u.setValue(l.generalSettings[o.settingName]).onChange(c=>N(this,null,function*(){Xr(o.settingName,c),yield this.plugin.saveSettings()}))}):o.type==="text"?new he.Setting(s).setName(o.name).setDesc(o.description).addText(u=>{let l=U();l.generalSettings[o.settingName]||Xr(o.settingName,o.initialValue);let c=d=>N(this,null,function*(){Xr(o.settingName,d),yield this.plugin.saveSettings()});u.setPlaceholder(o.placeholder.toString()).setValue(l.generalSettings[o.settingName].toString()).onChange((0,he.debounce)(c,500,!0))}):o.type==="textarea"?new he.Setting(s).setName(o.name).setDesc(o.description).addTextArea(u=>{let l=U();l.generalSettings[o.settingName]||Xr(o.settingName,o.initialValue);let c=d=>N(this,null,function*(){Xr(o.settingName,d),yield this.plugin.saveSettings()});u.setPlaceholder(o.placeholder.toString()).setValue(l.generalSettings[o.settingName].toString()).onChange((0,he.debounce)(c,500,!0)),u.inputEl.rows=8,u.inputEl.cols=40}):o.type==="function"&&this.customFunctions[o.settingName](s,this),o.notice!==null)){let u=s.createEl("p",{cls:o.notice.class,text:o.notice.text});o.notice.html!==null&&u.insertAdjacentHTML("beforeend",o.notice.html)}})}static parseCommaSeparatedFolders(t){return t.split(",").map(n=>n.trim()).map(n=>n.replace(/^\/|\/$/g,"")).filter(n=>n!=="")}static renderFolderArray(t){return t.join(",")}insertTaskCoreStatusSettings(t,n){let{statusSettings:i}=U();i.coreStatuses.forEach(s=>{hT(t,s,i.coreStatuses,i,n,n.plugin,!0)})}insertCustomTaskStatusSettings(t,n){let{statusSettings:i}=U();i.customStatuses.forEach(l=>{hT(t,l,i.customStatuses,i,n,n.plugin,!1)}),t.createEl("div"),new he.Setting(t).addButton(l=>{l.setButtonText("Add New Task Status").setCta().onClick(()=>N(this,null,function*(){xe.addStatus(i.customStatuses,new Fe("","","",!1,"TODO")),yield hi(i,n)}))}).infoEl.remove();let a=[["AnuPpuccin Theme",oT()],["Ebullientworks Theme",lT()],["ITS Theme & SlRvb Checkboxes",cT()],["Minimal Theme",dT()],["Things Theme",fT()],["Aura Theme (Dark mode only)",uT()]];for(let[l,c]of a)new he.Setting(t).addButton(f=>{let h=`${l}: Add ${c.length} supported Statuses`;f.setButtonText(h).onClick(()=>N(this,null,function*(){yield iA(c,i,n)}))}).infoEl.remove();new he.Setting(t).addButton(l=>{l.setButtonText("Add All Unknown Status Types").setCta().onClick(()=>N(this,null,function*(){let d=this.plugin.getTasks().map(h=>h.status),f=de.getInstance().findUnknownStatuses(d);f.length!==0&&(f.forEach(h=>{xe.addStatus(i.customStatuses,h)}),yield hi(i,n))}))}).infoEl.remove(),new he.Setting(t).addButton(l=>{l.setButtonText("Reset Custom Status Types to Defaults").setWarning().onClick(()=>N(this,null,function*(){xe.resetAllCustomStatuses(i),yield hi(i,n)}))}).infoEl.remove()}},Ws=pi;Ws.createFragmentWithHTML=t=>createFragment(n=>n.createDiv().innerHTML=t);function hT(r,e,t,n,i,s,a){let o=r.createEl("pre");o.addClass("row-for-status"),o.textContent=new W(e).previewText();let u=new he.Setting(r);u.infoEl.replaceWith(o),a||u.addExtraButton(l=>{l.setIcon("cross").setTooltip("Delete").onClick(()=>N(this,null,function*(){xe.deleteStatus(t,e)&&(yield hi(n,i))}))}),u.addExtraButton(l=>{l.setIcon("pencil").setTooltip("Edit").onClick(()=>N(this,null,function*(){let c=new bt(s,e,a);c.onClose=()=>N(this,null,function*(){c.saved&&xe.replaceStatus(t,e,c.statusConfiguration())&&(yield hi(n,i))}),c.open()}))}),u.infoEl.remove()}function iA(r,e,t){return N(this,null,function*(){xe.bulkAddStatusCollection(e,r).forEach(i=>{new he.Notice(i)}),yield hi(e,t)})}function hi(r,e){return N(this,null,function*(){it({statusSettings:r}),xe.applyToStatusRegistry(r,de.getInstance()),yield e.saveSettings(!0)})}var yT=require("obsidian");var sA=`${Ut}${Lt}${qt}`;function mT(r,e,t){let n=[];n=n.concat(uA(r,e,t)),n=n.concat(lA(r,e,t));let i=oA(r,t),s=hf(r,/([a-zA-Z'_-]*)/g,e),a=!1;if(s&&s.length>0){let o=s[0];if(o.length>=Math.max(1,t.autoSuggestMinMatch)){let u=i.filter(l=>l.displayText.toLowerCase().includes(o.toLowerCase()));for(let l of u)n.push({suggestionType:"match",displayText:l.displayText,appendText:l.appendText,insertAt:s.index,insertSkip:o.length}),a=!0}}return!a&&t.autoSuggestMinMatch===0&&(n=n.concat(i)),n.length>0&&!n.some(o=>o.suggestionType==="match")&&n.unshift({suggestionType:"empty",displayText:"\u23CE",appendText:`
-`}),n=n.slice(0,t.autoSuggestMaxItems),n}function aA(r){if(Object.values(Ce).some(e=>e.length>0&&r.includes(e)))return!0}function oA(r,e){let t=[];return r.includes(qt)||t.push({displayText:`${qt} due date`,appendText:`${qt} `}),r.includes(Ut)||t.push({displayText:`${Ut} start date`,appendText:`${Ut} `}),r.includes(Lt)||t.push({displayText:`${Lt} scheduled date`,appendText:`${Lt} `}),aA(r)||(t.push({displayText:`${Ce.High} high priority`,appendText:`${Ce.High} `}),t.push({displayText:`${Ce.Medium} medium priority`,appendText:`${Ce.Medium} `}),t.push({displayText:`${Ce.Low} low priority`,appendText:`${Ce.Low} `})),r.includes(Ft)||t.push({displayText:`${Ft} recurring (repeat)`,appendText:`${Ft} `}),t}function uA(r,e,t){let n=["today","tomorrow","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","next week","next month","next year"],i=[],s=new RegExp(`([${sA}])\\s*([0-9a-zA-Z ]*)`,"ug"),a=hf(r,s,e);if(a&&a.length>=2){let o=a[1],u=a[2];if(u.length1?Er.parseDate(Zn(u),!0):null;l&&l.isValid()&&i.push({displayText:`${l.format(S.dateFormat)}`,appendText:`${o} ${l.format(S.dateFormat)} `,insertAt:a.index,insertSkip:a[0].length});let c=1,d=5,f=n.filter(h=>u&&u.length>=c&&h.toLowerCase().includes(u.toLowerCase())).slice(0,d);f.length===0&&(f=n.slice(0,d));for(let h of f){let m=`${Er.parseDate(h,!0).format(S.dateFormat)}`;i.push({suggestionType:"match",displayText:`${h} (${m})`,appendText:`${o} ${m} `,insertAt:a.index,insertSkip:a[0].length})}}return i}function lA(r,e,t){var o;let n=["every","every day","every week","every month","every month on the","every year","every week on Sunday","every week on Monday","every week on Tuesday","every week on Wednesday","every week on Thursday","every week on Friday","every week on Saturday"],i=[],s=new RegExp(`(${Ft})\\s*([0-9a-zA-Z ]*)`,"ug"),a=hf(r,s,e);if(a&&a.length>=2){let u=a[1],l=a[2];if(l.length0){let h=(o=Ie.fromText({recurrenceRuleText:l,startDate:null,scheduledDate:null,dueDate:null}))==null?void 0:o.toText();if(h){let y=`${u} ${h} `;if(i.push({suggestionType:"match",displayText:`\u2705 ${h}`,appendText:y,insertAt:a.index,insertSkip:a[0].length}),a[0]==y)return[]}}let c=1,d=t.autoSuggestMaxItems/2,f=n.filter(h=>l&&l.length>=c&&h.toLowerCase().includes(l.toLowerCase())).slice(0,d);f.length===0&&l.trim().length===0&&(f=n.slice(0,d));for(let h of f)i.push({suggestionType:"match",displayText:`${h}`,appendText:`${u} ${h} `,insertAt:a.index,insertSkip:a[0].length})}return i}function hf(r,e,t){let n=r.matchAll(e);for(let i of n)if((i==null?void 0:i.index)&&i.index<=t&&t<=i.index+i[0].length)return i;return[]}var Po=class extends yT.EditorSuggest{constructor(t,n){super(t);this.settings=n}onTrigger(t,n,i){if(!this.settings.autoSuggestInEditor)return null;let s=n.getLine(t.line);return s.contains(this.settings.globalFilter)&&s.match(S.taskRegex)?{start:{line:t.line,ch:0},end:{line:t.line,ch:s.length},query:s}:null}getSuggestions(t){let n=t.query,i=t.editor.getCursor(),s=mT(n,i.ch,this.settings),a=[];for(let o of s)a.push(wt(Re({},o),{context:t}));return a}renderSuggestion(t,n){n.setText(t.displayText)}selectSuggestion(t,n){var u,l,c;let i=t.context.editor;if(t.suggestionType==="empty"){this.close();let d=new KeyboardEvent("keydown",{code:"Enter",key:"Enter"});(l=(u=i==null?void 0:i.cm)==null?void 0:u.contentDOM)==null||l.dispatchEvent(d);return}let s=t.context.editor.getCursor(),a={line:s.line,ch:(c=t.insertAt)!=null?c:s.ch},o=t.insertSkip?{line:s.line,ch:a.ch+t.insertSkip}:void 0;t.context.editor.replaceRange(t.appendText,a,o),t.context.editor.setCursor({line:s.line,ch:a.ch+t.appendText.length})}};var xo=class extends gT.Plugin{onload(){return N(this,null,function*(){console.log('loading plugin "tasks"'),yield this.loadSettings(),this.addSettingTab(new Ws({plugin:this})),jp({metadataCache:this.app.metadataCache,vault:this.app.vault}),yield this.loadTaskStatuses();let t=new so({obsidianEvents:this.app.workspace});this.cache=new Zr({metadataCache:this.app.metadataCache,vault:this.app.vault,events:t}),this.inlineRenderer=new ao({plugin:this}),this.queryRenderer=new ko({plugin:this,events:t}),this.registerEditorExtension(B_()),this.registerEditorSuggest(new Po(this.app,U())),new io({plugin:this})})}loadTaskStatuses(){return N(this,null,function*(){let{statusSettings:t}=U();xe.applyToStatusRegistry(t,de.getInstance())})}onunload(){var t;console.log('unloading plugin "tasks"'),(t=this.cache)==null||t.unload()}loadSettings(){return N(this,null,function*(){let t=yield this.loadData();it(t),yield this.loadTaskStatuses()})}saveSettings(){return N(this,null,function*(){yield this.saveData(U())})}getTasks(){var t;return(t=this.cache)==null?void 0:t.getTasks()}};
diff --git a/.obsidian/plugins/obsidian-tasks-plugin/manifest.json b/.obsidian/plugins/obsidian-tasks-plugin/manifest.json
deleted file mode 100644
index 459d00a..0000000
--- a/.obsidian/plugins/obsidian-tasks-plugin/manifest.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "id": "obsidian-tasks-plugin",
- "name": "Tasks",
- "version": "1.25.0",
- "minAppVersion": "0.14.6",
- "description": "Task management for Obsidian",
- "author": "Martin Schenck and Clare Macrae",
- "authorUrl": "https://github.com/obsidian-tasks-group",
- "isDesktopOnly": false
-}
diff --git a/.obsidian/plugins/obsidian-tasks-plugin/styles.css b/.obsidian/plugins/obsidian-tasks-plugin/styles.css
deleted file mode 100644
index 4aea775..0000000
--- a/.obsidian/plugins/obsidian-tasks-plugin/styles.css
+++ /dev/null
@@ -1,298 +0,0 @@
-:root {
- --tasks-details-icon: url("data:image/svg+xml;charset=utf-8, ");
-
-}
-
-.plugin-tasks-query-explanation{
- /* Prevent long explanation lines wrapping, so they are more readable,
- especially on small screens.
-
- A horizontal scroll bar will be displayed, if the explanation
- is too wide to fit.
- */
- --code-white-space: pre;
-}
-
-.tasks-count {
- color: var(--text-faint);
- padding-left: 20px;
-}
-
-/* Pencil icon. */
-.tasks-edit {
- background-color: var(--text-faint);
- mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20aria-hidden%3D%22true%22%20focusable%3D%22false%22%20width%3D%221em%22%20height%3D%221em%22%20style%3D%22-ms-transform%3A%20rotate(360deg)%3B%20-webkit-transform%3A%20rotate(360deg)%3B%20transform%3A%20rotate(360deg)%3B%22%20preserveAspectRatio%3D%22xMidYMid%20meet%22%20viewBox%3D%220%200%201536%201536%22%3E%3Cpath%20d%3D%22M363%201408l91-91l-235-235l-91%2091v107h128v128h107zm523-928q0-22-22-22q-10%200-17%207l-542%20542q-7%207-7%2017q0%2022%2022%2022q10%200%2017-7l542-542q7-7%207-17zm-54-192l416%20416l-832%20832H0v-416zm683%2096q0%2053-37%2090l-166%20166l-416-416l166-165q36-38%2090-38q53%200%2091%2038l235%20234q37%2039%2037%2091z%22%20fill%3D%22%23626262%22%2F%3E%3C%2Fsvg%3E");
- -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20aria-hidden%3D%22true%22%20focusable%3D%22false%22%20width%3D%221em%22%20height%3D%221em%22%20style%3D%22-ms-transform%3A%20rotate(360deg)%3B%20-webkit-transform%3A%20rotate(360deg)%3B%20transform%3A%20rotate(360deg)%3B%22%20preserveAspectRatio%3D%22xMidYMid%20meet%22%20viewBox%3D%220%200%201536%201536%22%3E%3Cpath%20d%3D%22M363%201408l91-91l-235-235l-91%2091v107h128v128h107zm523-928q0-22-22-22q-10%200-17%207l-542%20542q-7%207-7%2017q0%2022%2022%2022q10%200%2017-7l542-542q7-7%207-17zm-54-192l416%20416l-832%20832H0v-416zm683%2096q0%2053-37%2090l-166%20166l-416-416l166-165q36-38%2090-38q53%200%2091%2038l235%20234q37%2039%2037%2091z%22%20fill%3D%22%23626262%22%2F%3E%3C%2Fsvg%3E");
- mask-size: contain;
- -webkit-mask-size: contain;
- display: inline-block;
- width: 1em;
- height: 1em;
- vertical-align: middle;
- margin-left: 0.5em;
- cursor: pointer;
-}
-
-/* Urgency score */
-.tasks-urgency {
- font-size: var(--font-ui-smaller);
- font-family: var(--font-interface);
- padding: 2px 6px;
- border-radius: var(--radius-s);
- color: var(--text-normal);
- background-color: var(--background-secondary);
- margin-left: 0.5em;
- line-height: 1;
-}
-
-.internal-link.internal-link-short-mode {
- text-decoration: none;
-}
-
-.tasks-list-text {
- position: relative;
-}
-
-.tasks-list-text .tooltip {
- position: absolute;
- top: 0px;
- left: 0px;
- white-space: nowrap;
-}
-
-.tasks-setting-important {
- color: red;
- font-weight: bold;
-}
-
-/**------------------------------------------------------------------------
- ** MODAL
- *------------------------------------------------------------------------**/
-
-.tasks-modal-section + .tasks-modal-section {
- margin-top: 16px;
-}
-
-.tasks-modal-section label {
- display: inline-block;
- margin-bottom: 4px;
-}
-
-.tasks-modal-section label > span {
- display: inline-block;
-}
-
-.tasks-modal .with-accesskeys .accesskey-first::first-letter,
-.tasks-modal .with-accesskeys .accesskey {
- text-decoration: underline;
- text-underline-offset: 1pt;
-}
-
-.tasks-modal-buttons {
- display: grid;
- grid-template-columns: 3fr 1fr;
- column-gap: .5em;
-}
-
-.tasks-modal label + input[type="checkbox"] {
- margin-left: 0.67em;
- top: 2px;
-}
-
-.tasks-modal input[type="text"] {
- width: 100%;
-}
-
-.tasks-modal-priorities {
- display: grid;
- grid-template-columns: 4em 5em 5em 7em 5em;
- grid-column-gap: 1.33em;
-}
-
-.tasks-modal-priorities span {
- line-height: 1.41;
- white-space: nowrap;
-}
-
-.tasks-modal-priorities label {
- border-radius: var(--input-radius);
- padding: 2px 3px;
-}
-
-.tasks-modal-priorities input:focus + label {
- box-shadow: 0 0 0 2px var(--background-modifier-border-focus);
- border-color: var(--background-modifier-border-focus);
-}
-
-.tasks-modal-priorities input:checked + label > span:first-child {
- font-weight: bold;
-}
-
-.tasks-modal-priorities input:not(:checked) + label > span:nth-child(2) {
- filter: grayscale(100%) opacity(60%);
-}
-
-.tasks-modal-dates {
- display: grid;
- grid-template-columns: 5.5em auto;
- column-gap: .5em;
- row-gap: 5px;
-}
-
-.tasks-modal-dates > label {
- grid-column: 1;
- margin-top: 6px;
-}
-
-.tasks-modal-dates > input, .tasks-modal-dates > code {
- grid-column: 2;
- align-items: stretch;
-}
-
-.tasks-modal-dates > code {
- margin-bottom: 5px;
-}
-
-.tasks-modal-dates > div {
- grid-column-start: 1;
- grid-column-end: 3;
-}
-
-.tasks-modal-status {
- display: flex;
- justify-content: space-between;
-}
-
-.tasks-modal-error {
- border: 1px solid red !important;
-}
-
-.tasks-modal button:disabled {
- pointer-events: none !important;
- opacity: 0.3 !important;
-}
-
-@media (max-width: 649px) {
- .tasks-modal-priorities {
- grid-template-columns: 4em 7.5em 5em;
- margin-bottom: -10px;
- }
- .tasks-modal-priorities > label {
- grid-row: 1 / span 2;
- }
- .tasks-modal-dates {
- grid-template-columns: 1fr;
- }
- .tasks-modal-dates > label {
- margin: 0;
- }
- .tasks-modal-dates > input, .tasks-modal-dates > code {
- grid-column: 1;
- }
- .tasks-modal-dates > div {
- grid-column-end: 1;
- }
- .tasks-modal-status {
- display: block;
- }
-}
-
-@media (max-width: 399px) {
- .tasks-modal-priorities {
- grid-template-columns: 4em auto;
- }
- .tasks-modal-priorities > label {
- grid-row: 1 / span 4;
- }
-}
-
-@media (max-width: 259px) {
- .tasks-modal-priorities {
- grid-template-columns: 1fr;
- margin-bottom: 0;
- }
- .tasks-modal-priorities > label {
- grid-row: 1;
- }
-}
-
-/**------------------------------------------------------------------------
- ** SETTINGS
- *------------------------------------------------------------------------**/
-
-.tasks-settings-is-invalid {
- /* Dark red text on pale background*/
- color: var(--text-error) !important;
- background-color: rgba(var(--background-modifier-error-rgb), 0.2) !important;
-}
-
-
- .tasks-settings .additional {
- margin: 6px 12px;
-}
-.tasks-settings .additional > .setting-item {
- border-top: 0;
- padding-top: 9px;
-}
-
-
-.tasks-settings details > summary {
- outline: none;
- display: block !important;
- list-style: none !important;
- list-style-type: none !important;
- min-height: 1rem;
- border-top-left-radius: 0.1rem;
- border-top-right-radius: 0.1rem;
- cursor: pointer;
- position: relative;
-}
-
-.tasks-settings details > summary::-webkit-details-marker,
-.tasks-settings details > summary::marker {
- display: none !important;
-}
-
-.tasks-settings details > summary > .collapser {
- position: absolute;
- top: 50%;
- right: 8px;
- transform: translateY(-50%);
- content: "";
-}
-
-.tasks-settings details > summary > .collapser > .handle {
- transform: rotate(0deg);
- transition: transform 0.25s;
- background-color: currentColor;
- -webkit-mask-repeat: no-repeat;
- mask-repeat: no-repeat;
- -webkit-mask-size: contain;
- mask-size: contain;
- -webkit-mask-image: var(--tasks-details-icon);
- mask-image: var(--tasks-details-icon);
- width: 20px;
- height: 20px;
-}
-
-.tasks-settings details[open] > summary > .collapser > .handle {
- transform: rotate(90deg);
-}
-
-.tasks-nested-settings .setting-item {
- border: 0px;
- padding-bottom: 0;
-}
-.tasks-nested-settings {
- padding-bottom: 18px;
-}
-.tasks-nested-settings[open] .setting-item-heading,
-.tasks-nested-settings:not(details) .setting-item-heading {
- border-top: 0px;
- border-bottom: 1px solid var(--background-modifier-border);
-}
-
-.tasks-settings .row-for-status {
- margin-top: 0px;
- margin-bottom: 0px;
-}
diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json
index 8289792..dfd2b3d 100644
--- a/.obsidian/workspace.json
+++ b/.obsidian/workspace.json
@@ -4,16 +4,16 @@
"type": "split",
"children": [
{
- "id": "f947ce0a0b060a6d",
+ "id": "36cd3ae527e35a9d",
"type": "tabs",
"children": [
{
- "id": "8ed24f07e71c95c9",
+ "id": "cfd9802490841a0a",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
- "file": "Books/未命名.md",
+ "file": "Books/代码随想录/代码随想录.md",
"mode": "source",
"source": false
}
@@ -85,7 +85,7 @@
"state": {
"type": "backlink",
"state": {
- "file": "Books/未命名.md",
+ "file": "Books/代码随想录/代码随想录.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
@@ -102,7 +102,7 @@
"state": {
"type": "outgoing-link",
"state": {
- "file": "Books/未命名.md",
+ "file": "Books/代码随想录/代码随想录.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
}
@@ -125,7 +125,7 @@
"state": {
"type": "outline",
"state": {
- "file": "Books/未命名.md"
+ "file": "Books/代码随想录/代码随想录.md"
}
}
},
@@ -136,36 +136,18 @@
"type": "advanced-tables-toolbar",
"state": {}
}
- },
- {
- "id": "956a18952dde4b3b",
- "type": "leaf",
- "state": {
- "type": "calendar",
- "state": {}
- }
- },
- {
- "id": "d48efbe492f71eab",
- "type": "leaf",
- "state": {
- "type": "side-panel-control-view",
- "state": {}
- }
}
],
- "currentTab": 4
+ "currentTab": 2
}
],
"direction": "horizontal",
- "width": 386.5,
- "collapsed": true
+ "width": 386.5
},
"left-ribbon": {
"hiddenItems": {
"switcher:打开快速切换": false,
"graph:查看关系图谱": false,
- "daily-notes:打开/创建今天的日记": false,
"templates:插入模板": false,
"command-palette:打开命令面板": false,
"table-editor-obsidian:Advanced Tables Toolbar": false,
@@ -173,17 +155,17 @@
"oz-clear-unused-images:Clear Unused Images": false
}
},
- "active": "8ed24f07e71c95c9",
+ "active": "cfd9802490841a0a",
"lastOpenFiles": [
- "Books/Windows.md",
- "Books/未命名.md",
- "Books/!Windows.md",
- "Project/LConf/TODO.md",
- "Project/hot-remap.nvim/TODO.md",
- "School/操作系统/王道考研/处理机.md",
- "Book/Java高并发程序设计/Java高并发程序设计5.md",
- "Book/Java高并发程序设计/Java高并发程序设计4.md",
- "Book/Java高并发程序设计/Java高并发程序设计3.md",
- "Book/Java高并发程序设计/Java高并发程序设计1、2.md"
+ "Books/代码随想录/().md",
+ "Books/代码随想录/代码随想录.md",
+ "Temp/未命名.md",
+ "_notion-like-tables/table-id-ncD19n.md",
+ "未命名.md",
+ "Basic/未命名.md",
+ "Excalidraw/Drawing 2023-02-19 16.06.15.excalidraw.md",
+ "Excalidraw/Drawing 2023-02-19 16.07.56.excalidraw.md",
+ "Excalidraw/Drawing 2023-02-19 16.07.40.excalidraw.md",
+ "Books/Windows.md"
]
}
\ No newline at end of file
diff --git a/Books/代码随想录/代码随想录.md b/Books/代码随想录/代码随想录.md
new file mode 100644
index 0000000..02fc667
--- /dev/null
+++ b/Books/代码随想录/代码随想录.md
@@ -0,0 +1,20 @@
+---
+tag: algorithm
+---
+# 数组
+1. [二分查找](https://leetcode.cn/problems/binary-search/)
+ 进度状况:仅完成主题干。
+ 注意:
+ - 二分查找时注意区间的边界,当取 `[left, right]` 时,当 `left == right` 是有意义的,所以循环的条件为 `while(left < right)`;同理,当取 `[left, right)` 时,循环的条件为 `while(left <= right)`。
+2. [移除元素](https://leetcode.cn/problems/remove-element/)
+ 进度状况:仅完成主题干。
+ 解题方法:双指针法
+ - 快慢指针法
+ - 相向指针法(√):减少元素移动次数
+3. [有序数组的平方](https://leetcode.cn/problems/minimum-size-subarray-sum/)
+ 进度状况:完成主题干
+ 注意:
+ - 注意指针可以从中间向两侧扫描,最好从两侧向中间扫描。
+4. 长度最小的子数组
+ 进度状况:仅完成主题干。
+ 解题方法:滑动窗口。
\ No newline at end of file
diff --git a/Books/未命名.md b/Books/未命名.md
deleted file mode 100644
index 361358a..0000000
--- a/Books/未命名.md
+++ /dev/null
@@ -1,16 +0,0 @@
-```
----
-title: recollect that in arming yourselves
-date: "2022-08-22 21:37"
-tags:
-- lang/eng
-- type/book
-- study/quote
----
-```
->
->
-> ```java
-> private int a = 1;
-> ```
-