.obsidian/plugins/obsidian-divide-and-conquer/main.js

1590 lines
197 KiB
JavaScript
Raw Normal View History

2023-11-18 05:21:52 +00:00
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
__markAsModule(target);
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __reExport = (target, module2, desc) => {
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
for (let key of __getOwnPropNames(module2))
if (!__hasOwnProp.call(target, key) && key !== "default")
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
}
return target;
};
var __toModule = (module2) => {
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
};
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
// node_modules/tinycolor2/tinycolor.js
var require_tinycolor = __commonJS({
"node_modules/tinycolor2/tinycolor.js"(exports, module2) {
(function(Math2) {
var trimLeft = /^\s+/, trimRight = /\s+$/, tinyCounter = 0, mathRound = Math2.round, mathMin = Math2.min, mathMax = Math2.max, mathRandom = Math2.random;
function tinycolor2(color, opts) {
color = color ? color : "";
opts = opts || {};
if (color instanceof tinycolor2) {
return color;
}
if (!(this instanceof tinycolor2)) {
return new tinycolor2(color, opts);
}
var rgb = inputToRGB(color);
this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = mathRound(100 * this._a) / 100, this._format = opts.format || rgb.format;
this._gradientType = opts.gradientType;
if (this._r < 1) {
this._r = mathRound(this._r);
}
if (this._g < 1) {
this._g = mathRound(this._g);
}
if (this._b < 1) {
this._b = mathRound(this._b);
}
this._ok = rgb.ok;
this._tc_id = tinyCounter++;
}
tinycolor2.prototype = {
isDark: function() {
return this.getBrightness() < 128;
},
isLight: function() {
return !this.isDark();
},
isValid: function() {
return this._ok;
},
getOriginalInput: function() {
return this._originalInput;
},
getFormat: function() {
return this._format;
},
getAlpha: function() {
return this._a;
},
getBrightness: function() {
var rgb = this.toRgb();
return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1e3;
},
getLuminance: function() {
var rgb = this.toRgb();
var RsRGB, GsRGB, BsRGB, R, G, B;
RsRGB = rgb.r / 255;
GsRGB = rgb.g / 255;
BsRGB = rgb.b / 255;
if (RsRGB <= 0.03928) {
R = RsRGB / 12.92;
} else {
R = Math2.pow((RsRGB + 0.055) / 1.055, 2.4);
}
if (GsRGB <= 0.03928) {
G = GsRGB / 12.92;
} else {
G = Math2.pow((GsRGB + 0.055) / 1.055, 2.4);
}
if (BsRGB <= 0.03928) {
B = BsRGB / 12.92;
} else {
B = Math2.pow((BsRGB + 0.055) / 1.055, 2.4);
}
return 0.2126 * R + 0.7152 * G + 0.0722 * B;
},
setAlpha: function(value) {
this._a = boundAlpha(value);
this._roundA = mathRound(100 * this._a) / 100;
return this;
},
toHsv: function() {
var hsv = rgbToHsv(this._r, this._g, this._b);
return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };
},
toHsvString: function() {
var hsv = rgbToHsv(this._r, this._g, this._b);
var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);
return this._a == 1 ? "hsv(" + h + ", " + s + "%, " + v + "%)" : "hsva(" + h + ", " + s + "%, " + v + "%, " + this._roundA + ")";
},
toHsl: function() {
var hsl = rgbToHsl(this._r, this._g, this._b);
return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };
},
toHslString: function() {
var hsl = rgbToHsl(this._r, this._g, this._b);
var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);
return this._a == 1 ? "hsl(" + h + ", " + s + "%, " + l + "%)" : "hsla(" + h + ", " + s + "%, " + l + "%, " + this._roundA + ")";
},
toHex: function(allow3Char) {
return rgbToHex(this._r, this._g, this._b, allow3Char);
},
toHexString: function(allow3Char) {
return "#" + this.toHex(allow3Char);
},
toHex8: function(allow4Char) {
return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);
},
toHex8String: function(allow4Char) {
return "#" + this.toHex8(allow4Char);
},
toRgb: function() {
return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };
},
toRgbString: function() {
return this._a == 1 ? "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")";
},
toPercentageRgb: function() {
return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a };
},
toPercentageRgbString: function() {
return this._a == 1 ? "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")";
},
toName: function() {
if (this._a === 0) {
return "transparent";
}
if (this._a < 1) {
return false;
}
return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;
},
toFilter: function(secondColor) {
var hex8String = "#" + rgbaToArgbHex(this._r, this._g, this._b, this._a);
var secondHex8String = hex8String;
var gradientType = this._gradientType ? "GradientType = 1, " : "";
if (secondColor) {
var s = tinycolor2(secondColor);
secondHex8String = "#" + rgbaToArgbHex(s._r, s._g, s._b, s._a);
}
return "progid:DXImageTransform.Microsoft.gradient(" + gradientType + "startColorstr=" + hex8String + ",endColorstr=" + secondHex8String + ")";
},
toString: function(format) {
var formatSet = !!format;
format = format || this._format;
var formattedString = false;
var hasAlpha = this._a < 1 && this._a >= 0;
var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name");
if (needsAlphaFormat) {
if (format === "name" && this._a === 0) {
return this.toName();
}
return this.toRgbString();
}
if (format === "rgb") {
formattedString = this.toRgbString();
}
if (format === "prgb") {
formattedString = this.toPercentageRgbString();
}
if (format === "hex" || format === "hex6") {
formattedString = this.toHexString();
}
if (format === "hex3") {
formattedString = this.toHexString(true);
}
if (format === "hex4") {
formattedString = this.toHex8String(true);
}
if (format === "hex8") {
formattedString = this.toHex8String();
}
if (format === "name") {
formattedString = this.toName();
}
if (format === "hsl") {
formattedString = this.toHslString();
}
if (format === "hsv") {
formattedString = this.toHsvString();
}
return formattedString || this.toHexString();
},
clone: function() {
return tinycolor2(this.toString());
},
_applyModification: function(fn, args) {
var color = fn.apply(null, [this].concat([].slice.call(args)));
this._r = color._r;
this._g = color._g;
this._b = color._b;
this.setAlpha(color._a);
return this;
},
lighten: function() {
return this._applyModification(lighten, arguments);
},
brighten: function() {
return this._applyModification(brighten, arguments);
},
darken: function() {
return this._applyModification(darken, arguments);
},
desaturate: function() {
return this._applyModification(desaturate, arguments);
},
saturate: function() {
return this._applyModification(saturate, arguments);
},
greyscale: function() {
return this._applyModification(greyscale, arguments);
},
spin: function() {
return this._applyModification(spin, arguments);
},
_applyCombination: function(fn, args) {
return fn.apply(null, [this].concat([].slice.call(args)));
},
analogous: function() {
return this._applyCombination(analogous, arguments);
},
complement: function() {
return this._applyCombination(complement, arguments);
},
monochromatic: function() {
return this._applyCombination(monochromatic, arguments);
},
splitcomplement: function() {
return this._applyCombination(splitcomplement, arguments);
},
triad: function() {
return this._applyCombination(triad, arguments);
},
tetrad: function() {
return this._applyCombination(tetrad, arguments);
}
};
tinycolor2.fromRatio = function(color, opts) {
if (typeof color == "object") {
var newColor = {};
for (var i in color) {
if (color.hasOwnProperty(i)) {
if (i === "a") {
newColor[i] = color[i];
} else {
newColor[i] = convertToPercentage(color[i]);
}
}
}
color = newColor;
}
return tinycolor2(color, opts);
};
function inputToRGB(color) {
var rgb = { r: 0, g: 0, b: 0 };
var a = 1;
var s = null;
var v = null;
var l = null;
var ok = false;
var format = false;
if (typeof color == "string") {
color = stringInputToObject(color);
}
if (typeof color == "object") {
if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {
rgb = rgbToRgb(color.r, color.g, color.b);
ok = true;
format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb";
} else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {
s = convertToPercentage(color.s);
v = convertToPercentage(color.v);
rgb = hsvToRgb(color.h, s, v);
ok = true;
format = "hsv";
} else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {
s = convertToPercentage(color.s);
l = convertToPercentage(color.l);
rgb = hslToRgb(color.h, s, l);
ok = true;
format = "hsl";
}
if (color.hasOwnProperty("a")) {
a = color.a;
}
}
a = boundAlpha(a);
return {
ok,
format: color.format || format,
r: mathMin(255, mathMax(rgb.r, 0)),
g: mathMin(255, mathMax(rgb.g, 0)),
b: mathMin(255, mathMax(rgb.b, 0)),
a
};
}
function rgbToRgb(r, g, b) {
return {
r: bound01(r, 255) * 255,
g: bound01(g, 255) * 255,
b: bound01(b, 255) * 255
};
}
function rgbToHsl(r, g, b) {
r = bound01(r, 255);
g = bound01(g, 255);
b = bound01(b, 255);
var max = mathMax(r, g, b), min = mathMin(r, g, b);
var h, s, l = (max + min) / 2;
if (max == min) {
h = s = 0;
} else {
var d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
switch (max) {
case r:
h = (g - b) / d + (g < b ? 6 : 0);
break;
case g:
h = (b - r) / d + 2;
break;
case b:
h = (r - g) / d + 4;
break;
}
h /= 6;
}
return { h, s, l };
}
function hslToRgb(h, s, l) {
var r, g, b;
h = bound01(h, 360);
s = bound01(s, 100);
l = bound01(l, 100);
function hue2rgb(p2, q2, t) {
if (t < 0)
t += 1;
if (t > 1)
t -= 1;
if (t < 1 / 6)
return p2 + (q2 - p2) * 6 * t;
if (t < 1 / 2)
return q2;
if (t < 2 / 3)
return p2 + (q2 - p2) * (2 / 3 - t) * 6;
return p2;
}
if (s === 0) {
r = g = b = l;
} else {
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
var p = 2 * l - q;
r = hue2rgb(p, q, h + 1 / 3);
g = hue2rgb(p, q, h);
b = hue2rgb(p, q, h - 1 / 3);
}
return { r: r * 255, g: g * 255, b: b * 255 };
}
function rgbToHsv(r, g, b) {
r = bound01(r, 255);
g = bound01(g, 255);
b = bound01(b, 255);
var max = mathMax(r, g, b), min = mathMin(r, g, b);
var h, s, v = max;
var d = max - min;
s = max === 0 ? 0 : d / max;
if (max == min) {
h = 0;
} else {
switch (max) {
case r:
h = (g - b) / d + (g < b ? 6 : 0);
break;
case g:
h = (b - r) / d + 2;
break;
case b:
h = (r - g) / d + 4;
break;
}
h /= 6;
}
return { h, s, v };
}
function hsvToRgb(h, s, v) {
h = bound01(h, 360) * 6;
s = bound01(s, 100);
v = bound01(v, 100);
var i = Math2.floor(h), f = h - i, p = v * (1 - s), q = v * (1 - f * s), t = v * (1 - (1 - f) * s), mod = i % 6, r = [v, q, p, p, t, v][mod], g = [t, v, v, q, p, p][mod], b = [p, p, t, v, v, q][mod];
return { r: r * 255, g: g * 255, b: b * 255 };
}
function rgbToHex(r, g, b, allow3Char) {
var hex = [
pad2(mathRound(r).toString(16)),
pad2(mathRound(g).toString(16)),
pad2(mathRound(b).toString(16))
];
if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {
return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);
}
return hex.join("");
}
function rgbaToHex(r, g, b, a, allow4Char) {
var hex = [
pad2(mathRound(r).toString(16)),
pad2(mathRound(g).toString(16)),
pad2(mathRound(b).toString(16)),
pad2(convertDecimalToHex(a))
];
if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {
return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);
}
return hex.join("");
}
function rgbaToArgbHex(r, g, b, a) {
var hex = [
pad2(convertDecimalToHex(a)),
pad2(mathRound(r).toString(16)),
pad2(mathRound(g).toString(16)),
pad2(mathRound(b).toString(16))
];
return hex.join("");
}
tinycolor2.equals = function(color1, color2) {
if (!color1 || !color2) {
return false;
}
return tinycolor2(color1).toRgbString() == tinycolor2(color2).toRgbString();
};
tinycolor2.random = function() {
return tinycolor2.fromRatio({
r: mathRandom(),
g: mathRandom(),
b: mathRandom()
});
};
function desaturate(color, amount) {
amount = amount === 0 ? 0 : amount || 10;
var hsl = tinycolor2(color).toHsl();
hsl.s -= amount / 100;
hsl.s = clamp01(hsl.s);
return tinycolor2(hsl);
}
function saturate(color, amount) {
amount = amount === 0 ? 0 : amount || 10;
var hsl = tinycolor2(color).toHsl();
hsl.s += amount / 100;
hsl.s = clamp01(hsl.s);
return tinycolor2(hsl);
}
function greyscale(color) {
return tinycolor2(color).desaturate(100);
}
function lighten(color, amount) {
amount = amount === 0 ? 0 : amount || 10;
var hsl = tinycolor2(color).toHsl();
hsl.l += amount / 100;
hsl.l = clamp01(hsl.l);
return tinycolor2(hsl);
}
function brighten(color, amount) {
amount = amount === 0 ? 0 : amount || 10;
var rgb = tinycolor2(color).toRgb();
rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * -(amount / 100))));
rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * -(amount / 100))));
rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * -(amount / 100))));
return tinycolor2(rgb);
}
function darken(color, amount) {
amount = amount === 0 ? 0 : amount || 10;
var hsl = tinycolor2(color).toHsl();
hsl.l -= amount / 100;
hsl.l = clamp01(hsl.l);
return tinycolor2(hsl);
}
function spin(color, amount) {
var hsl = tinycolor2(color).toHsl();
var hue = (hsl.h + amount) % 360;
hsl.h = hue < 0 ? 360 + hue : hue;
return tinycolor2(hsl);
}
function complement(color) {
var hsl = tinycolor2(color).toHsl();
hsl.h = (hsl.h + 180) % 360;
return tinycolor2(hsl);
}
function triad(color) {
var hsl = tinycolor2(color).toHsl();
var h = hsl.h;
return [
tinycolor2(color),
tinycolor2({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),
tinycolor2({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })
];
}
function tetrad(color) {
var hsl = tinycolor2(color).toHsl();
var h = hsl.h;
return [
tinycolor2(color),
tinycolor2({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),
tinycolor2({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),
tinycolor2({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })
];
}
function splitcomplement(color) {
var hsl = tinycolor2(color).toHsl();
var h = hsl.h;
return [
tinycolor2(color),
tinycolor2({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),
tinycolor2({ h: (h + 216) % 360, s: hsl.s, l: hsl.l })
];
}
function analogous(color, results, slices) {
results = results || 6;
slices = slices || 30;
var hsl = tinycolor2(color).toHsl();
var part = 360 / slices;
var ret = [tinycolor2(color)];
for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results; ) {
hsl.h = (hsl.h + part) % 360;
ret.push(tinycolor2(hsl));
}
return ret;
}
function monochromatic(color, results) {
results = results || 6;
var hsv = tinycolor2(color).toHsv();
var h = hsv.h, s = hsv.s, v = hsv.v;
var ret = [];
var modification = 1 / results;
while (results--) {
ret.push(tinycolor2({ h, s, v }));
v = (v + modification) % 1;
}
return ret;
}
tinycolor2.mix = function(color1, color2, amount) {
amount = amount === 0 ? 0 : amount || 50;
var rgb1 = tinycolor2(color1).toRgb();
var rgb2 = tinycolor2(color2).toRgb();
var p = amount / 100;
var rgba = {
r: (rgb2.r - rgb1.r) * p + rgb1.r,
g: (rgb2.g - rgb1.g) * p + rgb1.g,
b: (rgb2.b - rgb1.b) * p + rgb1.b,
a: (rgb2.a - rgb1.a) * p + rgb1.a
};
return tinycolor2(rgba);
};
tinycolor2.readability = function(color1, color2) {
var c1 = tinycolor2(color1);
var c2 = tinycolor2(color2);
return (Math2.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math2.min(c1.getLuminance(), c2.getLuminance()) + 0.05);
};
tinycolor2.isReadable = function(color1, color2, wcag2) {
var readability = tinycolor2.readability(color1, color2);
var wcag2Parms, out;
out = false;
wcag2Parms = validateWCAG2Parms(wcag2);
switch (wcag2Parms.level + wcag2Parms.size) {
case "AAsmall":
case "AAAlarge":
out = readability >= 4.5;
break;
case "AAlarge":
out = readability >= 3;
break;
case "AAAsmall":
out = readability >= 7;
break;
}
return out;
};
tinycolor2.mostReadable = function(baseColor, colorList, args) {
var bestColor = null;
var bestScore = 0;
var readability;
var includeFallbackColors, level, size;
args = args || {};
includeFallbackColors = args.includeFallbackColors;
level = args.level;
size = args.size;
for (var i = 0; i < colorList.length; i++) {
readability = tinycolor2.readability(baseColor, colorList[i]);
if (readability > bestScore) {
bestScore = readability;
bestColor = tinycolor2(colorList[i]);
}
}
if (tinycolor2.isReadable(baseColor, bestColor, { "level": level, "size": size }) || !includeFallbackColors) {
return bestColor;
} else {
args.includeFallbackColors = false;
return tinycolor2.mostReadable(baseColor, ["#fff", "#000"], args);
}
};
var names = tinycolor2.names = {
aliceblue: "f0f8ff",
antiquewhite: "faebd7",
aqua: "0ff",
aquamarine: "7fffd4",
azure: "f0ffff",
beige: "f5f5dc",
bisque: "ffe4c4",
black: "000",
blanchedalmond: "ffebcd",
blue: "00f",
blueviolet: "8a2be2",
brown: "a52a2a",
burlywood: "deb887",
burntsienna: "ea7e5d",
cadetblue: "5f9ea0",
chartreuse: "7fff00",
chocolate: "d2691e",
coral: "ff7f50",
cornflowerblue: "6495ed",
cornsilk: "fff8dc",
crimson: "dc143c",
cyan: "0ff",
darkblue: "00008b",
darkcyan: "008b8b",
darkgoldenrod: "b8860b",
darkgray: "a9a9a9",
darkgreen: "006400",
darkgrey: "a9a9a9",
darkkhaki: "bdb76b",
darkmagenta: "8b008b",
darkolivegreen: "556b2f",
darkorange: "ff8c00",
darkorchid: "9932cc",
darkred: "8b0000",
darksalmon: "e9967a",
darkseagreen: "8fbc8f",
darkslateblue: "483d8b",
darkslategray: "2f4f4f",
darkslategrey: "2f4f4f",
darkturquoise: "00ced1",
darkviolet: "9400d3",
deeppink: "ff1493",
deepskyblue: "00bfff",
dimgray: "696969",
dimgrey: "696969",
dodgerblue: "1e90ff",
firebrick: "b22222",
floralwhite: "fffaf0",
forestgreen: "228b22",
fuchsia: "f0f",
gainsboro: "dcdcdc",
ghostwhite: "f8f8ff",
gold: "ffd700",
goldenrod: "daa520",
gray: "808080",
green: "008000",
greenyellow: "adff2f",
grey: "808080",
honeydew: "f0fff0",
hotpink: "ff69b4",
indianred: "cd5c5c",
indigo: "4b0082",
ivory: "fffff0",
khaki: "f0e68c",
lavender: "e6e6fa",
lavenderblush: "fff0f5",
lawngreen: "7cfc00",
lemonchiffon: "fffacd",
lightblue: "add8e6",
lightcoral: "f08080",
lightcyan: "e0ffff",
lightgoldenrodyellow: "fafad2",
lightgray: "d3d3d3",
lightgreen: "90ee90",
lightgrey: "d3d3d3",
lightpink: "ffb6c1",
lightsalmon: "ffa07a",
lightseagreen: "20b2aa",
lightskyblue: "87cefa",
lightslategray: "789",
lightslategrey: "789",
lightsteelblue: "b0c4de",
lightyellow: "ffffe0",
lime: "0f0",
limegreen: "32cd32",
linen: "faf0e6",
magenta: "f0f",
maroon: "800000",
mediumaquamarine: "66cdaa",
mediumblue: "0000cd",
mediumorchid: "ba55d3",
mediumpurple: "9370db",
mediumseagreen: "3cb371",
mediumslateblue: "7b68ee",
mediumspringgreen: "00fa9a",
mediumturquoise: "48d1cc",
mediumvioletred: "c71585",
midnightblue: "191970",
mintcream: "f5fffa",
mistyrose: "ffe4e1",
moccasin: "ffe4b5",
navajowhite: "ffdead",
navy: "000080",
oldlace: "fdf5e6",
olive: "808000",
olivedrab: "6b8e23",
orange: "ffa500",
orangered: "ff4500",
orchid: "da70d6",
palegoldenrod: "eee8aa",
palegreen: "98fb98",
paleturquoise: "afeeee",
palevioletred: "db7093",
papayawhip: "ffefd5",
peachpuff: "ffdab9",
peru: "cd853f",
pink: "ffc0cb",
plum: "dda0dd",
powderblue: "b0e0e6",
purple: "800080",
rebeccapurple: "663399",
red: "f00",
rosybrown: "bc8f8f",
royalblue: "4169e1",
saddlebrown: "8b4513",
salmon: "fa8072",
sandybrown: "f4a460",
seagreen: "2e8b57",
seashell: "fff5ee",
sienna: "a0522d",
silver: "c0c0c0",
skyblue: "87ceeb",
slateblue: "6a5acd",
slategray: "708090",
slategrey: "708090",
snow: "fffafa",
springgreen: "00ff7f",
steelblue: "4682b4",
tan: "d2b48c",
teal: "008080",
thistle: "d8bfd8",
tomato: "ff6347",
turquoise: "40e0d0",
violet: "ee82ee",
wheat: "f5deb3",
white: "fff",
whitesmoke: "f5f5f5",
yellow: "ff0",
yellowgreen: "9acd32"
};
var hexNames = tinycolor2.hexNames = flip(names);
function flip(o) {
var flipped = {};
for (var i in o) {
if (o.hasOwnProperty(i)) {
flipped[o[i]] = i;
}
}
return flipped;
}
function boundAlpha(a) {
a = parseFloat(a);
if (isNaN(a) || a < 0 || a > 1) {
a = 1;
}
return a;
}
function bound01(n, max) {
if (isOnePointZero(n)) {
n = "100%";
}
var processPercent = isPercentage(n);
n = mathMin(max, mathMax(0, parseFloat(n)));
if (processPercent) {
n = parseInt(n * max, 10) / 100;
}
if (Math2.abs(n - max) < 1e-6) {
return 1;
}
return n % max / parseFloat(max);
}
function clamp01(val) {
return mathMin(1, mathMax(0, val));
}
function parseIntFromHex(val) {
return parseInt(val, 16);
}
function isOnePointZero(n) {
return typeof n == "string" && n.indexOf(".") != -1 && parseFloat(n) === 1;
}
function isPercentage(n) {
return typeof n === "string" && n.indexOf("%") != -1;
}
function pad2(c) {
return c.length == 1 ? "0" + c : "" + c;
}
function convertToPercentage(n) {
if (n <= 1) {
n = n * 100 + "%";
}
return n;
}
function convertDecimalToHex(d) {
return Math2.round(parseFloat(d) * 255).toString(16);
}
function convertHexToDecimal(h) {
return parseIntFromHex(h) / 255;
}
var matchers = function() {
var CSS_INTEGER = "[-\\+]?\\d+%?";
var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?";
var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")";
var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?";
var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?";
return {
CSS_UNIT: new RegExp(CSS_UNIT),
rgb: new RegExp("rgb" + PERMISSIVE_MATCH3),
rgba: new RegExp("rgba" + PERMISSIVE_MATCH4),
hsl: new RegExp("hsl" + PERMISSIVE_MATCH3),
hsla: new RegExp("hsla" + PERMISSIVE_MATCH4),
hsv: new RegExp("hsv" + PERMISSIVE_MATCH3),
hsva: new RegExp("hsva" + PERMISSIVE_MATCH4),
hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
};
}();
function isValidCSSUnit(color) {
return !!matchers.CSS_UNIT.exec(color);
}
function stringInputToObject(color) {
color = color.replace(trimLeft, "").replace(trimRight, "").toLowerCase();
var named = false;
if (names[color]) {
color = names[color];
named = true;
} else if (color == "transparent") {
return { r: 0, g: 0, b: 0, a: 0, format: "name" };
}
var match;
if (match = matchers.rgb.exec(color)) {
return { r: match[1], g: match[2], b: match[3] };
}
if (match = matchers.rgba.exec(color)) {
return { r: match[1], g: match[2], b: match[3], a: match[4] };
}
if (match = matchers.hsl.exec(color)) {
return { h: match[1], s: match[2], l: match[3] };
}
if (match = matchers.hsla.exec(color)) {
return { h: match[1], s: match[2], l: match[3], a: match[4] };
}
if (match = matchers.hsv.exec(color)) {
return { h: match[1], s: match[2], v: match[3] };
}
if (match = matchers.hsva.exec(color)) {
return { h: match[1], s: match[2], v: match[3], a: match[4] };
}
if (match = matchers.hex8.exec(color)) {
return {
r: parseIntFromHex(match[1]),
g: parseIntFromHex(match[2]),
b: parseIntFromHex(match[3]),
a: convertHexToDecimal(match[4]),
format: named ? "name" : "hex8"
};
}
if (match = matchers.hex6.exec(color)) {
return {
r: parseIntFromHex(match[1]),
g: parseIntFromHex(match[2]),
b: parseIntFromHex(match[3]),
format: named ? "name" : "hex"
};
}
if (match = matchers.hex4.exec(color)) {
return {
r: parseIntFromHex(match[1] + "" + match[1]),
g: parseIntFromHex(match[2] + "" + match[2]),
b: parseIntFromHex(match[3] + "" + match[3]),
a: convertHexToDecimal(match[4] + "" + match[4]),
format: named ? "name" : "hex8"
};
}
if (match = matchers.hex3.exec(color)) {
return {
r: parseIntFromHex(match[1] + "" + match[1]),
g: parseIntFromHex(match[2] + "" + match[2]),
b: parseIntFromHex(match[3] + "" + match[3]),
format: named ? "name" : "hex"
};
}
return false;
}
function validateWCAG2Parms(parms) {
var level, size;
parms = parms || { "level": "AA", "size": "small" };
level = (parms.level || "AA").toUpperCase();
size = (parms.size || "small").toLowerCase();
if (level !== "AA" && level !== "AAA") {
level = "AA";
}
if (size !== "small" && size !== "large") {
size = "small";
}
return { "level": level, "size": size };
}
if (typeof module2 !== "undefined" && module2.exports) {
module2.exports = tinycolor2;
} else if (typeof define === "function" && define.amd) {
define(function() {
return tinycolor2;
});
} else {
window.tinycolor = tinycolor2;
}
})(Math);
}
});
// main.ts
__export(exports, {
default: () => divideAndConquer
});
var import_obsidian2 = __toModule(require("obsidian"));
// settings.ts
var import_obsidian = __toModule(require("obsidian"));
var DEFAULT_SETTINGS = {
pluginFilterRegexes: [
"hot-reload",
"obsidian-divide-and-conquer"
],
snippetFilterRegexes: [],
filterUsingDisplayName: true,
filterUsingAuthor: false,
filterUsingDescription: false,
initializeAfterPluginChanges: false,
reloadAfterPluginChanges: false,
disabledStates: void 0,
snapshots: void 0
};
var DACSettingsTab = class extends import_obsidian.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.toggles = [];
this.plugin = plugin;
}
display() {
const { containerEl } = this;
containerEl.empty();
containerEl.createEl("h1", { text: "Divide and Conquer" });
containerEl.createEl("h5", {
text: "Note: Reinitializing or Reloading may cause disabled plugins to dissappear; close and open the menu to see them again"
}).style.color = getComputedStyle(containerEl).getPropertyValue("--interactive-accent");
new import_obsidian.Setting(containerEl).setName("Reinitialize Obsidian after plugin changes").setDesc(`This is not usually necessary. If you have "Debug startup time" enabled in the Community Plugins tab you'll see startup times when using commmands`).addToggle((toggle) => toggle.setValue(this.plugin.settings.initializeAfterPluginChanges).onChange((value) => __async(this, null, function* () {
this.plugin.settings.initializeAfterPluginChanges = value;
yield this.plugin.saveData(false);
})));
new import_obsidian.Setting(containerEl).setName("Reload Obsidian after plugin changes").addToggle((toggle) => toggle.setValue(this.plugin.settings.reloadAfterPluginChanges).onChange((value) => __async(this, null, function* () {
this.plugin.settings.reloadAfterPluginChanges = value;
yield this.plugin.saveData(false);
})));
containerEl.createEl("hr").createEl("br");
containerEl.createEl("h3", { text: "Changing any of the following settings will restore plugins to the original state." });
new import_obsidian.Setting(containerEl).setName("Use Filters on Plugin Display Names").setDesc("If this is off, DAC will only match plugins by their ID").addToggle((toggle) => {
this.toggles.push(toggle);
return toggle.setValue(this.plugin.settings.filterUsingDisplayName).onChange((value) => __async(this, null, function* () {
this.plugin.settings.filterUsingDisplayName = value;
yield this.plugin.saveData();
}));
});
new import_obsidian.Setting(containerEl).setName("Use Filters on Plugin Authors").addToggle((toggle) => {
this.toggles.push(toggle);
return toggle.setValue(this.plugin.settings.filterUsingAuthor).onChange((value) => __async(this, null, function* () {
this.plugin.settings.filterUsingAuthor = value;
yield this.plugin.saveData();
}));
});
new import_obsidian.Setting(containerEl).setName("Use Filters on Plugin Descriptions").addToggle((toggle) => {
this.toggles.push(toggle);
return toggle.setValue(this.plugin.settings.filterUsingDescription).onChange((value) => __async(this, null, function* () {
this.plugin.settings.filterUsingDescription = value;
yield this.plugin.saveData();
}));
});
let pluginExclusions = new import_obsidian.Setting(containerEl).setName("Plugin Exclusions").setDesc("Exclude plugins using regex (case insensitive).\nEach new line is a new regex. Plugin ids are used for matching by default. Included plugins are on the left, excluded on the right. ");
this.addTextArea({
mode: "plugins",
container: pluginExclusions,
placeholder: "^daily/\n\\.png$\netc...",
value: this.plugin.settings.pluginFilterRegexes.join("\n"),
disabledArea: this.addTextArea({ mode: "plugins", container: pluginExclusions })
});
let snippetExclusions = new import_obsidian.Setting(containerEl).setName("Snippet Exclusions").setDesc("Exclude snippets using regex (case insensitive).\nEach new line is a new regex. Snippet are only exclude by their name.");
this.addTextArea({
mode: "snippets",
container: snippetExclusions,
placeholder: "^daily/\n\\.png$\netc...",
value: this.plugin.settings.snippetFilterRegexes.join("\n"),
disabledArea: this.addTextArea({ mode: "snippets", container: snippetExclusions })
});
[pluginExclusions, snippetExclusions].forEach((s) => {
s.controlEl.style.width = "100%";
s.infoEl.style.width = "45%";
});
}
addTextArea({ mode, container, placeholder, value, disabledArea }) {
let ret;
let reset = (area, mode2) => {
this.plugin.saveData();
area.setPlaceholder([...this.plugin.getIncludedItems(mode2)].map((p) => p.name).join("\n")).setDisabled(true);
};
container.addTextArea((textArea) => {
ret = textArea;
textArea.inputEl.setAttr("rows", 10);
textArea.inputEl.style.width = "100%";
if (value)
textArea.setPlaceholder(placeholder).setValue(value);
textArea.setPlaceholder(placeholder != null ? placeholder : [...this.plugin.getIncludedItems(mode)].map((p) => p.name).join("\n")).setDisabled(!disabledArea);
if (disabledArea) {
this.toggles.forEach((t) => t.toggleEl.onClickEvent(reset.bind(this, disabledArea, mode)));
textArea.inputEl.onblur = (e) => {
this.setFilters(mode, e.target.value);
reset(disabledArea, mode);
};
}
});
return ret;
}
setFilters(mode, input) {
let f = input == null ? void 0 : input.split("\n").filter((p) => p.length);
switch (mode) {
case "plugins":
this.plugin.settings.pluginFilterRegexes = f;
break;
case "snippets":
this.plugin.settings.snippetFilterRegexes = f;
break;
}
this.plugin.saveData();
}
};
// util.ts
function simpleCalc(str) {
const calcRegex = /calc\((\d+)%\s*([+-])\s*(\d+)%\)/;
const match = str.match(calcRegex);
if (!match)
return str;
const [_, a, op, b] = match;
const result = op === "+" ? +a + +b : +a - +b;
return str.replace(calcRegex, `${result}%`);
}
function removeSetupDebugNotice() {
let notices = document.querySelectorAll(".notice");
for (let i = 0; i < notices.length; i++) {
let notice = notices[i];
if (notice == null ? void 0 : notice.innerText.includes("plugin setup"))
notice.remove();
}
}
function queryText(el, selector, text) {
return Array.from(el.querySelectorAll(selector)).find((heading) => heading.innerText.includes(text));
}
var compose = (_this, ...funcs) => (...args) => funcs.reduce((promise, func) => promise.then(func.bind(_this)), Promise.resolve());
function makeArray(collection) {
const array = [];
for (let i = 0; i < collection.length; i++) {
array.push(collection[i]);
}
return array;
}
function getSnippetItems(tab) {
const headings = tab.containerEl.querySelectorAll(".setting-item-heading");
const lastHeading = headings[headings.length - 1];
let res = Array.from(tab.containerEl.children).filter((child) => !(child.compareDocumentPosition(lastHeading) & Node.DOCUMENT_POSITION_FOLLOWING));
console.log(res, headings);
return res;
}
var Modes = [
"plugins",
"snippets"
];
// node_modules/monkey-around/mjs/index.js
function around(obj, factories) {
const removers = Object.keys(factories).map((key) => around1(obj, key, factories[key]));
return removers.length === 1 ? removers[0] : function() {
removers.forEach((r) => r());
};
}
function around1(obj, method, createWrapper) {
const original = obj[method], hadOwn = obj.hasOwnProperty(method);
let current = createWrapper(original);
if (original)
Object.setPrototypeOf(current, original);
Object.setPrototypeOf(wrapper, current);
obj[method] = wrapper;
return remove;
function wrapper(...args) {
if (current === original && obj[method] === wrapper)
remove();
return current.apply(this, args);
}
function remove() {
if (obj[method] === wrapper) {
if (hadOwn)
obj[method] = original;
else
delete obj[method];
}
if (current === original)
return;
current = original;
Object.setPrototypeOf(wrapper, original || Function);
}
}
// main.ts
var tinycolor = require_tinycolor();
var CSS_DELAY = 200;
var RESET_DELAY = 1e3;
var pluginCommands = [
{ id: "reset", name: "Plugin Reset - forget the original state and set the current state as the new original state" },
{ id: "restore", name: "Plugin Restore - return to the original state" },
{ id: "unBisect", name: "Plugin Un-Bisect - Undo the last bisection, or enable all plugins if in the original state" },
{ id: "bisect", name: "Plugin Bisect - Disable half of the active plugins, or return to the original state if all plugins are active" },
{ id: "reBisect", name: "Plugin Re-Bisect - Undo the last bisection, then disable the other half" }
];
var snippetCommands = [
{ id: "reset", name: "Snippet Reset - forget the original state and set the current state as the new original state" },
{ id: "restore", name: "Snippet Restore - return to the original state" },
{ id: "unBisect", name: "Snippet Un-Bisect - Undo the last bisection, or enable all snippets if in the original state" },
{ id: "bisect", name: "Snippet Bisect - Disable half of the active snippets, or return to the original state if all snippets are active" },
{ id: "reBisect", name: "Snippet Re-Bisect - Undo the last bisection, then disable the other half" }
];
var UIButtons = [
{ id: "reset", tooltip: "Reset - Snapshot the current state" },
{ id: "restore", tooltip: "Restore - Restore Snapshot" },
{ id: "unBisect", tooltip: "UnBisect - Go up a level" },
{ id: "bisect", tooltip: "Bisect - Go down a level" },
{ id: "reBisect", tooltip: "Re-bisect - Go back a level, then down the other side" }
];
var icons = [
["reset", "camera"],
["restore", "switch-camera"],
["unBisect", "expand"],
["bisect", "minimize"],
["reBisect", "flip-vertical"]
];
var divideAndConquer = class extends import_obsidian2.Plugin {
constructor() {
super(...arguments);
this.manifests = this.app.plugins.manifests;
this.enabledColor = null;
this.disabledColor = null;
this._mode = "plugins";
this.mode2Call = new Map();
this.mode2Refresh = new Map();
this.mode2Tab = new Map();
this.mode2Controls = new Map();
this.mode2DisabledStates = new Map();
this.mode2Snapshot = new Map();
this.mode2Level = new Map(Modes.map((mode) => [mode, 1]));
this.key2Icon = new Map(icons);
this.disableButtons = false;
}
get mode() {
return this._mode;
}
setMode(mode) {
this._mode = mode;
}
get disabledState() {
var _a;
return (_a = this.mode2DisabledStates.get(this.mode)) != null ? _a : [];
}
set disabledState(s) {
this.mode2DisabledStates.set(this.mode, s != null ? s : []);
}
get snapshot() {
var _a;
return (_a = this.mode2Snapshot.get(this.mode)) != null ? _a : new Set();
}
set snapshot(s) {
this.mode2Snapshot.set(this.mode, s != null ? s : new Set());
}
get controls() {
var _a;
return (_a = this.mode2Controls.get(this.mode)) != null ? _a : [];
}
set controls(c) {
this.mode2Controls.set(this.mode, c != null ? c : []);
}
get tab() {
return this.mode2Tab.get(this.mode);
}
get wrapper() {
return this.mode2Call.get(this.mode);
}
get refreshTab() {
return this.mode2Refresh.get(this.mode);
}
set refreshTab(f) {
this.mode2Refresh.set(this.mode, f);
}
set level(l) {
this.mode2Level.set(this.mode, l);
}
get level() {
if (!this.mode2Level.has(this.mode))
this.mode2Level.set(this.mode, 1);
return this.mode2Level.get(this.mode);
}
onunload() {
return __async(this, null, function* () {
this.saveData();
console.log("Divide & Conquer Plugin unloaded.");
});
}
onload() {
return __async(this, null, function* () {
yield this.loadData();
this.addSettingTab(new DACSettingsTab(this.app, this));
console.log("Divide & Conquer Plugin loaded.");
const notice = () => {
removeSetupDebugNotice();
let notic_str = `${this.mode} level:${this.level} `;
if (this.level === 1)
new import_obsidian2.Notice(notic_str + "- Now in the original state");
else if (this.level === 0)
new import_obsidian2.Notice(notic_str + "- Enabled All");
else
new import_obsidian2.Notice(notic_str);
};
const maybeReload = () => {
if (this.settings.reloadAfterPluginChanges)
setTimeout(() => this.app.commands.executeCommandById("app:reload"), 2e3);
};
const maybeInit = () => {
if (this.settings.initializeAfterPluginChanges)
return this.app.plugins.initialize();
};
this.mode2Call = new Map(Modes.map((mode) => [mode, (f) => () => __async(this, null, function* () {
return compose(this, () => this.setMode(mode), () => console.log("called: ", f.name), f, () => this.mode2Refresh.get(this.mode)(), maybeReload, maybeInit, notice).bind(this)();
})]));
this.mode2Tab = new Map([
["plugins", "community-plugins"],
["snippets", "appearance"]
].map(([mode, id]) => [mode, this.getSettingsTab(id)]));
Object.assign(this.mode2Tab.get("plugins"), { heading: "Installed plugins", reloadLabel: "Reload plugins", reload: () => this.app.plugins.loadManifests() });
Object.assign(this.mode2Tab.get("snippets"), { heading: "CSS snippets", reloadLabel: "Reload snippets", reload: () => this.app.customCss.loadSnippets() });
[...this.mode2Tab.entries()].forEach(([mode, tab]) => this.register(around(tab, { display: this.overrideDisplay.bind(this, mode, tab) })));
this.getItemEls = () => {
switch (this.mode) {
case "plugins":
return makeArray(this.tab.containerEl.find(".installed-plugins-container").children);
case "snippets":
return getSnippetItems(this.tab);
default:
throw new Error("Unknown mode: " + this.mode);
}
};
this.getAllItems = () => {
switch (this.mode) {
case "plugins":
return new Set(Object.values(this.manifests));
case "snippets":
return new Set(this.app.customCss.snippets.map((s) => ({ name: s, id: s })));
}
};
this.getEnabledFromObsidian = () => {
switch (this.mode) {
case "plugins":
return this.app.plugins.enabledPlugins;
case "snippets":
return new Set(this.app.customCss.snippets.filter((snippet) => this.app.customCss.enabledSnippets.has(snippet)));
}
};
this.enableItem = (id) => {
switch (this.mode) {
case "plugins":
return this.app.plugins.enablePluginAndSave(id);
case "snippets":
return new Promise((resolve) => {
this.app.customCss.setCssEnabledStatus(id, true);
setTimeout(() => resolve({}), CSS_DELAY);
});
}
};
this.disableItem = (id) => {
switch (this.mode) {
case "plugins":
return this.app.plugins.disablePluginAndSave(id);
case "snippets":
return new Promise((resolve) => {
this.app.customCss.setCssEnabledStatus(id, false);
setTimeout(() => resolve({}), CSS_DELAY);
});
}
};
this.getFilters = () => {
switch (this.mode) {
case "plugins":
return this.settings.pluginFilterRegexes;
case "snippets":
return this.settings.snippetFilterRegexes;
}
};
this.addCommands();
this.app.workspace.onLayoutReady(() => {
var _a, _b;
let appContainer = document.getElementsByClassName("app-container").item(0);
(_a = this.enabledColor) != null ? _a : this.enabledColor = tinycolor(simpleCalc(appContainer.getCssPropertyValue("--checkbox-color"))).spin(180).toHexString();
(_b = this.disabledColor) != null ? _b : this.disabledColor = tinycolor(this.enabledColor).darken(35).toHexString();
});
});
}
loadData() {
var __superGet = (key) => super[key];
return __async(this, null, function* () {
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield __superGet("loadData").call(this));
this.mode2DisabledStates = this.settings.disabledStates ? new Map(Object.entries(JSON.parse(this.settings.disabledStates)).map(([mode, states]) => [mode, states.map((state) => new Set(state))])) : new Map();
this.mode2Snapshot = this.settings.snapshots ? new Map(Object.entries(JSON.parse(this.settings.snapshots)).map(([mode, states]) => [mode, new Set(states)])) : new Map();
});
}
saveData(restore = true) {
var __superGet = (key) => super[key];
return __async(this, null, function* () {
if (this.mode2DisabledStates)
this.settings.disabledStates = JSON.stringify(Object.fromEntries([...this.mode2DisabledStates.entries()].map(([mode, sets]) => [mode, [...sets].map((set) => [...set])])));
else
this.settings.disabledStates = void 0;
if (this.mode2Snapshot)
this.settings.snapshots = JSON.stringify(Object.fromEntries([...this.mode2Snapshot.entries()].map(([mode, set]) => [mode, [...set]])));
else
this.settings.snapshots = void 0;
if (restore)
yield this.restore();
yield __superGet("saveData").call(this, this.settings);
});
}
addControls() {
var _a;
let container = this.getControlContainer();
(_a = this.mode2Controls) != null ? _a : this.mode2Controls = new Map();
if (!this.mode2Controls.has(this.mode))
this.mode2Controls.set(this.mode, [...UIButtons.map((o) => new import_obsidian2.ExtraButtonComponent(container).setTooltip(o.tooltip).setIcon(this.key2Icon.get(o.id)).onClick(this.wrapCall(this.mode, o.id)).setDisabled(false).extraSettingsEl), this.createLevelText()]);
this.controls.last().setText(`Level: ${this.mode2Level.get(this.mode)}`);
this.controls.forEach((control) => container.appendChild(control));
}
addCommands() {
pluginCommands.forEach((command) => this.addCommand(Object.assign(command, { callback: this.mode2Call.get("plugins")(this[command.id]) })));
snippetCommands.forEach((command) => this.addCommand(Object.assign(command, { callback: this.mode2Call.get("snippets")(this[command.id]) })));
}
bisect() {
return __async(this, null, function* () {
this.level = this.level + 1;
if (this.level === 1) {
this.restore();
return;
}
const { enabled } = this.getCurrentState();
const half = yield this.disableItems(enabled.slice(0, Math.floor(enabled.length / 2)));
if (half.length > 0)
this.disabledState.push(new Set(half));
else
this.level--;
return half;
});
}
unBisect() {
return __async(this, null, function* () {
this.level = this.level > 0 ? this.level - 1 : 0;
const { disabled } = this.getCurrentState();
yield this.enableItems(disabled);
if (this.disabledState.length > 1)
return this.disabledState.pop();
return new Set();
});
}
reBisect() {
return __async(this, null, function* () {
if (this.level < 2) {
new import_obsidian2.Notice("Cannot re-bisect the original state.");
return;
}
const reenabled = yield this.unBisect();
const { enabled } = this.getCurrentState();
const toDisable = enabled.filter((id) => !reenabled.has(id));
yield this.disableItems(toDisable);
if (toDisable.length > 0) {
this.disabledState.push(new Set(toDisable));
this.level = this.level + 1;
}
});
}
reset() {
this.disabledState = this.snapshot = void 0;
this.level = 1;
let { enabled, disabled } = this.getEnabledDisabled();
this.disabledState = [new Set(disabled)];
this.snapshot = new Set(disabled);
this.saveData(false);
}
restore() {
return __async(this, null, function* () {
if (this.disabledState.length < 1)
return;
this.disabledState.slice(1).reverse().map((set) => this.enableItems(set));
yield this.disableItems(this.snapshot);
yield this.app.plugins.requestSaveConfig();
setTimeout(() => this.reset(), RESET_DELAY);
});
}
getCurrentState() {
const { enabled, disabled } = this.getEnabledDisabled();
this.disabledState = this.disabledState.length < 1 ? [new Set(disabled)] : this.disabledState;
const currentDisabled = this.disabledState.last();
return { enabled, disabled: currentDisabled };
}
getEnabledDisabled() {
let excluded = [...this.getExcludedItems()];
let included = [...this.getAllItems()].filter((item) => !excluded.some((i) => i.id === item.id)).sort((a, b) => b.name.localeCompare(a.name)).map((item) => item.id);
let result = {
enabled: included.filter((id) => this.getEnabledFromObsidian().has(id)),
disabled: included.filter((id) => !this.getEnabledFromObsidian().has(id))
};
return result;
}
getIncludedItems(mode) {
return this.getExcludedItems(mode, true);
}
getExcludedItems(mode, outIncluded = false) {
let oldmode = this.mode;
if (mode)
this.setMode(mode);
const plugins = [...this.getAllItems()].filter((p) => outIncluded !== this.getFilters().some((filter) => {
var _a, _b;
return p.id.match(new RegExp(filter, "i")) || this.settings.filterUsingDisplayName && p.name.match(new RegExp(filter, "i")) || this.settings.filterUsingAuthor && ((_a = p.author) == null ? void 0 : _a.match(new RegExp(filter, "i"))) || this.settings.filterUsingDescription && ((_b = p.description) == null ? void 0 : _b.match(new RegExp(filter, "i")));
}));
if (mode)
this.setMode(oldmode);
return new Set(plugins);
}
enableItems(items) {
return __async(this, null, function* () {
if (items instanceof Set)
items = [...items];
console.log("Enabling:", items);
items.reverse().map((id) => this.enableItem(id));
return items;
});
}
disableItems(items) {
return __async(this, null, function* () {
if (items instanceof Set)
items = [...items];
console.log("Disabling:", items);
for (const id of items) {
yield this.disableItem(id);
}
return items;
});
}
getControlContainer(tab) {
tab != null ? tab : tab = this.tab;
return queryText(tab.containerEl, ".setting-item-heading", tab.heading).querySelector(".setting-item-control");
}
getReloadButton(tab) {
tab != null ? tab : tab = this.mode2Tab.get(this.mode);
let controls = this.getControlContainer(tab);
return controls.find(`[aria-label="${tab.reloadLabel}"]`);
}
getSettingsTab(id) {
return this.app.setting.settingTabs.filter((t) => t.id === id).shift();
}
createLevelText() {
let span = document.createElement("span");
span.setText(`Level: ${this.level}`);
return span;
}
overrideDisplay(mode, tab, old) {
let plugin = this;
return function display(...args) {
plugin.setMode(mode);
plugin.refreshTab = () => {
console.log("refreshing tab", mode);
plugin.setMode(mode);
tab.reload().then(() => {
old.apply(tab, args);
plugin.addControls();
plugin.colorizeIgnoredToggles();
});
};
plugin.refreshTab();
}.bind(plugin, tab);
}
colorizeIgnoredToggles() {
var _a;
let name2Toggle = this.createToggleMap(this.getItemEls());
let included = new Set([...this.getIncludedItems()].map((m) => m.name));
console.log("included", included, this.getIncludedItems(), name2Toggle);
for (let [name, toggle] of name2Toggle) {
if (!(included == null ? void 0 : included.has(name))) {
let colorToggle = () => {
if (toggle.classList.contains("is-enabled"))
toggle.style.backgroundColor = this.enabledColor;
else
toggle.style.backgroundColor = this.disabledColor;
};
colorToggle();
toggle.addEventListener("click", colorToggle);
}
let id = (_a = [...this.getAllItems()].find((p) => p.name == name)) == null ? void 0 : _a.id;
if (id && this.snapshot && this.snapshot.has(id)) {
toggle.style.outlineOffset = "1px";
toggle.style.outline = "outset";
}
}
}
createToggleMap(items) {
let name2Toggle = new Map();
for (var i = 0; i < items.length; i++) {
let child = items[i];
let name = child.querySelector(".setting-item-name").innerText;
let toggle = child.querySelector(".setting-item-control").querySelector(".checkbox-container");
if (name && toggle)
name2Toggle.set(name, toggle);
}
return name2Toggle;
}
wrapCall(mode, key) {
return this.wrapper(this[key]);
}
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzL3Rpbnljb2xvcjIvdGlueWNvbG9yLmpzIiwgIm1haW4udHMiLCAic2V0dGluZ3MudHMiLCAidXRpbC50cyIsICJub2RlX21vZHVsZXMvbW9ua2V5LWFyb3VuZC9tanMvaW5kZXguanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8vIFRpbnlDb2xvciB2MS40LjJcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iZ3JpbnMvVGlueUNvbG9yXG4vLyBCcmlhbiBHcmluc3RlYWQsIE1JVCBMaWNlbnNlXG5cbihmdW5jdGlvbihNYXRoKSB7XG5cbnZhciB0cmltTGVmdCA9IC9eXFxzKy8sXG4gICAgdHJpbVJpZ2h0ID0gL1xccyskLyxcbiAgICB0aW55Q291bnRlciA9IDAsXG4gICAgbWF0aFJvdW5kID0gTWF0aC5yb3VuZCxcbiAgICBtYXRoTWluID0gTWF0aC5taW4sXG4gICAgbWF0aE1heCA9IE1hdGgubWF4LFxuICAgIG1hdGhSYW5kb20gPSBNYXRoLnJhbmRvbTtcblxuZnVuY3Rpb24gdGlueWNvbG9yIChjb2xvciwgb3B0cykge1xuXG4gICAgY29sb3IgPSAoY29sb3IpID8gY29sb3IgOiAnJztcbiAgICBvcHRzID0gb3B0cyB8fCB7IH07XG5cbiAgICAvLyBJZiBpbnB1dCBpcyBhbHJlYWR5IGEgdGlueWNvbG9yLCByZXR1cm4gaXRzZWxmXG4gICAgaWYgKGNvbG9yIGluc3RhbmNlb2YgdGlueWNvbG9yKSB7XG4gICAgICAgcmV0dXJuIGNvbG9yO1xuICAgIH1cbiAgICAvLyBJZiB3ZSBhcmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24sIGNhbGwgdXNpbmcgbmV3IGluc3RlYWRcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgdGlueWNvbG9yKSkge1xuICAgICAgICByZXR1cm4gbmV3IHRpbnljb2xvcihjb2xvciwgb3B0cyk7XG4gICAgfVxuXG4gICAgdmFyIHJnYiA9IGlucHV0VG9SR0IoY29sb3IpO1xuICAgIHRoaXMuX29yaWdpbmFsSW5wdXQgPSBjb2xvcixcbiAgICB0aGlzLl9yID0gcmdiLnIsXG4gICAgdGhpcy5fZyA9IHJnYi5nLFxuICAgIHRoaXMuX2IgPSByZ2IuYixcbiAgICB0aGlzLl9hID0gcmdiLmEsXG4gICAgdGhpcy5fcm91bmRBID0gbWF0aFJvdW5kKDEwMCp0aGlzLl9hKSAvIDEwMCxcbiAgICB0aGlzLl9mb3JtYXQgPSBvcHRzLmZvcm1hdCB8fCByZ2IuZm9ybWF0O1xuICAgIHRoaXMuX2dyYWRpZW50VHlwZSA9IG9wdHMuZ3JhZGllbnRUeXBlO1xuXG4gICAgLy8gRG9uJ3QgbGV0IHRoZSByYW5nZSBvZiBbMCwyNTVdIGNvbWUgYmFjayBpbiBbMCwxXS5cbiAgICAvLyBQb3RlbnRpYWxseSBsb3NlIGEgbGl0dGxlIGJpdCBvZiBwcmVjaXNpb24gaGVyZSwgYnV0IHdpbGwgZml4IGlzc3VlcyB3aGVyZVxuICAgIC8vIC41IGdldHMgaW50ZXJwcmV0ZWQgYXMgaGFsZiBvZiB0aGUgdG90YWwsIGluc3RlYWQgb2YgaGFsZiBvZiAxXG4gICAgLy8gSWYgaXQgd2FzIHN1cHBvc2VkIHRvIGJlIDEyOCwgdGhpcyB3YXMgYWxyZWFkeSB0YWtlbiBjYXJlIG9mIGJ5IGBpbnB1dFRvUmdiYFxuICAgIGlmICh0aGlzLl9yIDwgMSkgeyB0aGlzLl9yID0gbWF0aFJvdW5kKHRoaXMuX3IpOyB9XG4gICAgaWYgKHRoaXMuX2cgPCAxKSB7IHRoaXMuX2cgPSBtYXRoUm91bmQodGhpcy5fZyk7IH1cbiAgICBpZiAodGhpcy5fYiA8IDEpIHsgdGhpcy5fYiA9IG1hdGhSb3VuZCh0aGlzLl9iKTsgfVxuXG4gICAgdGhpcy5fb2sgPSByZ2Iub2s7XG4gICAgdGhpcy5fdGNfaWQgPSB0aW55Q291bnRlcisrO1xufVxuXG50aW55Y29sb3IucHJvdG90eXBlID0ge1xuICAgIGlzRGFyazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJyaWdodG5lc3MoKSA8IDEyODtcbiAgICB9LFxuICAgIGlzTGlnaHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNEYXJrKCk7XG4gICAgfSxcbiAgICBpc1ZhbGlkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29rO1xuICAgIH0sXG4gICAgZ2V0T3JpZ2luYWxJbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fb3JpZ2luYWxJbnB1dDtcbiAgICB9LFxuICAgIGdldEZvcm1hdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXQ7XG4gICAgfSxcbiAgICBnZXRBbHBoYTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hO1xuICAgIH0sXG4gICAgZ2V0QnJpZ2h0bmVzczogZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vaHR0cDovL3d3dy53My5vcmcvVFIvQUVSVCNjb2xvci1jb250cmFzdFxuICAgICAgICB2YXIgcmdiID0gdGhpcy50b1JnYigpO1xuICAgICAgICByZXR1cm4gKHJnYi5yICogMjk5ICsgcmdiLmcgKiA1ODcgKyByZ2IuYiAqIDExNCkgLyAxMDAwO1xuICAgIH0sXG4gICAgZ2V0THVtaW5hbmNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgLy9odHRwOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmXG4gICAgICAgIHZhciByZ2IgPSB0aGlzLnRvUmdiKCk7XG4gICAgICAgIHZhciBSc1JHQiwgR3NSR0IsIEJzUkdCLCBSLCBHLCBCO1xuICAgICAgICBSc1JHQiA9IHJnYi5yLzI1NTtcbiAgICAgICAgR3NSR0IgPSByZ2IuZy8yNTU7XG4gICAgICAgIEJzUkdCID0gcmdiLmIvMjU1O1xuXG4gICAgICAgIGlmIChSc1JHQiA8PSAwLjAzOTI4KSB7UiA9IFJzUkdCIC8gMTIuOTI7fSBlbHNlIHtSID0gTWF0aC5wb3coKChSc1JHQiArIDAuMDU1KSAvIDEuMDU1KSwgMi40KTt9XG4gICAgICAgIGlmIChHc1JHQiA8PSAwLjAzOTI4KSB7RyA9IEdzUkdCIC8gMTIuOTI7fSBlbHNlIHtHID0gTWF0aC5wb3coKChHc1JHQiArIDAuMDU1KSAvIDEuMDU1KSwgMi40KTt9XG4gICAgICAgIGlmIChCc1JHQiA8PSAwLjAzOTI4KSB7QiA9IEJzUkdCIC8gMTIuOTI7fSBlbHNlIHtCID0gTWF0aC5wb3coKChCc1JHQiArIDAuMDU1KSAvIDEuMDU1KSwgMi40KTt9XG4gICAgICAgIHJldHVybiAoMC4yMTI2ICogUikgKyAoMC43MTUyICogRykgKyAoMC4wNzIyICogQik7XG4gICAgfSxcbiAgICBzZXRBbHBoYTogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgdGhpcy5fYSA9IGJvdW5kQWxwa