Skip to content

Instantly share code, notes, and snippets.

@Fyzu
Created October 18, 2022 17:54
Show Gist options
  • Save Fyzu/babced1f64cdc9116595555d37a436f8 to your computer and use it in GitHub Desktop.
Save Fyzu/babced1f64cdc9116595555d37a436f8 to your computer and use it in GitHub Desktop.
Obsidian indent logic
e.prototype.updateDom = function() {
var t = this.view
, n = this.indentCache
, i = t.contentDOM;
if (i.offsetParent) {
for (var r = this.tree, o = [], a = 0, s = Array.from(i.childNodes); a < s.length; a++) {
if ((f = s[a]).instanceOf(HTMLElement) && f.hasClass("cm-line")) {
var l = t.posAtDOM(f)
, c = t.state.doc.lineAt(l);
if (r.length < c.to)
break;
if ((g = sF(c.text)) && !lF(r, c.from, c.from + g.length))
(y = n.get(c.number)) && y.text === g && !y.dirty || o.push({
lineEl: f,
pos: c.from,
line: c.number,
text: g
})
}
}
for (var u = [], h = 0, p = o; h < p.length; h++) {
var d = p[h]
, f = d.lineEl
, g = (l = d.pos,
c = d.line,
d.text)
, m = t.coordsAtPos(l + g.length, 1)
, v = t.coordsAtPos(l, 1);
if (!m || !v)
return 0;
if (S = Math.floor(m.right - v.left)) {
var y, b = !1;
(y = n.get(c)) && y.size === S ? (y.text = g,
y.dirty = !1) : (n.set(c, {
text: g,
size: S,
dirty: !1
}),
b = !0),
b && u.push({
lineEl: f,
size: S
})
}
}
for (var w = 0, k = u; w < k.length; w++) {
var C = k[w]
, S = (f = C.lineEl,
C.size);
f.style.textIndent = "".concat(-S, "px"),
f.style.paddingLeft = "".concat(e.basePadding + S, "px")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment