I am getting thousands of these (~12k after 30m open)
The details say that it is folder note:
(function anonymous(require, module, exports) {
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source visit the plugins github repository
*/
var ke = Object.create;
var M = Object.defineProperty;
var ye = Object.getOwnPropertyDescriptor;
var Ae = Object.getOwnPropertyNames
, re = Object.getOwnPropertySymbols
, xe = Object.getPrototypeOf
, ne = Object.prototype.hasOwnProperty
, Ee = Object.prototype.propertyIsEnumerable;
var oe = (n,e,t)=>e in n ? M(n, e, {
enumerable: !0,
configurable: !0,
writable: !0,
value: t
}) : n[e] = t
, I = (n,e)=>{
for (var t in e || (e = {}))
ne.call(e, t) && oe(n, t, e[t]);
if (re)
for (var t of re(e))
Ee.call(e, t) && oe(n, t, e[t]);
return n
}
;
var ie = n=>M(n, "__esModule", {
value: !0
});
var K = (n,e)=>()=>(e || n((e = {
exports: {}
}).exports, e),
e.exports)
, Oe = (n,e)=>{
for (var t in e)
M(n, t, {
get: e[t],
enumerable: !0
})
}
, le = (n,e,t,r)=>{
if (e && typeof e == "object" || typeof e == "function")
for (let o of Ae(e))
!ne.call(n, o) && (t || o !== "default") && M(n, o, {
get: ()=>e[o],
enumerable: !(r = ye(e, o)) || r.enumerable
});
return n
}
, S = (n,e)=>le(ie(M(n != null ? ke(xe(n)) : {}, "default", !e && n && n.__esModule ? {
get: ()=>n.default,
enumerable: !0
} : {
value: n,
enumerable: !0
})), n)
, Ie = (n=>(e,t)=>n && n.get(e) || (t = le(ie({}), e, 1),
n && n.set(e, t),
t))(typeof WeakMap != "undefined" ? new WeakMap : 0);
var w = (n,e,t)=>new Promise((r,o)=>{
var l = a=>{
try {
s(t.next(a))
} catch (g) {
o(g)
}
}
, i = a=>{
try {
s(t.throw(a))
} catch (g) {
o(g)
}
}
, s = a=>a.done ? r(a.value) : Promise.resolve(a.value).then(l, i);
s((t = t.apply(n, e)).next())
}
);
var Y = K(_=>{
"use strict";
Object.defineProperty(_, "__esModule", {
value: !0
});
function se(n, e) {
if (e)
return n;
throw new Error("Unhandled discriminated union member: " + JSON.stringify(n))
}
_.assertNever = se;
_.default = se
}
);
var fe = K((de,W)=>{
(function(n, e) {
"use strict";
typeof define == "function" && define.amd ? define(e) : typeof W == "object" && W.exports ? W.exports = e() : n.log = e()
}
)(de, function() {
"use strict";
var n = function() {}
, e = "undefined"
, t = typeof window !== e && typeof window.navigator !== e && /Trident\/|MSIE /.test(window.navigator.userAgent)
, r = ["trace", "debug", "info", "warn", "error"];
function o(f, u) {
var m = f[u];
if (typeof m.bind == "function")
return m.bind(f);
try {
return Function.prototype.bind.call(m, f)
} catch {
return function() {
return Function.prototype.apply.apply(m, [f, arguments])
}
}
}
function l() {
console.log && (console.log.apply ? console.log.apply(console, arguments) : Function.prototype.apply.apply(console.log, [console, arguments])),
console.trace && console.trace()
}
function i(f) {
return f === "debug" && (f = "log"),
typeof console === e ? !1 : f === "trace" && t ? l : console[f] !== void 0 ? o(console, f) : console.log !== void 0 ? o(console, "log") : n
}
function s(f, u) {
for (var m = 0; m < r.length; m++) {
var h = r[m];
this[h] = m < f ? n : this.methodFactory(h, f, u)
}
this.log = this.debug
}
function a(f, u, m) {
return function() {
typeof console !== e && (s.call(this, u, m),
this[f].apply(this, arguments))
}
}
function g(f, u, m) {
return i(f) || a.apply(this, arguments)
}
function F(f, u, m) {
var h = this, ee;
u = u ?? "WARN";
var P = "loglevel";
typeof f == "string" ? P += ":" + f : typeof f == "symbol" && (P = void 0);
function Ce(c) {
var E = (r[c] || "silent").toUpperCase();
if (!(typeof window === e || !P)) {
try {
window.localStorage[P] = E;
return
} catch {}
try {
window.document.cookie = encodeURIComponent(P) + "=" + E + ";"
} catch {}
}
}
function te() {
var c;
if (!(typeof window === e || !P)) {
try {
c = window.localStorage[P]
} catch {}
if (typeof c === e)
try {
var E = window.document.cookie
, V = E.indexOf(encodeURIComponent(P) + "=");
V !== -1 && (c = /^([^;]+)/.exec(E.slice(V))[1])
} catch {}
return h.levels[c] === void 0 && (c = void 0),
c
}
}
function Le() {
if (!(typeof window === e || !P)) {
try {
window.localStorage.removeItem(P);
return
} catch {}
try {
window.document.cookie = encodeURIComponent(P) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC"
} catch {}
}
}
h.name = f,
h.levels = {
TRACE: 0,
DEBUG: 1,
INFO: 2,
WARN: 3,
ERROR: 4,
SILENT: 5
},
h.methodFactory = m || g,
h.getLevel = function() {
return ee
}
,
h.setLevel = function(c, E) {
if (typeof c == "string" && h.levels[c.toUpperCase()] !== void 0 && (c = h.levels[c.toUpperCase()]),
typeof c == "number" && c >= 0 && c <= h.levels.SILENT) {
if (ee = c,
E !== !1 && Ce(c),
s.call(h, c, f),
typeof console === e && c < h.levels.SILENT)
return "No console available for logging"
} else
throw "log.setLevel() called with invalid level: " + c
}
,
h.setDefaultLevel = function(c) {
u = c,
te() || h.setLevel(c, !1)
}
,
h.resetLevel = function() {
h.setLevel(u, !1),
Le()
}
,
h.enableAll = function(c) {
h.setLevel(h.levels.TRACE, c)
}
,
h.disableAll = function(c) {
h.setLevel(h.levels.SILENT, c)
}
;
var J = te();
J == null && (J = u),
h.setLevel(J, !1)
}
var d = new F
, N = {};
d.getLogger = function(u) {
if (typeof u != "symbol" && typeof u != "string" || u === "")
throw new TypeError("You must supply a name when creating a logger.");
var m = N[u];
return m || (m = N[u] = new F(u,d.getLevel(),d.methodFactory)),
m
}
;
var b = typeof window !== e ? window.log : void 0;
return d.noConflict = function() {
return typeof window !== e && window.log === d && (window.log = b),
d
}
,
d.getLoggers = function() {
return N
}
,
d.default = d,
d
})
}
);
var B = K((Ge,Fe)=>{
"use strict";
function y(n) {
if (typeof n != "string")
throw new TypeError("Path must be a string. Received " + JSON.stringify(n))
}
function pe(n, e) {
for (var t = "", r = 0, o = -1, l = 0, i, s = 0; s <= n.length; ++s) {
if (s < n.length)
i = n.charCodeAt(s);
else {
if (i === 47)
break;
i = 47
}
if (i === 47) {
if (!(o === s - 1 || l === 1))
if (o !== s - 1 && l === 2) {
if (t.length < 2 || r !== 2 || t.charCodeAt(t.length - 1) !== 46 || t.charCodeAt(t.length - 2) !== 46) {
if (t.length > 2) {
var a = t.lastIndexOf("/");
if (a !== t.length - 1) {
a === -1 ? (t = "",
r = 0) : (t = t.slice(0, a),
r = t.length - 1 - t.lastIndexOf("/")),
o = s,
l = 0;
continue
}
} else if (t.length === 2 || t.length === 1) {
t = "",
r = 0,
o = s,
l = 0;
continue
}
}
e && (t.length > 0 ? t += "/.." : t = "..",
r = 2)
} else
t.length > 0 ? t += "/" + n.slice(o + 1, s) : t = n.slice(o + 1, s),
r = s - o - 1;
o = s,
l = 0
} else
i === 46 && l !== -1 ? ++l : l = -1
}
return t
}
function Me(n, e) {
var t = e.dir || e.root
, r = e.base || (e.name || "") + (e.ext || "");
return t ? t === e.root ? t + r : t + n + r : r
}
var D = {
resolve: function() {
for (var e = "", t = !1, r, o = arguments.length - 1; o >= -1 && !t; o--) {
var l;
o >= 0 ? l = arguments[o] : (r === void 0 && (r = process.cwd()),
l = r),
y(l),
l.length !== 0 && (e = l + "/" + e,
t = l.charCodeAt(0) === 47)
}
return e = pe(e, !t),
t ? e.length > 0 ? "/" + e : "/" : e.length > 0 ? e : "."
},
normalize: function(e) {
if (y(e),
e.length === 0)
return ".";
var t = e.charCodeAt(0) === 47
, r = e.charCodeAt(e.length - 1) === 47;
return e = pe(e, !t),
e.length === 0 && !t && (e = "."),
e.length > 0 && r && (e += "/"),
t ? "/" + e : e
},
isAbsolute: function(e) {
return y(e),
e.length > 0 && e.charCodeAt(0) === 47
},
join: function() {
if (arguments.length === 0)
return ".";
for (var e, t = 0; t < arguments.length; ++t) {
var r = arguments[t];
y(r),
r.length > 0 && (e === void 0 ? e = r : e += "/" + r)
}
return e === void 0 ? "." : D.normalize(e)
},
relative: function(e, t) {
if (y(e),
y(t),
e === t || (e = D.resolve(e),
t = D.resolve(t),
e === t))
return "";
for (var r = 1; r < e.length && e.charCodeAt(r) === 47; ++r)
;
for (var o = e.length, l = o - r, i = 1; i < t.length && t.charCodeAt(i) === 47; ++i)
;
for (var s = t.length, a = s - i, g = l < a ? l : a, F = -1, d = 0; d <= g; ++d) {
if (d === g) {
if (a > g) {
if (t.charCodeAt(i + d) === 47)
return t.slice(i + d + 1);
if (d === 0)
return t.slice(i + d)
} else
l > g && (e.charCodeAt(r + d) === 47 ? F = d : d === 0 && (F = 0));
break
}
var N = e.charCodeAt(r + d)
, b = t.charCodeAt(i + d);
if (N !== b)
break;
N === 47 && (F = d)
}
var f = "";
for (d = r + F + 1; d <= o; ++d)
(d === o || e.charCodeAt(d) === 47) && (f.length === 0 ? f += ".." : f += "/..");
return f.length > 0 ? f + t.slice(i + F) : (i += F,
t.charCodeAt(i) === 47 && ++i,
t.slice(i))
},
_makeLong: function(e) {
return e
},
dirname: function(e) {
if (y(e),
e.length === 0)
return ".";
for (var t = e.charCodeAt(0), r = t === 47, o = -1, l = !0, i = e.length - 1; i >= 1; --i)
if (t = e.charCodeAt(i),
t === 47) {
if (!l) {
o = i;
break
}
} else
l = !1;
return o === -1 ? r ? "/" : "." : r && o === 1 ? "//" : e.slice(0, o)
},
basename: function(e, t) {
if (t !== void 0 && typeof t != "string")
throw new TypeError('"ext" argument must be a string');
y(e);
var r = 0, o = -1, l = !0, i;
if (t !== void 0 && t.length > 0 && t.length <= e.length) {
if (t.length === e.length && t === e)
return "";
var s = t.length - 1
, a = -1;
for (i = e.length - 1; i >= 0; --i) {
var g = e.charCodeAt(i);
if (g === 47) {
if (!l) {
r = i + 1;
break
}
} else
a === -1 && (l = !1,
a = i + 1),
s >= 0 && (g === t.charCodeAt(s) ? --s === -1 && (o = i) : (s = -1,
o = a))
}
return r === o ? o = a : o === -1 && (o = e.length),
e.slice(r, o)
} else {
for (i = e.length - 1; i >= 0; --i)
if (e.charCodeAt(i) === 47) {
if (!l) {
r = i + 1;
break
}
} else
o === -1 && (l = !1,
o = i + 1);
return o === -1 ? "" : e.slice(r, o)
}
},
extname: function(e) {
y(e);
for (var t = -1, r = 0, o = -1, l = !0, i = 0, s = e.length - 1; s >= 0; --s) {
var a = e.charCodeAt(s);
if (a === 47) {
if (!l) {
r = s + 1;
break
}
continue
}
o === -1 && (l = !1,
o = s + 1),
a === 46 ? t === -1 ? t = s : i !== 1 && (i = 1) : t !== -1 && (i = -1)
}
return t === -1 || o === -1 || i === 0 || i === 1 && t === o - 1 && t === r + 1 ? "" : e.slice(t, o)
},
format: function(e) {
if (e === null || typeof e != "object")
throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof e);
return Me("/", e)
},
parse: function(e) {
y(e);
var t = {
root: "",
dir: "",
base: "",
ext: "",
name: ""
};
if (e.length === 0)
return t;
var r = e.charCodeAt(0), o = r === 47, l;
o ? (t.root = "/",
l = 1) : l = 0;
for (var i = -1, s = 0, a = -1, g = !0, F = e.length - 1, d = 0; F >= l; --F) {
if (r = e.charCodeAt(F),
r === 47) {
if (!g) {
s = F + 1;
break
}
continue
}
a === -1 && (g = !1,
a = F + 1),
r === 46 ? i === -1 ? i = F : d !== 1 && (d = 1) : i !== -1 && (d = -1)
}
return i === -1 || a === -1 || d === 0 || d === 1 && i === a - 1 && i === s + 1 ? a !== -1 && (s === 0 && o ? t.base = t.name = e.slice(1, a) : t.base = t.name = e.slice(s, a)) : (s === 0 && o ? (t.name = e.slice(1, i),
t.base = e.slice(1, a)) : (t.name = e.slice(s, i),
t.base = e.slice(s, a)),
t.ext = e.slice(i, a)),
s > 0 ? t.dir = e.slice(0, s - 1) : o && (t.dir = "/"),
t
},
sep: "/",
delimiter: ":",
win32: null,
posix: null
};
D.posix = D;
Fe.exports = D
}
);
var Ve = {};
Oe(Ve, {
default: ()=>Z
});
var Te = S(Y(), 1);
function ae(n, e) {
let t = Object.keys(e).map(r=>Se(n, r, e[r]));
return t.length === 1 ? t[0] : function() {
t.forEach(r=>r())
}
}
function Se(n, e, t) {
let r = n[e]
, o = n.hasOwnProperty(e)
, l = t(r);
return r && Object.setPrototypeOf(l, r),
Object.setPrototypeOf(i, l),
n[e] = i,
s;
function i(...a) {
return l === r && n[e] === i && s(),
l.apply(this, a)
}
function s() {
n[e] === i && (o ? n[e] = r : delete n[e]),
l !== r && (l = r,
Object.setPrototypeOf(i, r || Function))
}
}
var be = require("obsidian");
var ue = S(fe(), 1)
, De = ue.default.getLogger("folder-note-core")
, v = De;
var x = require("obsidian");
var A = (r=>(r[r.Index = 0] = "Index",
r[r.Inside = 1] = "Inside",
r[r.Outside = 2] = "Outside",
r))(A || {})
, ce = n=>({
get renderCoreSettings() {
return n.settingTab.renderCoreSettings
},
get renderLogLevel() {
return n.settingTab.setLogLevel
},
importSettings: e=>{
if (e.folderNotePref !== void 0) {
switch (e.folderNotePref) {
case 0:
e.folderNotePref = 0;
break;
case 1:
e.folderNotePref = 1;
break;
case 2:
e.folderNotePref = 2;
break;
default:
break
}
let t = Object.fromEntries(Object.entries(e).filter(([r,o])=>o !== void 0));
n.settings = I(I({}, n.settings), t),
n.saveSettings()
}
}
,
get getNewFolderNote() {
return n.getNewFolderNote
},
get getFolderFromNote() {
return n.resolver.getFolderFromNote
},
get getFolderPath() {
return n.resolver.getFolderPath
},
get getFolderNote() {
return n.resolver.getFolderNote
},
get getFolderNotePath() {
return n.resolver.getFolderNotePath
},
get DeleteLinkedFolder() {
return n.resolver.DeleteLinkedFolder
},
get LinkToParentFolder() {
return n.resolver.LinkToParentFolder
},
get DeleteNoteAndLinkedFolder() {
return n.resolver.DeleteNoteAndLinkedFolder
},
get createFolderForNote() {
return n.resolver.createFolderForNote
},
get DeleteFolderNote() {
return n.resolver.DeleteFolderNote
},
get CreateFolderNote() {
return n.resolver.CreateFolderNote
},
get OpenFolderNote() {
return n.resolver.OpenFolderNote
}
});
var ge = n=>{
let {createFolderForNote: e, LinkToParentFolder: t, DeleteLinkedFolder: r, DeleteNoteAndLinkedFolder: o} = n.resolver;
n.addCommand({
id: "make-doc-folder-note",
name: "Make current document folder note",
checkCallback: l=>{
var s;
let i = (s = n.app.workspace.activeLeaf) == null ? void 0 : s.view;
if (l)
return i instanceof x.MarkdownView;
e(i.file)
}
,
hotkeys: []
}),
n.addCommand({
id: "link-to-parent-folder",
name: "Link to Parent Folder",
checkCallback: l=>{
var s;
let i = (s = n.app.workspace.activeLeaf) == null ? void 0 : s.view;
return t(i.file, l)
}
,
hotkeys: []
}),
n.addCommand({
id: "delete-linked-folder",
name: "Delete linked folder",
checkCallback: l=>{
var s;
let i = (s = n.app.workspace.activeLeaf) == null ? void 0 : s.view;
return i instanceof x.MarkdownView ? r(i.file, l) : !1
}
,
hotkeys: []
}),
n.addCommand({
id: "delete-with-linked-folder",
name: "Delete note and linked folder",
checkCallback: l=>{
var s;
let i = (s = n.app.workspace.activeLeaf) == null ? void 0 : s.view;
return i instanceof x.MarkdownView ? o(i.file, l) : !1
}
,
hotkeys: []
}),
n.registerEvent(n.app.workspace.on("file-menu", (l,i,s)=>w(void 0, null, function*() {
i instanceof x.TFile && i.extension === "md" && (t(i, !0) && l.addItem(a=>a.setIcon("link").setTitle("Link to Parent Folder").onClick(()=>t(i))),
(yield e(i, !0)) && l.addItem(a=>a.setIcon("create-new").setTitle("Make Doc Folder Note").onClick(()=>{
e(i),
n.app.workspace.openLinkText(i.path, "", !1)
}
)),
s !== "link-context-menu" && o(i, !0) && l.addItem(a=>a.setIcon("trash").setTitle("Delete Note and Linked Folder").onClick(()=>o(i))))
})))
}
, he = n=>{
let {OpenFolderNote: e, DeleteFolderNote: t, CreateFolderNote: r, DeleteNoteAndLinkedFolder: o} = n.resolver;
n.registerEvent(n.app.workspace.on("file-menu", (l,i,s)=>{
i instanceof x.TFolder && (e(i, !0) && l.addItem(a=>a.setIcon("enter").setTitle("Open Folder Note").onClick(()=>e(i))),
t(i, !0) && l.addItem(a=>a.setIcon("trash").setTitle("Delete Folder Note").onClick(()=>t(i))),
n.settings.folderNotePref === 2 && n.settings.deleteOutsideNoteWithFolder === !1 && o(i, !0) && l.addItem(a=>a.setIcon("trash").setTitle("Delete Folder and Folder Note").onClick(()=>o(i))),
r(i, !0) && l.addItem(a=>a.setIcon("create-new").setTitle("Create Folder Note").onClick(()=>r(i))))
}
))
}
;
var $ = S(Y(), 1)
, L = require("obsidian")
, k = S(B(), 1);
var H = require("obsidian")
, U = S(B(), 1);
var C = n=>typeof n == "string" ? n.endsWith(".md") : n.extension === "md"
, me = (n,e)=>{
let t = R(n.path);
return t && (0,
U.join)(t, e)
}
, R = n=>{
if (n === "/")
return null;
let e = (0,
U.dirname)(n);
return e === "." ? "/" : e
}
, z = (n,e,t)=>{
if (n instanceof H.TFile)
e(n);
else if (n instanceof H.TFolder)
t(n);
else
throw v.error("unexpected TAbstractFile type", n),
new Error("unexpected TAbstractFile type")
}
;
var j = class {
constructor(e) {
this.getFolderFromNote = (e,t)=>{
if (!C(e))
return null;
let r = this.getFolderPath(e, !1, t);
if (!r)
return null;
let o = this.vault.getAbstractFileByPath(r);
return o && o instanceof L.TFolder ? o : null
}
;
this.getFolderPath = (e,t=!1,r)=>{
var s, a;
if (r === void 0 && (r = this.settings.folderNotePref),
!C(e))
return v.info("getFolderPath(%o): given file not markdown", e),
null;
let o, l;
if (e instanceof L.TFile ? (l = e.basename,
o = (s = R(e.path)) != null ? s : "") : (l = (0,
k.basename)(e).slice(0, -3),
o = (a = R(e)) != null ? a : ""),
!o)
return v.info("getFolderPath(%o): no folder note for root dir", e),
null;
let i = ()=>o === "/" ? l : (0,
k.join)(o, l);
switch (r) {
case 0:
return t ? i() : l === this.settings.indexName ? o : (v.info("getFolderPath(%o): note name invaild", e),
null);
case 1:
return t ? i() : l === (0,
k.basename)(o) ? o : (v.info("getFolderPath(%o): note name invaild", e),
null);
case 2:
{
let g = i();
return t || l === (0,
k.basename)(g) ? g : (v.info("getFolderPath(%o): note name invaild", e),
null)
}
default:
(0,
$.default)(r)
}
}
;
this.getFolderNote = (e,t)=>this.findFolderNote(this.getFolderNotePath(e, t));
this.findFolderNote = e=>{
if (!e)
return null;
let t = this.vault.getAbstractFileByPath(e.path);
return t && t instanceof L.TFile ? t : null
}
;
this.getFolderNotePath = (e,t)=>{
t === void 0 && (t = this.settings.folderNotePref);
let r = typeof e == "string" ? e : e.path
, o = R(r);
if (!o)
return null;
let {indexName: l} = this.settings, i, s;
switch (t) {
case 0:
s = l,
i = r;
break;
case 1:
s = (0,
k.basename)(r),
i = r;
break;
case 2:
s = (0,
k.basename)(r),
i = o;
break;
default:
(0,
$.default)(t)
}
return {
dir: i,
name: s + ".md",
path: i === "/" ? s + ".md" : (0,
k.join)(i, s + ".md")
}
}
;
this.DeleteLinkedFolder = (e,t=!1)=>{
if (!C(e))
return !1;
let r = this.getFolderFromNote(e);
return r && !t && this.vault.delete(r, !0),
!!r
}
;
this.LinkToParentFolder = (e,t=!1)=>{
if (!C(e))
return !1;
if (e.parent) {
let r = this.getFolderNotePath(e.parent)
, o = r && !this.getFolderNote(e.parent);
if (o && !t) {
let {path: l} = r;
this.plugin.app.fileManager.renameFile(e, l)
}
return !!o
} else
return !1
}
;
this.DeleteNoteAndLinkedFolder = (e,t=!1)=>{
let r, o;
if (e instanceof L.TFile) {
if (!C(e))
return !1;
r = e,
o = this.getFolderFromNote(e)
} else
r = this.getFolderNote(e),
o = e;
return r && o && !t && new ve(this.plugin,r,o).open(),
!!(r && o)
}
;
this.createFolderForNote = (e,t=!1)=>w(this, null, function*() {
if (!C(e))
return !1;
let r = this.getFolderPath(e, !1);
if (r && (yield this.vault.exists(r)))
return v.info("createFolderForNote(%o): already folder note", e, e.path),
t || new L.Notice("Already folder note"),
!1;
let o = this.getFolderPath(e, !0)
, l = o && (yield this.vault.exists(o));
if (l)
return v.info("createFolderForNote(%o): target folder to create already exists", e, e.path),
t || new L.Notice("Target folder to create already exists"),
!1;
if (!o)
v.info("createFolderForNote(%o): no vaild linked folder path for %s", e, e.path),
t || new L.Notice("No vaild linked folder path for: " + e.path);
else if (!t) {
yield this.vault.createFolder(o);
let i;
switch (this.settings.folderNotePref) {
case 0:
i = (0,
k.join)(o, this.settings.indexName + ".md");
break;
case 1:
i = (0,
k.join)(o, e.name);
break;
case 2:
i = null;
break;
default:
(0,
$.default)(this.settings.folderNotePref)
}
i && this.plugin.app.fileManager.renameFile(e, i)
}
return !!(!l && o)
});
this.OpenFolderNote = (e,t=!1,r)=>{
let o = this.getFolderNote(e);
return o && !t && this.plugin.app.workspace.openLinkText(o.path, "", r == null ? void 0 : r.newLeaf, r == null ? void 0 : r.openViewState),
!!o
}
;
this.DeleteFolderNote = (e,t=!1)=>{
let r = this.getFolderNote(e);
return r && !t && this.vault.delete(r),
!!r
}
;
this.CreateFolderNote = (e,t=!1)=>{
let r, o;
return (r = !this.getFolderNote(e) && (o = this.getFolderNotePath(e))) && !t && this.vault.create(o.path, this.plugin.getNewFolderNote(e)),
!!r
}
;
this.plugin = e
}
get settings() {
return this.plugin.settings
}
get vault() {
return this.plugin.app.vault
}
}
, ve = class extends L.Modal {
constructor(e, t, r) {
super(e.app);
this.plugin = e,
this.target = t,
this.targetFolder = r
}
get settings() {
return this.plugin.settings
}
deleteFolder() {
let {contentEl: e} = this;
e.createEl("p", {
text: "Warning: the entire folder and its content will be removed",
cls: "mod-warning"
});
let t = this.targetFolder.children.map(o=>o.name);
e.createEl("p", {
text: t.length > 5 ? t.slice(0, 5).join(", ") + "..." : t.join(", ")
}),
e.createEl("p", {
text: "Continue?",
cls: "mod-warning"
});
let r = e.createDiv({
cls: "modal-button-container"
});
r.createEl("button", {
text: "Yes",
cls: "mod-warning"
}, o=>o.onClickEvent(()=>{
this.app.vault.delete(this.targetFolder, !0),
this.app.vault.delete(this.target),
this.close()
}
)),
r.createEl("button", {
text: "No"
}, o=>o.onClickEvent(()=>{
this.close()
}
))
}
onOpen() {
this.containerEl.addClass("warn"),
this.deleteFolder()
}
onClose() {
let {contentEl: e} = this;
e.empty()
}
}
;
var T = require("obsidian")
, O = S(B(), 1);
var G = class {
constructor(e) {
this.on = (...e)=>this.plugin.app.vault.on(...e);
this.delete = (...e)=>this.plugin.app.vault.delete(...e);
this.rename = (...e)=>this.plugin.app.fileManager.renameFile(...e);
this.registerEvent = ()=>{
this.plugin.registerEvent(this.on("create", this.onChange)),
this.plugin.registerEvent(this.on("rename", this.onChange)),
this.plugin.registerEvent(this.on("delete", this.onDelete))
}
;
this.onChange = (e,t)=>{
var a, g, F;
let {getFolderNote: r, getFolderFromNote: o, getFolderNotePath: l} = this.finder;
function i(d) {
return d instanceof T.TFolder ? t ? r(t) : null : d instanceof T.TFile && t && C(t) ? o(t) : null
}
function s(d) {
return d instanceof T.TFolder ? r(d) : d instanceof T.TFile ? o(d) : null
}
if (t && e instanceof T.TFile && C(t) !== C(e)) {
let d = i(e);
if (d)
this.plugin.trigger("folder-note:delete", e, d);
else {
let N = o(e);
N && this.plugin.trigger("folder-note:create", e, N)
}
} else {
let d = !1, N;
z(e, u=>{
N = s(u),
N && (d = !0,
this.plugin.trigger("folder-note:create", u, N))
}
, u=>{
N = s(u),
N && (d = !0,
this.plugin.trigger("folder-note:create", N, u))
}
);
let b = i(e);
if (!b)
return;
let f = e instanceof T.TFolder ? (g = (a = l(e)) == null ? void 0 : a.path) != null ? g : "" : e instanceof T.TFile && (F = me(b, e.basename)) != null ? F : "";
if (this.shouldRename(e, t))
if (!d && f) {
this.rename(b, f),
z(e, u=>this.plugin.trigger("folder-note:rename", [u, t], [b, f]), u=>this.plugin.trigger("folder-note:rename", [b, f], [u, t]));
return
} else {
let u = b instanceof T.TFile ? "folder note" : "linked folder"
, m = `Failed to sync name of ${u}: `
, h = d ? `${u} ${(0,
O.basename)(f)} already exists` : "check console for more details";
new T.Notice(m + h)
}
z(e, u=>this.plugin.trigger("folder-note:delete", u, b), u=>this.plugin.trigger("folder-note:delete", b, u))
}
}
;
this.onDelete = e=>{
let {getFolderNote: t, getFolderFromNote: r} = this.finder;
if (e instanceof T.TFolder) {
let o = t(e);
if (!(this.settings.folderNotePref === 2 && o))
return;
this.settings.deleteOutsideNoteWithFolder ? this.delete(o) : this.plugin.trigger("folder-note:delete", o, e)
} else if (e instanceof T.TFile && C(e)) {
let o = r(e);
o && this.plugin.trigger("folder-note:delete", e, o)
}
}
;
this.plugin = e
}
get settings() {
return this.plugin.settings
}
get finder() {
return this.plugin.resolver
}
shouldRename(e, t) {
if (!this.settings.autoRename || !t)
return !1;
let r = this.settings.folderNotePref !== 0 && (0,
O.dirname)(e.path) === (0,
O.dirname)(t)
, o = e instanceof T.TFolder && this.settings.folderNotePref === 2 && (0,
O.dirname)(e.path) !== (0,
O.dirname)(t);
return r || o
}
}
;
var p = require("obsidian");
var Ne = {
folderNotePref: 1,
deleteOutsideNoteWithFolder: !1,
indexName: "_about_",
autoRename: !0,
folderNoteTemplate: "# {{FOLDER_NAME}}",
logLevel: 4
}
, q = {
[0]: "Inside Folder, Index File",
[1]: "Inside Folder, With Same Name",
[2]: "Outside Folder, With Same Name"
}
, X = class extends p.PluginSettingTab {
constructor(e) {
super(e.app, e);
this.plugin = e;
this.renderCoreSettings = e=>{
this.setStrategy(e),
this.plugin.settings.folderNotePref === 0 ? this.setIndexName(e) : this.plugin.settings.folderNotePref === 2 && this.setDeleteWithFolder(e),
this.setTemplate(e),
this.plugin.settings.folderNotePref !== 0 && this.setAutoRename(e)
}
;
this.setLogLevel = e=>{
new p.Setting(e).setName("Log Level of folder-note-core").setDesc("Change this options if debug is required").addDropdown(t=>t.then(r=>Object.entries(v.levels).forEach(([o,l])=>r.addOption(l.toString(), o))).setValue(v.getLevel().toString()).onChange(r=>w(this, null, function*() {
let o = +r;
v.setLevel(o),
this.plugin.settings.logLevel = o,
yield this.plugin.saveSettings()
})))
}
;
this.setDeleteWithFolder = e=>{
new p.Setting(e).setName("Delete Outside Note with Folder").setDesc(createFragment(t=>{
t.appendText("Delete folder note outside when folder is deleted"),
t.createDiv({
text: "Warning: The note will be deleted when the folder is moved outside of vault",
cls: "mod-warning"
})
}
)).addToggle(t=>t.setValue(this.plugin.settings.deleteOutsideNoteWithFolder).onChange(r=>w(this, null, function*() {
this.plugin.settings.deleteOutsideNoteWithFolder = r,
yield this.plugin.saveSettings()
})))
}
;
this.setStrategy = e=>{
new p.Setting(e).setName("Note File Storage Strategy").setDesc(createFragment(t=>{
t.appendText("Select how you would like the folder note to be stored"),
t.createEl("br"),
t.createEl("a", {
href: "https://github.com/aidenlx/alx-folder-note/wiki/folder-note-pref",
text: "Check here"
}),
t.appendText(" for more detail for pros and cons for different strategies")
}
)).addDropdown(t=>{
t.addOptions(q).setValue(this.plugin.settings.folderNotePref.toString()).onChange(r=>w(this, null, function*() {
this.plugin.settings.folderNotePref = +r,
this.plugin.trigger("folder-note:cfg-changed"),
yield this.plugin.saveSettings()
}))
}
),
new p.Setting(e).setName("Switch Strategy").setDesc(createFragment(t=>{
t.appendText("Batch convert existing folder notes to use new storage strategy"),
t.createDiv({
text: "Warning: This function is experimental and dangerous, make sure to fully backup the vault before the conversion",
cls: "mod-warning"
})
}
)).addButton(t=>t.setTooltip("Open Dialog").setIcon("popup-open").setCta().onClick(()=>new we(this.plugin).open()))
}
;
this.setIndexName = e=>{
new p.Setting(e).setName("Name for Index File").setDesc("Set the note name to be recognized as index file for folders").addText(t=>{
let r = o=>w(this, null, function*() {
this.plugin.settings.indexName = o,
this.plugin.trigger("folder-note:cfg-changed"),
yield this.plugin.saveSettings()
});
t.setValue(this.plugin.settings.indexName).onChange((0,
p.debounce)(r, 500, !0))
}
)
}
;
this.setTemplate = e=>{
new p.Setting(e).setName("Folder Note Template").setDesc(createFragment(t=>{
t.appendText("The template used to generate new folder note."),
t.appendChild(document.createElement("br")),
t.appendText("Supported placeholders:"),
t.appendChild(document.createElement("br")),
t.appendText("{{FOLDER_NAME}} {{FOLDER_PATH}}")
}
)).addTextArea(t=>{
let r = o=>w(this, null, function*() {
this.plugin.settings.folderNoteTemplate = o,
yield this.plugin.saveSettings()
});
t.setValue(this.plugin.settings.folderNoteTemplate).onChange((0,
p.debounce)(r, 500, !0)),
t.inputEl.rows = 8,
t.inputEl.cols = 30
}
)
}
;
this.setAutoRename = e=>{
new p.Setting(e).setName("Auto Sync").setDesc("Keep name and location of folder note and folder in sync").addToggle(t=>{
t.setValue(this.plugin.settings.autoRename),
t.onChange(r=>w(this, null, function*() {
this.plugin.settings.autoRename = r,
yield this.plugin.saveSettings()
}))
}
)
}
}
display() {
let {containerEl: e} = this;
e.empty(),
this.renderCoreSettings(e)
}
}
, we = class extends p.Modal {
constructor(e) {
super(e.app);
this.plugin = e;
this.Convert = (e=!1)=>w(this, null, function*() {
let {From: t, To: r} = this;
if (this.clear(),
t === null || r === null)
new p.Notice("Please select the strategies to convert from/to first");
else if (t === r)
new p.Notice("Convert between same strategy, skipping...");
else {
let {getFolderNote: o, getFolderNotePath: l} = this.plugin.resolver
, i = this.app.vault.getAllLoadedFiles().filter(a=>a instanceof p.TFolder && !a.isRoot()).map(a=>{
let g = o(a, t)
, F = g ? l(a, r) : null;
return g && F ? [g, F] : null
}
)
, s = !1;
for (let a of i) {
if (!a)
continue;
let[g,F] = a;
(yield this.app.vault.exists(F.path)) ? (s || (s = !0),
this.log(`Unable to move file ${g.path}: file exist in ${F.path}`)) : e || this.app.fileManager.renameFile(g, F.path)
}
s || (e ? this.log("Check complete, no conflict found") : this.log("Batch convert complete"))
}
});
this.fromOptsEl = new p.DropdownComponent(this.titleEl.createDiv({
text: "From: "
})).addOptions(q),
this.toOptsEl = new p.DropdownComponent(this.titleEl.createDiv({
text: "To: "
})).addOptions(q),
this.outputEl = new p.TextAreaComponent(this.contentEl).setValue("Hello world").setDisabled(!0).then(t=>{
t.inputEl.style.width = "100%",
t.inputEl.rows = 10
}
),
this.buttonContainerEl = this.modalEl.createDiv({
cls: "modal-button-container"
}),
this.addButton(t=>t.setButtonText("Check Conflicts").onClick(()=>this.Convert(!0))),
this.addButton(t=>t.setButtonText("Convert").setWarning().onClick(()=>this.Convert())),
this.addButton(t=>t.setButtonText("Cancel").onClick(this.close.bind(this)))
}
addButton(e) {
let t = new p.ButtonComponent(this.buttonContainerEl);
return e(t),
t
}
log(e) {
this.outputEl.setValue(this.outputEl.getValue() + `
` + e)
}
clear() {
this.outputEl.setValue("")
}
get From() {
let e = this.fromOptsEl.getValue();
return e && A[+e] ? +e : null
}
get To() {
let e = this.toOptsEl.getValue();
return e && A[+e] ? +e : null
}
onOpen() {
this.clear();
let e = this.plugin.settings.folderNotePref.toString();
this.fromOptsEl.setValue(e),
this.toOptsEl.setValue(e)
}
}
;
var Re = "alx-folder-note"
, Q = "FolderNoteAPIv0"
, Z = class extends be.Plugin {
constructor(e, t) {
super(e, t);
this.settings = Ne;
this.vaultHandler = new G(this);
this.resolver = new j(this);
this.settingTab = new X(this);
this.getNewFolderNote = e=>this.settings.folderNoteTemplate.replace(/{{FOLDER_NAME}}/g, e.name).replace(/{{FOLDER_PATH}}/g, e.path);
v.setDefaultLevel("ERROR");
let r = this;
this.api = ce(r),
(window[Q] = this.api) && this.register(()=>delete window[Q]),
this.trigger("folder-note:api-ready", this.api),
this.register(ae(e.fileManager, {
getNewFileParent(o) {
return function(l) {
if (e.vault.getConfig("newFileLocation") === "current") {
let i = r.settings.folderNotePref;
switch (i) {
case 0:
case 1:
break;
case 2:
{
let s = r.resolver.getFolderFromNote(l);
if (s)
return s;
break
}
default:
(0,
Te.default)(i)
}
}
return o.call(e.fileManager, l)
}
}
}))
}
onload() {
return w(this, null, function*() {
v.info("loading folder-note-core"),
yield this.loadSettings(),
this.app.plugins.enabledPlugins.has(Re) || this.addSettingTab(this.settingTab),
ge(this),
he(this),
this.vaultHandler.registerEvent()
})
}
trigger(...e) {
let[t,...r] = e;
this.app.vault.trigger(t, ...r)
}
loadSettings() {
return w(this, null, function*() {
this.settings = I(I({}, this.settings), yield this.loadData()),
v.setLevel(this.settings.logLevel)
})
}
saveSettings() {
return w(this, null, function*() {
yield this.saveData(this.settings)
})
}
}
;
module.exports = Ie(Ve);
}
)
I am getting thousands of these (~12k after 30m open)
The details say that it is folder note: