diff --git a/main.js b/main.js index 07947ea..f59fbd2 100644 --- a/main.js +++ b/main.js @@ -9,9 +9,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn2, res) => function __init() { - return fn2 && (res = (0, fn2[__getOwnPropNames(fn2)[0]])(fn2 = 0)), res; -}; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; @@ -49,1729 +46,105 @@ var __toBinary = /* @__PURE__ */ (() => { }; })(); -// node_modules/preact/dist/preact.module.js -function s(n2, l3) { - for (var u4 in l3) - n2[u4] = l3[u4]; - return n2; -} -function a(n2) { - var l3 = n2.parentNode; - l3 && l3.removeChild(n2); -} -function h(l3, u4, i4) { - var t4, o3, r3, f4 = {}; - for (r3 in u4) - "key" == r3 ? t4 = u4[r3] : "ref" == r3 ? o3 = u4[r3] : f4[r3] = u4[r3]; - if (arguments.length > 2 && (f4.children = arguments.length > 3 ? n.call(arguments, 2) : i4), "function" == typeof l3 && null != l3.defaultProps) - for (r3 in l3.defaultProps) - void 0 === f4[r3] && (f4[r3] = l3.defaultProps[r3]); - return v(l3, f4, t4, o3, null); -} -function v(n2, i4, t4, o3, r3) { - var f4 = { type: n2, props: i4, key: t4, ref: o3, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, __h: null, constructor: void 0, __v: null == r3 ? ++u : r3 }; - return null == r3 && null != l.vnode && l.vnode(f4), f4; -} -function y() { - return { current: null }; -} -function p(n2) { - return n2.children; -} -function d(n2, l3) { - this.props = n2, this.context = l3; -} -function _(n2, l3) { - if (null == l3) - return n2.__ ? _(n2.__, n2.__.__k.indexOf(n2) + 1) : null; - for (var u4; l3 < n2.__k.length; l3++) - if (null != (u4 = n2.__k[l3]) && null != u4.__e) - return u4.__e; - return "function" == typeof n2.type ? _(n2) : null; -} -function k(n2) { - var l3, u4; - if (null != (n2 = n2.__) && null != n2.__c) { - for (n2.__e = n2.__c.base = null, l3 = 0; l3 < n2.__k.length; l3++) - if (null != (u4 = n2.__k[l3]) && null != u4.__e) { - n2.__e = n2.__c.base = u4.__e; - break; +// node_modules/obsidian-dataview/lib/index.js +var require_lib = __commonJS({ + "node_modules/obsidian-dataview/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + require("obsidian"); + var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; + var luxon = {}; + Object.defineProperty(luxon, "__esModule", { value: true }); + function _defineProperties(target, props2) { + for (var i4 = 0; i4 < props2.length; i4++) { + var descriptor = props2[i4]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) + descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); } - return k(n2); - } -} -function b(n2) { - (!n2.__d && (n2.__d = true) && t.push(n2) && !g.__r++ || o !== l.debounceRendering) && ((o = l.debounceRendering) || setTimeout)(g); -} -function g() { - for (var n2; g.__r = t.length; ) - n2 = t.sort(function(n3, l3) { - return n3.__v.__b - l3.__v.__b; - }), t = [], n2.some(function(n3) { - var l3, u4, i4, t4, o3, r3; - n3.__d && (o3 = (t4 = (l3 = n3).__v).__e, (r3 = l3.__P) && (u4 = [], (i4 = s({}, t4)).__v = t4.__v + 1, j(r3, t4, i4, l3.__n, void 0 !== r3.ownerSVGElement, null != t4.__h ? [o3] : null, u4, null == o3 ? _(t4) : o3, t4.__h), z(u4, t4), t4.__e != o3 && k(t4))); - }); -} -function w(n2, l3, u4, i4, t4, o3, r3, c4, s5, a5) { - var h5, y5, d5, k5, b4, g4, w5, x5 = i4 && i4.__k || e, C3 = x5.length; - for (u4.__k = [], h5 = 0; h5 < l3.length; h5++) - if (null != (k5 = u4.__k[h5] = null == (k5 = l3[h5]) || "boolean" == typeof k5 ? null : "string" == typeof k5 || "number" == typeof k5 || "bigint" == typeof k5 ? v(null, k5, null, null, k5) : Array.isArray(k5) ? v(p, { children: k5 }, null, null, null) : k5.__b > 0 ? v(k5.type, k5.props, k5.key, k5.ref ? k5.ref : null, k5.__v) : k5)) { - if (k5.__ = u4, k5.__b = u4.__b + 1, null === (d5 = x5[h5]) || d5 && k5.key == d5.key && k5.type === d5.type) - x5[h5] = void 0; - else - for (y5 = 0; y5 < C3; y5++) { - if ((d5 = x5[y5]) && k5.key == d5.key && k5.type === d5.type) { - x5[y5] = void 0; - break; - } - d5 = null; - } - j(n2, k5, d5 = d5 || f, t4, o3, r3, c4, s5, a5), b4 = k5.__e, (y5 = k5.ref) && d5.ref != y5 && (w5 || (w5 = []), d5.ref && w5.push(d5.ref, null, k5), w5.push(y5, k5.__c || b4, k5)), null != b4 ? (null == g4 && (g4 = b4), "function" == typeof k5.type && k5.__k === d5.__k ? k5.__d = s5 = m(k5, s5, n2) : s5 = A(n2, k5, d5, x5, b4, s5), "function" == typeof u4.type && (u4.__d = s5)) : s5 && d5.__e == s5 && s5.parentNode != n2 && (s5 = _(d5)); } - for (u4.__e = g4, h5 = C3; h5--; ) - null != x5[h5] && N(x5[h5], x5[h5]); - if (w5) - for (h5 = 0; h5 < w5.length; h5++) - M(w5[h5], w5[++h5], w5[++h5]); -} -function m(n2, l3, u4) { - for (var i4, t4 = n2.__k, o3 = 0; t4 && o3 < t4.length; o3++) - (i4 = t4[o3]) && (i4.__ = n2, l3 = "function" == typeof i4.type ? m(i4, l3, u4) : A(u4, i4, i4, t4, i4.__e, l3)); - return l3; -} -function x(n2, l3) { - return l3 = l3 || [], null == n2 || "boolean" == typeof n2 || (Array.isArray(n2) ? n2.some(function(n3) { - x(n3, l3); - }) : l3.push(n2)), l3; -} -function A(n2, l3, u4, i4, t4, o3) { - var r3, f4, e4; - if (void 0 !== l3.__d) - r3 = l3.__d, l3.__d = void 0; - else if (null == u4 || t4 != o3 || null == t4.parentNode) - n: - if (null == o3 || o3.parentNode !== n2) - n2.appendChild(t4), r3 = null; - else { - for (f4 = o3, e4 = 0; (f4 = f4.nextSibling) && e4 < i4.length; e4 += 1) - if (f4 == t4) - break n; - n2.insertBefore(t4, o3), r3 = o3; - } - return void 0 !== r3 ? r3 : t4.nextSibling; -} -function C(n2, l3, u4, i4, t4) { - var o3; - for (o3 in u4) - "children" === o3 || "key" === o3 || o3 in l3 || H(n2, o3, null, u4[o3], i4); - for (o3 in l3) - t4 && "function" != typeof l3[o3] || "children" === o3 || "key" === o3 || "value" === o3 || "checked" === o3 || u4[o3] === l3[o3] || H(n2, o3, l3[o3], u4[o3], i4); -} -function $(n2, l3, u4) { - "-" === l3[0] ? n2.setProperty(l3, u4) : n2[l3] = null == u4 ? "" : "number" != typeof u4 || c.test(l3) ? u4 : u4 + "px"; -} -function H(n2, l3, u4, i4, t4) { - var o3; - n: - if ("style" === l3) - if ("string" == typeof u4) - n2.style.cssText = u4; - else { - if ("string" == typeof i4 && (n2.style.cssText = i4 = ""), i4) - for (l3 in i4) - u4 && l3 in u4 || $(n2.style, l3, ""); - if (u4) - for (l3 in u4) - i4 && u4[l3] === i4[l3] || $(n2.style, l3, u4[l3]); - } - else if ("o" === l3[0] && "n" === l3[1]) - o3 = l3 !== (l3 = l3.replace(/Capture$/, "")), l3 = l3.toLowerCase() in n2 ? l3.toLowerCase().slice(2) : l3.slice(2), n2.l || (n2.l = {}), n2.l[l3 + o3] = u4, u4 ? i4 || n2.addEventListener(l3, o3 ? T : I, o3) : n2.removeEventListener(l3, o3 ? T : I, o3); - else if ("dangerouslySetInnerHTML" !== l3) { - if (t4) - l3 = l3.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s"); - else if ("href" !== l3 && "list" !== l3 && "form" !== l3 && "tabIndex" !== l3 && "download" !== l3 && l3 in n2) - try { - n2[l3] = null == u4 ? "" : u4; - break n; - } catch (n3) { - } - "function" == typeof u4 || (null == u4 || false === u4 && -1 == l3.indexOf("-") ? n2.removeAttribute(l3) : n2.setAttribute(l3, u4)); + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) + _defineProperties(Constructor.prototype, protoProps); + if (staticProps) + _defineProperties(Constructor, staticProps); + return Constructor; } -} -function I(n2) { - this.l[n2.type + false](l.event ? l.event(n2) : n2); -} -function T(n2) { - this.l[n2.type + true](l.event ? l.event(n2) : n2); -} -function j(n2, u4, i4, t4, o3, r3, f4, e4, c4) { - var a5, h5, v3, y5, _4, k5, b4, g4, m5, x5, A4, C3, $3, H5, I4, T6 = u4.type; - if (void 0 !== u4.constructor) - return null; - null != i4.__h && (c4 = i4.__h, e4 = u4.__e = i4.__e, u4.__h = null, r3 = [e4]), (a5 = l.__b) && a5(u4); - try { - n: - if ("function" == typeof T6) { - if (g4 = u4.props, m5 = (a5 = T6.contextType) && t4[a5.__c], x5 = a5 ? m5 ? m5.props.value : a5.__ : t4, i4.__c ? b4 = (h5 = u4.__c = i4.__c).__ = h5.__E : ("prototype" in T6 && T6.prototype.render ? u4.__c = h5 = new T6(g4, x5) : (u4.__c = h5 = new d(g4, x5), h5.constructor = T6, h5.render = O), m5 && m5.sub(h5), h5.props = g4, h5.state || (h5.state = {}), h5.context = x5, h5.__n = t4, v3 = h5.__d = true, h5.__h = [], h5._sb = []), null == h5.__s && (h5.__s = h5.state), null != T6.getDerivedStateFromProps && (h5.__s == h5.state && (h5.__s = s({}, h5.__s)), s(h5.__s, T6.getDerivedStateFromProps(g4, h5.__s))), y5 = h5.props, _4 = h5.state, v3) - null == T6.getDerivedStateFromProps && null != h5.componentWillMount && h5.componentWillMount(), null != h5.componentDidMount && h5.__h.push(h5.componentDidMount); - else { - if (null == T6.getDerivedStateFromProps && g4 !== y5 && null != h5.componentWillReceiveProps && h5.componentWillReceiveProps(g4, x5), !h5.__e && null != h5.shouldComponentUpdate && false === h5.shouldComponentUpdate(g4, h5.__s, x5) || u4.__v === i4.__v) { - for (h5.props = g4, h5.state = h5.__s, u4.__v !== i4.__v && (h5.__d = false), h5.__v = u4, u4.__e = i4.__e, u4.__k = i4.__k, u4.__k.forEach(function(n3) { - n3 && (n3.__ = u4); - }), A4 = 0; A4 < h5._sb.length; A4++) - h5.__h.push(h5._sb[A4]); - h5._sb = [], h5.__h.length && f4.push(h5); - break n; + function _extends2() { + _extends2 = Object.assign || function(target) { + for (var i4 = 1; i4 < arguments.length; i4++) { + var source = arguments[i4]; + for (var key2 in source) { + if (Object.prototype.hasOwnProperty.call(source, key2)) { + target[key2] = source[key2]; + } } - null != h5.componentWillUpdate && h5.componentWillUpdate(g4, h5.__s, x5), null != h5.componentDidUpdate && h5.__h.push(function() { - h5.componentDidUpdate(y5, _4, k5); - }); } - if (h5.context = x5, h5.props = g4, h5.__v = u4, h5.__P = n2, C3 = l.__r, $3 = 0, "prototype" in T6 && T6.prototype.render) { - for (h5.state = h5.__s, h5.__d = false, C3 && C3(u4), a5 = h5.render(h5.props, h5.state, h5.context), H5 = 0; H5 < h5._sb.length; H5++) - h5.__h.push(h5._sb[H5]); - h5._sb = []; - } else - do { - h5.__d = false, C3 && C3(u4), a5 = h5.render(h5.props, h5.state, h5.context), h5.state = h5.__s; - } while (h5.__d && ++$3 < 25); - h5.state = h5.__s, null != h5.getChildContext && (t4 = s(s({}, t4), h5.getChildContext())), v3 || null == h5.getSnapshotBeforeUpdate || (k5 = h5.getSnapshotBeforeUpdate(y5, _4)), I4 = null != a5 && a5.type === p && null == a5.key ? a5.props.children : a5, w(n2, Array.isArray(I4) ? I4 : [I4], u4, i4, t4, o3, r3, f4, e4, c4), h5.base = u4.__e, u4.__h = null, h5.__h.length && f4.push(h5), b4 && (h5.__E = h5.__ = null), h5.__e = false; - } else - null == r3 && u4.__v === i4.__v ? (u4.__k = i4.__k, u4.__e = i4.__e) : u4.__e = L(i4.__e, u4, i4, t4, o3, r3, f4, c4); - (a5 = l.diffed) && a5(u4); - } catch (n3) { - u4.__v = null, (c4 || null != r3) && (u4.__e = e4, u4.__h = !!c4, r3[r3.indexOf(e4)] = null), l.__e(n3, u4, i4); - } -} -function z(n2, u4) { - l.__c && l.__c(u4, n2), n2.some(function(u5) { - try { - n2 = u5.__h, u5.__h = [], n2.some(function(n3) { - n3.call(u5); - }); - } catch (n3) { - l.__e(n3, u5.__v); + return target; + }; + return _extends2.apply(this, arguments); } - }); -} -function L(l3, u4, i4, t4, o3, r3, e4, c4) { - var s5, h5, v3, y5 = i4.props, p3 = u4.props, d5 = u4.type, k5 = 0; - if ("svg" === d5 && (o3 = true), null != r3) { - for (; k5 < r3.length; k5++) - if ((s5 = r3[k5]) && "setAttribute" in s5 == !!d5 && (d5 ? s5.localName === d5 : 3 === s5.nodeType)) { - l3 = s5, r3[k5] = null; - break; - } - } - if (null == l3) { - if (null === d5) - return document.createTextNode(p3); - l3 = o3 ? document.createElementNS("http://www.w3.org/2000/svg", d5) : document.createElement(d5, p3.is && p3), r3 = null, c4 = false; - } - if (null === d5) - y5 === p3 || c4 && l3.data === p3 || (l3.data = p3); - else { - if (r3 = r3 && n.call(l3.childNodes), h5 = (y5 = i4.props || f).dangerouslySetInnerHTML, v3 = p3.dangerouslySetInnerHTML, !c4) { - if (null != r3) - for (y5 = {}, k5 = 0; k5 < l3.attributes.length; k5++) - y5[l3.attributes[k5].name] = l3.attributes[k5].value; - (v3 || h5) && (v3 && (h5 && v3.__html == h5.__html || v3.__html === l3.innerHTML) || (l3.innerHTML = v3 && v3.__html || "")); + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); } - if (C(l3, p3, y5, o3, c4), v3) - u4.__k = []; - else if (k5 = u4.props.children, w(l3, Array.isArray(k5) ? k5 : [k5], u4, i4, t4, o3 && "foreignObject" !== d5, r3, e4, r3 ? r3[0] : i4.__k && _(i4, 0), c4), null != r3) - for (k5 = r3.length; k5--; ) - null != r3[k5] && a(r3[k5]); - c4 || ("value" in p3 && void 0 !== (k5 = p3.value) && (k5 !== l3.value || "progress" === d5 && !k5 || "option" === d5 && k5 !== y5.value) && H(l3, "value", k5, y5.value, false), "checked" in p3 && void 0 !== (k5 = p3.checked) && k5 !== l3.checked && H(l3, "checked", k5, y5.checked, false)); - } - return l3; -} -function M(n2, u4, i4) { - try { - "function" == typeof n2 ? n2(u4) : n2.current = u4; - } catch (n3) { - l.__e(n3, i4); - } -} -function N(n2, u4, i4) { - var t4, o3; - if (l.unmount && l.unmount(n2), (t4 = n2.ref) && (t4.current && t4.current !== n2.__e || M(t4, null, u4)), null != (t4 = n2.__c)) { - if (t4.componentWillUnmount) - try { - t4.componentWillUnmount(); - } catch (n3) { - l.__e(n3, u4); - } - t4.base = t4.__P = null, n2.__c = void 0; - } - if (t4 = n2.__k) - for (o3 = 0; o3 < t4.length; o3++) - t4[o3] && N(t4[o3], u4, i4 || "function" != typeof n2.type); - i4 || null == n2.__e || a(n2.__e), n2.__ = n2.__e = n2.__d = void 0; -} -function O(n2, l3, u4) { - return this.constructor(n2, u4); -} -function P(u4, i4, t4) { - var o3, r3, e4; - l.__ && l.__(u4, i4), r3 = (o3 = "function" == typeof t4) ? null : t4 && t4.__k || i4.__k, e4 = [], j(i4, u4 = (!o3 && t4 || i4).__k = h(p, null, [u4]), r3 || f, f, void 0 !== i4.ownerSVGElement, !o3 && t4 ? [t4] : r3 ? null : i4.firstChild ? n.call(i4.childNodes) : null, e4, !o3 && t4 ? t4 : r3 ? r3.__e : i4.firstChild, o3), z(e4, u4); -} -function S(n2, l3) { - P(n2, l3, S); -} -function q(l3, u4, i4) { - var t4, o3, r3, f4 = s({}, l3.props); - for (r3 in u4) - "key" == r3 ? t4 = u4[r3] : "ref" == r3 ? o3 = u4[r3] : f4[r3] = u4[r3]; - return arguments.length > 2 && (f4.children = arguments.length > 3 ? n.call(arguments, 2) : i4), v(l3.type, f4, t4 || l3.key, o3 || l3.ref, null); -} -function B(n2, l3) { - var u4 = { __c: l3 = "__cC" + r++, __: n2, Consumer: function(n3, l4) { - return n3.children(l4); - }, Provider: function(n3) { - var u5, i4; - return this.getChildContext || (u5 = [], (i4 = {})[l3] = this, this.getChildContext = function() { - return i4; - }, this.shouldComponentUpdate = function(n4) { - this.props.value !== n4.value && u5.some(b); - }, this.sub = function(n4) { - u5.push(n4); - var l4 = n4.componentWillUnmount; - n4.componentWillUnmount = function() { - u5.splice(u5.indexOf(n4), 1), l4 && l4.call(n4); + function _getPrototypeOf(o3) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o4) { + return o4.__proto__ || Object.getPrototypeOf(o4); }; - }), n3.children; - } }; - return u4.Provider.__ = u4.Consumer.contextType = u4; -} -var n, l, u, i, t, o, r, f, e, c; -var init_preact_module = __esm({ - "node_modules/preact/dist/preact.module.js"() { - f = {}; - e = []; - c = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i; - n = e.slice, l = { __e: function(n2, l3, u4, i4) { - for (var t4, o3, r3; l3 = l3.__; ) - if ((t4 = l3.__c) && !t4.__) - try { - if ((o3 = t4.constructor) && null != o3.getDerivedStateFromError && (t4.setState(o3.getDerivedStateFromError(n2)), r3 = t4.__d), null != t4.componentDidCatch && (t4.componentDidCatch(n2, i4 || {}), r3 = t4.__d), r3) - return t4.__E = t4; - } catch (l4) { - n2 = l4; - } - throw n2; - } }, u = 0, i = function(n2) { - return null != n2 && void 0 === n2.constructor; - }, d.prototype.setState = function(n2, l3) { - var u4; - u4 = null != this.__s && this.__s !== this.state ? this.__s : this.__s = s({}, this.state), "function" == typeof n2 && (n2 = n2(s({}, u4), this.props)), n2 && s(u4, n2), null != n2 && this.__v && (l3 && this._sb.push(l3), b(this)); - }, d.prototype.forceUpdate = function(n2) { - this.__v && (this.__e = true, n2 && this.__h.push(n2), b(this)); - }, d.prototype.render = p, t = [], g.__r = 0, r = 0; - } -}); - -// node_modules/preact/hooks/dist/hooks.module.js -function d2(t4, u4) { - l.__h && l.__h(r2, t4, o2 || u4), o2 = 0; - var i4 = r2.__H || (r2.__H = { __: [], __h: [] }); - return t4 >= i4.__.length && i4.__.push({ __V: c2 }), i4.__[t4]; -} -function p2(n2) { - return o2 = 1, y2(B2, n2); -} -function y2(n2, u4, i4) { - var o3 = d2(t2++, 2); - if (o3.t = n2, !o3.__c && (o3.__ = [i4 ? i4(u4) : B2(void 0, u4), function(n3) { - var t4 = o3.__N ? o3.__N[0] : o3.__[0], r3 = o3.t(t4, n3); - t4 !== r3 && (o3.__N = [r3, o3.__[1]], o3.__c.setState({})); - }], o3.__c = r2, !r2.u)) { - r2.u = true; - var f4 = r2.shouldComponentUpdate; - r2.shouldComponentUpdate = function(n3, t4, r3) { - if (!o3.__c.__H) + return _getPrototypeOf(o3); + } + function _setPrototypeOf(o3, p3) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o4, p4) { + o4.__proto__ = p4; + return o4; + }; + return _setPrototypeOf(o3, p3); + } + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) + return false; + if (Reflect.construct.sham) + return false; + if (typeof Proxy === "function") return true; - var u5 = o3.__c.__H.__.filter(function(n4) { - return n4.__c; - }); - if (u5.every(function(n4) { - return !n4.__N; - })) - return !f4 || f4.call(this, n3, t4, r3); - var i5 = false; - return u5.forEach(function(n4) { - if (n4.__N) { - var t5 = n4.__[0]; - n4.__ = n4.__N, n4.__N = void 0, t5 !== n4.__[0] && (i5 = true); - } - }), !(!i5 && o3.__c.props === n3) && (!f4 || f4.call(this, n3, t4, r3)); - }; - } - return o3.__N || o3.__; -} -function h2(u4, i4) { - var o3 = d2(t2++, 3); - !l.__s && z2(o3.__H, i4) && (o3.__ = u4, o3.i = i4, r2.__H.__h.push(o3)); -} -function s2(u4, i4) { - var o3 = d2(t2++, 4); - !l.__s && z2(o3.__H, i4) && (o3.__ = u4, o3.i = i4, r2.__h.push(o3)); -} -function _2(n2) { - return o2 = 5, F(function() { - return { current: n2 }; - }, []); -} -function A2(n2, t4, r3) { - o2 = 6, s2(function() { - return "function" == typeof n2 ? (n2(t4()), function() { - return n2(null); - }) : n2 ? (n2.current = t4(), function() { - return n2.current = null; - }) : void 0; - }, null == r3 ? r3 : r3.concat(n2)); -} -function F(n2, r3) { - var u4 = d2(t2++, 7); - return z2(u4.__H, r3) ? (u4.__V = n2(), u4.i = r3, u4.__h = n2, u4.__V) : u4.__; -} -function T2(n2, t4) { - return o2 = 8, F(function() { - return n2; - }, t4); -} -function q2(n2) { - var u4 = r2.context[n2.__c], i4 = d2(t2++, 9); - return i4.c = n2, u4 ? (null == i4.__ && (i4.__ = true, u4.sub(r2)), u4.props.value) : n2.__; -} -function x2(t4, r3) { - l.useDebugValue && l.useDebugValue(r3 ? r3(t4) : t4); -} -function P2(n2) { - var u4 = d2(t2++, 10), i4 = p2(); - return u4.__ = n2, r2.componentDidCatch || (r2.componentDidCatch = function(n3, t4) { - u4.__ && u4.__(n3, t4), i4[1](n3); - }), [i4[0], function() { - i4[1](void 0); - }]; -} -function V() { - var n2 = d2(t2++, 11); - if (!n2.__) { - for (var u4 = r2.__v; null !== u4 && !u4.__m && null !== u4.__; ) - u4 = u4.__; - var i4 = u4.__m || (u4.__m = [0, 0]); - n2.__ = "P" + i4[0] + "-" + i4[1]++; - } - return n2.__; -} -function b2() { - for (var t4; t4 = f2.shift(); ) - if (t4.__P && t4.__H) try { - t4.__H.__h.forEach(k2), t4.__H.__h.forEach(w2), t4.__H.__h = []; - } catch (r3) { - t4.__H.__h = [], l.__e(r3, t4.__v); + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + return true; + } catch (e4) { + return false; } -} -function j2(n2) { - var t4, r3 = function() { - clearTimeout(u4), g2 && cancelAnimationFrame(t4), setTimeout(n2); - }, u4 = setTimeout(r3, 100); - g2 && (t4 = requestAnimationFrame(r3)); -} -function k2(n2) { - var t4 = r2, u4 = n2.__c; - "function" == typeof u4 && (n2.__c = void 0, u4()), r2 = t4; -} -function w2(n2) { - var t4 = r2; - n2.__c = n2.__(), r2 = t4; -} -function z2(n2, t4) { - return !n2 || n2.length !== t4.length || t4.some(function(t5, r3) { - return t5 !== n2[r3]; - }); -} -function B2(n2, t4) { - return "function" == typeof t4 ? t4(n2) : t4; -} -var t2, r2, u2, i2, o2, f2, c2, e2, a2, v2, l2, m2, g2; -var init_hooks_module = __esm({ - "node_modules/preact/hooks/dist/hooks.module.js"() { - init_preact_module(); - o2 = 0; - f2 = []; - c2 = []; - e2 = l.__b; - a2 = l.__r; - v2 = l.diffed; - l2 = l.__c; - m2 = l.unmount; - l.__b = function(n2) { - r2 = null, e2 && e2(n2); - }, l.__r = function(n2) { - a2 && a2(n2), t2 = 0; - var i4 = (r2 = n2.__c).__H; - i4 && (u2 === r2 ? (i4.__h = [], r2.__h = [], i4.__.forEach(function(n3) { - n3.__N && (n3.__ = n3.__N), n3.__V = c2, n3.__N = n3.i = void 0; - })) : (i4.__h.forEach(k2), i4.__h.forEach(w2), i4.__h = [])), u2 = r2; - }, l.diffed = function(t4) { - v2 && v2(t4); - var o3 = t4.__c; - o3 && o3.__H && (o3.__H.__h.length && (1 !== f2.push(o3) && i2 === l.requestAnimationFrame || ((i2 = l.requestAnimationFrame) || j2)(b2)), o3.__H.__.forEach(function(n2) { - n2.i && (n2.__H = n2.i), n2.__V !== c2 && (n2.__ = n2.__V), n2.i = void 0, n2.__V = c2; - })), u2 = r2 = null; - }, l.__c = function(t4, r3) { - r3.some(function(t5) { - try { - t5.__h.forEach(k2), t5.__h = t5.__h.filter(function(n2) { - return !n2.__ || w2(n2); - }); - } catch (u4) { - r3.some(function(n2) { - n2.__h && (n2.__h = []); - }), r3 = [], l.__e(u4, t5.__v); - } - }), l2 && l2(t4, r3); - }, l.unmount = function(t4) { - m2 && m2(t4); - var r3, u4 = t4.__c; - u4 && u4.__H && (u4.__H.__.forEach(function(n2) { - try { - k2(n2); - } catch (n3) { - r3 = n3; - } - }), u4.__H = void 0, r3 && l.__e(r3, u4.__v)); - }; - g2 = "function" == typeof requestAnimationFrame; - } -}); - -// node_modules/preact/compat/dist/compat.module.js -var compat_module_exports = {}; -__export(compat_module_exports, { - Children: () => O2, - Component: () => d, - Fragment: () => p, - PureComponent: () => w3, - StrictMode: () => vn, - Suspense: () => D, - SuspenseList: () => V2, - __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: () => rn, - cloneElement: () => cn, - createContext: () => B, - createElement: () => h, - createFactory: () => on, - createPortal: () => j3, - createRef: () => y, - default: () => bn, - findDOMNode: () => an, - flushSync: () => hn, - forwardRef: () => k3, - hydrate: () => q3, - isValidElement: () => ln, - lazy: () => M2, - memo: () => R, - render: () => Y, - startTransition: () => dn, - unmountComponentAtNode: () => fn, - unstable_batchedUpdates: () => sn, - useCallback: () => T2, - useContext: () => q2, - useDebugValue: () => x2, - useDeferredValue: () => pn, - useEffect: () => h2, - useErrorBoundary: () => P2, - useId: () => V, - useImperativeHandle: () => A2, - useInsertionEffect: () => yn, - useLayoutEffect: () => s2, - useMemo: () => F, - useReducer: () => y2, - useRef: () => _2, - useState: () => p2, - useSyncExternalStore: () => _n, - useTransition: () => mn, - version: () => un -}); -function g3(n2, t4) { - for (var e4 in t4) - n2[e4] = t4[e4]; - return n2; -} -function C2(n2, t4) { - for (var e4 in n2) - if ("__source" !== e4 && !(e4 in t4)) - return true; - for (var r3 in t4) - if ("__source" !== r3 && n2[r3] !== t4[r3]) - return true; - return false; -} -function E(n2, t4) { - return n2 === t4 && (0 !== n2 || 1 / n2 == 1 / t4) || n2 != n2 && t4 != t4; -} -function w3(n2) { - this.props = n2; -} -function R(n2, e4) { - function r3(n3) { - var t4 = this.props.ref, r4 = t4 == n3.ref; - return !r4 && t4 && (t4.call ? t4(null) : t4.current = null), e4 ? !e4(this.props, n3) || !r4 : C2(this.props, n3); - } - function u4(e5) { - return this.shouldComponentUpdate = r3, h(n2, e5); - } - return u4.displayName = "Memo(" + (n2.displayName || n2.name) + ")", u4.prototype.isReactComponent = true, u4.__f = true, u4; -} -function k3(n2) { - function t4(t5) { - var e4 = g3({}, t5); - return delete e4.ref, n2(e4, t5.ref || null); - } - return t4.$$typeof = N2, t4.render = t4, t4.prototype.isReactComponent = t4.__f = true, t4.displayName = "ForwardRef(" + (n2.displayName || n2.name) + ")", t4; -} -function L2(n2, t4, e4) { - return n2 && (n2.__c && n2.__c.__H && (n2.__c.__H.__.forEach(function(n3) { - "function" == typeof n3.__c && n3.__c(); - }), n2.__c.__H = null), null != (n2 = g3({}, n2)).__c && (n2.__c.__P === e4 && (n2.__c.__P = t4), n2.__c = null), n2.__k = n2.__k && n2.__k.map(function(n3) { - return L2(n3, t4, e4); - })), n2; -} -function U(n2, t4, e4) { - return n2 && (n2.__v = null, n2.__k = n2.__k && n2.__k.map(function(n3) { - return U(n3, t4, e4); - }), n2.__c && n2.__c.__P === t4 && (n2.__e && e4.insertBefore(n2.__e, n2.__d), n2.__c.__e = true, n2.__c.__P = e4)), n2; -} -function D() { - this.__u = 0, this.t = null, this.__b = null; -} -function F2(n2) { - var t4 = n2.__.__c; - return t4 && t4.__a && t4.__a(n2); -} -function M2(n2) { - var e4, r3, u4; - function o3(o4) { - if (e4 || (e4 = n2()).then(function(n3) { - r3 = n3.default || n3; - }, function(n3) { - u4 = n3; - }), u4) - throw u4; - if (!r3) - throw e4; - return h(r3, o4); - } - return o3.displayName = "Lazy", o3.__f = true, o3; -} -function V2() { - this.u = null, this.o = null; -} -function P3(n2) { - return this.getChildContext = function() { - return n2.context; - }, n2.children; -} -function $2(n2) { - var e4 = this, r3 = n2.i; - e4.componentWillUnmount = function() { - P(null, e4.l), e4.l = null, e4.i = null; - }, e4.i && e4.i !== r3 && e4.componentWillUnmount(), n2.__v ? (e4.l || (e4.i = r3, e4.l = { nodeType: 1, parentNode: r3, childNodes: [], appendChild: function(n3) { - this.childNodes.push(n3), e4.i.appendChild(n3); - }, insertBefore: function(n3, t4) { - this.childNodes.push(n3), e4.i.appendChild(n3); - }, removeChild: function(n3) { - this.childNodes.splice(this.childNodes.indexOf(n3) >>> 1, 1), e4.i.removeChild(n3); - } }), P(h(P3, { context: e4.context }, n2.__v), e4.l)) : e4.l && e4.componentWillUnmount(); -} -function j3(n2, e4) { - var r3 = h($2, { __v: n2, i: e4 }); - return r3.containerInfo = e4, r3; -} -function Y(n2, t4, e4) { - return null == t4.__k && (t4.textContent = ""), P(n2, t4), "function" == typeof e4 && e4(), n2 ? n2.__c : null; -} -function q3(n2, t4, e4) { - return S(n2, t4), "function" == typeof e4 && e4(), n2 ? n2.__c : null; -} -function J() { -} -function K() { - return this.cancelBubble; -} -function Q() { - return this.defaultPrevented; -} -function on(n2) { - return h.bind(null, n2); -} -function ln(n2) { - return !!n2 && n2.$$typeof === z3; -} -function cn(n2) { - return ln(n2) ? q.apply(null, arguments) : n2; -} -function fn(n2) { - return !!n2.__k && (P(null, n2), true); -} -function an(n2) { - return n2 && (n2.base || 1 === n2.nodeType && n2) || null; -} -function dn(n2) { - n2(); -} -function pn(n2) { - return n2; -} -function mn() { - return [false, dn]; -} -function _n(n2, t4) { - var e4 = t4(), r3 = p2({ h: { __: e4, v: t4 } }), u4 = r3[0].h, o3 = r3[1]; - return s2(function() { - u4.__ = e4, u4.v = t4, E(u4.__, t4()) || o3({ h: u4 }); - }, [n2, e4, t4]), h2(function() { - return E(u4.__, u4.v()) || o3({ h: u4 }), n2(function() { - E(u4.__, u4.v()) || o3({ h: u4 }); - }); - }, [n2]), e4; -} -var x3, N2, A3, O2, T3, I2, W, z3, B3, H2, Z, G, X, nn, tn, en, rn, un, sn, hn, vn, yn, bn; -var init_compat_module = __esm({ - "node_modules/preact/compat/dist/compat.module.js"() { - init_preact_module(); - init_preact_module(); - init_hooks_module(); - init_hooks_module(); - (w3.prototype = new d()).isPureReactComponent = true, w3.prototype.shouldComponentUpdate = function(n2, t4) { - return C2(this.props, n2) || C2(this.state, t4); - }; - x3 = l.__b; - l.__b = function(n2) { - n2.type && n2.type.__f && n2.ref && (n2.props.ref = n2.ref, n2.ref = null), x3 && x3(n2); - }; - N2 = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.forward_ref") || 3911; - A3 = function(n2, t4) { - return null == n2 ? null : x(x(n2).map(t4)); - }; - O2 = { map: A3, forEach: A3, count: function(n2) { - return n2 ? x(n2).length : 0; - }, only: function(n2) { - var t4 = x(n2); - if (1 !== t4.length) - throw "Children.only"; - return t4[0]; - }, toArray: x }; - T3 = l.__e; - l.__e = function(n2, t4, e4, r3) { - if (n2.then) { - for (var u4, o3 = t4; o3 = o3.__; ) - if ((u4 = o3.__c) && u4.__c) - return null == t4.__e && (t4.__e = e4.__e, t4.__k = e4.__k), u4.__c(n2, t4); - } - T3(n2, t4, e4, r3); - }; - I2 = l.unmount; - l.unmount = function(n2) { - var t4 = n2.__c; - t4 && t4.__R && t4.__R(), t4 && true === n2.__h && (n2.type = null), I2 && I2(n2); - }, (D.prototype = new d()).__c = function(n2, t4) { - var e4 = t4.__c, r3 = this; - null == r3.t && (r3.t = []), r3.t.push(e4); - var u4 = F2(r3.__v), o3 = false, i4 = function() { - o3 || (o3 = true, e4.__R = null, u4 ? u4(l3) : l3()); - }; - e4.__R = i4; - var l3 = function() { - if (!--r3.__u) { - if (r3.state.__a) { - var n3 = r3.state.__a; - r3.__v.__k[0] = U(n3, n3.__c.__P, n3.__c.__O); - } - var t5; - for (r3.setState({ __a: r3.__b = null }); t5 = r3.t.pop(); ) - t5.forceUpdate(); - } - }, c4 = true === t4.__h; - r3.__u++ || c4 || r3.setState({ __a: r3.__b = r3.__v.__k[0] }), n2.then(i4, i4); - }, D.prototype.componentWillUnmount = function() { - this.t = []; - }, D.prototype.render = function(n2, e4) { - if (this.__b) { - if (this.__v.__k) { - var r3 = document.createElement("div"), o3 = this.__v.__k[0].__c; - this.__v.__k[0] = L2(this.__b, r3, o3.__O = o3.__P); - } - this.__b = null; - } - var i4 = e4.__a && h(p, null, n2.fallback); - return i4 && (i4.__h = null), [h(p, null, e4.__a ? null : n2.children), i4]; - }; - W = function(n2, t4, e4) { - if (++e4[1] === e4[0] && n2.o.delete(t4), n2.props.revealOrder && ("t" !== n2.props.revealOrder[0] || !n2.o.size)) - for (e4 = n2.u; e4; ) { - for (; e4.length > 3; ) - e4.pop()(); - if (e4[1] < e4[0]) - break; - n2.u = e4 = e4[2]; - } - }; - (V2.prototype = new d()).__a = function(n2) { - var t4 = this, e4 = F2(t4.__v), r3 = t4.o.get(n2); - return r3[0]++, function(u4) { - var o3 = function() { - t4.props.revealOrder ? (r3.push(u4), W(t4, n2, r3)) : u4(); - }; - e4 ? e4(o3) : o3(); - }; - }, V2.prototype.render = function(n2) { - this.u = null, this.o = /* @__PURE__ */ new Map(); - var t4 = x(n2.children); - n2.revealOrder && "b" === n2.revealOrder[0] && t4.reverse(); - for (var e4 = t4.length; e4--; ) - this.o.set(t4[e4], this.u = [1, 0, this.u]); - return n2.children; - }, V2.prototype.componentDidUpdate = V2.prototype.componentDidMount = function() { - var n2 = this; - this.o.forEach(function(t4, e4) { - W(n2, e4, t4); - }); - }; - z3 = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103; - B3 = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/; - H2 = "undefined" != typeof document; - Z = function(n2) { - return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/i : /fil|che|ra/i).test(n2); - }; - d.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(t4) { - Object.defineProperty(d.prototype, t4, { configurable: true, get: function() { - return this["UNSAFE_" + t4]; - }, set: function(n2) { - Object.defineProperty(this, t4, { configurable: true, writable: true, value: n2 }); - } }); - }); - G = l.event; - l.event = function(n2) { - return G && (n2 = G(n2)), n2.persist = J, n2.isPropagationStopped = K, n2.isDefaultPrevented = Q, n2.nativeEvent = n2; - }; - nn = { configurable: true, get: function() { - return this.class; - } }; - tn = l.vnode; - l.vnode = function(n2) { - var t4 = n2.type, e4 = n2.props, u4 = e4; - if ("string" == typeof t4) { - var o3 = -1 === t4.indexOf("-"); - for (var i4 in u4 = {}, e4) { - var l3 = e4[i4]; - H2 && "children" === i4 && "noscript" === t4 || "value" === i4 && "defaultValue" in e4 && null == l3 || ("defaultValue" === i4 && "value" in e4 && null == e4.value ? i4 = "value" : "download" === i4 && true === l3 ? l3 = "" : /ondoubleclick/i.test(i4) ? i4 = "ondblclick" : /^onchange(textarea|input)/i.test(i4 + t4) && !Z(e4.type) ? i4 = "oninput" : /^onfocus$/i.test(i4) ? i4 = "onfocusin" : /^onblur$/i.test(i4) ? i4 = "onfocusout" : /^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i4) ? i4 = i4.toLowerCase() : o3 && B3.test(i4) ? i4 = i4.replace(/[A-Z0-9]/g, "-$&").toLowerCase() : null === l3 && (l3 = void 0), /^oninput$/i.test(i4) && (i4 = i4.toLowerCase(), u4[i4] && (i4 = "oninputCapture")), u4[i4] = l3); - } - "select" == t4 && u4.multiple && Array.isArray(u4.value) && (u4.value = x(e4.children).forEach(function(n3) { - n3.props.selected = -1 != u4.value.indexOf(n3.props.value); - })), "select" == t4 && null != u4.defaultValue && (u4.value = x(e4.children).forEach(function(n3) { - n3.props.selected = u4.multiple ? -1 != u4.defaultValue.indexOf(n3.props.value) : u4.defaultValue == n3.props.value; - })), n2.props = u4, e4.class != e4.className && (nn.enumerable = "className" in e4, null != e4.className && (u4.class = e4.className), Object.defineProperty(u4, "className", nn)); - } - n2.$$typeof = z3, tn && tn(n2); - }; - en = l.__r; - l.__r = function(n2) { - en && en(n2), X = n2.__c; - }; - rn = { ReactCurrentDispatcher: { current: { readContext: function(n2) { - return X.__n[n2.__c].props.value; - } } } }; - un = "17.0.2"; - sn = function(n2, t4) { - return n2(t4); - }; - hn = function(n2, t4) { - return n2(t4); - }; - vn = p; - yn = s2; - bn = { useState: p2, useId: V, useReducer: y2, useEffect: h2, useLayoutEffect: s2, useInsertionEffect: yn, useTransition: mn, useDeferredValue: pn, useSyncExternalStore: _n, startTransition: dn, useRef: _2, useImperativeHandle: A2, useMemo: F, useCallback: T2, useContext: q2, useDebugValue: x2, version: "17.0.2", Children: O2, render: Y, hydrate: q3, unmountComponentAtNode: fn, createPortal: j3, createElement: h, createContext: B, createFactory: on, cloneElement: cn, createRef: y, Fragment: p, isValidElement: ln, findDOMNode: an, Component: d, PureComponent: w3, memo: R, forwardRef: k3, flushSync: hn, unstable_batchedUpdates: sn, StrictMode: vn, Suspense: D, SuspenseList: V2, lazy: M2, __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: rn }; - } -}); - -// node_modules/react-is/cjs/react-is.development.js -var require_react_is_development = __commonJS({ - "node_modules/react-is/cjs/react-is.development.js"(exports) { - "use strict"; - if (true) { - (function() { - "use strict"; - var hasSymbol = typeof Symbol === "function" && Symbol.for; - var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for("react.element") : 60103; - var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for("react.portal") : 60106; - var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for("react.fragment") : 60107; - var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for("react.strict_mode") : 60108; - var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for("react.profiler") : 60114; - var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for("react.provider") : 60109; - var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for("react.context") : 60110; - var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for("react.async_mode") : 60111; - var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for("react.concurrent_mode") : 60111; - var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for("react.forward_ref") : 60112; - var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for("react.suspense") : 60113; - var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for("react.suspense_list") : 60120; - var REACT_MEMO_TYPE = hasSymbol ? Symbol.for("react.memo") : 60115; - var REACT_LAZY_TYPE = hasSymbol ? Symbol.for("react.lazy") : 60116; - var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for("react.block") : 60121; - var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for("react.fundamental") : 60117; - var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for("react.responder") : 60118; - var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for("react.scope") : 60119; - function isValidElementType(type) { - return typeof type === "string" || typeof type === "function" || type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === "object" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); - } - function typeOf(object) { - if (typeof object === "object" && object !== null) { - var $$typeof = object.$$typeof; - switch ($$typeof) { - case REACT_ELEMENT_TYPE: - var type = object.type; - switch (type) { - case REACT_ASYNC_MODE_TYPE: - case REACT_CONCURRENT_MODE_TYPE: - case REACT_FRAGMENT_TYPE: - case REACT_PROFILER_TYPE: - case REACT_STRICT_MODE_TYPE: - case REACT_SUSPENSE_TYPE: - return type; - default: - var $$typeofType = type && type.$$typeof; - switch ($$typeofType) { - case REACT_CONTEXT_TYPE: - case REACT_FORWARD_REF_TYPE: - case REACT_LAZY_TYPE: - case REACT_MEMO_TYPE: - case REACT_PROVIDER_TYPE: - return $$typeofType; - default: - return $$typeof; - } - } - case REACT_PORTAL_TYPE: - return $$typeof; - } - } - return void 0; - } - var AsyncMode = REACT_ASYNC_MODE_TYPE; - var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; - var ContextConsumer = REACT_CONTEXT_TYPE; - var ContextProvider = REACT_PROVIDER_TYPE; - var Element = REACT_ELEMENT_TYPE; - var ForwardRef = REACT_FORWARD_REF_TYPE; - var Fragment = REACT_FRAGMENT_TYPE; - var Lazy = REACT_LAZY_TYPE; - var Memo = REACT_MEMO_TYPE; - var Portal = REACT_PORTAL_TYPE; - var Profiler = REACT_PROFILER_TYPE; - var StrictMode = REACT_STRICT_MODE_TYPE; - var Suspense = REACT_SUSPENSE_TYPE; - var hasWarnedAboutDeprecatedIsAsyncMode = false; - function isAsyncMode(object) { - { - if (!hasWarnedAboutDeprecatedIsAsyncMode) { - hasWarnedAboutDeprecatedIsAsyncMode = true; - console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API."); - } - } - return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; - } - function isConcurrentMode(object) { - return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; - } - function isContextConsumer(object) { - return typeOf(object) === REACT_CONTEXT_TYPE; - } - function isContextProvider(object) { - return typeOf(object) === REACT_PROVIDER_TYPE; - } - function isElement(object) { - return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; - } - function isForwardRef(object) { - return typeOf(object) === REACT_FORWARD_REF_TYPE; - } - function isFragment(object) { - return typeOf(object) === REACT_FRAGMENT_TYPE; - } - function isLazy(object) { - return typeOf(object) === REACT_LAZY_TYPE; - } - function isMemo(object) { - return typeOf(object) === REACT_MEMO_TYPE; - } - function isPortal(object) { - return typeOf(object) === REACT_PORTAL_TYPE; - } - function isProfiler(object) { - return typeOf(object) === REACT_PROFILER_TYPE; - } - function isStrictMode(object) { - return typeOf(object) === REACT_STRICT_MODE_TYPE; - } - function isSuspense(object) { - return typeOf(object) === REACT_SUSPENSE_TYPE; - } - exports.AsyncMode = AsyncMode; - exports.ConcurrentMode = ConcurrentMode; - exports.ContextConsumer = ContextConsumer; - exports.ContextProvider = ContextProvider; - exports.Element = Element; - exports.ForwardRef = ForwardRef; - exports.Fragment = Fragment; - exports.Lazy = Lazy; - exports.Memo = Memo; - exports.Portal = Portal; - exports.Profiler = Profiler; - exports.StrictMode = StrictMode; - exports.Suspense = Suspense; - exports.isAsyncMode = isAsyncMode; - exports.isConcurrentMode = isConcurrentMode; - exports.isContextConsumer = isContextConsumer; - exports.isContextProvider = isContextProvider; - exports.isElement = isElement; - exports.isForwardRef = isForwardRef; - exports.isFragment = isFragment; - exports.isLazy = isLazy; - exports.isMemo = isMemo; - exports.isPortal = isPortal; - exports.isProfiler = isProfiler; - exports.isStrictMode = isStrictMode; - exports.isSuspense = isSuspense; - exports.isValidElementType = isValidElementType; - exports.typeOf = typeOf; - })(); - } - } -}); - -// node_modules/react-is/index.js -var require_react_is = __commonJS({ - "node_modules/react-is/index.js"(exports, module2) { - "use strict"; - if (false) { - module2.exports = null; - } else { - module2.exports = require_react_is_development(); - } - } -}); - -// node_modules/object-assign/index.js -var require_object_assign = __commonJS({ - "node_modules/object-assign/index.js"(exports, module2) { - "use strict"; - var getOwnPropertySymbols = Object.getOwnPropertySymbols; - var hasOwnProperty = Object.prototype.hasOwnProperty; - var propIsEnumerable = Object.prototype.propertyIsEnumerable; - function toObject(val) { - if (val === null || val === void 0) { - throw new TypeError("Object.assign cannot be called with null or undefined"); - } - return Object(val); - } - function shouldUseNative() { - try { - if (!Object.assign) { - return false; - } - var test1 = new String("abc"); - test1[5] = "de"; - if (Object.getOwnPropertyNames(test1)[0] === "5") { - return false; - } - var test2 = {}; - for (var i4 = 0; i4 < 10; i4++) { - test2["_" + String.fromCharCode(i4)] = i4; - } - var order2 = Object.getOwnPropertyNames(test2).map(function(n2) { - return test2[n2]; - }); - if (order2.join("") !== "0123456789") { - return false; - } - var test3 = {}; - "abcdefghijklmnopqrst".split("").forEach(function(letter) { - test3[letter] = letter; - }); - if (Object.keys(Object.assign({}, test3)).join("") !== "abcdefghijklmnopqrst") { - return false; - } - return true; - } catch (err) { - return false; - } - } - module2.exports = shouldUseNative() ? Object.assign : function(target, source) { - var from; - var to = toObject(target); - var symbols; - for (var s5 = 1; s5 < arguments.length; s5++) { - from = Object(arguments[s5]); - for (var key2 in from) { - if (hasOwnProperty.call(from, key2)) { - to[key2] = from[key2]; - } - } - if (getOwnPropertySymbols) { - symbols = getOwnPropertySymbols(from); - for (var i4 = 0; i4 < symbols.length; i4++) { - if (propIsEnumerable.call(from, symbols[i4])) { - to[symbols[i4]] = from[symbols[i4]]; - } - } - } - } - return to; - }; - } -}); - -// node_modules/prop-types/lib/ReactPropTypesSecret.js -var require_ReactPropTypesSecret = __commonJS({ - "node_modules/prop-types/lib/ReactPropTypesSecret.js"(exports, module2) { - "use strict"; - var ReactPropTypesSecret = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"; - module2.exports = ReactPropTypesSecret; - } -}); - -// node_modules/prop-types/lib/has.js -var require_has = __commonJS({ - "node_modules/prop-types/lib/has.js"(exports, module2) { - module2.exports = Function.call.bind(Object.prototype.hasOwnProperty); - } -}); - -// node_modules/prop-types/checkPropTypes.js -var require_checkPropTypes = __commonJS({ - "node_modules/prop-types/checkPropTypes.js"(exports, module2) { - "use strict"; - var printWarning = function() { - }; - if (true) { - ReactPropTypesSecret = require_ReactPropTypesSecret(); - loggedTypeFailures = {}; - has = require_has(); - printWarning = function(text) { - var message = "Warning: " + text; - if (typeof console !== "undefined") { - console.error(message); - } - try { - throw new Error(message); - } catch (x5) { - } - }; - } - var ReactPropTypesSecret; - var loggedTypeFailures; - var has; - function checkPropTypes(typeSpecs, values, location, componentName, getStack) { - if (true) { - for (var typeSpecName in typeSpecs) { - if (has(typeSpecs, typeSpecName)) { - var error; - try { - if (typeof typeSpecs[typeSpecName] !== "function") { - var err = Error( - (componentName || "React class") + ": " + location + " type `" + typeSpecName + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof typeSpecs[typeSpecName] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`." - ); - err.name = "Invariant Violation"; - throw err; - } - error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); - } catch (ex) { - error = ex; - } - if (error && !(error instanceof Error)) { - printWarning( - (componentName || "React class") + ": type specification of " + location + " `" + typeSpecName + "` is invalid; the type checker function must return `null` or an `Error` but returned a " + typeof error + ". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)." - ); - } - if (error instanceof Error && !(error.message in loggedTypeFailures)) { - loggedTypeFailures[error.message] = true; - var stack = getStack ? getStack() : ""; - printWarning( - "Failed " + location + " type: " + error.message + (stack != null ? stack : "") - ); - } - } - } - } - } - checkPropTypes.resetWarningCache = function() { - if (true) { - loggedTypeFailures = {}; - } - }; - module2.exports = checkPropTypes; - } -}); - -// node_modules/prop-types/factoryWithTypeCheckers.js -var require_factoryWithTypeCheckers = __commonJS({ - "node_modules/prop-types/factoryWithTypeCheckers.js"(exports, module2) { - "use strict"; - var ReactIs = require_react_is(); - var assign = require_object_assign(); - var ReactPropTypesSecret = require_ReactPropTypesSecret(); - var has = require_has(); - var checkPropTypes = require_checkPropTypes(); - var printWarning = function() { - }; - if (true) { - printWarning = function(text) { - var message = "Warning: " + text; - if (typeof console !== "undefined") { - console.error(message); - } - try { - throw new Error(message); - } catch (x5) { - } - }; - } - function emptyFunctionThatReturnsNull() { - return null; - } - module2.exports = function(isValidElement, throwOnDirectAccess) { - var ITERATOR_SYMBOL = typeof Symbol === "function" && Symbol.iterator; - var FAUX_ITERATOR_SYMBOL = "@@iterator"; - function getIteratorFn(maybeIterable) { - var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); - if (typeof iteratorFn === "function") { - return iteratorFn; - } - } - var ANONYMOUS = "<>"; - var ReactPropTypes = { - array: createPrimitiveTypeChecker("array"), - bigint: createPrimitiveTypeChecker("bigint"), - bool: createPrimitiveTypeChecker("boolean"), - func: createPrimitiveTypeChecker("function"), - number: createPrimitiveTypeChecker("number"), - object: createPrimitiveTypeChecker("object"), - string: createPrimitiveTypeChecker("string"), - symbol: createPrimitiveTypeChecker("symbol"), - any: createAnyTypeChecker(), - arrayOf: createArrayOfTypeChecker, - element: createElementTypeChecker(), - elementType: createElementTypeTypeChecker(), - instanceOf: createInstanceTypeChecker, - node: createNodeChecker(), - objectOf: createObjectOfTypeChecker, - oneOf: createEnumTypeChecker, - oneOfType: createUnionTypeChecker, - shape: createShapeTypeChecker, - exact: createStrictShapeTypeChecker - }; - function is(x5, y5) { - if (x5 === y5) { - return x5 !== 0 || 1 / x5 === 1 / y5; - } else { - return x5 !== x5 && y5 !== y5; - } - } - function PropTypeError(message, data) { - this.message = message; - this.data = data && typeof data === "object" ? data : {}; - this.stack = ""; - } - PropTypeError.prototype = Error.prototype; - function createChainableTypeChecker(validate) { - if (true) { - var manualPropTypeCallCache = {}; - var manualPropTypeWarningCount = 0; - } - function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { - componentName = componentName || ANONYMOUS; - propFullName = propFullName || propName; - if (secret !== ReactPropTypesSecret) { - if (throwOnDirectAccess) { - var err = new Error( - "Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types" - ); - err.name = "Invariant Violation"; - throw err; - } else if (typeof console !== "undefined") { - var cacheKey = componentName + ":" + propName; - if (!manualPropTypeCallCache[cacheKey] && manualPropTypeWarningCount < 3) { - printWarning( - "You are manually calling a React.PropTypes validation function for the `" + propFullName + "` prop on `" + componentName + "`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details." - ); - manualPropTypeCallCache[cacheKey] = true; - manualPropTypeWarningCount++; - } - } - } - if (props[propName] == null) { - if (isRequired) { - if (props[propName] === null) { - return new PropTypeError("The " + location + " `" + propFullName + "` is marked as required " + ("in `" + componentName + "`, but its value is `null`.")); - } - return new PropTypeError("The " + location + " `" + propFullName + "` is marked as required in " + ("`" + componentName + "`, but its value is `undefined`.")); - } - return null; - } else { - return validate(props, propName, componentName, location, propFullName); - } - } - var chainedCheckType = checkType.bind(null, false); - chainedCheckType.isRequired = checkType.bind(null, true); - return chainedCheckType; - } - function createPrimitiveTypeChecker(expectedType) { - function validate(props, propName, componentName, location, propFullName, secret) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== expectedType) { - var preciseType = getPreciseType(propValue); - return new PropTypeError( - "Invalid " + location + " `" + propFullName + "` of type " + ("`" + preciseType + "` supplied to `" + componentName + "`, expected ") + ("`" + expectedType + "`."), - { expectedType } - ); - } - return null; - } - return createChainableTypeChecker(validate); - } - function createAnyTypeChecker() { - return createChainableTypeChecker(emptyFunctionThatReturnsNull); - } - function createArrayOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== "function") { - return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside arrayOf."); - } - var propValue = props[propName]; - if (!Array.isArray(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected an array.")); - } - for (var i4 = 0; i4 < propValue.length; i4++) { - var error = typeChecker(propValue, i4, componentName, location, propFullName + "[" + i4 + "]", ReactPropTypesSecret); - if (error instanceof Error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - function createElementTypeChecker() { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - if (!isValidElement(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected a single ReactElement.")); - } - return null; - } - return createChainableTypeChecker(validate); - } - function createElementTypeTypeChecker() { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - if (!ReactIs.isValidElementType(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected a single ReactElement type.")); - } - return null; - } - return createChainableTypeChecker(validate); - } - function createInstanceTypeChecker(expectedClass) { - function validate(props, propName, componentName, location, propFullName) { - if (!(props[propName] instanceof expectedClass)) { - var expectedClassName = expectedClass.name || ANONYMOUS; - var actualClassName = getClassName(props[propName]); - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + actualClassName + "` supplied to `" + componentName + "`, expected ") + ("instance of `" + expectedClassName + "`.")); - } - return null; - } - return createChainableTypeChecker(validate); - } - function createEnumTypeChecker(expectedValues) { - if (!Array.isArray(expectedValues)) { - if (true) { - if (arguments.length > 1) { - printWarning( - "Invalid arguments supplied to oneOf, expected an array, got " + arguments.length + " arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z])." - ); - } else { - printWarning("Invalid argument supplied to oneOf, expected an array."); - } - } - return emptyFunctionThatReturnsNull; - } - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - for (var i4 = 0; i4 < expectedValues.length; i4++) { - if (is(propValue, expectedValues[i4])) { - return null; - } - } - var valuesString = JSON.stringify(expectedValues, function replacer(key2, value) { - var type = getPreciseType(value); - if (type === "symbol") { - return String(value); - } - return value; - }); - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of value `" + String(propValue) + "` " + ("supplied to `" + componentName + "`, expected one of " + valuesString + ".")); - } - return createChainableTypeChecker(validate); - } - function createObjectOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== "function") { - return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside objectOf."); - } - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== "object") { - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected an object.")); - } - for (var key2 in propValue) { - if (has(propValue, key2)) { - var error = typeChecker(propValue, key2, componentName, location, propFullName + "." + key2, ReactPropTypesSecret); - if (error instanceof Error) { - return error; - } - } - } - return null; - } - return createChainableTypeChecker(validate); - } - function createUnionTypeChecker(arrayOfTypeCheckers) { - if (!Array.isArray(arrayOfTypeCheckers)) { - true ? printWarning("Invalid argument supplied to oneOfType, expected an instance of array.") : void 0; - return emptyFunctionThatReturnsNull; - } - for (var i4 = 0; i4 < arrayOfTypeCheckers.length; i4++) { - var checker = arrayOfTypeCheckers[i4]; - if (typeof checker !== "function") { - printWarning( - "Invalid argument supplied to oneOfType. Expected an array of check functions, but received " + getPostfixForTypeWarning(checker) + " at index " + i4 + "." - ); - return emptyFunctionThatReturnsNull; - } - } - function validate(props, propName, componentName, location, propFullName) { - var expectedTypes = []; - for (var i5 = 0; i5 < arrayOfTypeCheckers.length; i5++) { - var checker2 = arrayOfTypeCheckers[i5]; - var checkerResult = checker2(props, propName, componentName, location, propFullName, ReactPropTypesSecret); - if (checkerResult == null) { - return null; - } - if (checkerResult.data && has(checkerResult.data, "expectedType")) { - expectedTypes.push(checkerResult.data.expectedType); - } - } - var expectedTypesMessage = expectedTypes.length > 0 ? ", expected one of type [" + expectedTypes.join(", ") + "]" : ""; - return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`" + expectedTypesMessage + ".")); - } - return createChainableTypeChecker(validate); - } - function createNodeChecker() { - function validate(props, propName, componentName, location, propFullName) { - if (!isNode3(props[propName])) { - return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`, expected a ReactNode.")); - } - return null; - } - return createChainableTypeChecker(validate); - } - function invalidValidatorError(componentName, location, propFullName, key2, type) { - return new PropTypeError( - (componentName || "React class") + ": " + location + " type `" + propFullName + "." + key2 + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + type + "`." - ); - } - function createShapeTypeChecker(shapeTypes) { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== "object") { - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type `" + propType + "` " + ("supplied to `" + componentName + "`, expected `object`.")); - } - for (var key2 in shapeTypes) { - var checker = shapeTypes[key2]; - if (typeof checker !== "function") { - return invalidValidatorError(componentName, location, propFullName, key2, getPreciseType(checker)); - } - var error = checker(propValue, key2, componentName, location, propFullName + "." + key2, ReactPropTypesSecret); - if (error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - function createStrictShapeTypeChecker(shapeTypes) { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== "object") { - return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type `" + propType + "` " + ("supplied to `" + componentName + "`, expected `object`.")); - } - var allKeys = assign({}, props[propName], shapeTypes); - for (var key2 in allKeys) { - var checker = shapeTypes[key2]; - if (has(shapeTypes, key2) && typeof checker !== "function") { - return invalidValidatorError(componentName, location, propFullName, key2, getPreciseType(checker)); - } - if (!checker) { - return new PropTypeError( - "Invalid " + location + " `" + propFullName + "` key `" + key2 + "` supplied to `" + componentName + "`.\nBad object: " + JSON.stringify(props[propName], null, " ") + "\nValid keys: " + JSON.stringify(Object.keys(shapeTypes), null, " ") - ); - } - var error = checker(propValue, key2, componentName, location, propFullName + "." + key2, ReactPropTypesSecret); - if (error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - function isNode3(propValue) { - switch (typeof propValue) { - case "number": - case "string": - case "undefined": - return true; - case "boolean": - return !propValue; - case "object": - if (Array.isArray(propValue)) { - return propValue.every(isNode3); - } - if (propValue === null || isValidElement(propValue)) { - return true; - } - var iteratorFn = getIteratorFn(propValue); - if (iteratorFn) { - var iterator = iteratorFn.call(propValue); - var step; - if (iteratorFn !== propValue.entries) { - while (!(step = iterator.next()).done) { - if (!isNode3(step.value)) { - return false; - } - } - } else { - while (!(step = iterator.next()).done) { - var entry = step.value; - if (entry) { - if (!isNode3(entry[1])) { - return false; - } - } - } - } - } else { - return false; - } - return true; - default: - return false; - } - } - function isSymbol(propType, propValue) { - if (propType === "symbol") { - return true; - } - if (!propValue) { - return false; - } - if (propValue["@@toStringTag"] === "Symbol") { - return true; - } - if (typeof Symbol === "function" && propValue instanceof Symbol) { - return true; - } - return false; - } - function getPropType(propValue) { - var propType = typeof propValue; - if (Array.isArray(propValue)) { - return "array"; - } - if (propValue instanceof RegExp) { - return "object"; - } - if (isSymbol(propType, propValue)) { - return "symbol"; - } - return propType; - } - function getPreciseType(propValue) { - if (typeof propValue === "undefined" || propValue === null) { - return "" + propValue; - } - var propType = getPropType(propValue); - if (propType === "object") { - if (propValue instanceof Date) { - return "date"; - } else if (propValue instanceof RegExp) { - return "regexp"; - } - } - return propType; - } - function getPostfixForTypeWarning(value) { - var type = getPreciseType(value); - switch (type) { - case "array": - case "object": - return "an " + type; - case "boolean": - case "date": - case "regexp": - return "a " + type; - default: - return type; - } - } - function getClassName(propValue) { - if (!propValue.constructor || !propValue.constructor.name) { - return ANONYMOUS; - } - return propValue.constructor.name; - } - ReactPropTypes.checkPropTypes = checkPropTypes; - ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; - ReactPropTypes.PropTypes = ReactPropTypes; - return ReactPropTypes; - }; - } -}); - -// node_modules/prop-types/index.js -var require_prop_types = __commonJS({ - "node_modules/prop-types/index.js"(exports, module2) { - if (true) { - ReactIs = require_react_is(); - throwOnDirectAccess = true; - module2.exports = require_factoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess); - } else { - module2.exports = null(); - } - var ReactIs; - var throwOnDirectAccess; - } -}); - -// node_modules/obsidian-dataview/lib/index.js -var require_lib = __commonJS({ - "node_modules/obsidian-dataview/lib/index.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - require("obsidian"); - var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; - var luxon = {}; - Object.defineProperty(luxon, "__esModule", { value: true }); - function _defineProperties(target, props) { - for (var i4 = 0; i4 < props.length; i4++) { - var descriptor = props[i4]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) - _defineProperties(Constructor.prototype, protoProps); - if (staticProps) - _defineProperties(Constructor, staticProps); - return Constructor; - } - function _extends2() { - _extends2 = Object.assign || function(target) { - for (var i4 = 1; i4 < arguments.length; i4++) { - var source = arguments[i4]; - for (var key2 in source) { - if (Object.prototype.hasOwnProperty.call(source, key2)) { - target[key2] = source[key2]; - } - } - } - return target; - }; - return _extends2.apply(this, arguments); - } - function _inheritsLoose2(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - _setPrototypeOf2(subClass, superClass); - } - function _getPrototypeOf(o3) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf2(o4) { - return o4.__proto__ || Object.getPrototypeOf(o4); - }; - return _getPrototypeOf(o3); - } - function _setPrototypeOf2(o3, p3) { - _setPrototypeOf2 = Object.setPrototypeOf || function _setPrototypeOf3(o4, p4) { - o4.__proto__ = p4; - return o4; - }; - return _setPrototypeOf2(o3, p3); - } - function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) - return false; - if (Reflect.construct.sham) - return false; - if (typeof Proxy === "function") - return true; - try { - Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { - })); - return true; - } catch (e4) { - return false; - } - } - function _construct(Parent, args, Class) { - if (_isNativeReflectConstruct()) { - _construct = Reflect.construct; - } else { - _construct = function _construct2(Parent2, args2, Class2) { - var a5 = [null]; - a5.push.apply(a5, args2); - var Constructor = Function.bind.apply(Parent2, a5); - var instance = new Constructor(); - if (Class2) - _setPrototypeOf2(instance, Class2.prototype); - return instance; - }; - } - return _construct.apply(null, arguments); - } - function _isNativeFunction(fn2) { - return Function.toString.call(fn2).indexOf("[native code]") !== -1; - } - function _wrapNativeSuper(Class) { - var _cache = typeof Map === "function" ? /* @__PURE__ */ new Map() : void 0; - _wrapNativeSuper = function _wrapNativeSuper2(Class2) { - if (Class2 === null || !_isNativeFunction(Class2)) - return Class2; - if (typeof Class2 !== "function") { - throw new TypeError("Super expression must either be null or a function"); + } + function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + _construct = function _construct2(Parent2, args2, Class2) { + var a5 = [null]; + a5.push.apply(a5, args2); + var Constructor = Function.bind.apply(Parent2, a5); + var instance = new Constructor(); + if (Class2) + _setPrototypeOf(instance, Class2.prototype); + return instance; + }; + } + return _construct.apply(null, arguments); + } + function _isNativeFunction(fn2) { + return Function.toString.call(fn2).indexOf("[native code]") !== -1; + } + function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? /* @__PURE__ */ new Map() : void 0; + _wrapNativeSuper = function _wrapNativeSuper2(Class2) { + if (Class2 === null || !_isNativeFunction(Class2)) + return Class2; + if (typeof Class2 !== "function") { + throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class2)) @@ -1789,7 +162,7 @@ var require_lib = __commonJS({ configurable: true } }); - return _setPrototypeOf2(Wrapper, Class2); + return _setPrototypeOf(Wrapper, Class2); }; return _wrapNativeSuper(Class); } @@ -1849,56 +222,56 @@ var require_lib = __commonJS({ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var LuxonError = /* @__PURE__ */ function(_Error) { - _inheritsLoose2(LuxonError2, _Error); + _inheritsLoose(LuxonError2, _Error); function LuxonError2() { return _Error.apply(this, arguments) || this; } return LuxonError2; }(/* @__PURE__ */ _wrapNativeSuper(Error)); var InvalidDateTimeError = /* @__PURE__ */ function(_LuxonError) { - _inheritsLoose2(InvalidDateTimeError2, _LuxonError); + _inheritsLoose(InvalidDateTimeError2, _LuxonError); function InvalidDateTimeError2(reason) { return _LuxonError.call(this, "Invalid DateTime: " + reason.toMessage()) || this; } return InvalidDateTimeError2; }(LuxonError); var InvalidIntervalError = /* @__PURE__ */ function(_LuxonError2) { - _inheritsLoose2(InvalidIntervalError2, _LuxonError2); + _inheritsLoose(InvalidIntervalError2, _LuxonError2); function InvalidIntervalError2(reason) { return _LuxonError2.call(this, "Invalid Interval: " + reason.toMessage()) || this; } return InvalidIntervalError2; }(LuxonError); var InvalidDurationError = /* @__PURE__ */ function(_LuxonError3) { - _inheritsLoose2(InvalidDurationError2, _LuxonError3); + _inheritsLoose(InvalidDurationError2, _LuxonError3); function InvalidDurationError2(reason) { return _LuxonError3.call(this, "Invalid Duration: " + reason.toMessage()) || this; } return InvalidDurationError2; }(LuxonError); var ConflictingSpecificationError = /* @__PURE__ */ function(_LuxonError4) { - _inheritsLoose2(ConflictingSpecificationError2, _LuxonError4); + _inheritsLoose(ConflictingSpecificationError2, _LuxonError4); function ConflictingSpecificationError2() { return _LuxonError4.apply(this, arguments) || this; } return ConflictingSpecificationError2; }(LuxonError); var InvalidUnitError = /* @__PURE__ */ function(_LuxonError5) { - _inheritsLoose2(InvalidUnitError2, _LuxonError5); + _inheritsLoose(InvalidUnitError2, _LuxonError5); function InvalidUnitError2(unit) { return _LuxonError5.call(this, "Invalid unit " + unit) || this; } return InvalidUnitError2; }(LuxonError); var InvalidArgumentError = /* @__PURE__ */ function(_LuxonError6) { - _inheritsLoose2(InvalidArgumentError2, _LuxonError6); + _inheritsLoose(InvalidArgumentError2, _LuxonError6); function InvalidArgumentError2() { return _LuxonError6.apply(this, arguments) || this; } return InvalidArgumentError2; }(LuxonError); var ZoneIsAbstractError = /* @__PURE__ */ function(_LuxonError7) { - _inheritsLoose2(ZoneIsAbstractError2, _LuxonError7); + _inheritsLoose(ZoneIsAbstractError2, _LuxonError7); function ZoneIsAbstractError2() { return _LuxonError7.call(this, "Zone is an abstract class") || this; } @@ -2232,9 +605,9 @@ var require_lib = __commonJS({ } return normalized; } - function formatOffset(offset2, format2) { + function formatOffset(offset2, format3) { var hours = Math.trunc(Math.abs(offset2 / 60)), minutes = Math.trunc(Math.abs(offset2 % 60)), sign = offset2 >= 0 ? "+" : "-"; - switch (format2) { + switch (format3) { case "short": return "" + sign + padStart(hours, 2) + ":" + padStart(minutes, 2); case "narrow": @@ -2242,7 +615,7 @@ var require_lib = __commonJS({ case "techie": return "" + sign + padStart(hours, 2) + padStart(minutes, 2); default: - throw new RangeError("Value format " + format2 + " is out of range for property format"); + throw new RangeError("Value format " + format3 + " is out of range for property format"); } } function timeObject(obj) { @@ -2313,7 +686,7 @@ var require_lib = __commonJS({ function eraForDateTime(dt, length) { return eras(length)[dt.year < 0 ? 0 : 1]; } - function formatRelativeTime(unit, count, numeric, narrow) { + function formatRelativeTime(unit, count2, numeric, narrow) { if (numeric === void 0) { numeric = "always"; } @@ -2333,7 +706,7 @@ var require_lib = __commonJS({ var lastable = ["hours", "minutes", "seconds"].indexOf(unit) === -1; if (numeric === "auto" && lastable) { var isDay = unit === "days"; - switch (count) { + switch (count2) { case 1: return isDay ? "tomorrow" : "next " + units[unit][0]; case -1: @@ -2342,7 +715,7 @@ var require_lib = __commonJS({ return isDay ? "today" : "this " + units[unit][0]; } } - var isInPast = Object.is(count, -0) || count < 0, fmtValue = Math.abs(count), singular = fmtValue === 1, lilUnits = units[unit], fmtUnit = narrow ? singular ? lilUnits[1] : lilUnits[2] || lilUnits[1] : singular ? units[unit][0] : unit; + var isInPast = Object.is(count2, -0) || count2 < 0, fmtValue = Math.abs(count2), singular = fmtValue === 1, lilUnits = units[unit], fmtUnit = narrow ? singular ? lilUnits[1] : lilUnits[2] || lilUnits[1] : singular ? units[unit][0] : unit; return isInPast ? fmtValue + " " + fmtUnit + " ago" : "in " + fmtValue + " " + fmtUnit; } function stringifyTokens(splits, tokenToString) { @@ -2736,13 +1109,13 @@ var require_lib = __commonJS({ _proto.offsetName = function offsetName(ts, opts) { throw new ZoneIsAbstractError(); }; - _proto.formatOffset = function formatOffset2(ts, format2) { + _proto.formatOffset = function formatOffset2(ts, format3) { throw new ZoneIsAbstractError(); }; _proto.offset = function offset2(ts) { throw new ZoneIsAbstractError(); }; - _proto.equals = function equals(otherZone) { + _proto.equals = function equals2(otherZone) { throw new ZoneIsAbstractError(); }; _createClass(Zone2, [{ @@ -2775,22 +1148,22 @@ var require_lib = __commonJS({ }(); var singleton$1 = null; var SystemZone = /* @__PURE__ */ function(_Zone) { - _inheritsLoose2(SystemZone2, _Zone); + _inheritsLoose(SystemZone2, _Zone); function SystemZone2() { return _Zone.apply(this, arguments) || this; } var _proto = SystemZone2.prototype; _proto.offsetName = function offsetName(ts, _ref) { - var format2 = _ref.format, locale2 = _ref.locale; - return parseZoneInfo(ts, format2, locale2); + var format3 = _ref.format, locale2 = _ref.locale; + return parseZoneInfo(ts, format3, locale2); }; - _proto.formatOffset = function formatOffset$1(ts, format2) { - return formatOffset(this.offset(ts), format2); + _proto.formatOffset = function formatOffset$1(ts, format3) { + return formatOffset(this.offset(ts), format3); }; _proto.offset = function offset2(ts) { return -new Date(ts).getTimezoneOffset(); }; - _proto.equals = function equals(otherZone) { + _proto.equals = function equals2(otherZone) { return otherZone.type === "system"; }; _createClass(SystemZone2, [{ @@ -2870,7 +1243,7 @@ var require_lib = __commonJS({ } var ianaZoneCache = {}; var IANAZone = /* @__PURE__ */ function(_Zone) { - _inheritsLoose2(IANAZone2, _Zone); + _inheritsLoose(IANAZone2, _Zone); IANAZone2.create = function create(name) { if (!ianaZoneCache[name]) { ianaZoneCache[name] = new IANAZone2(name); @@ -2906,11 +1279,11 @@ var require_lib = __commonJS({ } var _proto = IANAZone2.prototype; _proto.offsetName = function offsetName(ts, _ref) { - var format2 = _ref.format, locale2 = _ref.locale; - return parseZoneInfo(ts, format2, locale2, this.name); + var format3 = _ref.format, locale2 = _ref.locale; + return parseZoneInfo(ts, format3, locale2, this.name); }; - _proto.formatOffset = function formatOffset$1(ts, format2) { - return formatOffset(this.offset(ts), format2); + _proto.formatOffset = function formatOffset$1(ts, format3) { + return formatOffset(this.offset(ts), format3); }; _proto.offset = function offset2(ts) { var date = new Date(ts); @@ -2936,7 +1309,7 @@ var require_lib = __commonJS({ asTS -= over >= 0 ? over : 1e3 + over; return (asUTC - asTS) / (60 * 1e3); }; - _proto.equals = function equals(otherZone) { + _proto.equals = function equals2(otherZone) { return otherZone.type === "iana" && otherZone.name === this.name; }; _createClass(IANAZone2, [{ @@ -2964,7 +1337,7 @@ var require_lib = __commonJS({ }(Zone); var singleton = null; var FixedOffsetZone = /* @__PURE__ */ function(_Zone) { - _inheritsLoose2(FixedOffsetZone2, _Zone); + _inheritsLoose(FixedOffsetZone2, _Zone); FixedOffsetZone2.instance = function instance(offset2) { return offset2 === 0 ? FixedOffsetZone2.utcInstance : new FixedOffsetZone2(offset2); }; @@ -2987,13 +1360,13 @@ var require_lib = __commonJS({ _proto.offsetName = function offsetName() { return this.name; }; - _proto.formatOffset = function formatOffset$1(ts, format2) { - return formatOffset(this.fixed, format2); + _proto.formatOffset = function formatOffset$1(ts, format3) { + return formatOffset(this.fixed, format3); }; _proto.offset = function offset2() { return this.fixed; }; - _proto.equals = function equals(otherZone) { + _proto.equals = function equals2(otherZone) { return otherZone.type === "fixed" && otherZone.fixed === this.fixed; }; _createClass(FixedOffsetZone2, [{ @@ -3037,7 +1410,7 @@ var require_lib = __commonJS({ return FixedOffsetZone2; }(Zone); var InvalidZone = /* @__PURE__ */ function(_Zone) { - _inheritsLoose2(InvalidZone2, _Zone); + _inheritsLoose(InvalidZone2, _Zone); function InvalidZone2(zoneName) { var _this; _this = _Zone.call(this) || this; @@ -3054,7 +1427,7 @@ var require_lib = __commonJS({ _proto.offset = function offset2() { return NaN; }; - _proto.equals = function equals() { + _proto.equals = function equals2() { return false; }; _createClass(InvalidZone2, [{ @@ -3101,7 +1474,7 @@ var require_lib = __commonJS({ return new InvalidZone(input); } } - var now2 = function now3() { + var now = function now2() { return Date.now(); }; var defaultZone = "system"; @@ -3119,10 +1492,10 @@ var require_lib = __commonJS({ _createClass(Settings2, null, [{ key: "now", get: function get() { - return now2; + return now; }, set: function set(n3) { - now2 = n3; + now = n3; } }, { key: "defaultZone", @@ -3167,7 +1540,7 @@ var require_lib = __commonJS({ }]); return Settings2; }(); - var _excluded3 = ["base"]; + var _excluded2 = ["base"]; var _excluded22 = ["padTo", "floor"]; var intlLFCache = {}; function getCachedLF(locString, opts) { @@ -3215,7 +1588,7 @@ var require_lib = __commonJS({ } var _opts = opts; _opts.base; - var cacheKeyOpts = _objectWithoutPropertiesLoose2(_opts, _excluded3); + var cacheKeyOpts = _objectWithoutPropertiesLoose2(_opts, _excluded2); var key2 = JSON.stringify([locString, cacheKeyOpts]); var inf = intlRelCache[key2]; if (!inf) { @@ -3313,7 +1686,7 @@ var require_lib = __commonJS({ } } var _proto = PolyNumberFormatter2.prototype; - _proto.format = function format2(i4) { + _proto.format = function format3(i4) { if (this.inf) { var fixed = this.floor ? Math.floor(i4) : i4; return this.inf.format(fixed); @@ -3355,7 +1728,7 @@ var require_lib = __commonJS({ this.dtf = getCachedDTF(intl, intlOpts); } var _proto2 = PolyDateFormatter2.prototype; - _proto2.format = function format2() { + _proto2.format = function format3() { return this.dtf.format(this.dt.toJSDate()); }; _proto2.formatToParts = function formatToParts() { @@ -3376,16 +1749,16 @@ var require_lib = __commonJS({ } } var _proto3 = PolyRelFormatter2.prototype; - _proto3.format = function format2(count, unit) { + _proto3.format = function format3(count2, unit) { if (this.rtf) { - return this.rtf.format(count, unit); + return this.rtf.format(count2, unit); } else { - return formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== "long"); + return formatRelativeTime(unit, count2, this.opts.numeric, this.opts.style !== "long"); } }; - _proto3.formatToParts = function formatToParts(count, unit) { + _proto3.formatToParts = function formatToParts(count2, unit) { if (this.rtf) { - return this.rtf.formatToParts(count, unit); + return this.rtf.formatToParts(count2, unit); } else { return []; } @@ -3464,21 +1837,21 @@ var require_lib = __commonJS({ defaultToEN: false })); }; - _proto4.months = function months$1(length, format2, defaultOK) { + _proto4.months = function months$1(length, format3, defaultOK) { var _this = this; - if (format2 === void 0) { - format2 = false; + if (format3 === void 0) { + format3 = false; } if (defaultOK === void 0) { defaultOK = true; } return listStuff(this, length, defaultOK, months, function() { - var intl = format2 ? { + var intl = format3 ? { month: length, day: "numeric" } : { month: length - }, formatStr = format2 ? "format" : "standalone"; + }, formatStr = format3 ? "format" : "standalone"; if (!_this.monthsCache[formatStr][length]) { _this.monthsCache[formatStr][length] = mapMonths(function(dt) { return _this.extract(dt, intl, "month"); @@ -3487,23 +1860,23 @@ var require_lib = __commonJS({ return _this.monthsCache[formatStr][length]; }); }; - _proto4.weekdays = function weekdays$1(length, format2, defaultOK) { + _proto4.weekdays = function weekdays$1(length, format3, defaultOK) { var _this2 = this; - if (format2 === void 0) { - format2 = false; + if (format3 === void 0) { + format3 = false; } if (defaultOK === void 0) { defaultOK = true; } return listStuff(this, length, defaultOK, weekdays, function() { - var intl = format2 ? { + var intl = format3 ? { weekday: length, year: "numeric", month: "long", day: "numeric" } : { weekday: length - }, formatStr = format2 ? "format" : "standalone"; + }, formatStr = format3 ? "format" : "standalone"; if (!_this2.weekdaysCache[formatStr][length]) { _this2.weekdaysCache[formatStr][length] = mapWeekdays(function(dt) { return _this2.extract(dt, intl, "weekday"); @@ -3582,7 +1955,7 @@ var require_lib = __commonJS({ _proto4.isEnglish = function isEnglish() { return this.locale === "en" || this.locale.toLowerCase() === "en-us" || new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us"); }; - _proto4.equals = function equals(other) { + _proto4.equals = function equals2(other) { return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar; }; _createClass(Locale2, [{ @@ -3925,9 +2298,9 @@ var require_lib = __commonJS({ this.matrix = accurate ? accurateMatrix : casualMatrix; this.isLuxonDuration = true; } - Duration2.fromMillis = function fromMillis(count, opts) { + Duration2.fromMillis = function fromMillis(count2, opts) { return Duration2.fromObject({ - milliseconds: count + milliseconds: count2 }, opts); }; Duration2.fromObject = function fromObject(obj, opts) { @@ -3954,20 +2327,20 @@ var require_lib = __commonJS({ throw new InvalidArgumentError("Unknown duration argument " + durationLike + " of type " + typeof durationLike); } }; - Duration2.fromISO = function fromISO(text, opts) { - var _parseISODuration = parseISODuration(text), parsed = _parseISODuration[0]; + Duration2.fromISO = function fromISO(text2, opts) { + var _parseISODuration = parseISODuration(text2), parsed = _parseISODuration[0]; if (parsed) { return Duration2.fromObject(parsed, opts); } else { - return Duration2.invalid("unparsable", 'the input "' + text + `" can't be parsed as ISO 8601`); + return Duration2.invalid("unparsable", 'the input "' + text2 + `" can't be parsed as ISO 8601`); } }; - Duration2.fromISOTime = function fromISOTime(text, opts) { - var _parseISOTimeOnly = parseISOTimeOnly(text), parsed = _parseISOTimeOnly[0]; + Duration2.fromISOTime = function fromISOTime(text2, opts) { + var _parseISOTimeOnly = parseISOTimeOnly(text2), parsed = _parseISOTimeOnly[0]; if (parsed) { return Duration2.fromObject(parsed, opts); } else { - return Duration2.invalid("unparsable", 'the input "' + text + `" can't be parsed as ISO 8601`); + return Duration2.invalid("unparsable", 'the input "' + text2 + `" can't be parsed as ISO 8601`); } }; Duration2.invalid = function invalid(reason, explanation) { @@ -4109,7 +2482,7 @@ var require_lib = __commonJS({ _proto.toJSON = function toJSON() { return this.toISO(); }; - _proto.toString = function toString() { + _proto.toString = function toString2() { return this.toISO(); }; _proto.toMillis = function toMillis() { @@ -4245,7 +2618,7 @@ var require_lib = __commonJS({ values: negated }, true); }; - _proto.equals = function equals(other) { + _proto.equals = function equals2(other) { if (!this.isValid || !other.isValid) { return false; } @@ -4393,8 +2766,8 @@ var require_lib = __commonJS({ var dur = Duration.fromDurationLike(duration), dt = friendlyDateTime(end); return Interval2.fromDateTimes(dt.minus(dur), dt); }; - Interval2.fromISO = function fromISO(text, opts) { - var _split = (text || "").split("/", 2), s6 = _split[0], e4 = _split[1]; + Interval2.fromISO = function fromISO(text2, opts) { + var _split = (text2 || "").split("/", 2), s6 = _split[0], e4 = _split[1]; if (s6 && e4) { var start, startIsValid; try { @@ -4425,7 +2798,7 @@ var require_lib = __commonJS({ } } } - return Interval2.invalid("unparsable", 'the input "' + text + `" can't be parsed as ISO 8601`); + return Interval2.invalid("unparsable", 'the input "' + text2 + `" can't be parsed as ISO 8601`); }; Interval2.isInterval = function isInterval(o3) { return o3 && o3.isLuxonInterval || false; @@ -4437,7 +2810,7 @@ var require_lib = __commonJS({ } return this.isValid ? this.toDuration.apply(this, [unit]).get(unit) : NaN; }; - _proto.count = function count(unit) { + _proto.count = function count2(unit) { if (unit === void 0) { unit = "milliseconds"; } @@ -4533,7 +2906,7 @@ var require_lib = __commonJS({ return false; return this.s <= other.s && this.e >= other.e; }; - _proto.equals = function equals(other) { + _proto.equals = function equals2(other) { if (!this.isValid || !other.isValid) { return false; } @@ -4612,7 +2985,7 @@ var require_lib = __commonJS({ return i4 && !i4.isEmpty(); }); }; - _proto.toString = function toString() { + _proto.toString = function toString2() { if (!this.isValid) return INVALID$1; return "[" + this.s.toISO() + " \u2013 " + this.e.toISO() + ")"; @@ -4734,7 +3107,7 @@ var require_lib = __commonJS({ var _ref6 = _temp6 === void 0 ? {} : _temp6, _ref6$locale = _ref6.locale, locale2 = _ref6$locale === void 0 ? null : _ref6$locale; return Locale.create(locale2, null, "gregory").eras(length); }; - Info2.features = function features() { + Info2.features = function features2() { return { relative: hasRelative() }; @@ -4859,9 +3232,9 @@ var require_lib = __commonJS({ value += hanidecChars.indexOf(str[i4]); } else { for (var key2 in numberingSystemsUTF16) { - var _numberingSystemsUTF = numberingSystemsUTF16[key2], min2 = _numberingSystemsUTF[0], max2 = _numberingSystemsUTF[1]; - if (code >= min2 && code <= max2) { - value += code - min2; + var _numberingSystemsUTF = numberingSystemsUTF16[key2], min3 = _numberingSystemsUTF[0], max3 = _numberingSystemsUTF[1]; + if (code >= min3 && code <= max3) { + value += code - min3; } } } @@ -5243,8 +3616,8 @@ var require_lib = __commonJS({ return maybeExpandMacroToken(t4, locale2); })); } - function explainFromTokens(locale2, input, format2) { - var tokens = expandMacroTokens(Formatter.parseFormat(format2), locale2), units = tokens.map(function(t4) { + function explainFromTokens(locale2, input, format3) { + var tokens = expandMacroTokens(Formatter.parseFormat(format3), locale2), units = tokens.map(function(t4) { return unitForToken(t4, locale2); }), disqualifyingUnit = units.find(function(t4) { return t4.invalidReason; @@ -5272,8 +3645,8 @@ var require_lib = __commonJS({ }; } } - function parseFromTokens(locale2, input, format2) { - var _explainFromTokens = explainFromTokens(locale2, input, format2), result = _explainFromTokens.result, zone = _explainFromTokens.zone, specificOffset = _explainFromTokens.specificOffset, invalidReason = _explainFromTokens.invalidReason; + function parseFromTokens(locale2, input, format3) { + var _explainFromTokens = explainFromTokens(locale2, input, format3), result = _explainFromTokens.result, zone = _explainFromTokens.zone, specificOffset = _explainFromTokens.specificOffset, invalidReason = _explainFromTokens.invalidReason; return [result, zone, specificOffset, invalidReason]; } var nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; @@ -5479,7 +3852,7 @@ var require_lib = __commonJS({ o: o3 }; } - function parseDataToDateTime(parsed, parsedZone, opts, format2, text, specificOffset) { + function parseDataToDateTime(parsed, parsedZone, opts, format3, text2, specificOffset) { var setZone = opts.setZone, zone = opts.zone; if (parsed && Object.keys(parsed).length !== 0) { var interpretationZone = parsedZone || zone, inst = DateTime.fromObject(parsed, _extends2({}, opts, { @@ -5488,17 +3861,17 @@ var require_lib = __commonJS({ })); return setZone ? inst : inst.setZone(zone); } else { - return DateTime.invalid(new Invalid("unparsable", 'the input "' + text + `" can't be parsed as ` + format2)); + return DateTime.invalid(new Invalid("unparsable", 'the input "' + text2 + `" can't be parsed as ` + format3)); } } - function toTechFormat(dt, format2, allowZ) { + function toTechFormat(dt, format3, allowZ) { if (allowZ === void 0) { allowZ = true; } return dt.isValid ? Formatter.create(Locale.create("en-US"), { allowZ, forceSimple: true - }).formatDateTimeFromString(dt, format2) : null; + }).formatDateTimeFromString(dt, format3) : null; } function _toISODate(o3, extended) { var longFormat = o3.c.year > 9999 || o3.c.year < 0; @@ -5641,7 +4014,7 @@ var require_lib = __commonJS({ }); } function diffRelative(start, end, opts) { - var round = isUndefined(opts.round) ? true : opts.round, format2 = function format3(c4, unit2) { + var round = isUndefined(opts.round) ? true : opts.round, format3 = function format4(c4, unit2) { c4 = roundTo(c4, round || opts.calendary ? 0 : 2, true); var formatter = end.loc.clone(opts).relFormatter(opts); return formatter.format(c4, unit2); @@ -5656,16 +4029,16 @@ var require_lib = __commonJS({ } }; if (opts.unit) { - return format2(differ(opts.unit), opts.unit); + return format3(differ(opts.unit), opts.unit); } for (var _iterator2 = _createForOfIteratorHelperLoose(opts.units), _step2; !(_step2 = _iterator2()).done; ) { var unit = _step2.value; - var count = differ(unit); - if (Math.abs(count) >= 1) { - return format2(count, unit); + var count2 = differ(unit); + if (Math.abs(count2) >= 1) { + return format3(count2, unit); } } - return format2(start > end ? -0 : 0, opts.units[opts.units.length - 1]); + return format3(start > end ? -0 : 0, opts.units[opts.units.length - 1]); } function lastOpts(argList) { var opts = {}, args; @@ -5705,7 +4078,7 @@ var require_lib = __commonJS({ this.o = o3; this.isLuxonDateTime = true; } - DateTime2.now = function now3() { + DateTime2.now = function now2() { return new DateTime2({}); }; DateTime2.local = function local() { @@ -5838,57 +4211,57 @@ var require_lib = __commonJS({ } return inst; }; - DateTime2.fromISO = function fromISO(text, opts) { + DateTime2.fromISO = function fromISO(text2, opts) { if (opts === void 0) { opts = {}; } - var _parseISODate = parseISODate(text), vals = _parseISODate[0], parsedZone = _parseISODate[1]; - return parseDataToDateTime(vals, parsedZone, opts, "ISO 8601", text); + var _parseISODate = parseISODate(text2), vals = _parseISODate[0], parsedZone = _parseISODate[1]; + return parseDataToDateTime(vals, parsedZone, opts, "ISO 8601", text2); }; - DateTime2.fromRFC2822 = function fromRFC2822(text, opts) { + DateTime2.fromRFC2822 = function fromRFC2822(text2, opts) { if (opts === void 0) { opts = {}; } - var _parseRFC2822Date = parseRFC2822Date(text), vals = _parseRFC2822Date[0], parsedZone = _parseRFC2822Date[1]; - return parseDataToDateTime(vals, parsedZone, opts, "RFC 2822", text); + var _parseRFC2822Date = parseRFC2822Date(text2), vals = _parseRFC2822Date[0], parsedZone = _parseRFC2822Date[1]; + return parseDataToDateTime(vals, parsedZone, opts, "RFC 2822", text2); }; - DateTime2.fromHTTP = function fromHTTP(text, opts) { + DateTime2.fromHTTP = function fromHTTP(text2, opts) { if (opts === void 0) { opts = {}; } - var _parseHTTPDate = parseHTTPDate(text), vals = _parseHTTPDate[0], parsedZone = _parseHTTPDate[1]; + var _parseHTTPDate = parseHTTPDate(text2), vals = _parseHTTPDate[0], parsedZone = _parseHTTPDate[1]; return parseDataToDateTime(vals, parsedZone, opts, "HTTP", opts); }; - DateTime2.fromFormat = function fromFormat(text, fmt, opts) { + DateTime2.fromFormat = function fromFormat(text2, fmt, opts) { if (opts === void 0) { opts = {}; } - if (isUndefined(text) || isUndefined(fmt)) { + if (isUndefined(text2) || isUndefined(fmt)) { throw new InvalidArgumentError("fromFormat requires an input string and a format"); } var _opts = opts, _opts$locale = _opts.locale, locale2 = _opts$locale === void 0 ? null : _opts$locale, _opts$numberingSystem = _opts.numberingSystem, numberingSystem = _opts$numberingSystem === void 0 ? null : _opts$numberingSystem, localeToUse = Locale.fromOpts({ locale: locale2, numberingSystem, defaultToEN: true - }), _parseFromTokens = parseFromTokens(localeToUse, text, fmt), vals = _parseFromTokens[0], parsedZone = _parseFromTokens[1], specificOffset = _parseFromTokens[2], invalid = _parseFromTokens[3]; + }), _parseFromTokens = parseFromTokens(localeToUse, text2, fmt), vals = _parseFromTokens[0], parsedZone = _parseFromTokens[1], specificOffset = _parseFromTokens[2], invalid = _parseFromTokens[3]; if (invalid) { return DateTime2.invalid(invalid); } else { - return parseDataToDateTime(vals, parsedZone, opts, "format " + fmt, text, specificOffset); + return parseDataToDateTime(vals, parsedZone, opts, "format " + fmt, text2, specificOffset); } }; - DateTime2.fromString = function fromString(text, fmt, opts) { + DateTime2.fromString = function fromString(text2, fmt, opts) { if (opts === void 0) { opts = {}; } - return DateTime2.fromFormat(text, fmt, opts); + return DateTime2.fromFormat(text2, fmt, opts); }; - DateTime2.fromSQL = function fromSQL(text, opts) { + DateTime2.fromSQL = function fromSQL(text2, opts) { if (opts === void 0) { opts = {}; } - var _parseSQL = parseSQL(text), vals = _parseSQL[0], parsedZone = _parseSQL[1]; - return parseDataToDateTime(vals, parsedZone, opts, "SQL", text); + var _parseSQL = parseSQL(text2), vals = _parseSQL[0], parsedZone = _parseSQL[1]; + return parseDataToDateTime(vals, parsedZone, opts, "SQL", text2); }; DateTime2.invalid = function invalid(reason, explanation) { if (explanation === void 0) { @@ -6068,33 +4441,33 @@ var require_lib = __commonJS({ return this.isValid ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this) : []; }; _proto.toISO = function toISO(_temp3) { - var _ref4 = _temp3 === void 0 ? {} : _temp3, _ref4$format = _ref4.format, format2 = _ref4$format === void 0 ? "extended" : _ref4$format, _ref4$suppressSeconds = _ref4.suppressSeconds, suppressSeconds = _ref4$suppressSeconds === void 0 ? false : _ref4$suppressSeconds, _ref4$suppressMillise = _ref4.suppressMilliseconds, suppressMilliseconds = _ref4$suppressMillise === void 0 ? false : _ref4$suppressMillise, _ref4$includeOffset = _ref4.includeOffset, includeOffset = _ref4$includeOffset === void 0 ? true : _ref4$includeOffset, _ref4$extendedZone = _ref4.extendedZone, extendedZone = _ref4$extendedZone === void 0 ? false : _ref4$extendedZone; + var _ref4 = _temp3 === void 0 ? {} : _temp3, _ref4$format = _ref4.format, format3 = _ref4$format === void 0 ? "extended" : _ref4$format, _ref4$suppressSeconds = _ref4.suppressSeconds, suppressSeconds = _ref4$suppressSeconds === void 0 ? false : _ref4$suppressSeconds, _ref4$suppressMillise = _ref4.suppressMilliseconds, suppressMilliseconds = _ref4$suppressMillise === void 0 ? false : _ref4$suppressMillise, _ref4$includeOffset = _ref4.includeOffset, includeOffset = _ref4$includeOffset === void 0 ? true : _ref4$includeOffset, _ref4$extendedZone = _ref4.extendedZone, extendedZone = _ref4$extendedZone === void 0 ? false : _ref4$extendedZone; if (!this.isValid) { return null; } - var ext = format2 === "extended"; + var ext = format3 === "extended"; var c4 = _toISODate(this, ext); c4 += "T"; c4 += _toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone); return c4; }; _proto.toISODate = function toISODate(_temp4) { - var _ref5 = _temp4 === void 0 ? {} : _temp4, _ref5$format = _ref5.format, format2 = _ref5$format === void 0 ? "extended" : _ref5$format; + var _ref5 = _temp4 === void 0 ? {} : _temp4, _ref5$format = _ref5.format, format3 = _ref5$format === void 0 ? "extended" : _ref5$format; if (!this.isValid) { return null; } - return _toISODate(this, format2 === "extended"); + return _toISODate(this, format3 === "extended"); }; _proto.toISOWeekDate = function toISOWeekDate() { return toTechFormat(this, "kkkk-'W'WW-c"); }; _proto.toISOTime = function toISOTime(_temp5) { - var _ref6 = _temp5 === void 0 ? {} : _temp5, _ref6$suppressMillise = _ref6.suppressMilliseconds, suppressMilliseconds = _ref6$suppressMillise === void 0 ? false : _ref6$suppressMillise, _ref6$suppressSeconds = _ref6.suppressSeconds, suppressSeconds = _ref6$suppressSeconds === void 0 ? false : _ref6$suppressSeconds, _ref6$includeOffset = _ref6.includeOffset, includeOffset = _ref6$includeOffset === void 0 ? true : _ref6$includeOffset, _ref6$includePrefix = _ref6.includePrefix, includePrefix = _ref6$includePrefix === void 0 ? false : _ref6$includePrefix, _ref6$extendedZone = _ref6.extendedZone, extendedZone = _ref6$extendedZone === void 0 ? false : _ref6$extendedZone, _ref6$format = _ref6.format, format2 = _ref6$format === void 0 ? "extended" : _ref6$format; + var _ref6 = _temp5 === void 0 ? {} : _temp5, _ref6$suppressMillise = _ref6.suppressMilliseconds, suppressMilliseconds = _ref6$suppressMillise === void 0 ? false : _ref6$suppressMillise, _ref6$suppressSeconds = _ref6.suppressSeconds, suppressSeconds = _ref6$suppressSeconds === void 0 ? false : _ref6$suppressSeconds, _ref6$includeOffset = _ref6.includeOffset, includeOffset = _ref6$includeOffset === void 0 ? true : _ref6$includeOffset, _ref6$includePrefix = _ref6.includePrefix, includePrefix = _ref6$includePrefix === void 0 ? false : _ref6$includePrefix, _ref6$extendedZone = _ref6.extendedZone, extendedZone = _ref6$extendedZone === void 0 ? false : _ref6$extendedZone, _ref6$format = _ref6.format, format3 = _ref6$format === void 0 ? "extended" : _ref6$format; if (!this.isValid) { return null; } var c4 = includePrefix ? "T" : ""; - return c4 + _toISOTime(this, format2 === "extended", suppressSeconds, suppressMilliseconds, includeOffset, extendedZone); + return c4 + _toISOTime(this, format3 === "extended", suppressSeconds, suppressMilliseconds, includeOffset, extendedZone); }; _proto.toRFC2822 = function toRFC2822() { return toTechFormat(this, "EEE, dd LLL yyyy HH:mm:ss ZZZ", false); @@ -6132,7 +4505,7 @@ var require_lib = __commonJS({ } return this.toSQLDate() + " " + this.toSQLTime(opts); }; - _proto.toString = function toString() { + _proto.toString = function toString2() { return this.isValid ? this.toISO() : INVALID; }; _proto.valueOf = function valueOf() { @@ -6208,7 +4581,7 @@ var require_lib = __commonJS({ }); return adjustedToZone.startOf(unit) <= inputMs && inputMs <= adjustedToZone.endOf(unit); }; - _proto.equals = function equals(other) { + _proto.equals = function equals2(other) { return this.isValid && other.isValid && this.valueOf() === other.valueOf() && this.zone.equals(other.zone) && this.loc.equals(other.loc); }; _proto.toRelative = function toRelative(options) { @@ -6246,7 +4619,7 @@ var require_lib = __commonJS({ calendary: true })); }; - DateTime2.min = function min2() { + DateTime2.min = function min3() { for (var _len = arguments.length, dateTimes = new Array(_len), _key = 0; _key < _len; _key++) { dateTimes[_key] = arguments[_key]; } @@ -6257,7 +4630,7 @@ var require_lib = __commonJS({ return i4.valueOf(); }, Math.min); }; - DateTime2.max = function max2() { + DateTime2.max = function max3() { for (var _len2 = arguments.length, dateTimes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { dateTimes[_key2] = arguments[_key2]; } @@ -6268,7 +4641,7 @@ var require_lib = __commonJS({ return i4.valueOf(); }, Math.max); }; - DateTime2.fromFormatExplain = function fromFormatExplain(text, fmt, options) { + DateTime2.fromFormatExplain = function fromFormatExplain(text2, fmt, options) { if (options === void 0) { options = {}; } @@ -6277,13 +4650,13 @@ var require_lib = __commonJS({ numberingSystem, defaultToEN: true }); - return explainFromTokens(localeToUse, text, fmt); + return explainFromTokens(localeToUse, text2, fmt); }; - DateTime2.fromStringExplain = function fromStringExplain(text, fmt, options) { + DateTime2.fromStringExplain = function fromStringExplain(text2, fmt, options) { if (options === void 0) { options = {}; } - return DateTime2.fromFormatExplain(text, fmt, options); + return DateTime2.fromFormatExplain(text2, fmt, options); }; _createClass(DateTime2, [{ key: "isValid", @@ -6930,7 +5303,7 @@ var require_lib = __commonJS({ if ("function" != typeof n4) throw new Error("not a function: " + n4); } - function P4(n4) { + function P3(n4) { if ("string" != typeof n4) throw new Error("not a string: " + n4); } @@ -7027,7 +5400,7 @@ var require_lib = __commonJS({ }); } function K3(n4) { - P4(n4); + P3(n4); var t5 = "'" + n4 + "'"; return e4(function(r4, e5) { var u5 = e5 + n4.length, o4 = r4.slice(e5, u5); @@ -7144,14 +5517,14 @@ var require_lib = __commonJS({ } }); }, u4.tieWith = function(n4) { - return P4(n4), this.map(function(t5) { + return P3(n4), this.map(function(t5) { if (function(n5) { if (!E3(n5)) throw new Error("not an array: " + n5); }(t5), t5.length) { - P4(t5[0]); + P3(t5[0]); for (var r4 = t5[0], e5 = 1; e5 < t5.length; e5++) - P4(t5[e5]), r4 += n4 + t5[e5]; + P3(t5[e5]), r4 += n4 + t5[e5]; return r4; } return ""; @@ -7238,14 +5611,14 @@ var require_lib = __commonJS({ }, u4.concat = u4.or, u4.empty = rn2, u4.of = X3, u4["fantasy-land/ap"] = u4.ap, u4["fantasy-land/chain"] = u4.chain, u4["fantasy-land/concat"] = u4.concat, u4["fantasy-land/empty"] = u4.empty, u4["fantasy-land/of"] = u4.of, u4["fantasy-land/map"] = u4.map; var en2 = e4(function(n4, t5) { return b4(t5, S4(n4, t5)); - }), un2 = e4(function(n4, t5) { + }), un = e4(function(n4, t5) { return t5 >= n4.length ? x5(t5, "any character/byte") : b4(t5 + 1, L4(n4, t5)); }), on2 = e4(function(n4, t5) { return b4(n4.length, n4.slice(t5)); }), an2 = e4(function(n4, t5) { return t5 < n4.length ? x5(t5, "EOF") : b4(t5, null); }), fn2 = Q3(/[0-9]/).desc("a digit"), cn2 = Q3(/[0-9]*/).desc("optional digits"), sn2 = Q3(/[a-z]/i).desc("a letter"), ln2 = Q3(/[a-z]*/i).desc("optional letters"), hn2 = Q3(/\s*/).desc("optional whitespace"), pn2 = Q3(/\s+/).desc("whitespace"), dn2 = K3("\r"), vn2 = K3("\n"), gn = K3("\r\n"), mn2 = T6(gn, vn2, dn2).desc("newline"), yn2 = T6(mn2, an2); - e4.all = on2, e4.alt = T6, e4.any = un2, e4.cr = dn2, e4.createLanguage = function(n4) { + e4.all = on2, e4.alt = T6, e4.any = un, e4.cr = dn2, e4.createLanguage = function(n4) { var t5 = {}; for (var r4 in n4) ({}).hasOwnProperty.call(n4, r4) && function(r5) { @@ -7308,7 +5681,7 @@ var require_lib = __commonJS({ var e6 = n5; if (2 !== e6.length) throw new Error("[" + e6.join(", ") + "] should be length 2, got length " + e6.length); - if (P4(e6[0]), O4(e6[1]), Object.prototype.hasOwnProperty.call(t5, e6[0])) + if (P3(e6[0]), O4(e6[1]), Object.prototype.hasOwnProperty.call(t5, e6[0])) throw new Error("duplicate key in bitSeqObj: " + e6[0]); return t5[e6[0]] = true, r4++, e6; } @@ -7403,7 +5776,7 @@ var require_lib = __commonJS({ } var Values; (function(Values2) { - function toString(field, setting = DEFAULT_QUERY_SETTINGS, recursive = false) { + function toString2(field, setting = DEFAULT_QUERY_SETTINGS, recursive = false) { let wrapped = wrapValue(field); if (!wrapped) return setting.renderNullAs; @@ -7427,12 +5800,12 @@ var require_lib = __commonJS({ let result = ""; if (recursive) result += "["; - result += wrapped.value.map((f4) => toString(f4, setting, true)).join(", "); + result += wrapped.value.map((f4) => toString2(f4, setting, true)).join(", "); if (recursive) result += "]"; return result; case "object": - return "{ " + Object.entries(wrapped.value).map((e4) => e4[0] + ": " + toString(e4[1], setting, true)).join(", ") + " }"; + return "{ " + Object.entries(wrapped.value).map((e4) => e4[0] + ": " + toString2(e4[1], setting, true)).join(", ") + " }"; case "date": if (wrapped.value.second == 0 && wrapped.value.hour == 0 && wrapped.value.minute == 0) { return wrapped.value.toFormat(setting.defaultDateFormat); @@ -7442,7 +5815,7 @@ var require_lib = __commonJS({ return renderMinimalDuration(wrapped.value); } } - Values2.toString = toString; + Values2.toString = toString2; function wrapValue(val) { if (isNull(val)) return { type: "null", value: val }; @@ -7462,7 +5835,7 @@ var require_lib = __commonJS({ return { type: "array", value: val }; else if (isLink(val)) return { type: "link", value: val }; - else if (isFunction(val)) + else if (isFunction2(val)) return { type: "function", value: val }; else if (isHtml(val)) return { type: "html", value: val }; @@ -7679,10 +6052,10 @@ var require_lib = __commonJS({ return typeof val == "object" && !isHtml(val) && !isWidget(val) && !isArray(val) && !isDuration(val) && !isDate3(val) && !isLink(val) && val !== void 0 && !isNull(val); } Values2.isObject = isObject; - function isFunction(val) { + function isFunction2(val) { return typeof val == "function"; } - Values2.isFunction = isFunction; + Values2.isFunction = isFunction2; })(Values || (Values = {})); var Groupings; (function(Groupings2) { @@ -7697,17 +6070,17 @@ var require_lib = __commonJS({ return true; } Groupings2.isGrouping = isGrouping; - function count(elements) { + function count2(elements) { if (isGrouping(elements)) { let result = 0; for (let subgroup of elements) - result += count(subgroup.rows); + result += count2(subgroup.rows); return result; } else { return elements.length; } } - Groupings2.count = count; + Groupings2.count = count2; })(Groupings || (Groupings = {})); var Link = class { constructor(fields) { @@ -8095,7 +6468,7 @@ var require_lib = __commonJS({ ), (dt) => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("+").or(parsimmon_umd_min.exports.string("-")), parsimmon_umd_min.exports.regexp(/\d{1,2}(:\d{2})?/), (pm, hr2) => dt.setZone("UTC" + pm + hr2, { keepLocalTime: true })), parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("Z"), () => dt.setZone("utc", { keepLocalTime: true })), parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("["), parsimmon_umd_min.exports.regexp(/[0-9A-Za-z+-\/]+/u), parsimmon_umd_min.exports.string("]"), (_a2, zone, _b2) => dt.setZone(zone, { keepLocalTime: true })))).assert((dt) => dt.isValid, "valid date").desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"), datePlus: (q5) => parsimmon_umd_min.exports.alt(q5.dateShorthand.map((d5) => DATE_SHORTHANDS[d5]()), q5.date).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS] or in shorthand"), durationType: (_4) => parsimmon_umd_min.exports.alt(...Object.keys(DURATION_TYPES).sort((a5, b4) => b4.length - a5.length).map(parsimmon_umd_min.exports.string)), - duration: (q5) => parsimmon_umd_min.exports.seqMap(q5.number, parsimmon_umd_min.exports.optWhitespace, q5.durationType, (count, _4, t4) => DURATION_TYPES[t4].mapUnits((x5) => x5 * count)).sepBy1(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace).or(parsimmon_umd_min.exports.optWhitespace)).map((durations) => durations.reduce((p3, c4) => p3.plus(c4))).desc("duration like 4hr2min"), + duration: (q5) => parsimmon_umd_min.exports.seqMap(q5.number, parsimmon_umd_min.exports.optWhitespace, q5.durationType, (count2, _4, t4) => DURATION_TYPES[t4].mapUnits((x5) => x5 * count2)).sepBy1(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace).or(parsimmon_umd_min.exports.optWhitespace)).map((durations) => durations.reduce((p3, c4) => p3.plus(c4))).desc("duration like 4hr2min"), rawNull: (_4) => parsimmon_umd_min.exports.string("null"), tagSource: (q5) => q5.tag.map((tag) => Sources.tag(tag)), csvSource: (q5) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("csv(").skip(parsimmon_umd_min.exports.optWhitespace), q5.string, parsimmon_umd_min.exports.string(")"), (_1, path, _22) => Sources.csv(path)), @@ -8187,9 +6560,9 @@ var require_lib = __commonJS({ binaryOpField: (q5) => q5.binaryBooleanField, field: (q5) => q5.binaryOpField }); - function parseField(text) { + function parseField(text2) { try { - return Result.success(EXPRESSION.field.tryParse(text)); + return Result.success(EXPRESSION.field.tryParse(text2)); } catch (error) { return Result.failure("" + error); } @@ -8215,13 +6588,13 @@ var require_lib = __commonJS({ }; }); } - function stripNewlines(text) { - return text.split(/[\r\n]+/).map((t4) => t4.trim()).join(""); + function stripNewlines(text2) { + return text2.split(/[\r\n]+/).map((t4) => t4.trim()).join(""); } var QUERY_LANGUAGE = parsimmon_umd_min.exports.createLanguage({ queryType: (q5) => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(/TABLE|LIST|TASK|CALENDAR/i)).map((str) => str.toLowerCase()).desc("query type ('TABLE', 'LIST', 'TASK', or 'CALENDAR')"), explicitNamedField: (q5) => parsimmon_umd_min.exports.seqMap(EXPRESSION.field.skip(parsimmon_umd_min.exports.whitespace), parsimmon_umd_min.exports.regexp(/AS/i).skip(parsimmon_umd_min.exports.whitespace), EXPRESSION.identifier.or(EXPRESSION.string), (field, _as, ident) => QueryFields.named(ident, field)), - namedField: (q5) => parsimmon_umd_min.exports.alt(q5.explicitNamedField, captureRaw(EXPRESSION.field).map(([value, text]) => QueryFields.named(stripNewlines(text), value))), + namedField: (q5) => parsimmon_umd_min.exports.alt(q5.explicitNamedField, captureRaw(EXPRESSION.field).map(([value, text2]) => QueryFields.named(stripNewlines(text2), value))), sortField: (q5) => parsimmon_umd_min.exports.seqMap(EXPRESSION.field.skip(parsimmon_umd_min.exports.optWhitespace), parsimmon_umd_min.exports.regexp(/ASCENDING|DESCENDING|ASC|DESC/i).atMost(1), (field, dir) => { let direction = dir.length == 0 ? "ascending" : dir[0].toLowerCase(); if (direction == "desc") @@ -8240,10 +6613,10 @@ var require_lib = __commonJS({ return { type: "table", fields, showId: withoutId.length == 0 }; }); case "list": - return parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/WITHOUT\s+ID/i).skip(parsimmon_umd_min.exports.optWhitespace).atMost(1), EXPRESSION.field.atMost(1), (withoutId, format2) => { + return parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/WITHOUT\s+ID/i).skip(parsimmon_umd_min.exports.optWhitespace).atMost(1), EXPRESSION.field.atMost(1), (withoutId, format3) => { return { type: "list", - format: format2.length == 1 ? format2[0] : void 0, + format: format3.length == 1 ? format3[0] : void 0, showId: withoutId.length == 0 }; }); @@ -8849,8 +7222,8 @@ var require_lodash = __commonJS({ } return result; } - function baseToPairs(object, props) { - return arrayMap(props, function(key2) { + function baseToPairs(object, props2) { + return arrayMap(props2, function(key2) { return [key2, object[key2]]; }); } @@ -8862,8 +7235,8 @@ var require_lodash = __commonJS({ return func(value); }; } - function baseValues(object, props) { - return arrayMap(props, function(key2) { + function baseValues(object, props2) { + return arrayMap(props2, function(key2) { return object[key2]; }); } @@ -9250,9 +7623,9 @@ var require_lodash = __commonJS({ return getMapData(this, key2).has(key2); } function mapCacheSet(key2, value) { - var data = getMapData(this, key2), size3 = data.size; + var data = getMapData(this, key2), size2 = data.size; data.set(key2, value); - this.size += data.size == size3 ? 0 : 1; + this.size += data.size == size2 ? 0 : 1; return this; } MapCache2.prototype.clear = mapCacheClear; @@ -9446,9 +7819,9 @@ var require_lodash = __commonJS({ }); } var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys; - var props = isArr ? undefined2 : keysFunc(value); - arrayEach(props || value, function(subValue, key3) { - if (props) { + var props2 = isArr ? undefined2 : keysFunc(value); + arrayEach(props2 || value, function(subValue, key3) { + if (props2) { key3 = subValue; subValue = value[key3]; } @@ -9457,19 +7830,19 @@ var require_lodash = __commonJS({ return result2; } function baseConforms(source) { - var props = keys(source); + var props2 = keys(source); return function(object) { - return baseConformsTo(object, source, props); + return baseConformsTo(object, source, props2); }; } - function baseConformsTo(object, source, props) { - var length = props.length; + function baseConformsTo(object, source, props2) { + var length = props2.length; if (object == null) { return !length; } object = Object2(object); while (length--) { - var key2 = props[length], predicate = source[key2], value = object[key2]; + var key2 = props2[length], predicate = source[key2], value = object[key2]; if (value === undefined2 && !(key2 in object) || !predicate(value)) { return false; } @@ -9589,9 +7962,9 @@ var require_lodash = __commonJS({ function baseForOwnRight(object, iteratee2) { return object && baseForRight(object, iteratee2, keys); } - function baseFunctions(object, props) { - return arrayFilter(props, function(key2) { - return isFunction(object[key2]); + function baseFunctions(object, props2) { + return arrayFilter(props2, function(key2) { + return isFunction2(object[key2]); }); } function baseGet(object, path) { @@ -9754,7 +8127,7 @@ var require_lodash = __commonJS({ if (!isObject(value) || isMasked(value)) { return false; } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + var pattern = isFunction2(value) ? reIsNative : reIsHostCtor; return pattern.test(toSource(value)); } function baseIsRegExp(value) { @@ -9876,7 +8249,7 @@ var require_lodash = __commonJS({ newValue = objValue; if (isArguments(objValue)) { newValue = toPlainObject(objValue); - } else if (!isObject(objValue) || isFunction(objValue)) { + } else if (!isObject(objValue) || isFunction2(objValue)) { newValue = initCloneObject(srcValue); } } else { @@ -10234,11 +8607,11 @@ var require_lodash = __commonJS({ } return baseUniq(baseFlatten(result2, 1), iteratee2, comparator); } - function baseZipObject(props, values2, assignFunc) { - var index = -1, length = props.length, valsLength = values2.length, result2 = {}; + function baseZipObject(props2, values2, assignFunc) { + var index = -1, length = props2.length, valsLength = values2.length, result2 = {}; while (++index < length) { var value = index < valsLength ? values2[index] : undefined2; - assignFunc(result2, props[index], value); + assignFunc(result2, props2[index], value); } return result2; } @@ -10252,7 +8625,7 @@ var require_lodash = __commonJS({ if (isArray(value)) { return value; } - return isKey(value, object) ? [value] : stringToPath(toString(value)); + return isKey(value, object) ? [value] : stringToPath(toString2(value)); } var castRest = baseRest; function castSlice(array, start, end) { @@ -10358,12 +8731,12 @@ var require_lodash = __commonJS({ } return array; } - function copyObject(source, props, object, customizer) { + function copyObject(source, props2, object, customizer) { var isNew = !object; object || (object = {}); - var index = -1, length = props.length; + var index = -1, length = props2.length; while (++index < length) { - var key2 = props[index]; + var key2 = props2[index]; var newValue = customizer ? customizer(object[key2], source[key2], key2, object, source) : undefined2; if (newValue === undefined2) { newValue = source[key2]; @@ -10425,9 +8798,9 @@ var require_lodash = __commonJS({ } function createBaseFor(fromRight) { return function(object, iteratee2, keysFunc) { - var index = -1, iterable = Object2(object), props = keysFunc(object), length = props.length; + var index = -1, iterable = Object2(object), props2 = keysFunc(object), length = props2.length; while (length--) { - var key2 = props[fromRight ? length : ++index]; + var key2 = props2[fromRight ? length : ++index]; if (iteratee2(iterable[key2], key2, iterable) === false) { break; } @@ -10445,7 +8818,7 @@ var require_lodash = __commonJS({ } function createCaseFirst(methodName) { return function(string) { - string = toString(string); + string = toString2(string); var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined2; var chr = strSymbols ? strSymbols[0] : string.charAt(0); var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1); @@ -10732,8 +9105,8 @@ var require_lodash = __commonJS({ number = toNumber(number); precision = precision == null ? 0 : nativeMin(toInteger2(precision), 292); if (precision && nativeIsFinite(number)) { - var pair = (toString(number) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision)); - pair = (toString(value) + "e").split("e"); + var pair = (toString2(number) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision)); + pair = (toString2(value) + "e").split("e"); return +(pair[0] + "e" + (+pair[1] - precision)); } return func(number); @@ -11062,19 +9435,19 @@ var require_lodash = __commonJS({ function getView(start, end, transforms) { var index = -1, length = transforms.length; while (++index < length) { - var data = transforms[index], size3 = data.size; + var data = transforms[index], size2 = data.size; switch (data.type) { case "drop": - start += size3; + start += size2; break; case "dropRight": - end -= size3; + end -= size2; break; case "take": - end = nativeMin(end, start + size3); + end = nativeMin(end, start + size2); break; case "takeRight": - start = nativeMax(start, end - size3); + start = nativeMax(start, end - size2); break; } } @@ -11200,7 +9573,7 @@ var require_lodash = __commonJS({ function isMasked(func) { return !!maskSrcKey && maskSrcKey in func; } - var isMaskable = coreJsData ? isFunction : stubFalse; + var isMaskable = coreJsData ? isFunction2 : stubFalse; function isPrototype(value) { var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto; return value === proto; @@ -11320,29 +9693,29 @@ var require_lodash = __commonJS({ return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); } function shortOut(func) { - var count = 0, lastCalled = 0; + var count2 = 0, lastCalled = 0; return function() { var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled); lastCalled = stamp; if (remaining > 0) { - if (++count >= HOT_COUNT) { + if (++count2 >= HOT_COUNT) { return arguments[0]; } } else { - count = 0; + count2 = 0; } return func.apply(undefined2, arguments); }; } - function shuffleSelf(array, size3) { + function shuffleSelf(array, size2) { var index = -1, length = array.length, lastIndex = length - 1; - size3 = size3 === undefined2 ? length : size3; - while (++index < size3) { + size2 = size2 === undefined2 ? length : size2; + while (++index < size2) { var rand = baseRandom(index, lastIndex), value = array[rand]; array[rand] = array[index]; array[index] = value; } - array.length = size3; + array.length = size2; return array; } var stringToPath = memoizeCapped(function(string) { @@ -11394,19 +9767,19 @@ var require_lodash = __commonJS({ result2.__values__ = wrapper.__values__; return result2; } - function chunk(array, size3, guard) { - if (guard ? isIterateeCall(array, size3, guard) : size3 === undefined2) { - size3 = 1; + function chunk(array, size2, guard) { + if (guard ? isIterateeCall(array, size2, guard) : size2 === undefined2) { + size2 = 1; } else { - size3 = nativeMax(toInteger2(size3), 0); + size2 = nativeMax(toInteger2(size2), 0); } var length = array == null ? 0 : array.length; - if (!length || size3 < 1) { + if (!length || size2 < 1) { return []; } - var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size3)); + var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size2)); while (index < length) { - result2[resIndex++] = baseSlice(array, index, index += size3); + result2[resIndex++] = baseSlice(array, index, index += size2); } return result2; } @@ -11543,7 +9916,7 @@ var require_lodash = __commonJS({ } return baseIndexOf(array, value, index); } - function initial(array) { + function initial2(array) { var length = array == null ? 0 : array.length; return length ? baseSlice(array, 0, -1) : []; } @@ -11720,7 +10093,7 @@ var require_lodash = __commonJS({ comparator = typeof comparator == "function" ? comparator : undefined2; return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined2, comparator); }); - function uniq3(array) { + function uniq4(array) { return array && array.length ? baseUniq(array) : []; } function uniqBy(array, iteratee2) { @@ -11776,11 +10149,11 @@ var require_lodash = __commonJS({ return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined2, comparator); }); var zip = baseRest(unzip); - function zipObject(props, values2) { - return baseZipObject(props || [], values2 || [], assignValue); + function zipObject(props2, values2) { + return baseZipObject(props2 || [], values2 || [], assignValue); } - function zipObjectDeep(props, values2) { - return baseZipObject(props || [], values2 || [], baseSet); + function zipObjectDeep(props2, values2) { + return baseZipObject(props2 || [], values2 || [], baseSet); } var zipWith = baseRest(function(arrays) { var length = arrays.length, iteratee2 = length > 1 ? arrays[length - 1] : undefined2; @@ -11910,7 +10283,7 @@ var require_lodash = __commonJS({ var func = isArray(collection) ? arrayEachRight : baseEachRight; return func(collection, getIteratee(iteratee2, 3)); } - var groupBy = createAggregator(function(result2, value, key2) { + var groupBy2 = createAggregator(function(result2, value, key2) { if (hasOwnProperty.call(result2, key2)) { result2[key2].push(value); } else { @@ -11987,7 +10360,7 @@ var require_lodash = __commonJS({ var func = isArray(collection) ? arrayShuffle : baseShuffle; return func(collection); } - function size2(collection) { + function size(collection) { if (collection == null) { return 0; } @@ -12019,7 +10392,7 @@ var require_lodash = __commonJS({ } return baseOrderBy(collection, baseFlatten(iteratees, 1), []); }); - var now2 = ctxNow || function() { + var now = ctxNow || function() { return root.Date.now(); }; function after(n2, func) { @@ -12082,7 +10455,7 @@ var require_lodash = __commonJS({ result2.placeholder = curryRight.placeholder; return result2; } - function debounce3(func, wait, options) { + function debounce5(func, wait, options) { var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); @@ -12115,7 +10488,7 @@ var require_lodash = __commonJS({ return lastCallTime === undefined2 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; } function timerExpired() { - var time = now2(); + var time = now(); if (shouldInvoke(time)) { return trailingEdge(time); } @@ -12137,10 +10510,10 @@ var require_lodash = __commonJS({ lastArgs = lastCallTime = lastThis = timerId = undefined2; } function flush() { - return timerId === undefined2 ? result2 : trailingEdge(now2()); + return timerId === undefined2 ? result2 : trailingEdge(now()); } function debounced() { - var time = now2(), isInvoking = shouldInvoke(time); + var time = now(), isInvoking = shouldInvoke(time); lastArgs = arguments; lastThis = this; lastCallTime = time; @@ -12262,7 +10635,7 @@ var require_lodash = __commonJS({ leading = "leading" in options ? !!options.leading : leading; trailing = "trailing" in options ? !!options.trailing : trailing; } - return debounce3(func, wait, { + return debounce5(func, wait, { "leading": leading, "maxWait": wait, "trailing": trailing @@ -12313,7 +10686,7 @@ var require_lodash = __commonJS({ var isArray = Array2.isArray; var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); + return value != null && isLength(value.length) && !isFunction2(value); } function isArrayLikeObject(value) { return isObjectLike(value) && isArrayLike(value); @@ -12347,7 +10720,7 @@ var require_lodash = __commonJS({ } return true; } - function isEqual2(value, other) { + function isEqual(value, other) { return baseIsEqual(value, other); } function isEqualWith(value, other, customizer) { @@ -12365,7 +10738,7 @@ var require_lodash = __commonJS({ function isFinite(value) { return typeof value == "number" && nativeIsFinite(value); } - function isFunction(value) { + function isFunction2(value) { if (!isObject(value)) { return false; } @@ -12502,10 +10875,10 @@ var require_lodash = __commonJS({ function toSafeInteger(value) { return value ? baseClamp(toInteger2(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0; } - function toString(value) { + function toString2(value) { return value == null ? "" : baseToString(value); } - var assign = createAssigner(function(object, source) { + var assign2 = createAssigner(function(object, source) { if (isPrototype(source) || isArrayLike(source)) { copyObject(source, keys(source), object); return; @@ -12540,11 +10913,11 @@ var require_lodash = __commonJS({ } while (++index < length) { var source = sources[index]; - var props = keysIn(source); + var props2 = keysIn(source); var propsIndex = -1; - var propsLength = props.length; + var propsLength = props2.length; while (++propsIndex < propsLength) { - var key2 = props[propsIndex]; + var key2 = props2[propsIndex]; var value = object[key2]; if (value === undefined2 || eq(value, objectProto[key2]) && !hasOwnProperty.call(object, key2)) { object[key2] = source[key2]; @@ -12667,11 +11040,11 @@ var require_lodash = __commonJS({ if (object == null) { return {}; } - var props = arrayMap(getAllKeysIn(object), function(prop) { + var props2 = arrayMap(getAllKeysIn(object), function(prop) { return [prop]; }); predicate = getIteratee(predicate); - return basePickBy(object, props, function(value, path) { + return basePickBy(object, props2, function(value, path) { return predicate(value, path[0]); }); } @@ -12688,7 +11061,7 @@ var require_lodash = __commonJS({ index = length; value = defaultValue2; } - object = isFunction(value) ? value.call(object) : value; + object = isFunction2(value) ? value.call(object) : value; } return object; } @@ -12709,7 +11082,7 @@ var require_lodash = __commonJS({ if (isArrLike) { accumulator = isArr ? new Ctor() : []; } else if (isObject(object)) { - accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + accumulator = isFunction2(Ctor) ? baseCreate(getPrototype(object)) : {}; } else { accumulator = {}; } @@ -12802,14 +11175,14 @@ var require_lodash = __commonJS({ return result2 + (index ? capitalize(word) : word); }); function capitalize(string) { - return upperFirst(toString(string).toLowerCase()); + return upperFirst(toString2(string).toLowerCase()); } function deburr(string) { - string = toString(string); + string = toString2(string); return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ""); } function endsWith(string, target, position) { - string = toString(string); + string = toString2(string); target = baseToString(target); var length = string.length; position = position === undefined2 ? length : baseClamp(toInteger2(position), 0, length); @@ -12818,11 +11191,11 @@ var require_lodash = __commonJS({ return position >= 0 && string.slice(position, end) == target; } function escape(string) { - string = toString(string); + string = toString2(string); return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string; } function escapeRegExp(string) { - string = toString(string); + string = toString2(string); return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string; } var kebabCase = createCompounder(function(result2, word, index) { @@ -12833,7 +11206,7 @@ var require_lodash = __commonJS({ }); var lowerFirst = createCaseFirst("toLowerCase"); function pad(string, length, chars) { - string = toString(string); + string = toString2(string); length = toInteger2(length); var strLength = length ? stringSize(string) : 0; if (!length || strLength >= length) { @@ -12843,13 +11216,13 @@ var require_lodash = __commonJS({ return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars); } function padEnd(string, length, chars) { - string = toString(string); + string = toString2(string); length = toInteger2(length); var strLength = length ? stringSize(string) : 0; return length && strLength < length ? string + createPadding(length - strLength, chars) : string; } function padStart(string, length, chars) { - string = toString(string); + string = toString2(string); length = toInteger2(length); var strLength = length ? stringSize(string) : 0; return length && strLength < length ? createPadding(length - strLength, chars) + string : string; @@ -12860,7 +11233,7 @@ var require_lodash = __commonJS({ } else if (radix) { radix = +radix; } - return nativeParseInt(toString(string).replace(reTrimStart, ""), radix || 0); + return nativeParseInt(toString2(string).replace(reTrimStart, ""), radix || 0); } function repeat(string, n2, guard) { if (guard ? isIterateeCall(string, n2, guard) : n2 === undefined2) { @@ -12868,10 +11241,10 @@ var require_lodash = __commonJS({ } else { n2 = toInteger2(n2); } - return baseRepeat(toString(string), n2); + return baseRepeat(toString2(string), n2); } function replace() { - var args = arguments, string = toString(args[0]); + var args = arguments, string = toString2(args[0]); return args.length < 3 ? string : string.replace(args[1], args[2]); } var snakeCase = createCompounder(function(result2, word, index) { @@ -12885,7 +11258,7 @@ var require_lodash = __commonJS({ if (!limit) { return []; } - string = toString(string); + string = toString2(string); if (string && (typeof separator == "string" || separator != null && !isRegExp(separator))) { separator = baseToString(separator); if (!separator && hasUnicode(string)) { @@ -12898,7 +11271,7 @@ var require_lodash = __commonJS({ return result2 + (index ? " " : "") + upperFirst(word); }); function startsWith(string, target, position) { - string = toString(string); + string = toString2(string); position = position == null ? 0 : baseClamp(toInteger2(position), 0, string.length); target = baseToString(target); return string.slice(position, position + target.length) == target; @@ -12908,7 +11281,7 @@ var require_lodash = __commonJS({ if (guard && isIterateeCall(string, options, guard)) { options = undefined2; } - string = toString(string); + string = toString2(string); options = assignInWith({}, options, settings, customDefaultsAssignIn); var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys); var isEscaping, isEvaluating, index = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '"; @@ -12953,13 +11326,13 @@ var require_lodash = __commonJS({ return result2; } function toLower(value) { - return toString(value).toLowerCase(); + return toString2(value).toLowerCase(); } function toUpper(value) { - return toString(value).toUpperCase(); + return toString2(value).toUpperCase(); } function trim(string, chars, guard) { - string = toString(string); + string = toString2(string); if (string && (guard || chars === undefined2)) { return baseTrim(string); } @@ -12970,7 +11343,7 @@ var require_lodash = __commonJS({ return castSlice(strSymbols, start, end).join(""); } function trimEnd(string, chars, guard) { - string = toString(string); + string = toString2(string); if (string && (guard || chars === undefined2)) { return string.slice(0, trimmedEndIndex(string) + 1); } @@ -12981,7 +11354,7 @@ var require_lodash = __commonJS({ return castSlice(strSymbols, 0, end).join(""); } function trimStart(string, chars, guard) { - string = toString(string); + string = toString2(string); if (string && (guard || chars === undefined2)) { return string.replace(reTrimStart, ""); } @@ -12998,7 +11371,7 @@ var require_lodash = __commonJS({ length = "length" in options ? toInteger2(options.length) : length; omission = "omission" in options ? baseToString(options.omission) : omission; } - string = toString(string); + string = toString2(string); var strLength = string.length; if (hasUnicode(string)) { var strSymbols = stringToArray(string); @@ -13022,7 +11395,7 @@ var require_lodash = __commonJS({ if (string.slice(end).search(separator)) { var match2, substring = result2; if (!separator.global) { - separator = RegExp2(separator.source, toString(reFlags.exec(separator)) + "g"); + separator = RegExp2(separator.source, toString2(reFlags.exec(separator)) + "g"); } separator.lastIndex = 0; while (match2 = separator.exec(substring)) { @@ -13039,7 +11412,7 @@ var require_lodash = __commonJS({ return result2 + omission; } function unescape(string) { - string = toString(string); + string = toString2(string); return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string; } var upperCase = createCompounder(function(result2, word, index) { @@ -13047,7 +11420,7 @@ var require_lodash = __commonJS({ }); var upperFirst = createCaseFirst("toUpperCase"); function words(string, pattern, guard) { - string = toString(string); + string = toString2(string); pattern = guard ? undefined2 : pattern; if (pattern === undefined2) { return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); @@ -13122,14 +11495,14 @@ var require_lodash = __commonJS({ }; }); function mixin(object, source, options) { - var props = keys(source), methodNames = baseFunctions(source, props); - if (options == null && !(isObject(source) && (methodNames.length || !props.length))) { + var props2 = keys(source), methodNames = baseFunctions(source, props2); + if (options == null && !(isObject(source) && (methodNames.length || !props2.length))) { options = source; source = object; object = this; methodNames = baseFunctions(source, keys(source)); } - var chain2 = !(isObject(options) && "chain" in options) || !!options.chain, isFunc = isFunction(object); + var chain2 = !(isObject(options) && "chain" in options) || !!options.chain, isFunc = isFunction2(object); arrayEach(methodNames, function(methodName) { var func = source[methodName]; object[methodName] = func; @@ -13208,11 +11581,11 @@ var require_lodash = __commonJS({ if (isArray(value)) { return arrayMap(value, toKey); } - return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value))); + return isSymbol(value) ? [value] : copyArray(stringToPath(toString2(value))); } function uniqueId(prefix) { var id2 = ++idCounter; - return toString(prefix) + id2; + return toString2(prefix) + id2; } var add2 = createMathOperation(function(augend, addend) { return augend + addend; @@ -13222,19 +11595,19 @@ var require_lodash = __commonJS({ return dividend / divisor; }, 1); var floor = createRound("floor"); - function max2(array) { + function max3(array) { return array && array.length ? baseExtremum(array, identity, baseGt) : undefined2; } function maxBy(array, iteratee2) { return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined2; } - function mean(array) { + function mean2(array) { return baseMean(array, identity); } function meanBy(array, iteratee2) { return baseMean(array, getIteratee(iteratee2, 2)); } - function min2(array) { + function min3(array) { return array && array.length ? baseExtremum(array, identity, baseLt) : undefined2; } function minBy(array, iteratee2) { @@ -13247,7 +11620,7 @@ var require_lodash = __commonJS({ var subtract2 = createMathOperation(function(minuend, subtrahend) { return minuend - subtrahend; }, 0); - function sum(array) { + function sum2(array) { return array && array.length ? baseSum(array, identity) : 0; } function sumBy(array, iteratee2) { @@ -13255,7 +11628,7 @@ var require_lodash = __commonJS({ } lodash.after = after; lodash.ary = ary; - lodash.assign = assign; + lodash.assign = assign2; lodash.assignIn = assignIn; lodash.assignInWith = assignInWith; lodash.assignWith = assignWith; @@ -13276,7 +11649,7 @@ var require_lodash = __commonJS({ lodash.create = create; lodash.curry = curry; lodash.curryRight = curryRight; - lodash.debounce = debounce3; + lodash.debounce = debounce5; lodash.defaults = defaults; lodash.defaultsDeep = defaultsDeep; lodash.defer = defer; @@ -13302,8 +11675,8 @@ var require_lodash = __commonJS({ lodash.fromPairs = fromPairs; lodash.functions = functions; lodash.functionsIn = functionsIn; - lodash.groupBy = groupBy; - lodash.initial = initial; + lodash.groupBy = groupBy2; + lodash.initial = initial2; lodash.intersection = intersection; lodash.intersectionBy = intersectionBy; lodash.intersectionWith = intersectionWith; @@ -13382,7 +11755,7 @@ var require_lodash = __commonJS({ lodash.union = union; lodash.unionBy = unionBy; lodash.unionWith = unionWith; - lodash.uniq = uniq3; + lodash.uniq = uniq4; lodash.uniqBy = uniqBy; lodash.uniqWith = uniqWith; lodash.unset = unset; @@ -13460,11 +11833,11 @@ var require_lodash = __commonJS({ lodash.isDate = isDate2; lodash.isElement = isElement; lodash.isEmpty = isEmpty; - lodash.isEqual = isEqual2; + lodash.isEqual = isEqual; lodash.isEqualWith = isEqualWith; lodash.isError = isError2; lodash.isFinite = isFinite; - lodash.isFunction = isFunction; + lodash.isFunction = isFunction2; lodash.isInteger = isInteger; lodash.isLength = isLength; lodash.isMap = isMap; @@ -13495,11 +11868,11 @@ var require_lodash = __commonJS({ lodash.lowerFirst = lowerFirst; lodash.lt = lt; lodash.lte = lte; - lodash.max = max2; + lodash.max = max3; lodash.maxBy = maxBy; - lodash.mean = mean; + lodash.mean = mean2; lodash.meanBy = meanBy; - lodash.min = min2; + lodash.min = min3; lodash.minBy = minBy; lodash.stubArray = stubArray; lodash.stubFalse = stubFalse; @@ -13510,7 +11883,7 @@ var require_lodash = __commonJS({ lodash.nth = nth; lodash.noConflict = noConflict; lodash.noop = noop2; - lodash.now = now2; + lodash.now = now; lodash.pad = pad; lodash.padEnd = padEnd; lodash.padStart = padStart; @@ -13524,7 +11897,7 @@ var require_lodash = __commonJS({ lodash.round = round; lodash.runInContext = runInContext2; lodash.sample = sample; - lodash.size = size2; + lodash.size = size; lodash.snakeCase = snakeCase; lodash.some = some; lodash.sortedIndex = sortedIndex; @@ -13536,7 +11909,7 @@ var require_lodash = __commonJS({ lodash.startCase = startCase; lodash.startsWith = startsWith; lodash.subtract = subtract2; - lodash.sum = sum; + lodash.sum = sum2; lodash.sumBy = sumBy; lodash.template = template; lodash.times = times; @@ -13546,7 +11919,7 @@ var require_lodash = __commonJS({ lodash.toLower = toLower; lodash.toNumber = toNumber; lodash.toSafeInteger = toSafeInteger; - lodash.toString = toString; + lodash.toString = toString2; lodash.toUpper = toUpper; lodash.trim = trim; lodash.trimEnd = trimEnd; @@ -13852,13 +12225,13 @@ var require_tslib = __commonJS({ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); }; - __awaiter2 = function(thisArg, _arguments, P4, generator) { + __awaiter2 = function(thisArg, _arguments, P3, generator) { function adopt(value) { - return value instanceof P4 ? value : new P4(function(resolve) { + return value instanceof P3 ? value : new P3(function(resolve) { resolve(value); }); } - return new (P4 || (P4 = Promise))(function(resolve, reject) { + return new (P3 || (P3 = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); @@ -14191,7 +12564,7 @@ var require_classnames = __commonJS({ "use strict"; var hasOwn = {}.hasOwnProperty; var nativeCodeString = "[native code]"; - function classNames7() { + function classNames8() { var classes = []; for (var i4 = 0; i4 < arguments.length; i4++) { var arg = arguments[i4]; @@ -14202,7 +12575,7 @@ var require_classnames = __commonJS({ classes.push(arg); } else if (Array.isArray(arg)) { if (arg.length) { - var inner = classNames7.apply(null, arg); + var inner = classNames8.apply(null, arg); if (inner) { classes.push(inner); } @@ -14222,1368 +12595,19 @@ var require_classnames = __commonJS({ return classes.join(" "); } if (typeof module2 !== "undefined" && module2.exports) { - classNames7.default = classNames7; - module2.exports = classNames7; + classNames8.default = classNames8; + module2.exports = classNames8; } else if (typeof define === "function" && typeof define.amd === "object" && define.amd) { define("classnames", [], function() { - return classNames7; + return classNames8; }); } else { - window.classNames = classNames7; + window.classNames = classNames8; } })(); } }); -// node_modules/@tanstack/react-table/build/umd/index.production.js -var require_index_production = __commonJS({ - "node_modules/@tanstack/react-table/build/umd/index.production.js"(exports, module2) { - !function(e4, t4) { - "object" == typeof exports && "undefined" != typeof module2 ? t4(exports, (init_compat_module(), __toCommonJS(compat_module_exports))) : "function" == typeof define && define.amd ? define(["exports", "react"], t4) : t4((e4 = "undefined" != typeof globalThis ? globalThis : e4 || self).ReactTable = {}, e4.React); - }(exports, function(e4, t4) { - "use strict"; - function n2(e5) { - if (e5 && e5.__esModule) - return e5; - var t5 = /* @__PURE__ */ Object.create(null); - return e5 && Object.keys(e5).forEach(function(n3) { - if ("default" !== n3) { - var o4 = Object.getOwnPropertyDescriptor(e5, n3); - Object.defineProperty(t5, n3, o4.get ? o4 : { enumerable: true, get: function() { - return e5[n3]; - } }); - } - }), t5.default = e5, Object.freeze(t5); - } - var o3 = n2(t4); - function l3(e5, t5) { - return "function" == typeof e5 ? e5(t5) : e5; - } - function i4(e5, t5) { - return (n3) => { - t5.setState((t6) => ({ ...t6, [e5]: l3(n3, t6[e5]) })); - }; - } - function r3(e5) { - return e5 instanceof Function; - } - function a5(e5, t5) { - const n3 = [], o4 = (e6) => { - e6.forEach((e7) => { - n3.push(e7); - const l4 = t5(e7); - null != l4 && l4.length && o4(l4); - }); - }; - return o4(e5), n3; - } - function s5(e5, t5, n3) { - let o4, l4 = []; - return () => { - let i5; - n3.key && n3.debug && (i5 = Date.now()); - const r4 = e5(); - if (!(r4.length !== l4.length || r4.some((e6, t6) => l4[t6] !== e6))) - return o4; - let a6; - if (l4 = r4, n3.key && n3.debug && (a6 = Date.now()), o4 = t5(...r4), null == n3 || null == n3.onChange || n3.onChange(o4), n3.key && n3.debug && null != n3 && n3.debug()) { - const e6 = Math.round(100 * (Date.now() - i5)) / 100, t6 = Math.round(100 * (Date.now() - a6)) / 100, o5 = t6 / 16, l5 = (e7, t7) => { - for (e7 = String(e7); e7.length < t7; ) - e7 = " " + e7; - return e7; - }; - console.info(`%c\u23F1 ${l5(t6, 5)} /${l5(e6, 5)} ms`, ` - font-size: .6rem; - font-weight: bold; - color: hsl(${Math.max(0, Math.min(120 - 120 * o5, 120))}deg 100% 31%);`, null == n3 ? void 0 : n3.key); - } - return o4; - }; - } - function u4(e5, t5, n3, o4) { - var _a2, _b2; - const l4 = { ...e5._getDefaultColumnDef(), ...t5 }, i5 = l4.accessorKey; - let r4, a6 = (_b2 = (_a2 = l4.id) != null ? _a2 : i5 ? i5.replace(".", "_") : void 0) != null ? _b2 : "string" == typeof l4.header ? l4.header : void 0; - if (l4.accessorFn ? r4 = l4.accessorFn : i5 && (r4 = i5.includes(".") ? (e6) => { - let t6 = e6; - for (const e7 of i5.split(".")) - t6 = t6[e7]; - return t6; - } : (e6) => e6[l4.accessorKey]), !a6) - throw new Error(); - let u5 = { id: `${String(a6)}`, accessorFn: r4, parent: o4, depth: n3, columnDef: l4, columns: [], getFlatColumns: s5(() => [true], () => { - var e6; - return [u5, ...null == (e6 = u5.columns) ? void 0 : e6.flatMap((e7) => e7.getFlatColumns())]; - }, { key: "column.getFlatColumns", debug: () => { - var _a3; - return (_a3 = e5.options.debugAll) != null ? _a3 : e5.options.debugColumns; - } }), getLeafColumns: s5(() => [e5._getOrderColumnsFn()], (e6) => { - var t6; - if (null != (t6 = u5.columns) && t6.length) { - let t7 = u5.columns.flatMap((e7) => e7.getLeafColumns()); - return e6(t7); - } - return [u5]; - }, { key: "column.getLeafColumns", debug: () => { - var _a3; - return (_a3 = e5.options.debugAll) != null ? _a3 : e5.options.debugColumns; - } }) }; - return u5 = e5._features.reduce((t6, n4) => Object.assign(t6, null == n4.createColumn ? void 0 : n4.createColumn(u5, e5)), u5), u5; - } - function g4(e5, t5, n3) { - var _a2; - let o4 = { id: (_a2 = n3.id) != null ? _a2 : t5.id, column: t5, index: n3.index, isPlaceholder: !!n3.isPlaceholder, placeholderId: n3.placeholderId, depth: n3.depth, subHeaders: [], colSpan: 0, rowSpan: 0, headerGroup: null, getLeafHeaders: () => { - const e6 = [], t6 = (n4) => { - n4.subHeaders && n4.subHeaders.length && n4.subHeaders.map(t6), e6.push(n4); - }; - return t6(o4), e6; - }, getContext: () => ({ table: e5, header: o4, column: t5 }) }; - return e5._features.forEach((t6) => { - Object.assign(o4, null == t6.createHeader ? void 0 : t6.createHeader(o4, e5)); - }), o4; - } - const d5 = { createTable: (e5) => ({ getHeaderGroups: s5(() => [e5.getAllColumns(), e5.getVisibleLeafColumns(), e5.getState().columnPinning.left, e5.getState().columnPinning.right], (t5, n3, o4, l4) => { - var _a2, _b2; - const i5 = (_a2 = null == o4 ? void 0 : o4.map((e6) => n3.find((t6) => t6.id === e6)).filter(Boolean)) != null ? _a2 : [], r4 = (_b2 = null == l4 ? void 0 : l4.map((e6) => n3.find((t6) => t6.id === e6)).filter(Boolean)) != null ? _b2 : []; - return c4(t5, [...i5, ...n3.filter((e6) => !(null != o4 && o4.includes(e6.id) || null != l4 && l4.includes(e6.id))), ...r4], e5); - }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getCenterHeaderGroups: s5(() => [e5.getAllColumns(), e5.getVisibleLeafColumns(), e5.getState().columnPinning.left, e5.getState().columnPinning.right], (t5, n3, o4, l4) => c4(t5, n3 = n3.filter((e6) => !(null != o4 && o4.includes(e6.id) || null != l4 && l4.includes(e6.id))), e5, "center"), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getLeftHeaderGroups: s5(() => [e5.getAllColumns(), e5.getVisibleLeafColumns(), e5.getState().columnPinning.left], (t5, n3, o4) => { - var _a2; - return c4(t5, (_a2 = null == o4 ? void 0 : o4.map((e6) => n3.find((t6) => t6.id === e6)).filter(Boolean)) != null ? _a2 : [], e5, "left"); - }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getRightHeaderGroups: s5(() => [e5.getAllColumns(), e5.getVisibleLeafColumns(), e5.getState().columnPinning.right], (t5, n3, o4) => { - var _a2; - return c4(t5, (_a2 = null == o4 ? void 0 : o4.map((e6) => n3.find((t6) => t6.id === e6)).filter(Boolean)) != null ? _a2 : [], e5, "right"); - }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getFooterGroups: s5(() => [e5.getHeaderGroups()], (e6) => [...e6].reverse(), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getLeftFooterGroups: s5(() => [e5.getLeftHeaderGroups()], (e6) => [...e6].reverse(), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getCenterFooterGroups: s5(() => [e5.getCenterHeaderGroups()], (e6) => [...e6].reverse(), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getRightFooterGroups: s5(() => [e5.getRightHeaderGroups()], (e6) => [...e6].reverse(), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getFlatHeaders: s5(() => [e5.getHeaderGroups()], (e6) => e6.map((e7) => e7.headers).flat(), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getLeftFlatHeaders: s5(() => [e5.getLeftHeaderGroups()], (e6) => e6.map((e7) => e7.headers).flat(), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getCenterFlatHeaders: s5(() => [e5.getCenterHeaderGroups()], (e6) => e6.map((e7) => e7.headers).flat(), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getRightFlatHeaders: s5(() => [e5.getRightHeaderGroups()], (e6) => e6.map((e7) => e7.headers).flat(), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getCenterLeafHeaders: s5(() => [e5.getCenterFlatHeaders()], (e6) => e6.filter((e7) => { - var t5; - return !(null != (t5 = e7.subHeaders) && t5.length); - }), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getLeftLeafHeaders: s5(() => [e5.getLeftFlatHeaders()], (e6) => e6.filter((e7) => { - var t5; - return !(null != (t5 = e7.subHeaders) && t5.length); - }), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getRightLeafHeaders: s5(() => [e5.getRightFlatHeaders()], (e6) => e6.filter((e7) => { - var t5; - return !(null != (t5 = e7.subHeaders) && t5.length); - }), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }), getLeafHeaders: s5(() => [e5.getLeftHeaderGroups(), e5.getCenterHeaderGroups(), e5.getRightHeaderGroups()], (e6, t5, n3) => { - var _a2, _b2, _c2; - var o4, l4, i5; - return [...(_a2 = null == (o4 = e6[0]) ? void 0 : o4.headers) != null ? _a2 : [], ...(_b2 = null == (l4 = t5[0]) ? void 0 : l4.headers) != null ? _b2 : [], ...(_c2 = null == (i5 = n3[0]) ? void 0 : i5.headers) != null ? _c2 : []].map((e7) => e7.getLeafHeaders()).flat(); - }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugHeaders; - } }) }) }; - function c4(e5, t5, n3, o4) { - var _a2; - var l4; - let i5 = 0; - const r4 = function(e6, t6) { - void 0 === t6 && (t6 = 1), i5 = Math.max(i5, t6), e6.filter((e7) => e7.getIsVisible()).forEach((e7) => { - var n4; - null != (n4 = e7.columns) && n4.length && r4(e7.columns, t6 + 1); - }, 0); - }; - r4(e5); - let a6 = []; - const s6 = (e6, t6) => { - const l5 = { depth: t6, id: [o4, `${t6}`].filter(Boolean).join("_"), headers: [] }, i6 = []; - e6.forEach((e7) => { - const r5 = [...i6].reverse()[0]; - let a7, s7 = false; - if (e7.column.depth === l5.depth && e7.column.parent ? a7 = e7.column.parent : (a7 = e7.column, s7 = true), r5 && (null == r5 ? void 0 : r5.column) === a7) - r5.subHeaders.push(e7); - else { - const l6 = g4(n3, a7, { id: [o4, t6, a7.id, null == e7 ? void 0 : e7.id].filter(Boolean).join("_"), isPlaceholder: s7, placeholderId: s7 ? `${i6.filter((e8) => e8.column === a7).length}` : void 0, depth: t6, index: i6.length }); - l6.subHeaders.push(e7), i6.push(l6); - } - l5.headers.push(e7), e7.headerGroup = l5; - }), a6.push(l5), t6 > 0 && s6(i6, t6 - 1); - }, u5 = t5.map((e6, t6) => g4(n3, e6, { depth: i5, index: t6 })); - s6(u5, i5 - 1), a6.reverse(); - const d6 = (e6) => e6.filter((e7) => e7.column.getIsVisible()).map((e7) => { - let t6 = 0, n4 = 0, o5 = [0]; - e7.subHeaders && e7.subHeaders.length ? (o5 = [], d6(e7.subHeaders).forEach((e8) => { - let { colSpan: n5, rowSpan: l5 } = e8; - t6 += n5, o5.push(l5); - })) : t6 = 1; - return n4 += Math.min(...o5), e7.colSpan = t6, e7.rowSpan = n4, { colSpan: t6, rowSpan: n4 }; - }); - return d6((_a2 = null == (l4 = a6[0]) ? void 0 : l4.headers) != null ? _a2 : []), a6; - } - const p3 = { size: 150, minSize: 20, maxSize: Number.MAX_SAFE_INTEGER }, f4 = { getDefaultColumnDef: () => p3, getInitialState: (e5) => ({ columnSizing: {}, columnSizingInfo: { startOffset: null, startSize: null, deltaOffset: null, deltaPercentage: null, isResizingColumn: false, columnSizingStart: [] }, ...e5 }), getDefaultOptions: (e5) => ({ columnResizeMode: "onEnd", onColumnSizingChange: i4("columnSizing", e5), onColumnSizingInfoChange: i4("columnSizingInfo", e5) }), createColumn: (e5, t5) => ({ getSize: () => { - var _a2, _b2, _c2; - const n3 = t5.getState().columnSizing[e5.id]; - return Math.min(Math.max((_a2 = e5.columnDef.minSize) != null ? _a2 : p3.minSize, (_b2 = n3 != null ? n3 : e5.columnDef.size) != null ? _b2 : p3.size), (_c2 = e5.columnDef.maxSize) != null ? _c2 : p3.maxSize); - }, getStart: (n3) => { - const o4 = n3 ? "left" === n3 ? t5.getLeftVisibleLeafColumns() : t5.getRightVisibleLeafColumns() : t5.getVisibleLeafColumns(), l4 = o4.findIndex((t6) => t6.id === e5.id); - if (l4 > 0) { - const e6 = o4[l4 - 1]; - return e6.getStart(n3) + e6.getSize(); - } - return 0; - }, resetSize: () => { - t5.setColumnSizing((t6) => { - let { [e5.id]: n3, ...o4 } = t6; - return o4; - }); - }, getCanResize: () => { - var _a2, _b2; - return ((_a2 = e5.columnDef.enableResizing) != null ? _a2 : true) && ((_b2 = t5.options.enableColumnResizing) != null ? _b2 : true); - }, getIsResizing: () => t5.getState().columnSizingInfo.isResizingColumn === e5.id }), createHeader: (e5, t5) => ({ getSize: () => { - let t6 = 0; - const n3 = (e6) => { - var _a2; - e6.subHeaders.length ? e6.subHeaders.forEach(n3) : t6 += (_a2 = e6.column.getSize()) != null ? _a2 : 0; - }; - return n3(e5), t6; - }, getStart: () => { - if (e5.index > 0) { - const t6 = e5.headerGroup.headers[e5.index - 1]; - return t6.getStart() + t6.getSize(); - } - return 0; - }, getResizeHandler: () => { - const n3 = t5.getColumn(e5.column.id), o4 = n3.getCanResize(); - return (l4) => { - if (!o4) - return; - if (null == l4.persist || l4.persist(), w5(l4) && l4.touches && l4.touches.length > 1) - return; - const i5 = e5.getSize(), r4 = e5 ? e5.getLeafHeaders().map((e6) => [e6.column.id, e6.column.getSize()]) : [[n3.id, n3.getSize()]], a6 = w5(l4) ? Math.round(l4.touches[0].clientX) : l4.clientX, s6 = (e6, n4) => { - if ("number" != typeof n4) - return; - let o5 = {}; - t5.setColumnSizingInfo((e7) => { - var _a2, _b2; - const t6 = n4 - ((_a2 = null == e7 ? void 0 : e7.startOffset) != null ? _a2 : 0), l5 = Math.max(t6 / ((_b2 = null == e7 ? void 0 : e7.startSize) != null ? _b2 : 0), -0.999999); - return e7.columnSizingStart.forEach((e8) => { - let [t7, n5] = e8; - o5[t7] = Math.round(100 * Math.max(n5 + n5 * l5, 0)) / 100; - }), { ...e7, deltaOffset: t6, deltaPercentage: l5 }; - }), "onChange" !== t5.options.columnResizeMode && "end" !== e6 || t5.setColumnSizing((e7) => ({ ...e7, ...o5 })); - }, u5 = (e6) => s6("move", e6), g5 = (e6) => { - s6("end", e6), t5.setColumnSizingInfo((e7) => ({ ...e7, isResizingColumn: false, startOffset: null, startSize: null, deltaOffset: null, deltaPercentage: null, columnSizingStart: [] })); - }, d6 = { moveHandler: (e6) => u5(e6.clientX), upHandler: (e6) => { - document.removeEventListener("mousemove", d6.moveHandler), document.removeEventListener("mouseup", d6.upHandler), g5(e6.clientX); - } }, c5 = { moveHandler: (e6) => (e6.cancelable && (e6.preventDefault(), e6.stopPropagation()), u5(e6.touches[0].clientX), false), upHandler: (e6) => { - var t6; - document.removeEventListener("touchmove", c5.moveHandler), document.removeEventListener("touchend", c5.upHandler), e6.cancelable && (e6.preventDefault(), e6.stopPropagation()), g5(null == (t6 = e6.touches[0]) ? void 0 : t6.clientX); - } }, p4 = !!b4() && { passive: false }; - w5(l4) ? (document.addEventListener("touchmove", c5.moveHandler, p4), document.addEventListener("touchend", c5.upHandler, p4)) : (document.addEventListener("mousemove", d6.moveHandler, p4), document.addEventListener("mouseup", d6.upHandler, p4)), t5.setColumnSizingInfo((e6) => ({ ...e6, startOffset: a6, startSize: i5, deltaOffset: 0, deltaPercentage: 0, columnSizingStart: r4, isResizingColumn: n3.id })); - }; - } }), createTable: (e5) => ({ setColumnSizing: (t5) => null == e5.options.onColumnSizingChange ? void 0 : e5.options.onColumnSizingChange(t5), setColumnSizingInfo: (t5) => null == e5.options.onColumnSizingInfoChange ? void 0 : e5.options.onColumnSizingInfoChange(t5), resetColumnSizing: (t5) => { - var _a2; - e5.setColumnSizing(t5 ? {} : (_a2 = e5.initialState.columnSizing) != null ? _a2 : {}); - }, resetHeaderSizeInfo: (t5) => { - var _a2; - e5.setColumnSizingInfo(t5 ? { startOffset: null, startSize: null, deltaOffset: null, deltaPercentage: null, isResizingColumn: false, columnSizingStart: [] } : (_a2 = e5.initialState.columnSizingInfo) != null ? _a2 : { startOffset: null, startSize: null, deltaOffset: null, deltaPercentage: null, isResizingColumn: false, columnSizingStart: [] }); - }, getTotalSize: () => { - var _a2; - var t5; - return (_a2 = null == (t5 = e5.getHeaderGroups()[0]) ? void 0 : t5.headers.reduce((e6, t6) => e6 + t6.getSize(), 0)) != null ? _a2 : 0; - }, getLeftTotalSize: () => { - var _a2; - var t5; - return (_a2 = null == (t5 = e5.getLeftHeaderGroups()[0]) ? void 0 : t5.headers.reduce((e6, t6) => e6 + t6.getSize(), 0)) != null ? _a2 : 0; - }, getCenterTotalSize: () => { - var _a2; - var t5; - return (_a2 = null == (t5 = e5.getCenterHeaderGroups()[0]) ? void 0 : t5.headers.reduce((e6, t6) => e6 + t6.getSize(), 0)) != null ? _a2 : 0; - }, getRightTotalSize: () => { - var _a2; - var t5; - return (_a2 = null == (t5 = e5.getRightHeaderGroups()[0]) ? void 0 : t5.headers.reduce((e6, t6) => e6 + t6.getSize(), 0)) != null ? _a2 : 0; - } }) }; - let m5 = null; - function b4() { - if ("boolean" == typeof m5) - return m5; - let e5 = false; - try { - const t5 = { get passive() { - return e5 = true, false; - } }, n3 = () => { - }; - window.addEventListener("test", n3, t5), window.removeEventListener("test", n3); - } catch (t5) { - e5 = false; - } - return m5 = e5, m5; - } - function w5(e5) { - return "touchstart" === e5.type; - } - const h5 = { getInitialState: (e5) => ({ expanded: {}, ...e5 }), getDefaultOptions: (e5) => ({ onExpandedChange: i4("expanded", e5), paginateExpandedRows: true }), createTable: (e5) => { - let t5 = false, n3 = false; - return { _autoResetExpanded: () => { - var _a2, _b2; - if (t5) { - if ((_b2 = (_a2 = e5.options.autoResetAll) != null ? _a2 : e5.options.autoResetExpanded) != null ? _b2 : !e5.options.manualExpanding) { - if (n3) - return; - n3 = true, e5._queue(() => { - e5.resetExpanded(), n3 = false; - }); - } - } else - e5._queue(() => { - t5 = true; - }); - }, setExpanded: (t6) => null == e5.options.onExpandedChange ? void 0 : e5.options.onExpandedChange(t6), toggleAllRowsExpanded: (t6) => { - (t6 != null ? t6 : !e5.getIsAllRowsExpanded()) ? e5.setExpanded(true) : e5.setExpanded({}); - }, resetExpanded: (t6) => { - var _a2; - var n4; - e5.setExpanded(t6 ? {} : (_a2 = null == (n4 = e5.initialState) ? void 0 : n4.expanded) != null ? _a2 : {}); - }, getCanSomeRowsExpand: () => e5.getRowModel().flatRows.some((e6) => e6.getCanExpand()), getToggleAllRowsExpandedHandler: () => (t6) => { - null == t6.persist || t6.persist(), e5.toggleAllRowsExpanded(); - }, getIsSomeRowsExpanded: () => { - const t6 = e5.getState().expanded; - return true === t6 || Object.values(t6).some(Boolean); - }, getIsAllRowsExpanded: () => { - const t6 = e5.getState().expanded; - return "boolean" == typeof t6 ? true === t6 : !!Object.keys(t6).length && !e5.getRowModel().flatRows.some((e6) => !e6.getIsExpanded()); - }, getExpandedDepth: () => { - let t6 = 0; - return (true === e5.getState().expanded ? Object.keys(e5.getRowModel().rowsById) : Object.keys(e5.getState().expanded)).forEach((e6) => { - const n4 = e6.split("."); - t6 = Math.max(t6, n4.length); - }), t6; - }, getPreExpandedRowModel: () => e5.getSortedRowModel(), getExpandedRowModel: () => (!e5._getExpandedRowModel && e5.options.getExpandedRowModel && (e5._getExpandedRowModel = e5.options.getExpandedRowModel(e5)), e5.options.manualExpanding || !e5._getExpandedRowModel ? e5.getPreExpandedRowModel() : e5._getExpandedRowModel()) }; - }, createRow: (e5, t5) => ({ toggleExpanded: (n3) => { - t5.setExpanded((o4) => { - const l4 = true === o4 || !(null == o4 || !o4[e5.id]); - let i5 = {}; - if (true === o4 ? Object.keys(t5.getRowModel().rowsById).forEach((e6) => { - i5[e6] = true; - }) : i5 = o4, n3 = n3 != null ? n3 : !l4, !l4 && n3) - return { ...i5, [e5.id]: true }; - if (l4 && !n3) { - const { [e5.id]: t6, ...n4 } = i5; - return n4; - } - return o4; - }); - }, getIsExpanded: () => { - var _a2; - const n3 = t5.getState().expanded; - return !!((_a2 = null == t5.options.getIsRowExpanded ? void 0 : t5.options.getIsRowExpanded(e5)) != null ? _a2 : true === n3 || null != n3 && n3[e5.id]); - }, getCanExpand: () => { - var _a2, _b2; - var n3; - return (_b2 = null == t5.options.getRowCanExpand ? void 0 : t5.options.getRowCanExpand(e5)) != null ? _b2 : ((_a2 = t5.options.enableExpanding) != null ? _a2 : true) && !(null == (n3 = e5.subRows) || !n3.length); - }, getToggleExpandedHandler: () => { - const t6 = e5.getCanExpand(); - return () => { - t6 && e5.toggleExpanded(); - }; - } }) }, S4 = (e5, t5, n3) => { - var o4; - const l4 = n3.toLowerCase(); - return Boolean(null == (o4 = e5.getValue(t5)) ? void 0 : o4.toLowerCase().includes(l4)); - }; - S4.autoRemove = (e5) => _4(e5); - const C3 = (e5, t5, n3) => { - var o4; - return Boolean(null == (o4 = e5.getValue(t5)) ? void 0 : o4.includes(n3)); - }; - C3.autoRemove = (e5) => _4(e5); - const R3 = (e5, t5, n3) => { - var o4; - return (null == (o4 = e5.getValue(t5)) ? void 0 : o4.toLowerCase()) === n3.toLowerCase(); - }; - R3.autoRemove = (e5) => _4(e5); - const v3 = (e5, t5, n3) => { - var o4; - return null == (o4 = e5.getValue(t5)) ? void 0 : o4.includes(n3); - }; - v3.autoRemove = (e5) => _4(e5) || !(null != e5 && e5.length); - const F3 = (e5, t5, n3) => !n3.some((n4) => { - var o4; - return !(null != (o4 = e5.getValue(t5)) && o4.includes(n4)); - }); - F3.autoRemove = (e5) => _4(e5) || !(null != e5 && e5.length); - const M5 = (e5, t5, n3) => n3.some((n4) => { - var o4; - return null == (o4 = e5.getValue(t5)) ? void 0 : o4.includes(n4); - }); - M5.autoRemove = (e5) => _4(e5) || !(null != e5 && e5.length); - const V3 = (e5, t5, n3) => e5.getValue(t5) === n3; - V3.autoRemove = (e5) => _4(e5); - const y5 = (e5, t5, n3) => e5.getValue(t5) == n3; - y5.autoRemove = (e5) => _4(e5); - const x5 = (e5, t5, n3) => { - let [o4, l4] = n3; - const i5 = e5.getValue(t5); - return i5 >= o4 && i5 <= l4; - }; - x5.resolveFilterValue = (e5) => { - let [t5, n3] = e5, o4 = "number" != typeof t5 ? parseFloat(t5) : t5, l4 = "number" != typeof n3 ? parseFloat(n3) : n3, i5 = null === t5 || Number.isNaN(o4) ? -1 / 0 : o4, r4 = null === n3 || Number.isNaN(l4) ? 1 / 0 : l4; - if (i5 > r4) { - const e6 = i5; - i5 = r4, r4 = e6; - } - return [i5, r4]; - }, x5.autoRemove = (e5) => _4(e5) || _4(e5[0]) && _4(e5[1]); - const I4 = { includesString: S4, includesStringSensitive: C3, equalsString: R3, arrIncludes: v3, arrIncludesAll: F3, arrIncludesSome: M5, equals: V3, weakEquals: y5, inNumberRange: x5 }; - function _4(e5) { - return null == e5 || "" === e5; - } - const P4 = { getDefaultColumnDef: () => ({ filterFn: "auto" }), getInitialState: (e5) => ({ columnFilters: [], globalFilter: void 0, ...e5 }), getDefaultOptions: (e5) => ({ onColumnFiltersChange: i4("columnFilters", e5), onGlobalFilterChange: i4("globalFilter", e5), filterFromLeafRows: false, maxLeafRowFilterDepth: 100, globalFilterFn: "auto", getColumnCanGlobalFilter: (t5) => { - var n3, o4; - const l4 = null == (n3 = e5.getCoreRowModel().flatRows[0]) || null == (o4 = n3._getAllCellsByColumnId()[t5.id]) ? void 0 : o4.getValue(); - return "string" == typeof l4 || "number" == typeof l4; - } }), createColumn: (e5, t5) => ({ getAutoFilterFn: () => { - const n3 = t5.getCoreRowModel().flatRows[0], o4 = null == n3 ? void 0 : n3.getValue(e5.id); - return "string" == typeof o4 ? I4.includesString : "number" == typeof o4 ? I4.inNumberRange : "boolean" == typeof o4 || null !== o4 && "object" == typeof o4 ? I4.equals : Array.isArray(o4) ? I4.arrIncludes : I4.weakEquals; - }, getFilterFn: () => { - var _a2; - var n3; - return r3(e5.columnDef.filterFn) ? e5.columnDef.filterFn : "auto" === e5.columnDef.filterFn ? e5.getAutoFilterFn() : (_a2 = null == (n3 = t5.options.filterFns) ? void 0 : n3[e5.columnDef.filterFn]) != null ? _a2 : I4[e5.columnDef.filterFn]; - }, getCanFilter: () => { - var _a2, _b2, _c2; - return ((_a2 = e5.columnDef.enableColumnFilter) != null ? _a2 : true) && ((_b2 = t5.options.enableColumnFilters) != null ? _b2 : true) && ((_c2 = t5.options.enableFilters) != null ? _c2 : true) && !!e5.accessorFn; - }, getCanGlobalFilter: () => { - var _a2, _b2, _c2, _d2; - return ((_a2 = e5.columnDef.enableGlobalFilter) != null ? _a2 : true) && ((_b2 = t5.options.enableGlobalFilter) != null ? _b2 : true) && ((_c2 = t5.options.enableFilters) != null ? _c2 : true) && ((_d2 = null == t5.options.getColumnCanGlobalFilter ? void 0 : t5.options.getColumnCanGlobalFilter(e5)) != null ? _d2 : true) && !!e5.accessorFn; - }, getIsFiltered: () => e5.getFilterIndex() > -1, getFilterValue: () => { - var n3, o4; - return null == (n3 = t5.getState().columnFilters) || null == (o4 = n3.find((t6) => t6.id === e5.id)) ? void 0 : o4.value; - }, getFilterIndex: () => { - var _a2; - var n3; - return (_a2 = null == (n3 = t5.getState().columnFilters) ? void 0 : n3.findIndex((t6) => t6.id === e5.id)) != null ? _a2 : -1; - }, setFilterValue: (n3) => { - t5.setColumnFilters((t6) => { - var _a2, _b2; - const o4 = e5.getFilterFn(), i5 = null == t6 ? void 0 : t6.find((t7) => t7.id === e5.id), r4 = l3(n3, i5 ? i5.value : void 0); - if (A4(o4, r4, e5)) - return (_a2 = null == t6 ? void 0 : t6.filter((t7) => t7.id !== e5.id)) != null ? _a2 : []; - const a6 = { id: e5.id, value: r4 }; - return i5 ? (_b2 = null == t6 ? void 0 : t6.map((t7) => t7.id === e5.id ? a6 : t7)) != null ? _b2 : [] : null != t6 && t6.length ? [...t6, a6] : [a6]; - }); - }, _getFacetedRowModel: t5.options.getFacetedRowModel && t5.options.getFacetedRowModel(t5, e5.id), getFacetedRowModel: () => e5._getFacetedRowModel ? e5._getFacetedRowModel() : t5.getPreFilteredRowModel(), _getFacetedUniqueValues: t5.options.getFacetedUniqueValues && t5.options.getFacetedUniqueValues(t5, e5.id), getFacetedUniqueValues: () => e5._getFacetedUniqueValues ? e5._getFacetedUniqueValues() : /* @__PURE__ */ new Map(), _getFacetedMinMaxValues: t5.options.getFacetedMinMaxValues && t5.options.getFacetedMinMaxValues(t5, e5.id), getFacetedMinMaxValues: () => { - if (e5._getFacetedMinMaxValues) - return e5._getFacetedMinMaxValues(); - } }), createRow: (e5, t5) => ({ columnFilters: {}, columnFiltersMeta: {} }), createTable: (e5) => ({ getGlobalAutoFilterFn: () => I4.includesString, getGlobalFilterFn: () => { - var _a2; - var t5; - const { globalFilterFn: n3 } = e5.options; - return r3(n3) ? n3 : "auto" === n3 ? e5.getGlobalAutoFilterFn() : (_a2 = null == (t5 = e5.options.filterFns) ? void 0 : t5[n3]) != null ? _a2 : I4[n3]; - }, setColumnFilters: (t5) => { - const n3 = e5.getAllLeafColumns(); - null == e5.options.onColumnFiltersChange || e5.options.onColumnFiltersChange((e6) => { - var o4; - return null == (o4 = l3(t5, e6)) ? void 0 : o4.filter((e7) => { - const t6 = n3.find((t7) => t7.id === e7.id); - if (t6) { - if (A4(t6.getFilterFn(), e7.value, t6)) - return false; - } - return true; - }); - }); - }, setGlobalFilter: (t5) => { - null == e5.options.onGlobalFilterChange || e5.options.onGlobalFilterChange(t5); - }, resetGlobalFilter: (t5) => { - e5.setGlobalFilter(t5 ? void 0 : e5.initialState.globalFilter); - }, resetColumnFilters: (t5) => { - var _a2; - var n3; - e5.setColumnFilters(t5 ? [] : (_a2 = null == (n3 = e5.initialState) ? void 0 : n3.columnFilters) != null ? _a2 : []); - }, getPreFilteredRowModel: () => e5.getCoreRowModel(), getFilteredRowModel: () => (!e5._getFilteredRowModel && e5.options.getFilteredRowModel && (e5._getFilteredRowModel = e5.options.getFilteredRowModel(e5)), e5.options.manualFiltering || !e5._getFilteredRowModel ? e5.getPreFilteredRowModel() : e5._getFilteredRowModel()), _getGlobalFacetedRowModel: e5.options.getFacetedRowModel && e5.options.getFacetedRowModel(e5, "__global__"), getGlobalFacetedRowModel: () => e5.options.manualFiltering || !e5._getGlobalFacetedRowModel ? e5.getPreFilteredRowModel() : e5._getGlobalFacetedRowModel(), _getGlobalFacetedUniqueValues: e5.options.getFacetedUniqueValues && e5.options.getFacetedUniqueValues(e5, "__global__"), getGlobalFacetedUniqueValues: () => e5._getGlobalFacetedUniqueValues ? e5._getGlobalFacetedUniqueValues() : /* @__PURE__ */ new Map(), _getGlobalFacetedMinMaxValues: e5.options.getFacetedMinMaxValues && e5.options.getFacetedMinMaxValues(e5, "__global__"), getGlobalFacetedMinMaxValues: () => { - if (e5._getGlobalFacetedMinMaxValues) - return e5._getGlobalFacetedMinMaxValues(); - } }) }; - function A4(e5, t5, n3) { - return !(!e5 || !e5.autoRemove) && e5.autoRemove(t5, n3) || void 0 === t5 || "string" == typeof t5 && !t5; - } - const E3 = { sum: (e5, t5, n3) => n3.reduce((t6, n4) => { - const o4 = n4.getValue(e5); - return t6 + ("number" == typeof o4 ? o4 : 0); - }, 0), min: (e5, t5, n3) => { - let o4; - return n3.forEach((t6) => { - const n4 = t6.getValue(e5); - null != n4 && (o4 > n4 || void 0 === o4 && n4 >= n4) && (o4 = n4); - }), o4; - }, max: (e5, t5, n3) => { - let o4; - return n3.forEach((t6) => { - const n4 = t6.getValue(e5); - null != n4 && (o4 < n4 || void 0 === o4 && n4 >= n4) && (o4 = n4); - }), o4; - }, extent: (e5, t5, n3) => { - let o4, l4; - return n3.forEach((t6) => { - const n4 = t6.getValue(e5); - null != n4 && (void 0 === o4 ? n4 >= n4 && (o4 = l4 = n4) : (o4 > n4 && (o4 = n4), l4 < n4 && (l4 = n4))); - }), [o4, l4]; - }, mean: (e5, t5) => { - let n3 = 0, o4 = 0; - if (t5.forEach((t6) => { - let l4 = t6.getValue(e5); - null != l4 && (l4 = +l4) >= l4 && (++n3, o4 += l4); - }), n3) - return o4 / n3; - }, median: (e5, t5) => { - if (!t5.length) - return; - let n3 = 0, o4 = 0; - return t5.forEach((t6) => { - let l4 = t6.getValue(e5); - "number" == typeof l4 && (n3 = Math.min(n3, l4), o4 = Math.max(o4, l4)); - }), (n3 + o4) / 2; - }, unique: (e5, t5) => Array.from(new Set(t5.map((t6) => t6.getValue(e5))).values()), uniqueCount: (e5, t5) => new Set(t5.map((t6) => t6.getValue(e5))).size, count: (e5, t5) => t5.length }, G3 = { getDefaultColumnDef: () => ({ aggregatedCell: (e5) => { - var _a2; - var t5; - return (_a2 = null == (t5 = e5.getValue()) || null == t5.toString ? void 0 : t5.toString()) != null ? _a2 : null; - }, aggregationFn: "auto" }), getInitialState: (e5) => ({ grouping: [], ...e5 }), getDefaultOptions: (e5) => ({ onGroupingChange: i4("grouping", e5), groupedColumnMode: "reorder" }), createColumn: (e5, t5) => ({ toggleGrouping: () => { - t5.setGrouping((t6) => null != t6 && t6.includes(e5.id) ? t6.filter((t7) => t7 !== e5.id) : [...t6 != null ? t6 : [], e5.id]); - }, getCanGroup: () => { - var _a2, _b2, _c2, _d2; - return (_d2 = (_c2 = (_b2 = (_a2 = e5.columnDef.enableGrouping) != null ? _a2 : true) != null ? _b2 : t5.options.enableGrouping) != null ? _c2 : true) != null ? _d2 : !!e5.accessorFn; - }, getIsGrouped: () => { - var n3; - return null == (n3 = t5.getState().grouping) ? void 0 : n3.includes(e5.id); - }, getGroupedIndex: () => { - var n3; - return null == (n3 = t5.getState().grouping) ? void 0 : n3.indexOf(e5.id); - }, getToggleGroupingHandler: () => { - const t6 = e5.getCanGroup(); - return () => { - t6 && e5.toggleGrouping(); - }; - }, getAutoAggregationFn: () => { - const n3 = t5.getCoreRowModel().flatRows[0], o4 = null == n3 ? void 0 : n3.getValue(e5.id); - return "number" == typeof o4 ? E3.sum : "[object Date]" === Object.prototype.toString.call(o4) ? E3.extent : void 0; - }, getAggregationFn: () => { - var _a2; - var n3; - if (!e5) - throw new Error(); - return r3(e5.columnDef.aggregationFn) ? e5.columnDef.aggregationFn : "auto" === e5.columnDef.aggregationFn ? e5.getAutoAggregationFn() : (_a2 = null == (n3 = t5.options.aggregationFns) ? void 0 : n3[e5.columnDef.aggregationFn]) != null ? _a2 : E3[e5.columnDef.aggregationFn]; - } }), createTable: (e5) => ({ setGrouping: (t5) => null == e5.options.onGroupingChange ? void 0 : e5.options.onGroupingChange(t5), resetGrouping: (t5) => { - var _a2; - var n3; - e5.setGrouping(t5 ? [] : (_a2 = null == (n3 = e5.initialState) ? void 0 : n3.grouping) != null ? _a2 : []); - }, getPreGroupedRowModel: () => e5.getFilteredRowModel(), getGroupedRowModel: () => (!e5._getGroupedRowModel && e5.options.getGroupedRowModel && (e5._getGroupedRowModel = e5.options.getGroupedRowModel(e5)), e5.options.manualGrouping || !e5._getGroupedRowModel ? e5.getPreGroupedRowModel() : e5._getGroupedRowModel()) }), createRow: (e5) => ({ getIsGrouped: () => !!e5.groupingColumnId, _groupingValuesCache: {} }), createCell: (e5, t5, n3, o4) => ({ getIsGrouped: () => t5.getIsGrouped() && t5.id === n3.groupingColumnId, getIsPlaceholder: () => !e5.getIsGrouped() && t5.getIsGrouped(), getIsAggregated: () => { - var t6; - return !e5.getIsGrouped() && !e5.getIsPlaceholder() && !(null == (t6 = n3.subRows) || !t6.length); - } }) }; - function H5(e5, t5, n3) { - if (null == t5 || !t5.length || !n3) - return e5; - const o4 = e5.filter((e6) => !t5.includes(e6.id)); - if ("remove" === n3) - return o4; - return [...t5.map((t6) => e5.find((e6) => e6.id === t6)).filter(Boolean), ...o4]; - } - const z5 = { getInitialState: (e5) => ({ columnOrder: [], ...e5 }), getDefaultOptions: (e5) => ({ onColumnOrderChange: i4("columnOrder", e5) }), createTable: (e5) => ({ setColumnOrder: (t5) => null == e5.options.onColumnOrderChange ? void 0 : e5.options.onColumnOrderChange(t5), resetColumnOrder: (t5) => { - var _a2; - e5.setColumnOrder(t5 ? [] : (_a2 = e5.initialState.columnOrder) != null ? _a2 : []); - }, _getOrderColumnsFn: s5(() => [e5.getState().columnOrder, e5.getState().grouping, e5.options.groupedColumnMode], (e6, t5, n3) => (o4) => { - let l4 = []; - if (null != e6 && e6.length) { - const t6 = [...e6], n4 = [...o4]; - for (; n4.length && t6.length; ) { - const e7 = t6.shift(), o5 = n4.findIndex((t7) => t7.id === e7); - o5 > -1 && l4.push(n4.splice(o5, 1)[0]); - } - l4 = [...l4, ...n4]; - } else - l4 = o4; - return H5(l4, t5, n3); - }, { key: false }) }) }, L4 = { getInitialState: (e5) => ({ ...e5, pagination: { pageIndex: 0, pageSize: 10, ...null == e5 ? void 0 : e5.pagination } }), getDefaultOptions: (e5) => ({ onPaginationChange: i4("pagination", e5) }), createTable: (e5) => { - let t5 = false, n3 = false; - return { _autoResetPageIndex: () => { - var _a2, _b2; - if (t5) { - if ((_b2 = (_a2 = e5.options.autoResetAll) != null ? _a2 : e5.options.autoResetPageIndex) != null ? _b2 : !e5.options.manualPagination) { - if (n3) - return; - n3 = true, e5._queue(() => { - e5.resetPageIndex(), n3 = false; - }); - } - } else - e5._queue(() => { - t5 = true; - }); - }, setPagination: (t6) => null == e5.options.onPaginationChange ? void 0 : e5.options.onPaginationChange((e6) => l3(t6, e6)), resetPagination: (t6) => { - var _a2; - e5.setPagination(t6 ? { pageIndex: 0, pageSize: 10 } : (_a2 = e5.initialState.pagination) != null ? _a2 : { pageIndex: 0, pageSize: 10 }); - }, setPageIndex: (t6) => { - e5.setPagination((n4) => { - let o4 = l3(t6, n4.pageIndex); - const i5 = void 0 === e5.options.pageCount || -1 === e5.options.pageCount ? Number.MAX_SAFE_INTEGER : e5.options.pageCount - 1; - return o4 = Math.max(0, Math.min(o4, i5)), { ...n4, pageIndex: o4 }; - }); - }, resetPageIndex: (t6) => { - var _a2; - var n4, o4; - e5.setPageIndex(t6 ? 0 : (_a2 = null == (n4 = e5.initialState) || null == (o4 = n4.pagination) ? void 0 : o4.pageIndex) != null ? _a2 : 0); - }, resetPageSize: (t6) => { - var _a2; - var n4, o4; - e5.setPageSize(t6 ? 10 : (_a2 = null == (n4 = e5.initialState) || null == (o4 = n4.pagination) ? void 0 : o4.pageSize) != null ? _a2 : 10); - }, setPageSize: (t6) => { - e5.setPagination((e6) => { - const n4 = Math.max(1, l3(t6, e6.pageSize)), o4 = e6.pageSize * e6.pageIndex, i5 = Math.floor(o4 / n4); - return { ...e6, pageIndex: i5, pageSize: n4 }; - }); - }, setPageCount: (t6) => e5.setPagination((n4) => { - var _a2; - let o4 = l3(t6, (_a2 = e5.options.pageCount) != null ? _a2 : -1); - return "number" == typeof o4 && (o4 = Math.max(-1, o4)), { ...n4, pageCount: o4 }; - }), getPageOptions: s5(() => [e5.getPageCount()], (e6) => { - let t6 = []; - return e6 && e6 > 0 && (t6 = [...new Array(e6)].fill(null).map((e7, t7) => t7)), t6; - }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugTable; - } }), getCanPreviousPage: () => e5.getState().pagination.pageIndex > 0, getCanNextPage: () => { - const { pageIndex: t6 } = e5.getState().pagination, n4 = e5.getPageCount(); - return -1 === n4 || 0 !== n4 && t6 < n4 - 1; - }, previousPage: () => e5.setPageIndex((e6) => e6 - 1), nextPage: () => e5.setPageIndex((e6) => e6 + 1), getPrePaginationRowModel: () => e5.getExpandedRowModel(), getPaginationRowModel: () => (!e5._getPaginationRowModel && e5.options.getPaginationRowModel && (e5._getPaginationRowModel = e5.options.getPaginationRowModel(e5)), e5.options.manualPagination || !e5._getPaginationRowModel ? e5.getPrePaginationRowModel() : e5._getPaginationRowModel()), getPageCount: () => { - var _a2; - return (_a2 = e5.options.pageCount) != null ? _a2 : Math.ceil(e5.getPrePaginationRowModel().rows.length / e5.getState().pagination.pageSize); - } }; - } }, O4 = { getInitialState: (e5) => ({ columnPinning: { left: [], right: [] }, ...e5 }), getDefaultOptions: (e5) => ({ onColumnPinningChange: i4("columnPinning", e5) }), createColumn: (e5, t5) => ({ pin: (n3) => { - const o4 = e5.getLeafColumns().map((e6) => e6.id).filter(Boolean); - t5.setColumnPinning((e6) => { - var _a2, _b2, _c2, _d2, _e2, _f; - return "right" === n3 ? { left: ((_a2 = null == e6 ? void 0 : e6.left) != null ? _a2 : []).filter((e7) => !(null != o4 && o4.includes(e7))), right: [...((_b2 = null == e6 ? void 0 : e6.right) != null ? _b2 : []).filter((e7) => !(null != o4 && o4.includes(e7))), ...o4] } : "left" === n3 ? { left: [...((_c2 = null == e6 ? void 0 : e6.left) != null ? _c2 : []).filter((e7) => !(null != o4 && o4.includes(e7))), ...o4], right: ((_d2 = null == e6 ? void 0 : e6.right) != null ? _d2 : []).filter((e7) => !(null != o4 && o4.includes(e7))) } : { left: ((_e2 = null == e6 ? void 0 : e6.left) != null ? _e2 : []).filter((e7) => !(null != o4 && o4.includes(e7))), right: ((_f = null == e6 ? void 0 : e6.right) != null ? _f : []).filter((e7) => !(null != o4 && o4.includes(e7))) }; - }); - }, getCanPin: () => e5.getLeafColumns().some((e6) => { - var _a2, _b2; - return ((_a2 = e6.columnDef.enablePinning) != null ? _a2 : true) && ((_b2 = t5.options.enablePinning) != null ? _b2 : true); - }), getIsPinned: () => { - const n3 = e5.getLeafColumns().map((e6) => e6.id), { left: o4, right: l4 } = t5.getState().columnPinning, i5 = n3.some((e6) => null == o4 ? void 0 : o4.includes(e6)), r4 = n3.some((e6) => null == l4 ? void 0 : l4.includes(e6)); - return i5 ? "left" : !!r4 && "right"; - }, getPinnedIndex: () => { - var _a2; - var n3, o4; - const l4 = e5.getIsPinned(); - return l4 ? (_a2 = null == (n3 = t5.getState().columnPinning) || null == (o4 = n3[l4]) ? void 0 : o4.indexOf(e5.id)) != null ? _a2 : -1 : 0; - } }), createRow: (e5, t5) => ({ getCenterVisibleCells: s5(() => [e5._getAllVisibleCells(), t5.getState().columnPinning.left, t5.getState().columnPinning.right], (e6, t6, n3) => { - const o4 = [...t6 != null ? t6 : [], ...n3 != null ? n3 : []]; - return e6.filter((e7) => !o4.includes(e7.column.id)); - }, { key: "row.getCenterVisibleCells", debug: () => { - var _a2; - return (_a2 = t5.options.debugAll) != null ? _a2 : t5.options.debugRows; - } }), getLeftVisibleCells: s5(() => [e5._getAllVisibleCells(), t5.getState().columnPinning.left, ,], (e6, t6) => (t6 != null ? t6 : []).map((t7) => e6.find((e7) => e7.column.id === t7)).filter(Boolean).map((e7) => ({ ...e7, position: "left" })), { key: "row.getLeftVisibleCells", debug: () => { - var _a2; - return (_a2 = t5.options.debugAll) != null ? _a2 : t5.options.debugRows; - } }), getRightVisibleCells: s5(() => [e5._getAllVisibleCells(), t5.getState().columnPinning.right], (e6, t6) => (t6 != null ? t6 : []).map((t7) => e6.find((e7) => e7.column.id === t7)).filter(Boolean).map((e7) => ({ ...e7, position: "right" })), { key: "row.getRightVisibleCells", debug: () => { - var _a2; - return (_a2 = t5.options.debugAll) != null ? _a2 : t5.options.debugRows; - } }) }), createTable: (e5) => ({ setColumnPinning: (t5) => null == e5.options.onColumnPinningChange ? void 0 : e5.options.onColumnPinningChange(t5), resetColumnPinning: (t5) => { - var _a2; - var n3; - return e5.setColumnPinning(t5 ? { left: [], right: [] } : (_a2 = null == (n3 = e5.initialState) ? void 0 : n3.columnPinning) != null ? _a2 : { left: [], right: [] }); - }, getIsSomeColumnsPinned: (t5) => { - var n3; - const o4 = e5.getState().columnPinning; - var l4, i5; - return t5 ? Boolean(null == (n3 = o4[t5]) ? void 0 : n3.length) : Boolean((null == (l4 = o4.left) ? void 0 : l4.length) || (null == (i5 = o4.right) ? void 0 : i5.length)); - }, getLeftLeafColumns: s5(() => [e5.getAllLeafColumns(), e5.getState().columnPinning.left], (e6, t5) => (t5 != null ? t5 : []).map((t6) => e6.find((e7) => e7.id === t6)).filter(Boolean), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugColumns; - } }), getRightLeafColumns: s5(() => [e5.getAllLeafColumns(), e5.getState().columnPinning.right], (e6, t5) => (t5 != null ? t5 : []).map((t6) => e6.find((e7) => e7.id === t6)).filter(Boolean), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugColumns; - } }), getCenterLeafColumns: s5(() => [e5.getAllLeafColumns(), e5.getState().columnPinning.left, e5.getState().columnPinning.right], (e6, t5, n3) => { - const o4 = [...t5 != null ? t5 : [], ...n3 != null ? n3 : []]; - return e6.filter((e7) => !o4.includes(e7.id)); - }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugColumns; - } }) }) }, D3 = { getInitialState: (e5) => ({ rowSelection: {}, ...e5 }), getDefaultOptions: (e5) => ({ onRowSelectionChange: i4("rowSelection", e5), enableRowSelection: true, enableMultiRowSelection: true, enableSubRowSelection: true }), createTable: (e5) => ({ setRowSelection: (t5) => null == e5.options.onRowSelectionChange ? void 0 : e5.options.onRowSelectionChange(t5), resetRowSelection: (t5) => { - var _a2; - return e5.setRowSelection(t5 ? {} : (_a2 = e5.initialState.rowSelection) != null ? _a2 : {}); - }, toggleAllRowsSelected: (t5) => { - e5.setRowSelection((n3) => { - t5 = void 0 !== t5 ? t5 : !e5.getIsAllRowsSelected(); - const o4 = { ...n3 }, l4 = e5.getPreGroupedRowModel().flatRows; - return t5 ? l4.forEach((e6) => { - e6.getCanSelect() && (o4[e6.id] = true); - }) : l4.forEach((e6) => { - delete o4[e6.id]; - }), o4; - }); - }, toggleAllPageRowsSelected: (t5) => e5.setRowSelection((n3) => { - const o4 = void 0 !== t5 ? t5 : !e5.getIsAllPageRowsSelected(), l4 = { ...n3 }; - return e5.getRowModel().rows.forEach((t6) => { - k5(l4, t6.id, o4, e5); - }), l4; - }), getPreSelectedRowModel: () => e5.getCoreRowModel(), getSelectedRowModel: s5(() => [e5.getState().rowSelection, e5.getCoreRowModel()], (t5, n3) => Object.keys(t5).length ? T6(e5, n3) : { rows: [], flatRows: [], rowsById: {} }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugTable; - } }), getFilteredSelectedRowModel: s5(() => [e5.getState().rowSelection, e5.getFilteredRowModel()], (t5, n3) => Object.keys(t5).length ? T6(e5, n3) : { rows: [], flatRows: [], rowsById: {} }, { key: "getFilteredSelectedRowModel", debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugTable; - } }), getGroupedSelectedRowModel: s5(() => [e5.getState().rowSelection, e5.getSortedRowModel()], (t5, n3) => Object.keys(t5).length ? T6(e5, n3) : { rows: [], flatRows: [], rowsById: {} }, { key: "getGroupedSelectedRowModel", debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugTable; - } }), getIsAllRowsSelected: () => { - const t5 = e5.getFilteredRowModel().flatRows, { rowSelection: n3 } = e5.getState(); - let o4 = Boolean(t5.length && Object.keys(n3).length); - return o4 && t5.some((e6) => e6.getCanSelect() && !n3[e6.id]) && (o4 = false), o4; - }, getIsAllPageRowsSelected: () => { - const t5 = e5.getPaginationRowModel().flatRows, { rowSelection: n3 } = e5.getState(); - let o4 = !!t5.length; - return o4 && t5.some((e6) => !n3[e6.id]) && (o4 = false), o4; - }, getIsSomeRowsSelected: () => { - var _a2; - const t5 = Object.keys((_a2 = e5.getState().rowSelection) != null ? _a2 : {}).length; - return t5 > 0 && t5 < e5.getFilteredRowModel().flatRows.length; - }, getIsSomePageRowsSelected: () => { - const t5 = e5.getPaginationRowModel().flatRows; - return !e5.getIsAllPageRowsSelected() && t5.some((e6) => e6.getIsSelected() || e6.getIsSomeSelected()); - }, getToggleAllRowsSelectedHandler: () => (t5) => { - e5.toggleAllRowsSelected(t5.target.checked); - }, getToggleAllPageRowsSelectedHandler: () => (t5) => { - e5.toggleAllPageRowsSelected(t5.target.checked); - } }), createRow: (e5, t5) => ({ toggleSelected: (n3) => { - const o4 = e5.getIsSelected(); - t5.setRowSelection((l4) => { - if (o4 === (n3 = void 0 !== n3 ? n3 : !o4)) - return l4; - const i5 = { ...l4 }; - return k5(i5, e5.id, n3, t5), i5; - }); - }, getIsSelected: () => { - const { rowSelection: n3 } = t5.getState(); - return B5(e5, n3); - }, getIsSomeSelected: () => { - const { rowSelection: n3 } = t5.getState(); - return "some" === q5(e5, n3); - }, getIsAllSubRowsSelected: () => { - const { rowSelection: n3 } = t5.getState(); - return "all" === q5(e5, n3); - }, getCanSelect: () => { - var _a2; - return "function" == typeof t5.options.enableRowSelection ? t5.options.enableRowSelection(e5) : (_a2 = t5.options.enableRowSelection) != null ? _a2 : true; - }, getCanSelectSubRows: () => { - var _a2; - return "function" == typeof t5.options.enableSubRowSelection ? t5.options.enableSubRowSelection(e5) : (_a2 = t5.options.enableSubRowSelection) != null ? _a2 : true; - }, getCanMultiSelect: () => { - var _a2; - return "function" == typeof t5.options.enableMultiRowSelection ? t5.options.enableMultiRowSelection(e5) : (_a2 = t5.options.enableMultiRowSelection) != null ? _a2 : true; - }, getToggleSelectedHandler: () => { - const t6 = e5.getCanSelect(); - return (n3) => { - var o4; - t6 && e5.toggleSelected(null == (o4 = n3.target) ? void 0 : o4.checked); - }; - } }) }, k5 = (e5, t5, n3, o4) => { - var l4; - const i5 = o4.getRow(t5); - n3 ? (i5.getCanMultiSelect() || Object.keys(e5).forEach((t6) => delete e5[t6]), i5.getCanSelect() && (e5[t5] = true)) : delete e5[t5], null != (l4 = i5.subRows) && l4.length && i5.getCanSelectSubRows() && i5.subRows.forEach((t6) => k5(e5, t6.id, n3, o4)); - }; - function T6(e5, t5) { - const n3 = e5.getState().rowSelection, o4 = [], l4 = {}, i5 = function(e6, t6) { - return e6.map((e7) => { - var t7; - const r4 = B5(e7, n3); - if (r4 && (o4.push(e7), l4[e7.id] = e7), null != (t7 = e7.subRows) && t7.length && (e7 = { ...e7, subRows: i5(e7.subRows) }), r4) - return e7; - }).filter(Boolean); - }; - return { rows: i5(t5.rows), flatRows: o4, rowsById: l4 }; - } - function B5(e5, t5) { - var _a2; - return (_a2 = t5[e5.id]) != null ? _a2 : false; - } - function q5(e5, t5, n3) { - if (e5.subRows && e5.subRows.length) { - let n4 = true, o4 = false; - return e5.subRows.forEach((e6) => { - o4 && !n4 || (B5(e6, t5) ? o4 = true : n4 = false); - }), n4 ? "all" : !!o4 && "some"; - } - return false; - } - const j4 = /([0-9]+)/gm; - function N3(e5, t5) { - return e5 === t5 ? 0 : e5 > t5 ? 1 : -1; - } - function U2(e5) { - return "number" == typeof e5 ? isNaN(e5) || e5 === 1 / 0 || e5 === -1 / 0 ? "" : String(e5) : "string" == typeof e5 ? e5 : ""; - } - function $3(e5, t5) { - const n3 = e5.split(j4).filter(Boolean), o4 = t5.split(j4).filter(Boolean); - for (; n3.length && o4.length; ) { - const e6 = n3.shift(), t6 = o4.shift(), l4 = parseInt(e6, 10), i5 = parseInt(t6, 10), r4 = [l4, i5].sort(); - if (isNaN(r4[0])) { - if (e6 > t6) - return 1; - if (t6 > e6) - return -1; - } else { - if (isNaN(r4[1])) - return isNaN(l4) ? -1 : 1; - if (l4 > i5) - return 1; - if (i5 > l4) - return -1; - } - } - return n3.length - o4.length; - } - const X3 = { alphanumeric: (e5, t5, n3) => $3(U2(e5.getValue(n3)).toLowerCase(), U2(t5.getValue(n3)).toLowerCase()), alphanumericCaseSensitive: (e5, t5, n3) => $3(U2(e5.getValue(n3)), U2(t5.getValue(n3))), text: (e5, t5, n3) => N3(U2(e5.getValue(n3)).toLowerCase(), U2(t5.getValue(n3)).toLowerCase()), textCaseSensitive: (e5, t5, n3) => N3(U2(e5.getValue(n3)), U2(t5.getValue(n3))), datetime: (e5, t5, n3) => { - const o4 = e5.getValue(n3), l4 = t5.getValue(n3); - return o4 > l4 ? 1 : o4 < l4 ? -1 : 0; - }, basic: (e5, t5, n3) => N3(e5.getValue(n3), t5.getValue(n3)) }, K3 = { getInitialState: (e5) => ({ sorting: [], ...e5 }), getDefaultColumnDef: () => ({ sortingFn: "auto" }), getDefaultOptions: (e5) => ({ onSortingChange: i4("sorting", e5), isMultiSortEvent: (e6) => e6.shiftKey }), createColumn: (e5, t5) => ({ getAutoSortingFn: () => { - const n3 = t5.getFilteredRowModel().flatRows.slice(10); - let o4 = false; - for (const t6 of n3) { - const n4 = null == t6 ? void 0 : t6.getValue(e5.id); - if ("[object Date]" === Object.prototype.toString.call(n4)) - return X3.datetime; - if ("string" == typeof n4 && (o4 = true, n4.split(j4).length > 1)) - return X3.alphanumeric; - } - return o4 ? X3.text : X3.basic; - }, getAutoSortDir: () => { - const n3 = t5.getFilteredRowModel().flatRows[0]; - return "string" == typeof (null == n3 ? void 0 : n3.getValue(e5.id)) ? "asc" : "desc"; - }, getSortingFn: () => { - var _a2; - var n3; - if (!e5) - throw new Error(); - return r3(e5.columnDef.sortingFn) ? e5.columnDef.sortingFn : "auto" === e5.columnDef.sortingFn ? e5.getAutoSortingFn() : (_a2 = null == (n3 = t5.options.sortingFns) ? void 0 : n3[e5.columnDef.sortingFn]) != null ? _a2 : X3[e5.columnDef.sortingFn]; - }, toggleSorting: (n3, o4) => { - const l4 = e5.getNextSortingOrder(), i5 = null != n3; - t5.setSorting((r4) => { - var _a2; - const a6 = null == r4 ? void 0 : r4.find((t6) => t6.id === e5.id), s6 = null == r4 ? void 0 : r4.findIndex((t6) => t6.id === e5.id); - let u5, g5 = [], d6 = i5 ? n3 : "desc" === l4; - return u5 = null != r4 && r4.length && e5.getCanMultiSort() && o4 ? a6 ? "toggle" : "add" : null != r4 && r4.length && s6 !== r4.length - 1 ? "replace" : a6 ? "toggle" : "replace", "toggle" === u5 && (i5 || l4 || (u5 = "remove")), "add" === u5 ? (g5 = [...r4, { id: e5.id, desc: d6 }], g5.splice(0, g5.length - ((_a2 = t5.options.maxMultiSortColCount) != null ? _a2 : Number.MAX_SAFE_INTEGER))) : g5 = "toggle" === u5 ? r4.map((t6) => t6.id === e5.id ? { ...t6, desc: d6 } : t6) : "remove" === u5 ? r4.filter((t6) => t6.id !== e5.id) : [{ id: e5.id, desc: d6 }], g5; - }); - }, getFirstSortDir: () => { - var _a2, _b2; - return ((_b2 = (_a2 = e5.columnDef.sortDescFirst) != null ? _a2 : t5.options.sortDescFirst) != null ? _b2 : "desc" === e5.getAutoSortDir()) ? "desc" : "asc"; - }, getNextSortingOrder: (n3) => { - var _a2, _b2; - const o4 = e5.getFirstSortDir(), l4 = e5.getIsSorted(); - return l4 ? !(l4 !== o4 && ((_a2 = t5.options.enableSortingRemoval) != null ? _a2 : 1) && (!n3 || ((_b2 = t5.options.enableMultiRemove) != null ? _b2 : 1))) && ("desc" === l4 ? "asc" : "desc") : o4; - }, getCanSort: () => { - var _a2, _b2; - return ((_a2 = e5.columnDef.enableSorting) != null ? _a2 : true) && ((_b2 = t5.options.enableSorting) != null ? _b2 : true) && !!e5.accessorFn; - }, getCanMultiSort: () => { - var _a2, _b2; - return (_b2 = (_a2 = e5.columnDef.enableMultiSort) != null ? _a2 : t5.options.enableMultiSort) != null ? _b2 : !!e5.accessorFn; - }, getIsSorted: () => { - var n3; - const o4 = null == (n3 = t5.getState().sorting) ? void 0 : n3.find((t6) => t6.id === e5.id); - return !!o4 && (o4.desc ? "desc" : "asc"); - }, getSortIndex: () => { - var _a2; - var n3; - return (_a2 = null == (n3 = t5.getState().sorting) ? void 0 : n3.findIndex((t6) => t6.id === e5.id)) != null ? _a2 : -1; - }, clearSorting: () => { - t5.setSorting((t6) => null != t6 && t6.length ? t6.filter((t7) => t7.id !== e5.id) : []); - }, getToggleSortingHandler: () => { - const n3 = e5.getCanSort(); - return (o4) => { - n3 && (null == o4.persist || o4.persist(), null == e5.toggleSorting || e5.toggleSorting(void 0, !!e5.getCanMultiSort() && (null == t5.options.isMultiSortEvent ? void 0 : t5.options.isMultiSortEvent(o4)))); - }; - } }), createTable: (e5) => ({ setSorting: (t5) => null == e5.options.onSortingChange ? void 0 : e5.options.onSortingChange(t5), resetSorting: (t5) => { - var _a2; - var n3; - e5.setSorting(t5 ? [] : (_a2 = null == (n3 = e5.initialState) ? void 0 : n3.sorting) != null ? _a2 : []); - }, getPreSortedRowModel: () => e5.getGroupedRowModel(), getSortedRowModel: () => (!e5._getSortedRowModel && e5.options.getSortedRowModel && (e5._getSortedRowModel = e5.options.getSortedRowModel(e5)), e5.options.manualSorting || !e5._getSortedRowModel ? e5.getPreSortedRowModel() : e5._getSortedRowModel()) }) }, J2 = { getInitialState: (e5) => ({ columnVisibility: {}, ...e5 }), getDefaultOptions: (e5) => ({ onColumnVisibilityChange: i4("columnVisibility", e5) }), createColumn: (e5, t5) => ({ toggleVisibility: (n3) => { - e5.getCanHide() && t5.setColumnVisibility((t6) => ({ ...t6, [e5.id]: n3 != null ? n3 : !e5.getIsVisible() })); - }, getIsVisible: () => { - var _a2; - var n3; - return (_a2 = null == (n3 = t5.getState().columnVisibility) ? void 0 : n3[e5.id]) != null ? _a2 : true; - }, getCanHide: () => { - var _a2, _b2; - return ((_a2 = e5.columnDef.enableHiding) != null ? _a2 : true) && ((_b2 = t5.options.enableHiding) != null ? _b2 : true); - }, getToggleVisibilityHandler: () => (t6) => { - null == e5.toggleVisibility || e5.toggleVisibility(t6.target.checked); - } }), createRow: (e5, t5) => ({ _getAllVisibleCells: s5(() => [e5.getAllCells(), t5.getState().columnVisibility], (e6) => e6.filter((e7) => e7.column.getIsVisible()), { key: "row._getAllVisibleCells", debug: () => { - var _a2; - return (_a2 = t5.options.debugAll) != null ? _a2 : t5.options.debugRows; - } }), getVisibleCells: s5(() => [e5.getLeftVisibleCells(), e5.getCenterVisibleCells(), e5.getRightVisibleCells()], (e6, t6, n3) => [...e6, ...t6, ...n3], { key: false, debug: () => { - var _a2; - return (_a2 = t5.options.debugAll) != null ? _a2 : t5.options.debugRows; - } }) }), createTable: (e5) => { - const t5 = (t6, n3) => s5(() => [n3(), n3().filter((e6) => e6.getIsVisible()).map((e6) => e6.id).join("_")], (e6) => e6.filter((e7) => null == e7.getIsVisible ? void 0 : e7.getIsVisible()), { key: t6, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugColumns; - } }); - return { getVisibleFlatColumns: t5("getVisibleFlatColumns", () => e5.getAllFlatColumns()), getVisibleLeafColumns: t5("getVisibleLeafColumns", () => e5.getAllLeafColumns()), getLeftVisibleLeafColumns: t5("getLeftVisibleLeafColumns", () => e5.getLeftLeafColumns()), getRightVisibleLeafColumns: t5("getRightVisibleLeafColumns", () => e5.getRightLeafColumns()), getCenterVisibleLeafColumns: t5("getCenterVisibleLeafColumns", () => e5.getCenterLeafColumns()), setColumnVisibility: (t6) => null == e5.options.onColumnVisibilityChange ? void 0 : e5.options.onColumnVisibilityChange(t6), resetColumnVisibility: (t6) => { - var _a2; - e5.setColumnVisibility(t6 ? {} : (_a2 = e5.initialState.columnVisibility) != null ? _a2 : {}); - }, toggleAllColumnsVisible: (t6) => { - t6 = t6 != null ? t6 : !e5.getIsAllColumnsVisible(), e5.setColumnVisibility(e5.getAllLeafColumns().reduce((e6, n3) => ({ ...e6, [n3.id]: t6 || !(null != n3.getCanHide && n3.getCanHide()) }), {})); - }, getIsAllColumnsVisible: () => !e5.getAllLeafColumns().some((e6) => !(null != e6.getIsVisible && e6.getIsVisible())), getIsSomeColumnsVisible: () => e5.getAllLeafColumns().some((e6) => null == e6.getIsVisible ? void 0 : e6.getIsVisible()), getToggleAllColumnsVisibilityHandler: () => (t6) => { - var n3; - e5.toggleAllColumnsVisible(null == (n3 = t6.target) ? void 0 : n3.checked); - } }; - } }, Q3 = [d5, J2, z5, O4, P4, K3, G3, h5, L4, D3, f4]; - function W2(e5) { - var _a2; - (e5.debugAll || e5.debugTable) && console.info("Creating Table Instance..."); - let t5 = { _features: Q3 }; - const n3 = t5._features.reduce((e6, n4) => Object.assign(e6, null == n4.getDefaultOptions ? void 0 : n4.getDefaultOptions(t5)), {}); - let o4 = { ...(_a2 = e5.initialState) != null ? _a2 : {} }; - t5._features.forEach((e6) => { - var _a3; - o4 = (_a3 = null == e6.getInitialState ? void 0 : e6.getInitialState(o4)) != null ? _a3 : o4; - }); - const i5 = []; - let r4 = false; - const a6 = { _features: Q3, options: { ...n3, ...e5 }, initialState: o4, _queue: (e6) => { - i5.push(e6), r4 || (r4 = true, Promise.resolve().then(() => { - for (; i5.length; ) - i5.shift()(); - r4 = false; - }).catch((e7) => setTimeout(() => { - throw e7; - }))); - }, reset: () => { - t5.setState(t5.initialState); - }, setOptions: (e6) => { - const o5 = l3(e6, t5.options); - t5.options = ((e7) => t5.options.mergeOptions ? t5.options.mergeOptions(n3, e7) : { ...n3, ...e7 })(o5); - }, getState: () => t5.options.state, setState: (e6) => { - null == t5.options.onStateChange || t5.options.onStateChange(e6); - }, _getRowId: (e6, n4, o5) => { - var _a3; - return (_a3 = null == t5.options.getRowId ? void 0 : t5.options.getRowId(e6, n4, o5)) != null ? _a3 : `${o5 ? [o5.id, n4].join(".") : n4}`; - }, getCoreRowModel: () => (t5._getCoreRowModel || (t5._getCoreRowModel = t5.options.getCoreRowModel(t5)), t5._getCoreRowModel()), getRowModel: () => t5.getPaginationRowModel(), getRow: (e6) => { - const n4 = t5.getRowModel().rowsById[e6]; - if (!n4) - throw new Error(); - return n4; - }, _getDefaultColumnDef: s5(() => [t5.options.defaultColumn], (e6) => (e6 = e6 != null ? e6 : {}, { header: (e7) => { - const t6 = e7.header.column.columnDef; - return t6.accessorKey ? t6.accessorKey : t6.accessorFn ? t6.id : null; - }, cell: (e7) => { - var _a3; - var t6; - return (_a3 = null == (t6 = e7.renderValue()) || null == t6.toString ? void 0 : t6.toString()) != null ? _a3 : null; - }, ...t5._features.reduce((e7, t6) => Object.assign(e7, null == t6.getDefaultColumnDef ? void 0 : t6.getDefaultColumnDef()), {}), ...e6 }), { debug: () => { - var _a3; - return (_a3 = t5.options.debugAll) != null ? _a3 : t5.options.debugColumns; - }, key: false }), _getColumnDefs: () => t5.options.columns, getAllColumns: s5(() => [t5._getColumnDefs()], (e6) => { - const n4 = function(e7, o5, l4) { - return void 0 === l4 && (l4 = 0), e7.map((e8) => { - const i6 = u4(t5, e8, l4, o5), r5 = e8; - return i6.columns = r5.columns ? n4(r5.columns, i6, l4 + 1) : [], i6; - }); - }; - return n4(e6); - }, { key: false, debug: () => { - var _a3; - return (_a3 = t5.options.debugAll) != null ? _a3 : t5.options.debugColumns; - } }), getAllFlatColumns: s5(() => [t5.getAllColumns()], (e6) => e6.flatMap((e7) => e7.getFlatColumns()), { key: false, debug: () => { - var _a3; - return (_a3 = t5.options.debugAll) != null ? _a3 : t5.options.debugColumns; - } }), _getAllFlatColumnsById: s5(() => [t5.getAllFlatColumns()], (e6) => e6.reduce((e7, t6) => (e7[t6.id] = t6, e7), {}), { key: false, debug: () => { - var _a3; - return (_a3 = t5.options.debugAll) != null ? _a3 : t5.options.debugColumns; - } }), getAllLeafColumns: s5(() => [t5.getAllColumns(), t5._getOrderColumnsFn()], (e6, t6) => t6(e6.flatMap((e7) => e7.getLeafColumns())), { key: false, debug: () => { - var _a3; - return (_a3 = t5.options.debugAll) != null ? _a3 : t5.options.debugColumns; - } }), getColumn: (e6) => { - const n4 = t5._getAllFlatColumnsById()[e6]; - if (!n4) - throw new Error(); - return n4; - } }; - return Object.assign(t5, a6), t5._features.forEach((e6) => Object.assign(t5, null == e6.createTable ? void 0 : e6.createTable(t5))), t5; - } - function Y3(e5, t5, n3, o4) { - const l4 = { id: `${t5.id}_${n3.id}`, row: t5, column: n3, getValue: () => t5.getValue(o4), renderValue: () => { - var _a2; - return (_a2 = l4.getValue()) != null ? _a2 : e5.options.renderFallbackValue; - }, getContext: s5(() => [e5, n3, t5, l4], (e6, t6, n4, o5) => ({ table: e6, column: t6, row: n4, cell: o5, getValue: o5.getValue, renderValue: o5.renderValue }), { key: false, debug: () => e5.options.debugAll }) }; - return e5._features.forEach((o5) => { - Object.assign(l4, null == o5.createCell ? void 0 : o5.createCell(l4, n3, t5, e5)); - }, {}), l4; - } - const Z2 = (e5, t5, n3, o4, l4, i5) => { - let r4 = { id: t5, index: o4, original: n3, depth: l4, _valuesCache: {}, _uniqueValuesCache: {}, getValue: (t6) => { - if (r4._valuesCache.hasOwnProperty(t6)) - return r4._valuesCache[t6]; - const n4 = e5.getColumn(t6); - return n4.accessorFn ? (r4._valuesCache[t6] = n4.accessorFn(r4.original, o4), r4._valuesCache[t6]) : void 0; - }, getUniqueValues: (t6) => { - if (r4._uniqueValuesCache.hasOwnProperty(t6)) - return r4._uniqueValuesCache[t6]; - const n4 = e5.getColumn(t6); - return n4.accessorFn ? n4.columnDef.getUniqueValues ? (r4._uniqueValuesCache[t6] = n4.columnDef.getUniqueValues(r4.original, o4), r4._uniqueValuesCache[t6]) : (r4._uniqueValuesCache[t6] = [r4.getValue(t6)], r4._uniqueValuesCache[t6]) : void 0; - }, renderValue: (t6) => { - var _a2; - return (_a2 = r4.getValue(t6)) != null ? _a2 : e5.options.renderFallbackValue; - }, subRows: i5 != null ? i5 : [], getLeafRows: () => a5(r4.subRows, (e6) => e6.subRows), getAllCells: s5(() => [e5.getAllLeafColumns()], (t6) => t6.map((t7) => Y3(e5, r4, t7, t7.id)), { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugRows; - } }), _getAllCellsByColumnId: s5(() => [r4.getAllCells()], (e6) => e6.reduce((e7, t6) => (e7[t6.column.id] = t6, e7), {}), { key: "row.getAllCellsByColumnId", debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugRows; - } }) }; - for (let t6 = 0; t6 < e5._features.length; t6++) { - const n4 = e5._features[t6]; - Object.assign(r4, null == n4 || null == n4.createRow ? void 0 : n4.createRow(r4, e5)); - } - return r4; - }; - function ee(e5, t5, n3) { - return n3.options.filterFromLeafRows ? function(e6, t6, n4) { - var _a2; - const o4 = [], l4 = {}, i5 = (_a2 = n4.options.maxLeafRowFilterDepth) != null ? _a2 : 100, r4 = function(e7, o5) { - void 0 === o5 && (o5 = 0); - const a6 = []; - for (let u5 = 0; u5 < e7.length; u5++) { - var s6; - let g5 = e7[u5]; - const d6 = Z2(n4, g5.id, g5.original, g5.index, g5.depth); - if (d6.columnFilters = g5.columnFilters, null != (s6 = g5.subRows) && s6.length && o5 < i5) { - if (d6.subRows = r4(g5.subRows, o5 + 1), g5 = d6, t6(g5) && !d6.subRows.length) { - a6.push(g5), l4[g5.id] = g5, l4[u5] = g5; - continue; - } - if (t6(g5) || d6.subRows.length) { - a6.push(g5), l4[g5.id] = g5, l4[u5] = g5; - continue; - } - } else - g5 = d6, t6(g5) && (a6.push(g5), l4[g5.id] = g5, l4[u5] = g5); - } - return a6; - }; - return { rows: r4(e6), flatRows: o4, rowsById: l4 }; - }(e5, t5, n3) : function(e6, t6, n4) { - var _a2; - const o4 = [], l4 = {}, i5 = (_a2 = n4.options.maxLeafRowFilterDepth) != null ? _a2 : 100, r4 = function(e7, a6) { - void 0 === a6 && (a6 = 0); - const s6 = []; - for (let g5 = 0; g5 < e7.length; g5++) { - let d6 = e7[g5]; - if (t6(d6)) { - var u5; - if (null != (u5 = d6.subRows) && u5.length && a6 < i5) { - const e8 = Z2(n4, d6.id, d6.original, d6.index, d6.depth); - e8.subRows = r4(d6.subRows, a6 + 1), d6 = e8; - } - s6.push(d6), o4.push(d6), l4[d6.id] = d6; - } - } - return s6; - }; - return { rows: r4(e6), flatRows: o4, rowsById: l4 }; - }(e5, t5, n3); - } - function te(e5) { - const t5 = [], n3 = (e6) => { - var o4; - t5.push(e6), null != (o4 = e6.subRows) && o4.length && e6.getIsExpanded() && e6.subRows.forEach(n3); - }; - return e5.rows.forEach(n3), { rows: t5, flatRows: e5.flatRows, rowsById: e5.rowsById }; - } - e4.ColumnSizing = f4, e4.Expanding = h5, e4.Filters = P4, e4.Grouping = G3, e4.Headers = d5, e4.Ordering = z5, e4.Pagination = L4, e4.Pinning = O4, e4.RowSelection = D3, e4.Sorting = K3, e4.Visibility = J2, e4.aggregationFns = E3, e4.buildHeaderGroups = c4, e4.createCell = Y3, e4.createColumn = u4, e4.createColumnHelper = function() { - return { accessor: (e5, t5) => "function" == typeof e5 ? { ...t5, accessorFn: e5 } : { ...t5, accessorKey: e5 }, display: (e5) => e5, group: (e5) => e5 }; - }, e4.createRow = Z2, e4.createTable = W2, e4.defaultColumnSizing = p3, e4.expandRows = te, e4.filterFns = I4, e4.flattenBy = a5, e4.flexRender = function(e5, t5) { - return e5 ? function(e6) { - return "function" == typeof e6 && (() => { - const t6 = Object.getPrototypeOf(e6); - return t6.prototype && t6.prototype.isReactComponent; - })(); - }(n3 = e5) || "function" == typeof n3 || function(e6) { - return "object" == typeof e6 && "symbol" == typeof e6.$$typeof && ["react.memo", "react.forward_ref"].includes(e6.$$typeof.description); - }(n3) ? o3.createElement(e5, t5) : e5 : null; - var n3; - }, e4.functionalUpdate = l3, e4.getCoreRowModel = function() { - return (e5) => s5(() => [e5.options.data], (t5) => { - const n3 = { rows: [], flatRows: [], rowsById: {} }, o4 = function(t6, l4, i5) { - void 0 === l4 && (l4 = 0); - const r4 = []; - for (let s6 = 0; s6 < t6.length; s6++) { - const u5 = Z2(e5, e5._getRowId(t6[s6], s6, i5), t6[s6], s6, l4); - var a6; - if (n3.flatRows.push(u5), n3.rowsById[u5.id] = u5, r4.push(u5), e5.options.getSubRows) - u5.originalSubRows = e5.options.getSubRows(t6[s6], s6), null != (a6 = u5.originalSubRows) && a6.length && (u5.subRows = o4(u5.originalSubRows, l4 + 1, u5)); - } - return r4; - }; - return n3.rows = o4(t5), n3; - }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugTable; - }, onChange: () => { - e5._autoResetPageIndex(); - } }); - }, e4.getExpandedRowModel = function() { - return (e5) => s5(() => [e5.getState().expanded, e5.getPreExpandedRowModel(), e5.options.paginateExpandedRows], (e6, t5, n3) => !t5.rows.length || true !== e6 && !Object.keys(e6 != null ? e6 : {}).length ? t5 : n3 ? te(t5) : t5, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugTable; - } }); - }, e4.getFacetedMinMaxValues = function() { - return (e5, t5) => s5(() => [e5.getColumn(t5).getFacetedRowModel()], (e6) => { - var n3; - const o4 = null == (n3 = e6.flatRows[0]) ? void 0 : n3.getUniqueValues(t5); - if (void 0 === o4) - return; - let l4 = [o4, o4]; - for (let n4 = 0; n4 < e6.flatRows.length; n4++) { - const o5 = e6.flatRows[n4].getUniqueValues(t5); - for (let e7 = 0; e7 < o5.length; e7++) { - const t6 = o5[e7]; - t6 < l4[0] ? l4[0] = t6 : t6 > l4[1] && (l4[1] = t6); - } - } - return l4; - }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugTable; - }, onChange: () => { - } }); - }, e4.getFacetedRowModel = function() { - return (e5, t5) => s5(() => [e5.getPreFilteredRowModel(), e5.getState().columnFilters, e5.getState().globalFilter, e5.getFilteredRowModel()], (n3, o4, l4) => { - if (!n3.rows.length || (null == o4 || !o4.length) && !l4) - return n3; - const i5 = [...o4.map((e6) => e6.id).filter((e6) => e6 !== t5), l4 ? "__global__" : void 0].filter(Boolean); - return ee(n3.rows, (e6) => { - for (let t6 = 0; t6 < i5.length; t6++) - if (false === e6.columnFilters[i5[t6]]) - return false; - return true; - }, e5); - }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugTable; - }, onChange: () => { - } }); - }, e4.getFacetedUniqueValues = function() { - return (e5, t5) => s5(() => [e5.getColumn(t5).getFacetedRowModel()], (e6) => { - var _a2; - let n3 = /* @__PURE__ */ new Map(); - for (let o4 = 0; o4 < e6.flatRows.length; o4++) { - const l4 = e6.flatRows[o4].getUniqueValues(t5); - for (let e7 = 0; e7 < l4.length; e7++) { - const t6 = l4[e7]; - n3.has(t6) ? n3.set(t6, ((_a2 = n3.get(t6)) != null ? _a2 : 0) + 1) : n3.set(t6, 1); - } - } - return n3; - }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugTable; - }, onChange: () => { - } }); - }, e4.getFilteredRowModel = function() { - return (e5) => s5(() => [e5.getPreFilteredRowModel(), e5.getState().columnFilters, e5.getState().globalFilter], (t5, n3, o4) => { - if (!t5.rows.length || (null == n3 || !n3.length) && !o4) { - for (let e6 = 0; e6 < t5.flatRows.length; e6++) - t5.flatRows[e6].columnFilters = {}, t5.flatRows[e6].columnFiltersMeta = {}; - return t5; - } - const l4 = [], i5 = []; - (n3 != null ? n3 : []).forEach((t6) => { - var _a2; - const n4 = e5.getColumn(t6.id).getFilterFn(); - n4 && l4.push({ id: t6.id, filterFn: n4, resolvedValue: (_a2 = null == n4.resolveFilterValue ? void 0 : n4.resolveFilterValue(t6.value)) != null ? _a2 : t6.value }); - }); - const r4 = n3.map((e6) => e6.id), a6 = e5.getGlobalFilterFn(), s6 = e5.getAllLeafColumns().filter((e6) => e6.getCanGlobalFilter()); - let u5, g5; - o4 && a6 && s6.length && (r4.push("__global__"), s6.forEach((e6) => { - var _a2; - i5.push({ id: e6.id, filterFn: a6, resolvedValue: (_a2 = null == a6.resolveFilterValue ? void 0 : a6.resolveFilterValue(o4)) != null ? _a2 : o4 }); - })); - for (let e6 = 0; e6 < t5.flatRows.length; e6++) { - const n4 = t5.flatRows[e6]; - if (n4.columnFilters = {}, l4.length) - for (let e7 = 0; e7 < l4.length; e7++) { - u5 = l4[e7]; - const t6 = u5.id; - n4.columnFilters[t6] = u5.filterFn(n4, t6, u5.resolvedValue, (e8) => { - n4.columnFiltersMeta[t6] = e8; - }); - } - if (i5.length) { - for (let e7 = 0; e7 < i5.length; e7++) { - g5 = i5[e7]; - const t6 = g5.id; - if (g5.filterFn(n4, t6, g5.resolvedValue, (e8) => { - n4.columnFiltersMeta[t6] = e8; - })) { - n4.columnFilters.__global__ = true; - break; - } - } - true !== n4.columnFilters.__global__ && (n4.columnFilters.__global__ = false); - } - } - return ee(t5.rows, (e6) => { - for (let t6 = 0; t6 < r4.length; t6++) - if (false === e6.columnFilters[r4[t6]]) - return false; - return true; - }, e5); - }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugTable; - }, onChange: () => { - e5._autoResetPageIndex(); - } }); - }, e4.getGroupedRowModel = function() { - return (e5) => s5(() => [e5.getState().grouping, e5.getPreGroupedRowModel()], (t5, n3) => { - if (!n3.rows.length || !t5.length) - return n3; - const o4 = t5.filter((t6) => e5.getColumn(t6)), l4 = [], i5 = {}, r4 = function(t6, n4, s7) { - if (void 0 === n4 && (n4 = 0), n4 >= o4.length) - return t6.map((e6) => (e6.depth = n4, l4.push(e6), i5[e6.id] = e6, e6.subRows && (e6.subRows = r4(e6.subRows, n4 + 1)), e6)); - const u5 = o4[n4], g5 = function(e6, t7) { - const n5 = /* @__PURE__ */ new Map(); - return e6.reduce((e7, n6) => { - const o5 = `${n6.getValue(t7)}`, l5 = e7.get(o5); - return l5 ? l5.push(n6) : e7.set(o5, [n6]), e7; - }, n5); - }(t6, u5), d6 = Array.from(g5.entries()).map((t7, g6) => { - let [d7, c5] = t7, p4 = `${u5}:${d7}`; - p4 = s7 ? `${s7}>${p4}` : p4; - const f5 = r4(c5, n4 + 1, p4), m6 = n4 ? a5(c5, (e6) => e6.subRows) : c5, b5 = Z2(e5, p4, m6[0].original, g6, n4); - return Object.assign(b5, { groupingColumnId: u5, groupingValue: d7, subRows: f5, leafRows: m6, getValue: (t8) => { - var _a2; - if (o4.includes(t8)) - return b5._valuesCache.hasOwnProperty(t8) || c5[0] && (b5._valuesCache[t8] = (_a2 = c5[0].getValue(t8)) != null ? _a2 : void 0), b5._valuesCache[t8]; - if (b5._groupingValuesCache.hasOwnProperty(t8)) - return b5._groupingValuesCache[t8]; - const n5 = e5.getColumn(t8).getAggregationFn(); - return n5 ? (b5._groupingValuesCache[t8] = n5(t8, m6, c5), b5._groupingValuesCache[t8]) : void 0; - } }), f5.forEach((e6) => { - l4.push(e6), i5[e6.id] = e6; - }), b5; - }); - return d6; - }, s6 = r4(n3.rows, 0, ""); - return s6.forEach((e6) => { - l4.push(e6), i5[e6.id] = e6; - }), { rows: s6, flatRows: l4, rowsById: i5 }; - }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugTable; - }, onChange: () => { - e5._queue(() => { - e5._autoResetExpanded(), e5._autoResetPageIndex(); - }); - } }); - }, e4.getPaginationRowModel = function(e5) { - return (e6) => s5(() => [e6.getState().pagination, e6.getPrePaginationRowModel(), e6.options.paginateExpandedRows ? void 0 : e6.getState().expanded], (t5, n3) => { - if (!n3.rows.length) - return n3; - const { pageSize: o4, pageIndex: l4 } = t5; - let { rows: i5, flatRows: r4, rowsById: a6 } = n3; - const s6 = o4 * l4, u5 = s6 + o4; - let g5; - i5 = i5.slice(s6, u5), g5 = e6.options.paginateExpandedRows ? { rows: i5, flatRows: r4, rowsById: a6 } : te({ rows: i5, flatRows: r4, rowsById: a6 }), g5.flatRows = []; - const d6 = (e7) => { - g5.flatRows.push(e7), e7.subRows.length && e7.subRows.forEach(d6); - }; - return g5.rows.forEach(d6), g5; - }, { key: false, debug: () => { - var _a2; - return (_a2 = e6.options.debugAll) != null ? _a2 : e6.options.debugTable; - } }); - }, e4.getSortedRowModel = function() { - return (e5) => s5(() => [e5.getState().sorting, e5.getPreSortedRowModel()], (t5, n3) => { - if (!n3.rows.length || null == t5 || !t5.length) - return n3; - const o4 = e5.getState().sorting, l4 = [], i5 = o4.filter((t6) => e5.getColumn(t6.id).getCanSort()), r4 = {}; - i5.forEach((t6) => { - const n4 = e5.getColumn(t6.id); - r4[t6.id] = { sortUndefined: n4.columnDef.sortUndefined, invertSorting: n4.columnDef.invertSorting, sortingFn: n4.getSortingFn() }; - }); - const a6 = (e6) => { - const t6 = [...e6]; - return t6.sort((e7, t7) => { - var _a2; - for (let n4 = 0; n4 < i5.length; n4 += 1) { - const o5 = i5[n4], l5 = r4[o5.id], a7 = (_a2 = null == o5 ? void 0 : o5.desc) != null ? _a2 : false; - if (l5.sortUndefined) { - const n5 = void 0 === e7.getValue(o5.id), i6 = void 0 === t7.getValue(o5.id); - if (n5 || i6) - return n5 && i6 ? 0 : n5 ? l5.sortUndefined : -l5.sortUndefined; - } - let s6 = l5.sortingFn(e7, t7, o5.id); - if (0 !== s6) - return a7 && (s6 *= -1), l5.invertSorting && (s6 *= -1), s6; - } - return e7.index - t7.index; - }), t6.forEach((e7) => { - var t7; - l4.push(e7), null != (t7 = e7.subRows) && t7.length && (e7.subRows = a6(e7.subRows)); - }), t6; - }; - return { rows: a6(n3.rows), flatRows: l4, rowsById: n3.rowsById }; - }, { key: false, debug: () => { - var _a2; - return (_a2 = e5.options.debugAll) != null ? _a2 : e5.options.debugTable; - }, onChange: () => { - e5._autoResetPageIndex(); - } }); - }, e4.isFunction = r3, e4.isRowSelected = B5, e4.isSubRowSelected = q5, e4.makeStateUpdater = i4, e4.memo = s5, e4.noop = function() { - }, e4.orderColumns = H5, e4.passiveEventSupported = b4, e4.reSplitAlphaNumeric = j4, e4.selectRowsFn = T6, e4.shouldAutoRemoveFilter = A4, e4.sortingFns = X3, e4.useReactTable = function(e5) { - const t5 = { state: {}, onStateChange: () => { - }, renderFallbackValue: null, ...e5 }, [n3] = o3.useState(() => ({ current: W2(t5) })), [l4, i5] = o3.useState(() => n3.current.initialState); - return n3.current.setOptions((t6) => ({ ...t6, ...e5, state: { ...l4, ...e5.state }, onStateChange: (t7) => { - i5(t7), null == e5.onStateChange || e5.onStateChange(t7); - } })), n3.current; - }, Object.defineProperty(e4, "__esModule", { value: true }); - }); - } -}); - // node_modules/sql.js/dist/sql-wasm.js var require_sql_wasm = __commonJS({ "node_modules/sql.js/dist/sql-wasm.js"(exports, module2) { @@ -16398,7 +13422,7 @@ var require_sql_wasm = __commonJS({ var mb = { open: function(a5) { var b4 = ib[a5.node.rdev]; if (!b4) - throw new P4(43); + throw new P3(43); a5.tty = b4; a5.seekable = false; }, close: function(a5) { @@ -16407,15 +13431,15 @@ var require_sql_wasm = __commonJS({ a5.tty.Xa.fsync(a5.tty); }, read: function(a5, b4, c4, d5) { if (!a5.tty || !a5.tty.Xa.tb) - throw new P4(60); + throw new P3(60); for (var f4 = 0, h5 = 0; h5 < d5; h5++) { try { var k5 = a5.tty.Xa.tb(a5.tty); } catch (q5) { - throw new P4(29); + throw new P3(29); } if (void 0 === k5 && 0 === f4) - throw new P4(6); + throw new P3(6); if (null === k5 || void 0 === k5) break; f4++; @@ -16425,12 +13449,12 @@ var require_sql_wasm = __commonJS({ return f4; }, write: function(a5, b4, c4, d5) { if (!a5.tty || !a5.tty.Xa.jb) - throw new P4(60); + throw new P3(60); try { for (var f4 = 0; f4 < d5; f4++) a5.tty.Xa.jb(a5.tty, b4[c4 + f4]); } catch (h5) { - throw new P4(29); + throw new P3(29); } d5 && (a5.node.timestamp = Date.now()); return f4; @@ -16472,7 +13496,7 @@ var require_sql_wasm = __commonJS({ ); }, createNode: function(a5, b4, c4, d5) { if (24576 === (c4 & 61440) || 4096 === (c4 & 61440)) - throw new P4(63); + throw new P3(63); Q3.Qa || (Q3.Qa = { dir: { node: { Pa: Q3.Ga.Pa, Oa: Q3.Ga.Oa, lookup: Q3.Ga.lookup, ab: Q3.Ga.ab, rename: Q3.Ga.rename, unlink: Q3.Ga.unlink, rmdir: Q3.Ga.rmdir, readdir: Q3.Ga.readdir, symlink: Q3.Ga.symlink }, stream: { Ta: Q3.Ha.Ta } }, file: { node: { Pa: Q3.Ga.Pa, Oa: Q3.Ga.Oa }, stream: { Ta: Q3.Ha.Ta, read: Q3.Ha.read, write: Q3.Ha.write, lb: Q3.Ha.lb, bb: Q3.Ha.bb, cb: Q3.Ha.cb } }, link: { node: { Pa: Q3.Ga.Pa, Oa: Q3.Ga.Oa, readlink: Q3.Ga.readlink }, stream: {} }, pb: { node: { Pa: Q3.Ga.Pa, Oa: Q3.Ga.Oa }, stream: vb @@ -16529,7 +13553,7 @@ var require_sql_wasm = __commonJS({ } if (d5) for (var f4 in d5.Ia) - throw new P4(55); + throw new P3(55); } delete a5.parent.Ia[a5.name]; a5.parent.timestamp = Date.now(); @@ -16543,7 +13567,7 @@ var require_sql_wasm = __commonJS({ }, rmdir: function(a5, b4) { var c4 = yb(a5, b4), d5; for (d5 in c4.Ia) - throw new P4(55); + throw new P3(55); delete a5.Ia[b4]; a5.timestamp = Date.now(); }, readdir: function(a5) { @@ -16557,7 +13581,7 @@ var require_sql_wasm = __commonJS({ return a5; }, readlink: function(a5) { if (40960 !== (a5.mode & 61440)) - throw new P4(28); + throw new P3(28); return a5.link; } }, Ha: { read: function(a5, b4, c4, d5, f4) { var h5 = a5.node.Ia; @@ -16595,14 +13619,14 @@ var require_sql_wasm = __commonJS({ }, Ta: function(a5, b4, c4) { 1 === c4 ? b4 += a5.position : 2 === c4 && 32768 === (a5.node.mode & 61440) && (b4 += a5.node.Ma); if (0 > b4) - throw new P4(28); + throw new P3(28); return b4; }, lb: function(a5, b4, c4) { Q3.qb(a5.node, b4 + c4); a5.node.Ma = Math.max(a5.node.Ma, b4 + c4); }, bb: function(a5, b4, c4, d5, f4) { if (32768 !== (a5.node.mode & 61440)) - throw new P4(43); + throw new P3(43); a5 = a5.node.Ia; if (f4 & 2 || a5.buffer !== Na) { if (0 < c4 || c4 + b4 < a5.length) @@ -16615,25 +13639,25 @@ var require_sql_wasm = __commonJS({ b4 = 65536 * Math.ceil(b4 / 65536); (f4 = zb(65536, b4)) ? (u4.fill(0, f4, f4 + b4), b4 = f4) : b4 = 0; if (!b4) - throw new P4(48); + throw new P3(48); r3.set(a5, b4); } else c4 = false, b4 = a5.byteOffset; return { Fb: b4, vb: c4 }; }, cb: function(a5, b4, c4, d5, f4) { if (32768 !== (a5.node.mode & 61440)) - throw new P4(43); + throw new P3(43); if (f4 & 2) return 0; Q3.Ha.write(a5, b4, 0, d5, c4, false); return 0; - } } }, Ab = null, Bb = {}, R3 = [], Cb = 1, T6 = null, Db = true, P4 = null, xb = {}, U2 = (a5, b4 = {}) => { + } } }, Ab = null, Bb = {}, R3 = [], Cb = 1, T6 = null, Db = true, P3 = null, xb = {}, U2 = (a5, b4 = {}) => { a5 = hb("/", a5); if (!a5) return { path: "", node: null }; b4 = Object.assign({ rb: true, kb: 0 }, b4); if (8 < b4.kb) - throw new P4(32); + throw new P3(32); a5 = db(a5.split("/").filter((k5) => !!k5), false); for (var c4 = Ab, d5 = "/", f4 = 0; f4 < a5.length; f4++) { var h5 = f4 === a5.length - 1; @@ -16645,7 +13669,7 @@ var require_sql_wasm = __commonJS({ if (!h5 || b4.Sa) { for (h5 = 0; 40960 === (c4.mode & 61440); ) if (c4 = Eb(d5), d5 = hb(eb(d5), c4), c4 = U2(d5, { kb: b4.kb + 1 }).node, 40 < h5++) - throw new P4(32); + throw new P3(32); } } return { path: d5, node: c4 }; @@ -16675,7 +13699,7 @@ var require_sql_wasm = __commonJS({ }, yb = (a5, b4) => { var c4; if (c4 = (c4 = Hb(a5, "x")) ? c4 : a5.Ga.lookup ? 0 : 2) - throw new P4(c4, a5); + throw new P3(c4, a5); for (c4 = T6[Fb(a5.id, b4)]; c4; c4 = c4.Wa) { var d5 = c4.name; if (c4.parent.id === a5.id && d5 === b4) @@ -16726,7 +13750,7 @@ var require_sql_wasm = __commonJS({ for (; 4096 >= a5; a5++) if (!R3[a5]) return a5; - throw new P4(33); + throw new P3(33); }, Pb = (a5, b4) => { Ob || (Ob = function() { this.$a = {}; @@ -16751,21 +13775,21 @@ var require_sql_wasm = __commonJS({ a5.Ha = Bb[a5.node.rdev].Ha; a5.Ha.open && a5.Ha.open(a5); }, Ta: () => { - throw new P4(70); + throw new P3(70); } }, lb = (a5, b4) => { Bb[a5] = { Ha: b4 }; }, Qb = (a5, b4) => { var c4 = "/" === b4, d5 = !b4; if (c4 && Ab) - throw new P4(10); + throw new P3(10); if (!c4 && !d5) { var f4 = U2(b4, { rb: false }); b4 = f4.path; f4 = f4.node; if (f4.Va) - throw new P4(10); + throw new P3(10); if (16384 !== (f4.mode & 61440)) - throw new P4(54); + throw new P3(54); } b4 = { type: a5, Kb: {}, ub: b4, Eb: [] }; a5 = a5.Ra(b4); @@ -16776,91 +13800,91 @@ var require_sql_wasm = __commonJS({ var d5 = U2(a5, { parent: true }).node; a5 = fb(a5); if (!a5 || "." === a5 || ".." === a5) - throw new P4(28); + throw new P3(28); var f4 = Lb(d5, a5); if (f4) - throw new P4(f4); + throw new P3(f4); if (!d5.Ga.ab) - throw new P4(63); + throw new P3(63); return d5.Ga.ab(d5, a5, b4, c4); }, V3 = (a5, b4) => ha(a5, (void 0 !== b4 ? b4 : 511) & 1023 | 16384, 0), Rb = (a5, b4, c4) => { "undefined" == typeof c4 && (c4 = b4, b4 = 438); ha(a5, b4 | 8192, c4); }, Sb = (a5, b4) => { if (!hb(a5)) - throw new P4(44); + throw new P3(44); var c4 = U2(b4, { parent: true }).node; if (!c4) - throw new P4(44); + throw new P3(44); b4 = fb(b4); var d5 = Lb(c4, b4); if (d5) - throw new P4(d5); + throw new P3(d5); if (!c4.Ga.symlink) - throw new P4(63); + throw new P3(63); c4.Ga.symlink(c4, b4, a5); }, Tb = (a5) => { var b4 = U2(a5, { parent: true }).node; a5 = fb(a5); var c4 = yb(b4, a5), d5 = Mb(b4, a5, true); if (d5) - throw new P4(d5); + throw new P3(d5); if (!b4.Ga.rmdir) - throw new P4(63); + throw new P3(63); if (c4.Va) - throw new P4(10); + throw new P3(10); b4.Ga.rmdir(b4, a5); Gb(c4); }, ta = (a5) => { var b4 = U2(a5, { parent: true }).node; if (!b4) - throw new P4(44); + throw new P3(44); a5 = fb(a5); var c4 = yb(b4, a5), d5 = Mb(b4, a5, false); if (d5) - throw new P4(d5); + throw new P3(d5); if (!b4.Ga.unlink) - throw new P4(63); + throw new P3(63); if (c4.Va) - throw new P4(10); + throw new P3(10); b4.Ga.unlink(b4, a5); Gb(c4); }, Eb = (a5) => { a5 = U2(a5).node; if (!a5) - throw new P4(44); + throw new P3(44); if (!a5.Ga.readlink) - throw new P4(28); + throw new P3(28); return hb(ea(a5.parent), a5.Ga.readlink(a5)); }, Ub = (a5, b4) => { a5 = U2(a5, { Sa: !b4 }).node; if (!a5) - throw new P4(44); + throw new P3(44); if (!a5.Ga.Pa) - throw new P4(63); + throw new P3(63); return a5.Ga.Pa(a5); }, Vb = (a5) => Ub(a5, true), ia = (a5, b4) => { a5 = "string" == typeof a5 ? U2(a5, { Sa: true }).node : a5; if (!a5.Ga.Oa) - throw new P4(63); + throw new P3(63); a5.Ga.Oa(a5, { mode: b4 & 4095 | a5.mode & -4096, timestamp: Date.now() }); }, Wb = (a5, b4) => { if (0 > b4) - throw new P4(28); + throw new P3(28); a5 = "string" == typeof a5 ? U2(a5, { Sa: true }).node : a5; if (!a5.Ga.Oa) - throw new P4(63); + throw new P3(63); if (16384 === (a5.mode & 61440)) - throw new P4(31); + throw new P3(31); if (32768 !== (a5.mode & 61440)) - throw new P4(28); + throw new P3(28); var c4 = Hb(a5, "w"); if (c4) - throw new P4(c4); + throw new P3(c4); a5.Ga.Oa(a5, { size: b4, timestamp: Date.now() }); }, ja = (a5, b4, c4) => { if ("" === a5) - throw new P4(44); + throw new P3(44); if ("string" == typeof b4) { var d5 = Jb[b4]; if ("undefined" == typeof d5) @@ -16881,16 +13905,16 @@ var require_sql_wasm = __commonJS({ if (b4 & 64) if (f4) { if (b4 & 128) - throw new P4(20); + throw new P3(20); } else f4 = ha(a5, c4, 0), d5 = true; if (!f4) - throw new P4(44); + throw new P3(44); 8192 === (f4.mode & 61440) && (b4 &= -513); if (b4 & 65536 && 16384 !== (f4.mode & 61440)) - throw new P4(54); + throw new P3(54); if (!d5 && (c4 = f4 ? 40960 === (f4.mode & 61440) ? 32 : 16384 === (f4.mode & 61440) && ("r" !== Kb(b4) || b4 & 512) ? 31 : Hb(f4, Kb(b4)) : 44)) - throw new P4(c4); + throw new P3(c4); b4 & 512 && !d5 && Wb(f4, 0); b4 &= -131713; f4 = Pb({ node: f4, path: ea(f4), flags: b4, seekable: true, position: 0, Ha: f4.Ha, Ib: [], error: false }); @@ -16899,7 +13923,7 @@ var require_sql_wasm = __commonJS({ return f4; }, la = (a5) => { if (null === a5.fd) - throw new P4(8); + throw new P3(8); a5.hb && (a5.hb = null); try { a5.Ha.close && a5.Ha.close(a5); @@ -16911,49 +13935,49 @@ var require_sql_wasm = __commonJS({ a5.fd = null; }, Yb = (a5, b4, c4) => { if (null === a5.fd) - throw new P4(8); + throw new P3(8); if (!a5.seekable || !a5.Ha.Ta) - throw new P4(70); + throw new P3(70); if (0 != c4 && 1 != c4 && 2 != c4) - throw new P4(28); + throw new P3(28); a5.position = a5.Ha.Ta(a5, b4, c4); a5.Ib = []; }, Zb = (a5, b4, c4, d5, f4) => { if (0 > d5 || 0 > f4) - throw new P4(28); + throw new P3(28); if (null === a5.fd) - throw new P4(8); + throw new P3(8); if (1 === (a5.flags & 2097155)) - throw new P4(8); + throw new P3(8); if (16384 === (a5.node.mode & 61440)) - throw new P4(31); + throw new P3(31); if (!a5.Ha.read) - throw new P4(28); + throw new P3(28); var h5 = "undefined" != typeof f4; if (!h5) f4 = a5.position; else if (!a5.seekable) - throw new P4(70); + throw new P3(70); b4 = a5.Ha.read(a5, b4, c4, d5, f4); h5 || (a5.position += b4); return b4; }, ka = (a5, b4, c4, d5, f4) => { if (0 > d5 || 0 > f4) - throw new P4(28); + throw new P3(28); if (null === a5.fd) - throw new P4(8); + throw new P3(8); if (0 === (a5.flags & 2097155)) - throw new P4(8); + throw new P3(8); if (16384 === (a5.node.mode & 61440)) - throw new P4(31); + throw new P3(31); if (!a5.Ha.write) - throw new P4(28); + throw new P3(28); a5.seekable && a5.flags & 1024 && Yb(a5, 0, 2); var h5 = "undefined" != typeof f4; if (!h5) f4 = a5.position; else if (!a5.seekable) - throw new P4(70); + throw new P3(70); b4 = a5.Ha.write(a5, b4, c4, d5, f4, void 0); h5 || (a5.position += b4); return b4; @@ -16970,15 +13994,15 @@ var require_sql_wasm = __commonJS({ la(d5); return c4; }, $b = () => { - P4 || (P4 = function(a5, b4) { + P3 || (P3 = function(a5, b4) { this.node = b4; this.Hb = function(c4) { this.Ka = c4; }; this.Hb(a5); this.message = "FS error"; - }, P4.prototype = Error(), P4.prototype.constructor = P4, [44].forEach((a5) => { - xb[a5] = new P4(a5); + }, P3.prototype = Error(), P3.prototype.constructor = P3, [44].forEach((a5) => { + xb[a5] = new P3(a5); xb[a5].stack = ""; })); }, ac, fa = (a5, b4) => { @@ -17000,10 +14024,10 @@ var require_sql_wasm = __commonJS({ try { var S4 = b4(); } catch (nb) { - throw new P4(29); + throw new P3(29); } if (void 0 === S4 && 0 === w5) - throw new P4(6); + throw new P3(6); if (null === S4 || void 0 === S4) break; w5++; @@ -17016,7 +14040,7 @@ var require_sql_wasm = __commonJS({ try { c4(k5[q5 + w5]); } catch (A4) { - throw new P4(29); + throw new P3(29); } x5 && (h5.node.timestamp = Date.now()); return w5; @@ -17029,7 +14053,7 @@ var require_sql_wasm = __commonJS({ a5 = -100 === a5 ? "/" : X3(a5).path; if (0 == b4.length) { if (!c4) - throw new P4(44); + throw new P3(44); return a5; } return z5(a5 + "/" + b4); @@ -17079,7 +14103,7 @@ var require_sql_wasm = __commonJS({ function X3(a5) { a5 = R3[a5]; if (!a5) - throw new P4(8); + throw new P3(8); return a5; } function Jc(a5) { @@ -17276,7 +14300,7 @@ var require_sql_wasm = __commonJS({ b4.Ga = { lookup: (c4, d5) => { var f4 = R3[+d5]; if (!f4) - throw new P4(8); + throw new P3(8); c4 = { parent: null, Ra: { ub: "fake" }, Ga: { readlink: () => f4.path } }; return c4.parent = c4; } }; @@ -17289,7 +14313,7 @@ var require_sql_wasm = __commonJS({ try { return a5 = C3(a5), ia(a5, b4), 0; } catch (c4) { - if ("undefined" == typeof W2 || !(c4 instanceof P4)) + if ("undefined" == typeof W2 || !(c4 instanceof P3)) throw c4; return -c4.Ka; } @@ -17308,7 +14332,7 @@ var require_sql_wasm = __commonJS({ c4 & 1 && (a5 += "x"); return a5 && Hb(d5, a5) ? -2 : 0; } catch (f4) { - if ("undefined" == typeof W2 || !(f4 instanceof P4)) + if ("undefined" == typeof W2 || !(f4 instanceof P3)) throw f4; return -f4.Ka; } @@ -17316,11 +14340,11 @@ var require_sql_wasm = __commonJS({ try { var c4 = R3[a5]; if (!c4) - throw new P4(8); + throw new P3(8); ia(c4.node, b4); return 0; } catch (d5) { - if ("undefined" == typeof W2 || !(d5 instanceof P4)) + if ("undefined" == typeof W2 || !(d5 instanceof P3)) throw d5; return -d5.Ka; } @@ -17328,15 +14352,15 @@ var require_sql_wasm = __commonJS({ try { var b4 = R3[a5]; if (!b4) - throw new P4(8); + throw new P3(8); var c4 = b4.node; var d5 = "string" == typeof c4 ? U2(c4, { Sa: true }).node : c4; if (!d5.Ga.Oa) - throw new P4(63); + throw new P3(63); d5.Ga.Oa(d5, { timestamp: Date.now() }); return 0; } catch (f4) { - if ("undefined" == typeof W2 || !(f4 instanceof P4)) + if ("undefined" == typeof W2 || !(f4 instanceof P3)) throw f4; return -f4.Ka; } @@ -17369,7 +14393,7 @@ var require_sql_wasm = __commonJS({ return -28; } } catch (h5) { - if ("undefined" == typeof W2 || !(h5 instanceof P4)) + if ("undefined" == typeof W2 || !(h5 instanceof P3)) throw h5; return -h5.Ka; } @@ -17378,7 +14402,7 @@ var require_sql_wasm = __commonJS({ var c4 = X3(a5); return ec(Ub, c4.path, b4); } catch (d5) { - if ("undefined" == typeof W2 || !(d5 instanceof P4)) + if ("undefined" == typeof W2 || !(d5 instanceof P3)) throw d5; return -d5.Ka; } @@ -17389,13 +14413,13 @@ var require_sql_wasm = __commonJS({ return -61; var d5 = R3[a5]; if (!d5) - throw new P4(8); + throw new P3(8); if (0 === (d5.flags & 2097155)) - throw new P4(28); + throw new P3(28); Wb(d5.node, b4); return 0; } catch (f4) { - if ("undefined" == typeof W2 || !(f4 instanceof P4)) + if ("undefined" == typeof W2 || !(f4 instanceof P3)) throw f4; return -f4.Ka; } @@ -17409,7 +14433,7 @@ var require_sql_wasm = __commonJS({ t4("/", u4, a5, b4); return c4; } catch (d5) { - if ("undefined" == typeof W2 || !(d5 instanceof P4)) + if ("undefined" == typeof W2 || !(d5 instanceof P3)) throw d5; return -d5.Ka; } @@ -17417,7 +14441,7 @@ var require_sql_wasm = __commonJS({ try { return a5 = C3(a5), ec(Vb, a5, b4); } catch (c4) { - if ("undefined" == typeof W2 || !(c4 instanceof P4)) + if ("undefined" == typeof W2 || !(c4 instanceof P3)) throw c4; return -c4.Ka; } @@ -17425,7 +14449,7 @@ var require_sql_wasm = __commonJS({ try { return b4 = C3(b4), b4 = dc(a5, b4), b4 = z5(b4), "/" === b4[b4.length - 1] && (b4 = b4.substr(0, b4.length - 1)), V3(b4, c4), 0; } catch (d5) { - if ("undefined" == typeof W2 || !(d5 instanceof P4)) + if ("undefined" == typeof W2 || !(d5 instanceof P3)) throw d5; return -d5.Ka; } @@ -17436,7 +14460,7 @@ var require_sql_wasm = __commonJS({ b4 = dc(a5, b4, d5 & 4096); return ec(f4 ? Vb : Ub, b4, c4); } catch (h5) { - if ("undefined" == typeof W2 || !(h5 instanceof P4)) + if ("undefined" == typeof W2 || !(h5 instanceof P3)) throw h5; return -h5.Ka; } @@ -17448,7 +14472,7 @@ var require_sql_wasm = __commonJS({ var f4 = d5 ? Hc() : 0; return ja(b4, c4, f4).fd; } catch (h5) { - if ("undefined" == typeof W2 || !(h5 instanceof P4)) + if ("undefined" == typeof W2 || !(h5 instanceof P3)) throw h5; return -h5.Ka; } @@ -17466,7 +14490,7 @@ var require_sql_wasm = __commonJS({ r3[c4 + h5] = k5; return h5; } catch (q5) { - if ("undefined" == typeof W2 || !(q5 instanceof P4)) + if ("undefined" == typeof W2 || !(q5 instanceof P3)) throw q5; return -q5.Ka; } @@ -17474,7 +14498,7 @@ var require_sql_wasm = __commonJS({ try { return a5 = C3(a5), Tb(a5), 0; } catch (b4) { - if ("undefined" == typeof W2 || !(b4 instanceof P4)) + if ("undefined" == typeof W2 || !(b4 instanceof P3)) throw b4; return -b4.Ka; } @@ -17482,7 +14506,7 @@ var require_sql_wasm = __commonJS({ try { return a5 = C3(a5), ec(Ub, a5, b4); } catch (c4) { - if ("undefined" == typeof W2 || !(c4 instanceof P4)) + if ("undefined" == typeof W2 || !(c4 instanceof P3)) throw c4; return -c4.Ka; } @@ -17490,7 +14514,7 @@ var require_sql_wasm = __commonJS({ try { return b4 = C3(b4), b4 = dc(a5, b4), 0 === c4 ? ta(b4) : 512 === c4 ? Tb(b4) : E3("Invalid flags passed to unlinkat"), 0; } catch (d5) { - if ("undefined" == typeof W2 || !(d5 instanceof P4)) + if ("undefined" == typeof W2 || !(d5 instanceof P3)) throw d5; return -d5.Ka; } @@ -17512,7 +14536,7 @@ var require_sql_wasm = __commonJS({ q5.Ga.Oa(q5, { timestamp: Math.max(a5, k5) }); return 0; } catch (x5) { - if ("undefined" == typeof W2 || !(x5 instanceof P4)) + if ("undefined" == typeof W2 || !(x5 instanceof P3)) throw x5; return -x5.Ka; } @@ -17537,17 +14561,17 @@ var require_sql_wasm = __commonJS({ try { var k5 = X3(d5); if (0 !== (b4 & 2) && 0 === (c4 & 2) && 2 !== (k5.flags & 2097155)) - throw new P4(2); + throw new P3(2); if (1 === (k5.flags & 2097155)) - throw new P4(2); + throw new P3(2); if (!k5.Ha.bb) - throw new P4(43); + throw new P3(43); var q5 = k5.Ha.bb(k5, a5, f4, b4, c4); var x5 = q5.Fb; F3[h5 >> 2] = q5.vb; return x5; } catch (w5) { - if ("undefined" == typeof W2 || !(w5 instanceof P4)) + if ("undefined" == typeof W2 || !(w5 instanceof P3)) throw w5; return -w5.Ka; } @@ -17559,7 +14583,7 @@ var require_sql_wasm = __commonJS({ k5 && k5.Ha.cb && k5.Ha.cb(k5, q5, h5, b4, d5); } } catch (x5) { - if ("undefined" == typeof W2 || !(x5 instanceof P4)) + if ("undefined" == typeof W2 || !(x5 instanceof P3)) throw x5; return -x5.Ka; } @@ -17619,7 +14643,7 @@ var require_sql_wasm = __commonJS({ la(b4); return 0; } catch (c4) { - if ("undefined" == typeof W2 || !(c4 instanceof P4)) + if ("undefined" == typeof W2 || !(c4 instanceof P3)) throw c4; return c4.Ka; } @@ -17629,7 +14653,7 @@ var require_sql_wasm = __commonJS({ r3[b4 >> 0] = c4.tty ? 2 : 16384 === (c4.mode & 61440) ? 3 : 40960 === (c4.mode & 61440) ? 7 : 4; return 0; } catch (d5) { - if ("undefined" == typeof W2 || !(d5 instanceof P4)) + if ("undefined" == typeof W2 || !(d5 instanceof P3)) throw d5; return d5.Ka; } @@ -17655,7 +14679,7 @@ var require_sql_wasm = __commonJS({ J2[d5 >> 2] = w5; return 0; } catch (A4) { - if ("undefined" == typeof W2 || !(A4 instanceof P4)) + if ("undefined" == typeof W2 || !(A4 instanceof P3)) throw A4; return A4.Ka; } @@ -17672,7 +14696,7 @@ var require_sql_wasm = __commonJS({ h5.hb && 0 === b4 && 0 === d5 && (h5.hb = null); return 0; } catch (k5) { - if ("undefined" == typeof W2 || !(k5 instanceof P4)) + if ("undefined" == typeof W2 || !(k5 instanceof P3)) throw k5; return k5.Ka; } @@ -17681,7 +14705,7 @@ var require_sql_wasm = __commonJS({ var b4 = X3(a5); return b4.Ha && b4.Ha.fsync ? b4.Ha.fsync(b4) : 0; } catch (c4) { - if ("undefined" == typeof W2 || !(c4 instanceof P4)) + if ("undefined" == typeof W2 || !(c4 instanceof P3)) throw c4; return c4.Ka; } @@ -17705,7 +14729,7 @@ var require_sql_wasm = __commonJS({ J2[d5 >> 2] = w5; return 0; } catch (A4) { - if ("undefined" == typeof W2 || !(A4 instanceof P4)) + if ("undefined" == typeof W2 || !(A4 instanceof P3)) throw A4; return A4.Ka; } @@ -17966,1473 +14990,2161 @@ var require_sql_wasm = __commonJS({ } }); -// node_modules/queue-promise/dist/index.js -var require_dist = __commonJS({ - "node_modules/queue-promise/dist/index.js"(exports, module2) { - "use strict"; - var _events = _interopRequireDefault(require("events")); - Object.defineProperty(exports, "__esModule", { value: true }), exports.default = void 0; - function _interopRequireDefault(a5) { - return a5 && a5.__esModule ? a5 : { default: a5 }; - } - function ownKeys(a5, b4) { - var c4 = Object.keys(a5); - if (Object.getOwnPropertySymbols) { - var d5 = Object.getOwnPropertySymbols(a5); - b4 && (d5 = d5.filter(function(b5) { - return Object.getOwnPropertyDescriptor(a5, b5).enumerable; - })), c4.push.apply(c4, d5); - } - return c4; - } - function _objectSpread(a5) { - for (var b4, c4 = 1; c4 < arguments.length; c4++) - b4 = null == arguments[c4] ? {} : arguments[c4], c4 % 2 ? ownKeys(Object(b4), true).forEach(function(c5) { - _defineProperty2(a5, c5, b4[c5]); - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(a5, Object.getOwnPropertyDescriptors(b4)) : ownKeys(Object(b4)).forEach(function(c5) { - Object.defineProperty(a5, c5, Object.getOwnPropertyDescriptor(b4, c5)); - }); - return a5; - } - function _defineProperty2(a5, b4, c4) { - return b4 in a5 ? Object.defineProperty(a5, b4, { value: c4, enumerable: true, configurable: true, writable: true }) : a5[b4] = c4, a5; - } - var State = { IDLE: 0, RUNNING: 1, STOPPED: 2 }; - var Queue2 = class extends _events.default { - constructor(a5 = {}) { - super(), _defineProperty2(this, "tasks", /* @__PURE__ */ new Map()), _defineProperty2(this, "uniqueId", 0), _defineProperty2(this, "lastRan", 0), _defineProperty2(this, "currentlyHandled", 0), _defineProperty2(this, "state", State.IDLE), _defineProperty2(this, "options", { concurrent: 5, interval: 500, start: true }), this.options = _objectSpread(_objectSpread({}, this.options), a5), this.options.interval = parseInt(this.options.interval, 10), this.options.concurrent = parseInt(this.options.concurrent, 10); - } - start() { - this.state === State.RUNNING || this.isEmpty || (this.state = State.RUNNING, this.emit("start"), (async () => { - for (; this.shouldRun; ) - await this.dequeue(); - })()); - } - stop() { - clearTimeout(this.timeoutId), this.state = State.STOPPED, this.emit("stop"); - } - finalize() { - this.currentlyHandled -= 1, 0 === this.currentlyHandled && this.isEmpty && (this.stop(), this.state = State.IDLE, this.emit("end")); - } - async execute() { - const a5 = []; - this.tasks.forEach((b5, c4) => { - this.currentlyHandled < this.options.concurrent && (this.currentlyHandled++, this.tasks.delete(c4), a5.push(Promise.resolve(b5()).then((a6) => (this.emit("resolve", a6), a6)).catch((a6) => (this.emit("reject", a6), a6)).finally(() => { - this.emit("dequeue"), this.finalize(); - }))); - }); - const b4 = await Promise.all(a5); - return 1 === this.options.concurrent ? b4[0] : b4; - } - dequeue() { - const { interval: a5 } = this.options; - return new Promise((b4) => { - const c4 = Math.max(0, a5 - (Date.now() - this.lastRan)); - clearTimeout(this.timeoutId), this.timeoutId = setTimeout(() => { - this.lastRan = Date.now(), this.execute().then(b4); - }, c4); - }); - } - enqueue(a5) { - if (Array.isArray(a5)) - return void a5.map((a6) => this.enqueue(a6)); - if ("function" != typeof a5) - throw new Error(`You must provide a function, not ${typeof a5}.`); - this.uniqueId = (this.uniqueId + 1) % Number.MAX_SAFE_INTEGER, this.tasks.set(this.uniqueId, a5), this.options.start && this.state !== State.STOPPED && this.start(); - } - add(a5) { - this.enqueue(a5); - } - clear() { - this.tasks.clear(); - } - get size() { - return this.tasks.size; - } - get isEmpty() { - return 0 === this.size; - } - get shouldRun() { - return !this.isEmpty && this.state !== State.STOPPED; - } - }; - exports.default = Queue2, module2.exports = exports.default; - } -}); - // src/main.ts var main_exports = {}; __export(main_exports, { default: () => MakeMDPlugin }); module.exports = __toCommonJS(main_exports); -var import_obsidian28 = require("obsidian"); +var import_obsidian37 = require("obsidian"); // src/components/Spaces/FileTreeView.tsx -var import_obsidian21 = require("obsidian"); -init_compat_module(); - -// node_modules/preact/compat/client.mjs -init_compat_module(); -function createRoot(container) { - return { - render(children) { - Y(children, container); - }, - unmount() { - fn(container); - } - }; -} +var import_obsidian28 = require("obsidian"); -// node_modules/recoil/es/recoil.js -init_compat_module(); -init_compat_module(); -function isPromise(p3) { - return !!p3 && typeof p3.then === "function"; +// node_modules/preact/dist/preact.module.js +var n; +var l; +var u; +var i; +var t; +var o; +var r; +var f = {}; +var e = []; +var c = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i; +function s(n2, l3) { + for (var u4 in l3) + n2[u4] = l3[u4]; + return n2; } -var Recoil_isPromise = isPromise; -function nullthrows(x5, message) { - if (x5 != null) { - return x5; - } - throw new Error(message !== null && message !== void 0 ? message : "Got unexpected null or undefined"); +function a(n2) { + var l3 = n2.parentNode; + l3 && l3.removeChild(n2); } -var Recoil_nullthrows = nullthrows; -var Canceled = class { -}; -var CANCELED = new Canceled(); -var loadableAccessors = { - valueMaybe() { - return void 0; - }, - valueOrThrow() { - const error = new Error( - `Loadable expected value, but in "${this.state}" state` - ); - throw error; - }, - errorMaybe() { - return void 0; - }, - errorOrThrow() { - const error = new Error( - `Loadable expected error, but in "${this.state}" state` - ); - throw error; - }, - promiseMaybe() { - return void 0; - }, - promiseOrThrow() { - const error = new Error( - `Loadable expected promise, but in "${this.state}" state` - ); - throw error; - }, - is(other) { - return other.state === this.state && other.contents === this.contents; - }, - map(map) { - if (this.state === "hasError") { - return this; - } - if (this.state === "hasValue") { - try { - const next = map(this.contents); - return Recoil_isPromise(next) ? loadableWithPromise(next.then((value) => ({ - __value: value - }))) : loadableWithValue(next); - } catch (e4) { - return Recoil_isPromise(e4) ? loadableWithPromise(e4.next(() => map(this.contents))) : loadableWithError(e4); - } - } - if (this.state === "loading") { - return loadableWithPromise( - this.contents.then((value) => ({ - __value: map(value.__value) - })).catch((e4) => { - if (Recoil_isPromise(e4)) { - return e4.then(() => map(this.contents)); - } - throw e4; - }) - ); - } - const error = new Error("Invalid Loadable state"); - throw error; - } -}; -function loadableWithValue(value) { - return Object.freeze({ - state: "hasValue", - contents: value, - ...loadableAccessors, - getValue() { - return this.contents; - }, - toPromise() { - return Promise.resolve(this.contents); - }, - valueMaybe() { - return this.contents; - }, - valueOrThrow() { - return this.contents; - } - }); +function h(l3, u4, i4) { + var t4, o3, r3, f4 = {}; + for (r3 in u4) + "key" == r3 ? t4 = u4[r3] : "ref" == r3 ? o3 = u4[r3] : f4[r3] = u4[r3]; + if (arguments.length > 2 && (f4.children = arguments.length > 3 ? n.call(arguments, 2) : i4), "function" == typeof l3 && null != l3.defaultProps) + for (r3 in l3.defaultProps) + void 0 === f4[r3] && (f4[r3] = l3.defaultProps[r3]); + return v(l3, f4, t4, o3, null); } -function loadableWithError(error) { - return Object.freeze({ - state: "hasError", - contents: error, - ...loadableAccessors, - getValue() { - throw this.contents; - }, - toPromise() { - return Promise.reject(this.contents); - }, - errorMaybe() { - return this.contents; - }, - errorOrThrow() { - return this.contents; - } - }); +function v(n2, i4, t4, o3, r3) { + var f4 = { type: n2, props: i4, key: t4, ref: o3, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, __h: null, constructor: void 0, __v: null == r3 ? ++u : r3 }; + return null == r3 && null != l.vnode && l.vnode(f4), f4; } -function loadableWithPromise(promise) { - return Object.freeze({ - state: "loading", - contents: promise, - ...loadableAccessors, - getValue() { - throw this.contents.then(({ - __value - }) => __value); - }, - toPromise() { - return this.contents.then(({ - __value - }) => __value); - }, - promiseMaybe() { - return this.contents.then(({ - __value - }) => __value); - }, - promiseOrThrow() { - return this.contents.then(({ - __value - }) => __value); - } - }); +function y() { + return { current: null }; } -function loadableLoading() { - return loadableWithPromise(new Promise(() => { - })); +function p(n2) { + return n2.children; } -function loadableAll(inputs) { - return inputs.every((i4) => i4.state === "hasValue") ? loadableWithValue(inputs.map((i4) => i4.contents)) : inputs.some((i4) => i4.state === "hasError") ? loadableWithError(Recoil_nullthrows(inputs.find((i4) => i4.state === "hasError"), "Invalid loadable passed to loadableAll").contents) : loadableWithPromise(Promise.all(inputs.map((i4) => i4.contents)).then((value) => ({ - __value: value - }))); +function d(n2, l3) { + this.props = n2, this.context = l3; } -var Recoil_Loadable = { - loadableWithValue, - loadableWithError, - loadableWithPromise, - loadableLoading, - loadableAll, - Canceled, - CANCELED -}; -var _useMutableSource; -var useMutableSource = (_useMutableSource = bn.useMutableSource) !== null && _useMutableSource !== void 0 ? _useMutableSource : bn.unstable_useMutableSource; -function mutableSourceExists() { - return useMutableSource && !(typeof window !== "undefined" && window.$disableRecoilValueMutableSource_TEMP_HACK_DO_NOT_USE); +function _(n2, l3) { + if (null == l3) + return n2.__ ? _(n2.__, n2.__.__k.indexOf(n2) + 1) : null; + for (var u4; l3 < n2.__k.length; l3++) + if (null != (u4 = n2.__k[l3]) && null != u4.__e) + return u4.__e; + return "function" == typeof n2.type ? _(n2) : null; } -var Recoil_mutableSource = { - mutableSourceExists, - useMutableSource -}; -var { - mutableSourceExists: mutableSourceExists$1 -} = Recoil_mutableSource; -var gks = (/* @__PURE__ */ new Map()).set("recoil_hamt_2020", true).set("recoil_memory_managament_2020", true).set("recoil_suppress_rerender_in_callback", true); -function Recoil_gkx(gk) { - var _gks$get; - if (gk === "recoil_early_rendering_2021" && !mutableSourceExists$1()) { - return false; +function k(n2) { + var l3, u4; + if (null != (n2 = n2.__) && null != n2.__c) { + for (n2.__e = n2.__c.base = null, l3 = 0; l3 < n2.__k.length; l3++) + if (null != (u4 = n2.__k[l3]) && null != u4.__e) { + n2.__e = n2.__c.base = u4.__e; + break; + } + return k(n2); } - return (_gks$get = gks.get(gk)) !== null && _gks$get !== void 0 ? _gks$get : false; } -Recoil_gkx.setPass = (gk) => { - gks.set(gk, true); -}; -Recoil_gkx.setFail = (gk) => { - gks.set(gk, false); -}; -var Recoil_gkx_1 = Recoil_gkx; -function recoverableViolation(message, projectName, { - error -} = {}) { - if (true) { - console.error(message, error); - } - return null; +function b(n2) { + (!n2.__d && (n2.__d = true) && t.push(n2) && !g.__r++ || o !== l.debounceRendering) && ((o = l.debounceRendering) || setTimeout)(g); } -var recoverableViolation_1 = recoverableViolation; -var Recoil_recoverableViolation = recoverableViolation_1; -function setByAddingToSet(set, v3) { - const next = new Set(set); - next.add(v3); - return next; +function g() { + for (var n2; g.__r = t.length; ) + n2 = t.sort(function(n3, l3) { + return n3.__v.__b - l3.__v.__b; + }), t = [], n2.some(function(n3) { + var l3, u4, i4, t4, o3, r3; + n3.__d && (o3 = (t4 = (l3 = n3).__v).__e, (r3 = l3.__P) && (u4 = [], (i4 = s({}, t4)).__v = t4.__v + 1, j(r3, t4, i4, l3.__n, void 0 !== r3.ownerSVGElement, null != t4.__h ? [o3] : null, u4, null == o3 ? _(t4) : o3, t4.__h), z(u4, t4), t4.__e != o3 && k(t4))); + }); } -function setByDeletingFromSet(set, v3) { - const next = new Set(set); - next.delete(v3); - return next; +function w(n2, l3, u4, i4, t4, o3, r3, c4, s5, a5) { + var h5, y5, d5, k5, b4, g4, w5, x5 = i4 && i4.__k || e, C3 = x5.length; + for (u4.__k = [], h5 = 0; h5 < l3.length; h5++) + if (null != (k5 = u4.__k[h5] = null == (k5 = l3[h5]) || "boolean" == typeof k5 ? null : "string" == typeof k5 || "number" == typeof k5 || "bigint" == typeof k5 ? v(null, k5, null, null, k5) : Array.isArray(k5) ? v(p, { children: k5 }, null, null, null) : k5.__b > 0 ? v(k5.type, k5.props, k5.key, k5.ref ? k5.ref : null, k5.__v) : k5)) { + if (k5.__ = u4, k5.__b = u4.__b + 1, null === (d5 = x5[h5]) || d5 && k5.key == d5.key && k5.type === d5.type) + x5[h5] = void 0; + else + for (y5 = 0; y5 < C3; y5++) { + if ((d5 = x5[y5]) && k5.key == d5.key && k5.type === d5.type) { + x5[y5] = void 0; + break; + } + d5 = null; + } + j(n2, k5, d5 = d5 || f, t4, o3, r3, c4, s5, a5), b4 = k5.__e, (y5 = k5.ref) && d5.ref != y5 && (w5 || (w5 = []), d5.ref && w5.push(d5.ref, null, k5), w5.push(y5, k5.__c || b4, k5)), null != b4 ? (null == g4 && (g4 = b4), "function" == typeof k5.type && k5.__k === d5.__k ? k5.__d = s5 = m(k5, s5, n2) : s5 = A(n2, k5, d5, x5, b4, s5), "function" == typeof u4.type && (u4.__d = s5)) : s5 && d5.__e == s5 && s5.parentNode != n2 && (s5 = _(d5)); + } + for (u4.__e = g4, h5 = C3; h5--; ) + null != x5[h5] && N(x5[h5], x5[h5]); + if (w5) + for (h5 = 0; h5 < w5.length; h5++) + M(w5[h5], w5[++h5], w5[++h5]); } -function mapBySettingInMap(map, k5, v3) { - const next = new Map(map); - next.set(k5, v3); - return next; +function m(n2, l3, u4) { + for (var i4, t4 = n2.__k, o3 = 0; t4 && o3 < t4.length; o3++) + (i4 = t4[o3]) && (i4.__ = n2, l3 = "function" == typeof i4.type ? m(i4, l3, u4) : A(u4, i4, i4, t4, i4.__e, l3)); + return l3; } -function mapByUpdatingInMap(map, k5, updater) { - const next = new Map(map); - next.set(k5, updater(next.get(k5))); - return next; +function x(n2, l3) { + return l3 = l3 || [], null == n2 || "boolean" == typeof n2 || (Array.isArray(n2) ? n2.some(function(n3) { + x(n3, l3); + }) : l3.push(n2)), l3; } -function mapByDeletingFromMap(map, k5) { - const next = new Map(map); - next.delete(k5); - return next; +function A(n2, l3, u4, i4, t4, o3) { + var r3, f4, e4; + if (void 0 !== l3.__d) + r3 = l3.__d, l3.__d = void 0; + else if (null == u4 || t4 != o3 || null == t4.parentNode) + n: + if (null == o3 || o3.parentNode !== n2) + n2.appendChild(t4), r3 = null; + else { + for (f4 = o3, e4 = 0; (f4 = f4.nextSibling) && e4 < i4.length; e4 += 1) + if (f4 == t4) + break n; + n2.insertBefore(t4, o3), r3 = o3; + } + return void 0 !== r3 ? r3 : t4.nextSibling; } -function mapByDeletingMultipleFromMap(map, ks) { - const next = new Map(map); - ks.forEach((k5) => next.delete(k5)); - return next; +function C(n2, l3, u4, i4, t4) { + var o3; + for (o3 in u4) + "children" === o3 || "key" === o3 || o3 in l3 || H(n2, o3, null, u4[o3], i4); + for (o3 in l3) + t4 && "function" != typeof l3[o3] || "children" === o3 || "key" === o3 || "value" === o3 || "checked" === o3 || u4[o3] === l3[o3] || H(n2, o3, l3[o3], u4[o3], i4); } -var Recoil_CopyOnWrite = { - setByAddingToSet, - setByDeletingFromSet, - mapBySettingInMap, - mapByUpdatingInMap, - mapByDeletingFromMap, - mapByDeletingMultipleFromMap -}; -function* filterIterable(iterable, predicate) { - let index = 0; - for (const value of iterable) { - if (predicate(value, index++)) { - yield value; - } - } +function $(n2, l3, u4) { + "-" === l3[0] ? n2.setProperty(l3, u4) : n2[l3] = null == u4 ? "" : "number" != typeof u4 || c.test(l3) ? u4 : u4 + "px"; } -var Recoil_filterIterable = filterIterable; -function mapIterable(iterable, callback) { - return function* () { - let index = 0; - for (const value of iterable) { - yield callback(value, index++); +function H(n2, l3, u4, i4, t4) { + var o3; + n: + if ("style" === l3) + if ("string" == typeof u4) + n2.style.cssText = u4; + else { + if ("string" == typeof i4 && (n2.style.cssText = i4 = ""), i4) + for (l3 in i4) + u4 && l3 in u4 || $(n2.style, l3, ""); + if (u4) + for (l3 in u4) + i4 && u4[l3] === i4[l3] || $(n2.style, l3, u4[l3]); + } + else if ("o" === l3[0] && "n" === l3[1]) + o3 = l3 !== (l3 = l3.replace(/Capture$/, "")), l3 = l3.toLowerCase() in n2 ? l3.toLowerCase().slice(2) : l3.slice(2), n2.l || (n2.l = {}), n2.l[l3 + o3] = u4, u4 ? i4 || n2.addEventListener(l3, o3 ? T : I, o3) : n2.removeEventListener(l3, o3 ? T : I, o3); + else if ("dangerouslySetInnerHTML" !== l3) { + if (t4) + l3 = l3.replace(/xlink(H|:h)/, "h").replace(/sName$/, "s"); + else if ("href" !== l3 && "list" !== l3 && "form" !== l3 && "tabIndex" !== l3 && "download" !== l3 && l3 in n2) + try { + n2[l3] = null == u4 ? "" : u4; + break n; + } catch (n3) { + } + "function" == typeof u4 || (null == u4 || false === u4 && -1 == l3.indexOf("-") ? n2.removeAttribute(l3) : n2.setAttribute(l3, u4)); } - }(); } -var Recoil_mapIterable = mapIterable; -function sprintf(format2, ...args) { - let index = 0; - return format2.replace(/%s/g, () => String(args[index++])); +function I(n2) { + this.l[n2.type + false](l.event ? l.event(n2) : n2); } -var sprintf_1 = sprintf; -function expectationViolation(format2, ...args) { - if (true) { - const message = sprintf_1.call(null, format2, ...args); - const error = new Error(message); - error.name = "Expectation Violation"; - console.error(error); +function T(n2) { + this.l[n2.type + true](l.event ? l.event(n2) : n2); +} +function j(n2, u4, i4, t4, o3, r3, f4, e4, c4) { + var a5, h5, v3, y5, _4, k5, b4, g4, m5, x5, A4, C3, $3, H5, I4, T6 = u4.type; + if (void 0 !== u4.constructor) + return null; + null != i4.__h && (c4 = i4.__h, e4 = u4.__e = i4.__e, u4.__h = null, r3 = [e4]), (a5 = l.__b) && a5(u4); + try { + n: + if ("function" == typeof T6) { + if (g4 = u4.props, m5 = (a5 = T6.contextType) && t4[a5.__c], x5 = a5 ? m5 ? m5.props.value : a5.__ : t4, i4.__c ? b4 = (h5 = u4.__c = i4.__c).__ = h5.__E : ("prototype" in T6 && T6.prototype.render ? u4.__c = h5 = new T6(g4, x5) : (u4.__c = h5 = new d(g4, x5), h5.constructor = T6, h5.render = O), m5 && m5.sub(h5), h5.props = g4, h5.state || (h5.state = {}), h5.context = x5, h5.__n = t4, v3 = h5.__d = true, h5.__h = [], h5._sb = []), null == h5.__s && (h5.__s = h5.state), null != T6.getDerivedStateFromProps && (h5.__s == h5.state && (h5.__s = s({}, h5.__s)), s(h5.__s, T6.getDerivedStateFromProps(g4, h5.__s))), y5 = h5.props, _4 = h5.state, v3) + null == T6.getDerivedStateFromProps && null != h5.componentWillMount && h5.componentWillMount(), null != h5.componentDidMount && h5.__h.push(h5.componentDidMount); + else { + if (null == T6.getDerivedStateFromProps && g4 !== y5 && null != h5.componentWillReceiveProps && h5.componentWillReceiveProps(g4, x5), !h5.__e && null != h5.shouldComponentUpdate && false === h5.shouldComponentUpdate(g4, h5.__s, x5) || u4.__v === i4.__v) { + for (h5.props = g4, h5.state = h5.__s, u4.__v !== i4.__v && (h5.__d = false), h5.__v = u4, u4.__e = i4.__e, u4.__k = i4.__k, u4.__k.forEach(function(n3) { + n3 && (n3.__ = u4); + }), A4 = 0; A4 < h5._sb.length; A4++) + h5.__h.push(h5._sb[A4]); + h5._sb = [], h5.__h.length && f4.push(h5); + break n; + } + null != h5.componentWillUpdate && h5.componentWillUpdate(g4, h5.__s, x5), null != h5.componentDidUpdate && h5.__h.push(function() { + h5.componentDidUpdate(y5, _4, k5); + }); + } + if (h5.context = x5, h5.props = g4, h5.__v = u4, h5.__P = n2, C3 = l.__r, $3 = 0, "prototype" in T6 && T6.prototype.render) { + for (h5.state = h5.__s, h5.__d = false, C3 && C3(u4), a5 = h5.render(h5.props, h5.state, h5.context), H5 = 0; H5 < h5._sb.length; H5++) + h5.__h.push(h5._sb[H5]); + h5._sb = []; + } else + do { + h5.__d = false, C3 && C3(u4), a5 = h5.render(h5.props, h5.state, h5.context), h5.state = h5.__s; + } while (h5.__d && ++$3 < 25); + h5.state = h5.__s, null != h5.getChildContext && (t4 = s(s({}, t4), h5.getChildContext())), v3 || null == h5.getSnapshotBeforeUpdate || (k5 = h5.getSnapshotBeforeUpdate(y5, _4)), I4 = null != a5 && a5.type === p && null == a5.key ? a5.props.children : a5, w(n2, Array.isArray(I4) ? I4 : [I4], u4, i4, t4, o3, r3, f4, e4, c4), h5.base = u4.__e, u4.__h = null, h5.__h.length && f4.push(h5), b4 && (h5.__E = h5.__ = null), h5.__e = false; + } else + null == r3 && u4.__v === i4.__v ? (u4.__k = i4.__k, u4.__e = i4.__e) : u4.__e = L(i4.__e, u4, i4, t4, o3, r3, f4, c4); + (a5 = l.diffed) && a5(u4); + } catch (n3) { + u4.__v = null, (c4 || null != r3) && (u4.__e = e4, u4.__h = !!c4, r3[r3.indexOf(e4)] = null), l.__e(n3, u4, i4); } } -var expectationViolation_1 = expectationViolation; -var Recoil_expectationViolation = expectationViolation_1; -function _defineProperty(obj, key2, value) { - if (key2 in obj) { - Object.defineProperty(obj, key2, { - value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key2] = value; +function z(n2, u4) { + l.__c && l.__c(u4, n2), n2.some(function(u5) { + try { + n2 = u5.__h, u5.__h = [], n2.some(function(n3) { + n3.call(u5); + }); + } catch (n3) { + l.__e(n3, u5.__v); + } + }); +} +function L(l3, u4, i4, t4, o3, r3, e4, c4) { + var s5, h5, v3, y5 = i4.props, p3 = u4.props, d5 = u4.type, k5 = 0; + if ("svg" === d5 && (o3 = true), null != r3) { + for (; k5 < r3.length; k5++) + if ((s5 = r3[k5]) && "setAttribute" in s5 == !!d5 && (d5 ? s5.localName === d5 : 3 === s5.nodeType)) { + l3 = s5, r3[k5] = null; + break; + } } - return obj; + if (null == l3) { + if (null === d5) + return document.createTextNode(p3); + l3 = o3 ? document.createElementNS("http://www.w3.org/2000/svg", d5) : document.createElement(d5, p3.is && p3), r3 = null, c4 = false; + } + if (null === d5) + y5 === p3 || c4 && l3.data === p3 || (l3.data = p3); + else { + if (r3 = r3 && n.call(l3.childNodes), h5 = (y5 = i4.props || f).dangerouslySetInnerHTML, v3 = p3.dangerouslySetInnerHTML, !c4) { + if (null != r3) + for (y5 = {}, k5 = 0; k5 < l3.attributes.length; k5++) + y5[l3.attributes[k5].name] = l3.attributes[k5].value; + (v3 || h5) && (v3 && (h5 && v3.__html == h5.__html || v3.__html === l3.innerHTML) || (l3.innerHTML = v3 && v3.__html || "")); + } + if (C(l3, p3, y5, o3, c4), v3) + u4.__k = []; + else if (k5 = u4.props.children, w(l3, Array.isArray(k5) ? k5 : [k5], u4, i4, t4, o3 && "foreignObject" !== d5, r3, e4, r3 ? r3[0] : i4.__k && _(i4, 0), c4), null != r3) + for (k5 = r3.length; k5--; ) + null != r3[k5] && a(r3[k5]); + c4 || ("value" in p3 && void 0 !== (k5 = p3.value) && (k5 !== l3.value || "progress" === d5 && !k5 || "option" === d5 && k5 !== y5.value) && H(l3, "value", k5, y5.value, false), "checked" in p3 && void 0 !== (k5 = p3.checked) && k5 !== l3.checked && H(l3, "checked", k5, y5.checked, false)); + } + return l3; } -var AbstractRecoilValue = class { - constructor(newKey) { - _defineProperty(this, "key", void 0); - this.key = newKey; +function M(n2, u4, i4) { + try { + "function" == typeof n2 ? n2(u4) : n2.current = u4; + } catch (n3) { + l.__e(n3, i4); } -}; -var RecoilState = class extends AbstractRecoilValue { -}; -var RecoilValueReadOnly = class extends AbstractRecoilValue { -}; -function isRecoilValue(x5) { - return x5 instanceof RecoilState || x5 instanceof RecoilValueReadOnly; } -var Recoil_RecoilValue = { - AbstractRecoilValue, - RecoilState, - RecoilValueReadOnly, - isRecoilValue -}; -var Recoil_RecoilValue_1 = Recoil_RecoilValue.AbstractRecoilValue; -var Recoil_RecoilValue_2 = Recoil_RecoilValue.RecoilState; -var Recoil_RecoilValue_3 = Recoil_RecoilValue.RecoilValueReadOnly; -var Recoil_RecoilValue_4 = Recoil_RecoilValue.isRecoilValue; -var Recoil_RecoilValue$1 = /* @__PURE__ */ Object.freeze({ - __proto__: null, - AbstractRecoilValue: Recoil_RecoilValue_1, - RecoilState: Recoil_RecoilValue_2, - RecoilValueReadOnly: Recoil_RecoilValue_3, - isRecoilValue: Recoil_RecoilValue_4 -}); -var DefaultValue = class { -}; -var DEFAULT_VALUE = new DefaultValue(); -var RecoilValueNotReady = class extends Error { - constructor(key2) { - super(`Tried to set the value of Recoil selector ${key2} using an updater function, but it is an async selector in a pending or error state; this is not supported.`); +function N(n2, u4, i4) { + var t4, o3; + if (l.unmount && l.unmount(n2), (t4 = n2.ref) && (t4.current && t4.current !== n2.__e || M(t4, null, u4)), null != (t4 = n2.__c)) { + if (t4.componentWillUnmount) + try { + t4.componentWillUnmount(); + } catch (n3) { + l.__e(n3, u4); + } + t4.base = t4.__P = null, n2.__c = void 0; } -}; -var nodes = /* @__PURE__ */ new Map(); -var recoilValues = /* @__PURE__ */ new Map(); -function recoilValuesForKeys(keys) { - return Recoil_mapIterable(keys, (key2) => Recoil_nullthrows(recoilValues.get(key2))); + if (t4 = n2.__k) + for (o3 = 0; o3 < t4.length; o3++) + t4[o3] && N(t4[o3], u4, i4 || "function" != typeof n2.type); + i4 || null == n2.__e || a(n2.__e), n2.__ = n2.__e = n2.__d = void 0; } -function registerNode(node) { - if (nodes.has(node.key)) { - const message = `Duplicate atom key "${node.key}". This is a FATAL ERROR in - production. But it is safe to ignore this warning if it occurred because of - hot module replacement.`; - console.warn(message); - } - nodes.set(node.key, node); - const recoilValue = node.set == null ? new Recoil_RecoilValue$1.RecoilValueReadOnly(node.key) : new Recoil_RecoilValue$1.RecoilState(node.key); - recoilValues.set(node.key, recoilValue); - return recoilValue; +function O(n2, l3, u4) { + return this.constructor(n2, u4); } -var NodeMissingError = class extends Error { -}; -function getNode(key2) { - const node = nodes.get(key2); - if (node == null) { - throw new NodeMissingError(`Missing definition for RecoilValue: "${key2}""`); - } - return node; +function P(u4, i4, t4) { + var o3, r3, e4; + l.__ && l.__(u4, i4), r3 = (o3 = "function" == typeof t4) ? null : t4 && t4.__k || i4.__k, e4 = [], j(i4, u4 = (!o3 && t4 || i4).__k = h(p, null, [u4]), r3 || f, f, void 0 !== i4.ownerSVGElement, !o3 && t4 ? [t4] : r3 ? null : i4.firstChild ? n.call(i4.childNodes) : null, e4, !o3 && t4 ? t4 : r3 ? r3.__e : i4.firstChild, o3), z(e4, u4); } -function getNodeMaybe(key2) { - return nodes.get(key2); +function S(n2, l3) { + P(n2, l3, S); } -var configDeletionHandlers = /* @__PURE__ */ new Map(); -function deleteNodeConfigIfPossible(key2) { - var _node$shouldDeleteCon; - if (!Recoil_gkx_1("recoil_memory_managament_2020")) { - return; - } - const node = nodes.get(key2); - if (node === null || node === void 0 ? void 0 : (_node$shouldDeleteCon = node.shouldDeleteConfigOnRelease) === null || _node$shouldDeleteCon === void 0 ? void 0 : _node$shouldDeleteCon.call(node)) { - var _getConfigDeletionHan; - nodes.delete(key2); - (_getConfigDeletionHan = getConfigDeletionHandler(key2)) === null || _getConfigDeletionHan === void 0 ? void 0 : _getConfigDeletionHan(); - configDeletionHandlers.delete(key2); - } +function q(l3, u4, i4) { + var t4, o3, r3, f4 = s({}, l3.props); + for (r3 in u4) + "key" == r3 ? t4 = u4[r3] : "ref" == r3 ? o3 = u4[r3] : f4[r3] = u4[r3]; + return arguments.length > 2 && (f4.children = arguments.length > 3 ? n.call(arguments, 2) : i4), v(l3.type, f4, t4 || l3.key, o3 || l3.ref, null); } -function setConfigDeletionHandler(key2, fn2) { - if (!Recoil_gkx_1("recoil_memory_managament_2020")) { - return; - } - if (fn2 === void 0) { - configDeletionHandlers.delete(key2); - } else { - configDeletionHandlers.set(key2, fn2); - } +function B(n2, l3) { + var u4 = { __c: l3 = "__cC" + r++, __: n2, Consumer: function(n3, l4) { + return n3.children(l4); + }, Provider: function(n3) { + var u5, i4; + return this.getChildContext || (u5 = [], (i4 = {})[l3] = this, this.getChildContext = function() { + return i4; + }, this.shouldComponentUpdate = function(n4) { + this.props.value !== n4.value && u5.some(b); + }, this.sub = function(n4) { + u5.push(n4); + var l4 = n4.componentWillUnmount; + n4.componentWillUnmount = function() { + u5.splice(u5.indexOf(n4), 1), l4 && l4.call(n4); + }; + }), n3.children; + } }; + return u4.Provider.__ = u4.Consumer.contextType = u4; } -function getConfigDeletionHandler(key2) { - return configDeletionHandlers.get(key2); +n = e.slice, l = { __e: function(n2, l3, u4, i4) { + for (var t4, o3, r3; l3 = l3.__; ) + if ((t4 = l3.__c) && !t4.__) + try { + if ((o3 = t4.constructor) && null != o3.getDerivedStateFromError && (t4.setState(o3.getDerivedStateFromError(n2)), r3 = t4.__d), null != t4.componentDidCatch && (t4.componentDidCatch(n2, i4 || {}), r3 = t4.__d), r3) + return t4.__E = t4; + } catch (l4) { + n2 = l4; + } + throw n2; +} }, u = 0, i = function(n2) { + return null != n2 && void 0 === n2.constructor; +}, d.prototype.setState = function(n2, l3) { + var u4; + u4 = null != this.__s && this.__s !== this.state ? this.__s : this.__s = s({}, this.state), "function" == typeof n2 && (n2 = n2(s({}, u4), this.props)), n2 && s(u4, n2), null != n2 && this.__v && (l3 && this._sb.push(l3), b(this)); +}, d.prototype.forceUpdate = function(n2) { + this.__v && (this.__e = true, n2 && this.__h.push(n2), b(this)); +}, d.prototype.render = p, t = [], g.__r = 0, r = 0; + +// node_modules/preact/hooks/dist/hooks.module.js +var t2; +var r2; +var u2; +var i2; +var o2 = 0; +var f2 = []; +var c2 = []; +var e2 = l.__b; +var a2 = l.__r; +var v2 = l.diffed; +var l2 = l.__c; +var m2 = l.unmount; +function d2(t4, u4) { + l.__h && l.__h(r2, t4, o2 || u4), o2 = 0; + var i4 = r2.__H || (r2.__H = { __: [], __h: [] }); + return t4 >= i4.__.length && i4.__.push({ __V: c2 }), i4.__[t4]; } -var Recoil_Node = { - nodes, - recoilValues, - registerNode, - getNode, - getNodeMaybe, - deleteNodeConfigIfPossible, - setConfigDeletionHandler, - getConfigDeletionHandler, - recoilValuesForKeys, - NodeMissingError, - DefaultValue, - DEFAULT_VALUE, - RecoilValueNotReady -}; -var RetentionZone = class { -}; -function retentionZone() { - return new RetentionZone(); +function p2(n2) { + return o2 = 1, y2(B2, n2); } -var Recoil_RetentionZone = { - RetentionZone, - retentionZone -}; -var { - setByAddingToSet: setByAddingToSet$1 -} = Recoil_CopyOnWrite; -var { - getNode: getNode$1, - getNodeMaybe: getNodeMaybe$1, - recoilValuesForKeys: recoilValuesForKeys$1 -} = Recoil_Node; -var { - RetentionZone: RetentionZone$1 -} = Recoil_RetentionZone; -var emptySet = Object.freeze(/* @__PURE__ */ new Set()); -var ReadOnlyRecoilValueError = class extends Error { -}; -function initializeRetentionForNode(store, nodeKey, retainedBy) { - if (!Recoil_gkx_1("recoil_memory_managament_2020")) { - return () => void 0; - } - const { - nodesRetainedByZone: nodesRetainedByZone2 - } = store.getState().retention; - function addToZone(zone) { - let set = nodesRetainedByZone2.get(zone); - if (!set) { - nodesRetainedByZone2.set(zone, set = /* @__PURE__ */ new Set()); - } - set.add(nodeKey); - } - if (retainedBy instanceof RetentionZone$1) { - addToZone(retainedBy); - } else if (Array.isArray(retainedBy)) { - for (const zone of retainedBy) { - addToZone(zone); - } +function y2(n2, u4, i4) { + var o3 = d2(t2++, 2); + if (o3.t = n2, !o3.__c && (o3.__ = [i4 ? i4(u4) : B2(void 0, u4), function(n3) { + var t4 = o3.__N ? o3.__N[0] : o3.__[0], r3 = o3.t(t4, n3); + t4 !== r3 && (o3.__N = [r3, o3.__[1]], o3.__c.setState({})); + }], o3.__c = r2, !r2.u)) { + r2.u = true; + var f4 = r2.shouldComponentUpdate; + r2.shouldComponentUpdate = function(n3, t4, r3) { + if (!o3.__c.__H) + return true; + var u5 = o3.__c.__H.__.filter(function(n4) { + return n4.__c; + }); + if (u5.every(function(n4) { + return !n4.__N; + })) + return !f4 || f4.call(this, n3, t4, r3); + var i5 = false; + return u5.forEach(function(n4) { + if (n4.__N) { + var t5 = n4.__[0]; + n4.__ = n4.__N, n4.__N = void 0, t5 !== n4.__[0] && (i5 = true); + } + }), !(!i5 && o3.__c.props === n3) && (!f4 || f4.call(this, n3, t4, r3)); + }; } - return () => { - if (!Recoil_gkx_1("recoil_memory_managament_2020")) { - return; - } - const nodesRetainedByZone3 = store.getState().retention.nodesRetainedByZone; - function deleteFromZone(zone) { - const set = nodesRetainedByZone3.get(zone); - if (set) { - set.delete(nodeKey); - } - if (set && set.size === 0) { - nodesRetainedByZone3.delete(zone); - } - } - if (retainedBy instanceof RetentionZone$1) { - deleteFromZone(retainedBy); - } else if (Array.isArray(retainedBy)) { - for (const zone of retainedBy) { - deleteFromZone(zone); - } - } - }; + return o3.__N || o3.__; } -function initializeNodeIfNewToStore(store, treeState, key2, trigger) { - const storeState = store.getState(); - if (storeState.nodeCleanupFunctions.has(key2)) { - return; - } - const config = getNode$1(key2); - const retentionCleanup = initializeRetentionForNode(store, key2, config.retainedBy); - const nodeCleanup = config.init(store, treeState, trigger); - storeState.nodeCleanupFunctions.set(key2, () => { - nodeCleanup(); - retentionCleanup(); - }); +function h2(u4, i4) { + var o3 = d2(t2++, 3); + !l.__s && z2(o3.__H, i4) && (o3.__ = u4, o3.i = i4, r2.__H.__h.push(o3)); } -function cleanUpNode(store, key2) { - var _state$nodeCleanupFun; - const state = store.getState(); - (_state$nodeCleanupFun = state.nodeCleanupFunctions.get(key2)) === null || _state$nodeCleanupFun === void 0 ? void 0 : _state$nodeCleanupFun(); - state.nodeCleanupFunctions.delete(key2); +function s2(u4, i4) { + var o3 = d2(t2++, 4); + !l.__s && z2(o3.__H, i4) && (o3.__ = u4, o3.i = i4, r2.__h.push(o3)); } -function getNodeLoadable(store, state, key2) { - initializeNodeIfNewToStore(store, state, key2, "get"); - return getNode$1(key2).get(store, state); +function _2(n2) { + return o2 = 5, F(function() { + return { current: n2 }; + }, []); } -function peekNodeLoadable(store, state, key2) { - return getNode$1(key2).peek(store, state); +function A2(n2, t4, r3) { + o2 = 6, s2(function() { + return "function" == typeof n2 ? (n2(t4()), function() { + return n2(null); + }) : n2 ? (n2.current = t4(), function() { + return n2.current = null; + }) : void 0; + }, null == r3 ? r3 : r3.concat(n2)); } -function setUnvalidatedAtomValue_DEPRECATED(state, key2, newValue) { - var _node$invalidate; - const node = getNodeMaybe$1(key2); - node === null || node === void 0 ? void 0 : (_node$invalidate = node.invalidate) === null || _node$invalidate === void 0 ? void 0 : _node$invalidate.call(node, state); - return { - ...state, - atomValues: state.atomValues.clone().delete(key2), - nonvalidatedAtoms: state.nonvalidatedAtoms.clone().set(key2, newValue), - dirtyAtoms: setByAddingToSet$1(state.dirtyAtoms, key2) - }; +function F(n2, r3) { + var u4 = d2(t2++, 7); + return z2(u4.__H, r3) ? (u4.__V = n2(), u4.i = r3, u4.__h = n2, u4.__V) : u4.__; } -function setNodeValue(store, state, key2, newValue) { - const node = getNode$1(key2); - if (node.set == null) { - throw new ReadOnlyRecoilValueError(`Attempt to set read-only RecoilValue: ${key2}`); - } - const set = node.set; - initializeNodeIfNewToStore(store, state, key2, "set"); - return set(store, state, newValue); +function T2(n2, t4) { + return o2 = 8, F(function() { + return n2; + }, t4); } -function peekNodeInfo(store, state, key2) { - var _graph$nodeDeps$get, _storeState$nodeToCom, _storeState$nodeToCom2; - const storeState = store.getState(); - const graph2 = store.getGraph(state.version); - const type = storeState.knownAtoms.has(key2) ? "atom" : storeState.knownSelectors.has(key2) ? "selector" : void 0; - const downstreamNodes = Recoil_filterIterable(getDownstreamNodes(store, state, /* @__PURE__ */ new Set([key2])), (nodeKey) => nodeKey !== key2); - return { - loadable: peekNodeLoadable(store, state, key2), - isActive: storeState.knownAtoms.has(key2) || storeState.knownSelectors.has(key2), - isSet: type === "selector" ? false : state.atomValues.has(key2), - isModified: state.dirtyAtoms.has(key2), - type, - deps: recoilValuesForKeys$1((_graph$nodeDeps$get = graph2.nodeDeps.get(key2)) !== null && _graph$nodeDeps$get !== void 0 ? _graph$nodeDeps$get : []), - subscribers: { - nodes: recoilValuesForKeys$1(downstreamNodes), - components: Recoil_mapIterable((_storeState$nodeToCom = (_storeState$nodeToCom2 = storeState.nodeToComponentSubscriptions.get(key2)) === null || _storeState$nodeToCom2 === void 0 ? void 0 : _storeState$nodeToCom2.values()) !== null && _storeState$nodeToCom !== void 0 ? _storeState$nodeToCom : [], ([name]) => ({ - name - })) - } - }; +function q2(n2) { + var u4 = r2.context[n2.__c], i4 = d2(t2++, 9); + return i4.c = n2, u4 ? (null == i4.__ && (i4.__ = true, u4.sub(r2)), u4.props.value) : n2.__; } -function getDownstreamNodes(store, state, keys) { - const visitedNodes = /* @__PURE__ */ new Set(); - const visitingNodes = Array.from(keys); - const graph2 = store.getGraph(state.version); - for (let key2 = visitingNodes.pop(); key2; key2 = visitingNodes.pop()) { - var _graph$nodeToNodeSubs; - visitedNodes.add(key2); - const subscribedNodes = (_graph$nodeToNodeSubs = graph2.nodeToNodeSubscriptions.get(key2)) !== null && _graph$nodeToNodeSubs !== void 0 ? _graph$nodeToNodeSubs : emptySet; - for (const downstreamNode of subscribedNodes) { - if (!visitedNodes.has(downstreamNode)) { - visitingNodes.push(downstreamNode); - } - } - } - return visitedNodes; +function x2(t4, r3) { + l.useDebugValue && l.useDebugValue(r3 ? r3(t4) : t4); } -var Recoil_FunctionalCore = { - getNodeLoadable, - peekNodeLoadable, - setNodeValue, - cleanUpNode, - setUnvalidatedAtomValue_DEPRECATED, - peekNodeInfo, - getDownstreamNodes, - initializeNodeIfNewToStore -}; -var { - CANCELED: CANCELED$1 -} = Recoil_Loadable; -var { - getDownstreamNodes: getDownstreamNodes$1, - getNodeLoadable: getNodeLoadable$1, - setNodeValue: setNodeValue$1 -} = Recoil_FunctionalCore; -var { - getNodeMaybe: getNodeMaybe$2 -} = Recoil_Node; -var { - DefaultValue: DefaultValue$1, - RecoilValueNotReady: RecoilValueNotReady$1 -} = Recoil_Node; -var { - AbstractRecoilValue: AbstractRecoilValue$1, - RecoilState: RecoilState$1, - RecoilValueReadOnly: RecoilValueReadOnly$1, - isRecoilValue: isRecoilValue$1 -} = Recoil_RecoilValue$1; -function getRecoilValueAsLoadable(store, { - key: key2 -}, treeState = store.getState().currentTree) { - var _storeState$nextTree, _storeState$previousT; - const storeState = store.getState(); - if (!(treeState.version === storeState.currentTree.version || treeState.version === ((_storeState$nextTree = storeState.nextTree) === null || _storeState$nextTree === void 0 ? void 0 : _storeState$nextTree.version) || treeState.version === ((_storeState$previousT = storeState.previousTree) === null || _storeState$previousT === void 0 ? void 0 : _storeState$previousT.version))) { - Recoil_recoverableViolation("Tried to read from a discarded tree"); - } - const loadable = getNodeLoadable$1(store, treeState, key2); - if (loadable.state === "loading") { - loadable.contents.catch(() => { - return CANCELED$1; - }); +function V() { + var n2 = d2(t2++, 11); + if (!n2.__) { + for (var u4 = r2.__v; null !== u4 && !u4.__m && null !== u4.__; ) + u4 = u4.__; + var i4 = u4.__m || (u4.__m = [0, 0]); + n2.__ = "P" + i4[0] + "-" + i4[1]++; } - return loadable; + return n2.__; } -function applyAtomValueWrites(atomValues, writes) { - const result = atomValues.clone(); - writes.forEach((v3, k5) => { - if (v3.state === "hasValue" && v3.contents instanceof DefaultValue$1) { - result.delete(k5); - } else { - result.set(k5, v3); - } - }); - return result; +function b2() { + for (var t4; t4 = f2.shift(); ) + if (t4.__P && t4.__H) + try { + t4.__H.__h.forEach(k2), t4.__H.__h.forEach(w2), t4.__H.__h = []; + } catch (r3) { + t4.__H.__h = [], l.__e(r3, t4.__v); + } } -function valueFromValueOrUpdater(store, state, { - key: key2 -}, valueOrUpdater) { - if (typeof valueOrUpdater === "function") { - const current = getNodeLoadable$1(store, state, key2); - if (current.state === "loading") { - throw new RecoilValueNotReady$1(key2); - } else if (current.state === "hasError") { - throw current.contents; +l.__b = function(n2) { + r2 = null, e2 && e2(n2); +}, l.__r = function(n2) { + a2 && a2(n2), t2 = 0; + var i4 = (r2 = n2.__c).__H; + i4 && (u2 === r2 ? (i4.__h = [], r2.__h = [], i4.__.forEach(function(n3) { + n3.__N && (n3.__ = n3.__N), n3.__V = c2, n3.__N = n3.i = void 0; + })) : (i4.__h.forEach(k2), i4.__h.forEach(w2), i4.__h = [])), u2 = r2; +}, l.diffed = function(t4) { + v2 && v2(t4); + var o3 = t4.__c; + o3 && o3.__H && (o3.__H.__h.length && (1 !== f2.push(o3) && i2 === l.requestAnimationFrame || ((i2 = l.requestAnimationFrame) || j2)(b2)), o3.__H.__.forEach(function(n2) { + n2.i && (n2.__H = n2.i), n2.__V !== c2 && (n2.__ = n2.__V), n2.i = void 0, n2.__V = c2; + })), u2 = r2 = null; +}, l.__c = function(t4, r3) { + r3.some(function(t5) { + try { + t5.__h.forEach(k2), t5.__h = t5.__h.filter(function(n2) { + return !n2.__ || w2(n2); + }); + } catch (u4) { + r3.some(function(n2) { + n2.__h && (n2.__h = []); + }), r3 = [], l.__e(u4, t5.__v); + } + }), l2 && l2(t4, r3); +}, l.unmount = function(t4) { + m2 && m2(t4); + var r3, u4 = t4.__c; + u4 && u4.__H && (u4.__H.__.forEach(function(n2) { + try { + k2(n2); + } catch (n3) { + r3 = n3; } - return valueOrUpdater(current.contents); - } else { - return valueOrUpdater; - } + }), u4.__H = void 0, r3 && l.__e(r3, u4.__v)); +}; +var g2 = "function" == typeof requestAnimationFrame; +function j2(n2) { + var t4, r3 = function() { + clearTimeout(u4), g2 && cancelAnimationFrame(t4), setTimeout(n2); + }, u4 = setTimeout(r3, 100); + g2 && (t4 = requestAnimationFrame(r3)); } -function applyAction(store, state, action) { - if (action.type === "set") { - const { - recoilValue, - valueOrUpdater - } = action; - const newValue = valueFromValueOrUpdater(store, state, recoilValue, valueOrUpdater); - const writes = setNodeValue$1(store, state, recoilValue.key, newValue); - for (const [key2, loadable] of writes.entries()) { - writeLoadableToTreeState(state, key2, loadable); - } - } else if (action.type === "setLoadable") { - const { - recoilValue: { - key: key2 - }, - loadable - } = action; - writeLoadableToTreeState(state, key2, loadable); - } else if (action.type === "markModified") { - const { - recoilValue: { - key: key2 - } - } = action; - state.dirtyAtoms.add(key2); - } else if (action.type === "setUnvalidated") { - var _node$invalidate; - const { - recoilValue: { - key: key2 - }, - unvalidatedValue - } = action; - const node = getNodeMaybe$2(key2); - node === null || node === void 0 ? void 0 : (_node$invalidate = node.invalidate) === null || _node$invalidate === void 0 ? void 0 : _node$invalidate.call(node, state); - state.atomValues.delete(key2); - state.nonvalidatedAtoms.set(key2, unvalidatedValue); - state.dirtyAtoms.add(key2); - } else { - Recoil_recoverableViolation(`Unknown action ${action.type}`); - } +function k2(n2) { + var t4 = r2, u4 = n2.__c; + "function" == typeof u4 && (n2.__c = void 0, u4()), r2 = t4; } -function writeLoadableToTreeState(state, key2, loadable) { - if (loadable.state === "hasValue" && loadable.contents instanceof DefaultValue$1) { - state.atomValues.delete(key2); - } else { - state.atomValues.set(key2, loadable); - } - state.dirtyAtoms.add(key2); - state.nonvalidatedAtoms.delete(key2); +function w2(n2) { + var t4 = r2; + n2.__c = n2.__(), r2 = t4; } -function applyActionsToStore(store, actions) { - store.replaceState((state) => { - const newState = copyTreeState(state); - for (const action of actions) { - applyAction(store, newState, action); - } - invalidateDownstreams(store, newState); - return newState; +function z2(n2, t4) { + return !n2 || n2.length !== t4.length || t4.some(function(t5, r3) { + return t5 !== n2[r3]; }); } -function queueOrPerformStateUpdate(store, action) { - if (batchStack.length) { - const actionsByStore = batchStack[batchStack.length - 1]; - let actions = actionsByStore.get(store); - if (!actions) { - actionsByStore.set(store, actions = []); - } - actions.push(action); - } else { - applyActionsToStore(store, [action]); - } +function B2(n2, t4) { + return "function" == typeof t4 ? t4(n2) : t4; } -var batchStack = []; -function batchStart() { - const actionsByStore = /* @__PURE__ */ new Map(); - batchStack.push(actionsByStore); - return () => { - for (const [store, actions] of actionsByStore) { - applyActionsToStore(store, actions); - } - const popped = batchStack.pop(); - if (popped !== actionsByStore) { - Recoil_recoverableViolation("Incorrect order of batch popping"); - } - }; + +// node_modules/preact/compat/dist/compat.module.js +function g3(n2, t4) { + for (var e4 in t4) + n2[e4] = t4[e4]; + return n2; } -function copyTreeState(state) { - return { - ...state, - atomValues: state.atomValues.clone(), - nonvalidatedAtoms: state.nonvalidatedAtoms.clone(), - dirtyAtoms: new Set(state.dirtyAtoms) - }; +function C2(n2, t4) { + for (var e4 in n2) + if ("__source" !== e4 && !(e4 in t4)) + return true; + for (var r3 in t4) + if ("__source" !== r3 && n2[r3] !== t4[r3]) + return true; + return false; } -function invalidateDownstreams(store, state) { - const downstreams = getDownstreamNodes$1(store, state, state.dirtyAtoms); - for (const key2 of downstreams) { - var _getNodeMaybe, _getNodeMaybe$invalid; - (_getNodeMaybe = getNodeMaybe$2(key2)) === null || _getNodeMaybe === void 0 ? void 0 : (_getNodeMaybe$invalid = _getNodeMaybe.invalidate) === null || _getNodeMaybe$invalid === void 0 ? void 0 : _getNodeMaybe$invalid.call(_getNodeMaybe, state); - } +function E(n2, t4) { + return n2 === t4 && (0 !== n2 || 1 / n2 == 1 / t4) || n2 != n2 && t4 != t4; } -function setRecoilValue(store, recoilValue, valueOrUpdater) { - queueOrPerformStateUpdate(store, { - type: "set", - recoilValue, - valueOrUpdater - }); +function w3(n2) { + this.props = n2; } -function setRecoilValueLoadable(store, recoilValue, loadable) { - if (loadable instanceof DefaultValue$1) { - return setRecoilValue(store, recoilValue, loadable); +function R(n2, e4) { + function r3(n3) { + var t4 = this.props.ref, r4 = t4 == n3.ref; + return !r4 && t4 && (t4.call ? t4(null) : t4.current = null), e4 ? !e4(this.props, n3) || !r4 : C2(this.props, n3); } - queueOrPerformStateUpdate(store, { - type: "setLoadable", - recoilValue, - loadable - }); + function u4(e5) { + return this.shouldComponentUpdate = r3, h(n2, e5); + } + return u4.displayName = "Memo(" + (n2.displayName || n2.name) + ")", u4.prototype.isReactComponent = true, u4.__f = true, u4; } -function markRecoilValueModified(store, recoilValue) { - queueOrPerformStateUpdate(store, { - type: "markModified", - recoilValue - }); +(w3.prototype = new d()).isPureReactComponent = true, w3.prototype.shouldComponentUpdate = function(n2, t4) { + return C2(this.props, n2) || C2(this.state, t4); +}; +var x3 = l.__b; +l.__b = function(n2) { + n2.type && n2.type.__f && n2.ref && (n2.props.ref = n2.ref, n2.ref = null), x3 && x3(n2); +}; +var N2 = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.forward_ref") || 3911; +function k3(n2) { + function t4(t5) { + var e4 = g3({}, t5); + return delete e4.ref, n2(e4, t5.ref || null); + } + return t4.$$typeof = N2, t4.render = t4, t4.prototype.isReactComponent = t4.__f = true, t4.displayName = "ForwardRef(" + (n2.displayName || n2.name) + ")", t4; } -function setUnvalidatedRecoilValue(store, recoilValue, unvalidatedValue) { - queueOrPerformStateUpdate(store, { - type: "setUnvalidated", - recoilValue, - unvalidatedValue - }); +var A3 = function(n2, t4) { + return null == n2 ? null : x(x(n2).map(t4)); +}; +var O2 = { map: A3, forEach: A3, count: function(n2) { + return n2 ? x(n2).length : 0; +}, only: function(n2) { + var t4 = x(n2); + if (1 !== t4.length) + throw "Children.only"; + return t4[0]; +}, toArray: x }; +var T3 = l.__e; +l.__e = function(n2, t4, e4, r3) { + if (n2.then) { + for (var u4, o3 = t4; o3 = o3.__; ) + if ((u4 = o3.__c) && u4.__c) + return null == t4.__e && (t4.__e = e4.__e, t4.__k = e4.__k), u4.__c(n2, t4); + } + T3(n2, t4, e4, r3); +}; +var I2 = l.unmount; +function L2(n2, t4, e4) { + return n2 && (n2.__c && n2.__c.__H && (n2.__c.__H.__.forEach(function(n3) { + "function" == typeof n3.__c && n3.__c(); + }), n2.__c.__H = null), null != (n2 = g3({}, n2)).__c && (n2.__c.__P === e4 && (n2.__c.__P = t4), n2.__c = null), n2.__k = n2.__k && n2.__k.map(function(n3) { + return L2(n3, t4, e4); + })), n2; } -var subscriptionID = 0; -function subscribeToRecoilValue(store, { - key: key2 -}, callback, componentDebugName = null) { - const subID = subscriptionID++; - const storeState = store.getState(); - if (!storeState.nodeToComponentSubscriptions.has(key2)) { - storeState.nodeToComponentSubscriptions.set(key2, /* @__PURE__ */ new Map()); - } - Recoil_nullthrows(storeState.nodeToComponentSubscriptions.get(key2)).set(subID, [componentDebugName !== null && componentDebugName !== void 0 ? componentDebugName : "", callback]); - if (Recoil_gkx_1("recoil_early_rendering_2021")) { - const nextTree = store.getState().nextTree; - if (nextTree && nextTree.dirtyAtoms.has(key2)) { - callback(nextTree); - } +function U(n2, t4, e4) { + return n2 && (n2.__v = null, n2.__k = n2.__k && n2.__k.map(function(n3) { + return U(n3, t4, e4); + }), n2.__c && n2.__c.__P === t4 && (n2.__e && e4.insertBefore(n2.__e, n2.__d), n2.__c.__e = true, n2.__c.__P = e4)), n2; +} +function D() { + this.__u = 0, this.t = null, this.__b = null; +} +function F2(n2) { + var t4 = n2.__.__c; + return t4 && t4.__a && t4.__a(n2); +} +function M2(n2) { + var e4, r3, u4; + function o3(o4) { + if (e4 || (e4 = n2()).then(function(n3) { + r3 = n3.default || n3; + }, function(n3) { + u4 = n3; + }), u4) + throw u4; + if (!r3) + throw e4; + return h(r3, o4); } - return { - release: () => { - const storeState2 = store.getState(); - const subs = storeState2.nodeToComponentSubscriptions.get(key2); - if (subs === void 0 || !subs.has(subID)) { - Recoil_recoverableViolation(`Subscription missing at release time for atom ${key2}. This is a bug in Recoil.`); - return; - } - subs.delete(subID); - if (subs.size === 0) { - storeState2.nodeToComponentSubscriptions.delete(key2); - } - } - }; + return o3.displayName = "Lazy", o3.__f = true, o3; } -var Recoil_RecoilValueInterface = { - RecoilValueReadOnly: RecoilValueReadOnly$1, - AbstractRecoilValue: AbstractRecoilValue$1, - RecoilState: RecoilState$1, - getRecoilValueAsLoadable, - setRecoilValue, - setRecoilValueLoadable, - markRecoilValueModified, - setUnvalidatedRecoilValue, - subscribeToRecoilValue, - isRecoilValue: isRecoilValue$1, - applyAtomValueWrites, - batchStart, - writeLoadableToTreeState, - invalidateDownstreams, - copyTreeState, - invalidateDownstreams_FOR_TESTING: invalidateDownstreams -}; -var { - unstable_batchedUpdates -} = bn; -var ReactBatchedUpdates = { - unstable_batchedUpdates -}; -var { - unstable_batchedUpdates: unstable_batchedUpdates$1 -} = ReactBatchedUpdates; -var Recoil_ReactBatchedUpdates = { - unstable_batchedUpdates: unstable_batchedUpdates$1 -}; -var { - batchStart: batchStart$1 -} = Recoil_RecoilValueInterface; -var { - unstable_batchedUpdates: unstable_batchedUpdates$2 -} = Recoil_ReactBatchedUpdates; -var batcher = unstable_batchedUpdates$2; -var setBatcher = (newBatcher) => { - batcher = newBatcher; -}; -var getBatcher = () => batcher; -var batchUpdates = (callback) => { - batcher(() => { - let batchEnd = () => void 0; - try { - batchEnd = batchStart$1(); - callback(); - } finally { - batchEnd(); +function V2() { + this.u = null, this.o = null; +} +l.unmount = function(n2) { + var t4 = n2.__c; + t4 && t4.__R && t4.__R(), t4 && true === n2.__h && (n2.type = null), I2 && I2(n2); +}, (D.prototype = new d()).__c = function(n2, t4) { + var e4 = t4.__c, r3 = this; + null == r3.t && (r3.t = []), r3.t.push(e4); + var u4 = F2(r3.__v), o3 = false, i4 = function() { + o3 || (o3 = true, e4.__R = null, u4 ? u4(l3) : l3()); + }; + e4.__R = i4; + var l3 = function() { + if (!--r3.__u) { + if (r3.state.__a) { + var n3 = r3.state.__a; + r3.__v.__k[0] = U(n3, n3.__c.__P, n3.__c.__O); + } + var t5; + for (r3.setState({ __a: r3.__b = null }); t5 = r3.t.pop(); ) + t5.forceUpdate(); + } + }, c4 = true === t4.__h; + r3.__u++ || c4 || r3.setState({ __a: r3.__b = r3.__v.__k[0] }), n2.then(i4, i4); +}, D.prototype.componentWillUnmount = function() { + this.t = []; +}, D.prototype.render = function(n2, e4) { + if (this.__b) { + if (this.__v.__k) { + var r3 = document.createElement("div"), o3 = this.__v.__k[0].__c; + this.__v.__k[0] = L2(this.__b, r3, o3.__O = o3.__P); + } + this.__b = null; + } + var i4 = e4.__a && h(p, null, n2.fallback); + return i4 && (i4.__h = null), [h(p, null, e4.__a ? null : n2.children), i4]; +}; +var W = function(n2, t4, e4) { + if (++e4[1] === e4[0] && n2.o.delete(t4), n2.props.revealOrder && ("t" !== n2.props.revealOrder[0] || !n2.o.size)) + for (e4 = n2.u; e4; ) { + for (; e4.length > 3; ) + e4.pop()(); + if (e4[1] < e4[0]) + break; + n2.u = e4 = e4[2]; } +}; +function P2(n2) { + return this.getChildContext = function() { + return n2.context; + }, n2.children; +} +function $2(n2) { + var e4 = this, r3 = n2.i; + e4.componentWillUnmount = function() { + P(null, e4.l), e4.l = null, e4.i = null; + }, e4.i && e4.i !== r3 && e4.componentWillUnmount(), n2.__v ? (e4.l || (e4.i = r3, e4.l = { nodeType: 1, parentNode: r3, childNodes: [], appendChild: function(n3) { + this.childNodes.push(n3), e4.i.appendChild(n3); + }, insertBefore: function(n3, t4) { + this.childNodes.push(n3), e4.i.appendChild(n3); + }, removeChild: function(n3) { + this.childNodes.splice(this.childNodes.indexOf(n3) >>> 1, 1), e4.i.removeChild(n3); + } }), P(h(P2, { context: e4.context }, n2.__v), e4.l)) : e4.l && e4.componentWillUnmount(); +} +function j3(n2, e4) { + var r3 = h($2, { __v: n2, i: e4 }); + return r3.containerInfo = e4, r3; +} +(V2.prototype = new d()).__a = function(n2) { + var t4 = this, e4 = F2(t4.__v), r3 = t4.o.get(n2); + return r3[0]++, function(u4) { + var o3 = function() { + t4.props.revealOrder ? (r3.push(u4), W(t4, n2, r3)) : u4(); + }; + e4 ? e4(o3) : o3(); + }; +}, V2.prototype.render = function(n2) { + this.u = null, this.o = /* @__PURE__ */ new Map(); + var t4 = x(n2.children); + n2.revealOrder && "b" === n2.revealOrder[0] && t4.reverse(); + for (var e4 = t4.length; e4--; ) + this.o.set(t4[e4], this.u = [1, 0, this.u]); + return n2.children; +}, V2.prototype.componentDidUpdate = V2.prototype.componentDidMount = function() { + var n2 = this; + this.o.forEach(function(t4, e4) { + W(n2, e4, t4); }); }; -var Recoil_Batching = { - getBatcher, - setBatcher, - batchUpdates +var z3 = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103; +var B3 = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/; +var H2 = "undefined" != typeof document; +var Z = function(n2) { + return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/i : /fil|che|ra/i).test(n2); }; -function enqueueExecution(s5, f4) { - f4(); +function Y(n2, t4, e4) { + return null == t4.__k && (t4.textContent = ""), P(n2, t4), "function" == typeof e4 && e4(), n2 ? n2.__c : null; } -var Recoil_Queue = { - enqueueExecution +function q3(n2, t4, e4) { + return S(n2, t4), "function" == typeof e4 && e4(), n2 ? n2.__c : null; +} +d.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(t4) { + Object.defineProperty(d.prototype, t4, { configurable: true, get: function() { + return this["UNSAFE_" + t4]; + }, set: function(n2) { + Object.defineProperty(this, t4, { configurable: true, writable: true, value: n2 }); + } }); +}); +var G = l.event; +function J() { +} +function K() { + return this.cancelBubble; +} +function Q() { + return this.defaultPrevented; +} +l.event = function(n2) { + return G && (n2 = G(n2)), n2.persist = J, n2.isPropagationStopped = K, n2.isDefaultPrevented = Q, n2.nativeEvent = n2; +}; +var X; +var nn = { configurable: true, get: function() { + return this.class; +} }; +var tn = l.vnode; +l.vnode = function(n2) { + var t4 = n2.type, e4 = n2.props, u4 = e4; + if ("string" == typeof t4) { + var o3 = -1 === t4.indexOf("-"); + for (var i4 in u4 = {}, e4) { + var l3 = e4[i4]; + H2 && "children" === i4 && "noscript" === t4 || "value" === i4 && "defaultValue" in e4 && null == l3 || ("defaultValue" === i4 && "value" in e4 && null == e4.value ? i4 = "value" : "download" === i4 && true === l3 ? l3 = "" : /ondoubleclick/i.test(i4) ? i4 = "ondblclick" : /^onchange(textarea|input)/i.test(i4 + t4) && !Z(e4.type) ? i4 = "oninput" : /^onfocus$/i.test(i4) ? i4 = "onfocusin" : /^onblur$/i.test(i4) ? i4 = "onfocusout" : /^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i4) ? i4 = i4.toLowerCase() : o3 && B3.test(i4) ? i4 = i4.replace(/[A-Z0-9]/g, "-$&").toLowerCase() : null === l3 && (l3 = void 0), /^oninput$/i.test(i4) && (i4 = i4.toLowerCase(), u4[i4] && (i4 = "oninputCapture")), u4[i4] = l3); + } + "select" == t4 && u4.multiple && Array.isArray(u4.value) && (u4.value = x(e4.children).forEach(function(n3) { + n3.props.selected = -1 != u4.value.indexOf(n3.props.value); + })), "select" == t4 && null != u4.defaultValue && (u4.value = x(e4.children).forEach(function(n3) { + n3.props.selected = u4.multiple ? -1 != u4.defaultValue.indexOf(n3.props.value) : u4.defaultValue == n3.props.value; + })), n2.props = u4, e4.class != e4.className && (nn.enumerable = "className" in e4, null != e4.className && (u4.class = e4.className), Object.defineProperty(u4, "className", nn)); + } + n2.$$typeof = z3, tn && tn(n2); +}; +var en = l.__r; +l.__r = function(n2) { + en && en(n2), X = n2.__c; +}; +var rn = { ReactCurrentDispatcher: { current: { readContext: function(n2) { + return X.__n[n2.__c].props.value; +} } } }; +function on(n2) { + return h.bind(null, n2); +} +function ln(n2) { + return !!n2 && n2.$$typeof === z3; +} +function cn(n2) { + return ln(n2) ? q.apply(null, arguments) : n2; +} +function fn(n2) { + return !!n2.__k && (P(null, n2), true); +} +function an(n2) { + return n2 && (n2.base || 1 === n2.nodeType && n2) || null; +} +var sn = function(n2, t4) { + return n2(t4); }; -function differenceSets(set, ...setsWithValuesToRemove) { - const ret = /* @__PURE__ */ new Set(); - FIRST: - for (const value of set) { - for (const otherSet of setsWithValuesToRemove) { - if (otherSet.has(value)) { - continue FIRST; - } - } - ret.add(value); - } - return ret; +var hn = function(n2, t4) { + return n2(t4); +}; +var vn = p; +function dn(n2) { + n2(); } -var Recoil_differenceSets = differenceSets; -function mapMap(map, callback) { - const result = /* @__PURE__ */ new Map(); - map.forEach((value, key2) => { - result.set(key2, callback(value, key2)); - }); - return result; +function pn(n2) { + return n2; } -var Recoil_mapMap = mapMap; -function graph() { - return { - nodeDeps: /* @__PURE__ */ new Map(), - nodeToNodeSubscriptions: /* @__PURE__ */ new Map() - }; +function mn() { + return [false, dn]; } -function cloneGraph(graph2) { +var yn = s2; +function _n(n2, t4) { + var e4 = t4(), r3 = p2({ h: { __: e4, v: t4 } }), u4 = r3[0].h, o3 = r3[1]; + return s2(function() { + u4.__ = e4, u4.v = t4, E(u4.__, t4()) || o3({ h: u4 }); + }, [n2, e4, t4]), h2(function() { + return E(u4.__, u4.v()) || o3({ h: u4 }), n2(function() { + E(u4.__, u4.v()) || o3({ h: u4 }); + }); + }, [n2]), e4; +} +var bn = { useState: p2, useId: V, useReducer: y2, useEffect: h2, useLayoutEffect: s2, useInsertionEffect: yn, useTransition: mn, useDeferredValue: pn, useSyncExternalStore: _n, startTransition: dn, useRef: _2, useImperativeHandle: A2, useMemo: F, useCallback: T2, useContext: q2, useDebugValue: x2, version: "17.0.2", Children: O2, render: Y, hydrate: q3, unmountComponentAtNode: fn, createPortal: j3, createElement: h, createContext: B, createFactory: on, cloneElement: cn, createRef: y, Fragment: p, isValidElement: ln, findDOMNode: an, Component: d, PureComponent: w3, memo: R, forwardRef: k3, flushSync: hn, unstable_batchedUpdates: sn, StrictMode: vn, Suspense: D, SuspenseList: V2, lazy: M2, __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: rn }; + +// node_modules/preact/compat/client.mjs +function createRoot(container) { return { - nodeDeps: Recoil_mapMap(graph2.nodeDeps, (s5) => new Set(s5)), - nodeToNodeSubscriptions: Recoil_mapMap(graph2.nodeToNodeSubscriptions, (s5) => new Set(s5)) + render(children) { + Y(children, container); + }, + unmount() { + fn(container); + } }; } -function mergeDependencyMapIntoGraph(deps, graph2, olderGraph) { - const { - nodeDeps, - nodeToNodeSubscriptions - } = graph2; - deps.forEach((upstreams, downstream) => { - const existingUpstreams = nodeDeps.get(downstream); - if (existingUpstreams && olderGraph && existingUpstreams !== olderGraph.nodeDeps.get(downstream)) { - return; + +// node_modules/recoil/es/recoil.js +function isPromise(p3) { + return !!p3 && typeof p3.then === "function"; +} +var Recoil_isPromise = isPromise; +function nullthrows(x5, message) { + if (x5 != null) { + return x5; + } + throw new Error(message !== null && message !== void 0 ? message : "Got unexpected null or undefined"); +} +var Recoil_nullthrows = nullthrows; +var Canceled = class { +}; +var CANCELED = new Canceled(); +var loadableAccessors = { + valueMaybe() { + return void 0; + }, + valueOrThrow() { + const error = new Error( + `Loadable expected value, but in "${this.state}" state` + ); + throw error; + }, + errorMaybe() { + return void 0; + }, + errorOrThrow() { + const error = new Error( + `Loadable expected error, but in "${this.state}" state` + ); + throw error; + }, + promiseMaybe() { + return void 0; + }, + promiseOrThrow() { + const error = new Error( + `Loadable expected promise, but in "${this.state}" state` + ); + throw error; + }, + is(other) { + return other.state === this.state && other.contents === this.contents; + }, + map(map) { + if (this.state === "hasError") { + return this; } - nodeDeps.set(downstream, new Set(upstreams)); - const addedUpstreams = existingUpstreams == null ? upstreams : Recoil_differenceSets(upstreams, existingUpstreams); - addedUpstreams.forEach((upstream) => { - if (!nodeToNodeSubscriptions.has(upstream)) { - nodeToNodeSubscriptions.set(upstream, /* @__PURE__ */ new Set()); + if (this.state === "hasValue") { + try { + const next = map(this.contents); + return Recoil_isPromise(next) ? loadableWithPromise(next.then((value) => ({ + __value: value + }))) : loadableWithValue(next); + } catch (e4) { + return Recoil_isPromise(e4) ? loadableWithPromise(e4.next(() => map(this.contents))) : loadableWithError(e4); } - const existing = Recoil_nullthrows(nodeToNodeSubscriptions.get(upstream)); - existing.add(downstream); - }); - if (existingUpstreams) { - const removedUpstreams = Recoil_differenceSets(existingUpstreams, upstreams); - removedUpstreams.forEach((upstream) => { - if (!nodeToNodeSubscriptions.has(upstream)) { - return; - } - const existing = Recoil_nullthrows(nodeToNodeSubscriptions.get(upstream)); - existing.delete(downstream); - if (existing.size === 0) { - nodeToNodeSubscriptions.delete(upstream); - } - }); + } + if (this.state === "loading") { + return loadableWithPromise( + this.contents.then((value) => ({ + __value: map(value.__value) + })).catch((e4) => { + if (Recoil_isPromise(e4)) { + return e4.then(() => map(this.contents)); + } + throw e4; + }) + ); + } + const error = new Error("Invalid Loadable state"); + throw error; + } +}; +function loadableWithValue(value) { + return Object.freeze({ + state: "hasValue", + contents: value, + ...loadableAccessors, + getValue() { + return this.contents; + }, + toPromise() { + return Promise.resolve(this.contents); + }, + valueMaybe() { + return this.contents; + }, + valueOrThrow() { + return this.contents; } }); } -function saveDependencyMapToStore(dependencyMap, store, version) { - var _storeState$nextTree, _storeState$previousT, _storeState$previousT2, _storeState$previousT3; - const storeState = store.getState(); - if (!(version === storeState.currentTree.version || version === ((_storeState$nextTree = storeState.nextTree) === null || _storeState$nextTree === void 0 ? void 0 : _storeState$nextTree.version) || version === ((_storeState$previousT = storeState.previousTree) === null || _storeState$previousT === void 0 ? void 0 : _storeState$previousT.version))) { - Recoil_recoverableViolation("Tried to save dependencies to a discarded tree"); - } - const graph2 = store.getGraph(version); - mergeDependencyMapIntoGraph(dependencyMap, graph2); - if (version === ((_storeState$previousT2 = storeState.previousTree) === null || _storeState$previousT2 === void 0 ? void 0 : _storeState$previousT2.version)) { - const currentGraph = store.getGraph(storeState.currentTree.version); - mergeDependencyMapIntoGraph(dependencyMap, currentGraph, graph2); - } - if (version === ((_storeState$previousT3 = storeState.previousTree) === null || _storeState$previousT3 === void 0 ? void 0 : _storeState$previousT3.version) || version === storeState.currentTree.version) { - var _storeState$nextTree2; - const nextVersion = (_storeState$nextTree2 = storeState.nextTree) === null || _storeState$nextTree2 === void 0 ? void 0 : _storeState$nextTree2.version; - if (nextVersion !== void 0) { - const nextGraph = store.getGraph(nextVersion); - mergeDependencyMapIntoGraph(dependencyMap, nextGraph, graph2); +function loadableWithError(error) { + return Object.freeze({ + state: "hasError", + contents: error, + ...loadableAccessors, + getValue() { + throw this.contents; + }, + toPromise() { + return Promise.reject(this.contents); + }, + errorMaybe() { + return this.contents; + }, + errorOrThrow() { + return this.contents; } - } + }); } -function mergeDepsIntoDependencyMap(from, into) { - from.forEach((upstreamDeps, downstreamNode) => { - if (!into.has(downstreamNode)) { - into.set(downstreamNode, /* @__PURE__ */ new Set()); +function loadableWithPromise(promise) { + return Object.freeze({ + state: "loading", + contents: promise, + ...loadableAccessors, + getValue() { + throw this.contents.then(({ + __value + }) => __value); + }, + toPromise() { + return this.contents.then(({ + __value + }) => __value); + }, + promiseMaybe() { + return this.contents.then(({ + __value + }) => __value); + }, + promiseOrThrow() { + return this.contents.then(({ + __value + }) => __value); } - const deps = Recoil_nullthrows(into.get(downstreamNode)); - upstreamDeps.forEach((dep) => deps.add(dep)); }); } -function addToDependencyMap(downstream, upstream, dependencyMap) { - if (!dependencyMap.has(downstream)) { - dependencyMap.set(downstream, /* @__PURE__ */ new Set()); - } - Recoil_nullthrows(dependencyMap.get(downstream)).add(upstream); +function loadableLoading() { + return loadableWithPromise(new Promise(() => { + })); } -var Recoil_Graph = { - addToDependencyMap, - cloneGraph, - graph, - mergeDepsIntoDependencyMap, - saveDependencyMapToStore -}; -function createCommonjsModule(fn2, module2) { - return module2 = { exports: {} }, fn2(module2, module2.exports), module2.exports; +function loadableAll(inputs) { + return inputs.every((i4) => i4.state === "hasValue") ? loadableWithValue(inputs.map((i4) => i4.contents)) : inputs.some((i4) => i4.state === "hasError") ? loadableWithError(Recoil_nullthrows(inputs.find((i4) => i4.state === "hasError"), "Invalid loadable passed to loadableAll").contents) : loadableWithPromise(Promise.all(inputs.map((i4) => i4.contents)).then((value) => ({ + __value: value + }))); } -var hamt_1 = createCommonjsModule(function(module2) { - var _typeof5 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { - return typeof obj; - } : function(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - var hamt = {}; - var SIZE = 5; - var BUCKET_SIZE = Math.pow(2, SIZE); - var MASK = BUCKET_SIZE - 1; - var MAX_INDEX_NODE = BUCKET_SIZE / 2; - var MIN_ARRAY_NODE = BUCKET_SIZE / 4; - var nothing = {}; - var constant = function constant2(x5) { - return function() { - return x5; - }; - }; - var hash = hamt.hash = function(str) { - var type = typeof str === "undefined" ? "undefined" : _typeof5(str); - if (type === "number") - return str; - if (type !== "string") - str += ""; - var hash2 = 0; - for (var i4 = 0, len = str.length; i4 < len; ++i4) { - var c4 = str.charCodeAt(i4); - hash2 = (hash2 << 5) - hash2 + c4 | 0; +var Recoil_Loadable = { + loadableWithValue, + loadableWithError, + loadableWithPromise, + loadableLoading, + loadableAll, + Canceled, + CANCELED +}; +var _useMutableSource; +var useMutableSource = (_useMutableSource = bn.useMutableSource) !== null && _useMutableSource !== void 0 ? _useMutableSource : bn.unstable_useMutableSource; +function mutableSourceExists() { + return useMutableSource && !(typeof window !== "undefined" && window.$disableRecoilValueMutableSource_TEMP_HACK_DO_NOT_USE); +} +var Recoil_mutableSource = { + mutableSourceExists, + useMutableSource +}; +var { + mutableSourceExists: mutableSourceExists$1 +} = Recoil_mutableSource; +var gks = (/* @__PURE__ */ new Map()).set("recoil_hamt_2020", true).set("recoil_memory_managament_2020", true).set("recoil_suppress_rerender_in_callback", true); +function Recoil_gkx(gk) { + var _gks$get; + if (gk === "recoil_early_rendering_2021" && !mutableSourceExists$1()) { + return false; + } + return (_gks$get = gks.get(gk)) !== null && _gks$get !== void 0 ? _gks$get : false; +} +Recoil_gkx.setPass = (gk) => { + gks.set(gk, true); +}; +Recoil_gkx.setFail = (gk) => { + gks.set(gk, false); +}; +var Recoil_gkx_1 = Recoil_gkx; +function recoverableViolation(message, projectName, { + error +} = {}) { + if (true) { + console.error(message, error); + } + return null; +} +var recoverableViolation_1 = recoverableViolation; +var Recoil_recoverableViolation = recoverableViolation_1; +function setByAddingToSet(set, v3) { + const next = new Set(set); + next.add(v3); + return next; +} +function setByDeletingFromSet(set, v3) { + const next = new Set(set); + next.delete(v3); + return next; +} +function mapBySettingInMap(map, k5, v3) { + const next = new Map(map); + next.set(k5, v3); + return next; +} +function mapByUpdatingInMap(map, k5, updater) { + const next = new Map(map); + next.set(k5, updater(next.get(k5))); + return next; +} +function mapByDeletingFromMap(map, k5) { + const next = new Map(map); + next.delete(k5); + return next; +} +function mapByDeletingMultipleFromMap(map, ks) { + const next = new Map(map); + ks.forEach((k5) => next.delete(k5)); + return next; +} +var Recoil_CopyOnWrite = { + setByAddingToSet, + setByDeletingFromSet, + mapBySettingInMap, + mapByUpdatingInMap, + mapByDeletingFromMap, + mapByDeletingMultipleFromMap +}; +function* filterIterable(iterable, predicate) { + let index = 0; + for (const value of iterable) { + if (predicate(value, index++)) { + yield value; } - return hash2; - }; - var popcount = function popcount2(x5) { - x5 -= x5 >> 1 & 1431655765; - x5 = (x5 & 858993459) + (x5 >> 2 & 858993459); - x5 = x5 + (x5 >> 4) & 252645135; - x5 += x5 >> 8; - x5 += x5 >> 16; - return x5 & 127; - }; - var hashFragment = function hashFragment2(shift, h5) { - return h5 >>> shift & MASK; - }; - var toBitmap = function toBitmap2(x5) { - return 1 << x5; - }; - var fromBitmap = function fromBitmap2(bitmap, bit) { - return popcount(bitmap & bit - 1); - }; - var arrayUpdate = function arrayUpdate2(mutate2, at, v3, arr) { - var out = arr; - if (!mutate2) { - var len = arr.length; - out = new Array(len); - for (var i4 = 0; i4 < len; ++i4) { - out[i4] = arr[i4]; - } + } +} +var Recoil_filterIterable = filterIterable; +function mapIterable(iterable, callback) { + return function* () { + let index = 0; + for (const value of iterable) { + yield callback(value, index++); } - out[at] = v3; - return out; - }; - var arraySpliceOut = function arraySpliceOut2(mutate2, at, arr) { - var newLen = arr.length - 1; - var i4 = 0; - var g4 = 0; - var out = arr; - if (mutate2) { - i4 = g4 = at; - } else { - out = new Array(newLen); - while (i4 < at) { - out[g4++] = arr[i4++]; - } + }(); +} +var Recoil_mapIterable = mapIterable; +function sprintf(format3, ...args) { + let index = 0; + return format3.replace(/%s/g, () => String(args[index++])); +} +var sprintf_1 = sprintf; +function expectationViolation(format3, ...args) { + if (true) { + const message = sprintf_1.call(null, format3, ...args); + const error = new Error(message); + error.name = "Expectation Violation"; + console.error(error); + } +} +var expectationViolation_1 = expectationViolation; +var Recoil_expectationViolation = expectationViolation_1; +function _defineProperty(obj, key2, value) { + if (key2 in obj) { + Object.defineProperty(obj, key2, { + value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key2] = value; + } + return obj; +} +var AbstractRecoilValue = class { + constructor(newKey) { + _defineProperty(this, "key", void 0); + this.key = newKey; + } +}; +var RecoilState = class extends AbstractRecoilValue { +}; +var RecoilValueReadOnly = class extends AbstractRecoilValue { +}; +function isRecoilValue(x5) { + return x5 instanceof RecoilState || x5 instanceof RecoilValueReadOnly; +} +var Recoil_RecoilValue = { + AbstractRecoilValue, + RecoilState, + RecoilValueReadOnly, + isRecoilValue +}; +var Recoil_RecoilValue_1 = Recoil_RecoilValue.AbstractRecoilValue; +var Recoil_RecoilValue_2 = Recoil_RecoilValue.RecoilState; +var Recoil_RecoilValue_3 = Recoil_RecoilValue.RecoilValueReadOnly; +var Recoil_RecoilValue_4 = Recoil_RecoilValue.isRecoilValue; +var Recoil_RecoilValue$1 = /* @__PURE__ */ Object.freeze({ + __proto__: null, + AbstractRecoilValue: Recoil_RecoilValue_1, + RecoilState: Recoil_RecoilValue_2, + RecoilValueReadOnly: Recoil_RecoilValue_3, + isRecoilValue: Recoil_RecoilValue_4 +}); +var DefaultValue = class { +}; +var DEFAULT_VALUE = new DefaultValue(); +var RecoilValueNotReady = class extends Error { + constructor(key2) { + super(`Tried to set the value of Recoil selector ${key2} using an updater function, but it is an async selector in a pending or error state; this is not supported.`); + } +}; +var nodes = /* @__PURE__ */ new Map(); +var recoilValues = /* @__PURE__ */ new Map(); +function recoilValuesForKeys(keys) { + return Recoil_mapIterable(keys, (key2) => Recoil_nullthrows(recoilValues.get(key2))); +} +function registerNode(node) { + if (nodes.has(node.key)) { + const message = `Duplicate atom key "${node.key}". This is a FATAL ERROR in + production. But it is safe to ignore this warning if it occurred because of + hot module replacement.`; + console.warn(message); + } + nodes.set(node.key, node); + const recoilValue = node.set == null ? new Recoil_RecoilValue$1.RecoilValueReadOnly(node.key) : new Recoil_RecoilValue$1.RecoilState(node.key); + recoilValues.set(node.key, recoilValue); + return recoilValue; +} +var NodeMissingError = class extends Error { +}; +function getNode(key2) { + const node = nodes.get(key2); + if (node == null) { + throw new NodeMissingError(`Missing definition for RecoilValue: "${key2}""`); + } + return node; +} +function getNodeMaybe(key2) { + return nodes.get(key2); +} +var configDeletionHandlers = /* @__PURE__ */ new Map(); +function deleteNodeConfigIfPossible(key2) { + var _node$shouldDeleteCon; + if (!Recoil_gkx_1("recoil_memory_managament_2020")) { + return; + } + const node = nodes.get(key2); + if (node === null || node === void 0 ? void 0 : (_node$shouldDeleteCon = node.shouldDeleteConfigOnRelease) === null || _node$shouldDeleteCon === void 0 ? void 0 : _node$shouldDeleteCon.call(node)) { + var _getConfigDeletionHan; + nodes.delete(key2); + (_getConfigDeletionHan = getConfigDeletionHandler(key2)) === null || _getConfigDeletionHan === void 0 ? void 0 : _getConfigDeletionHan(); + configDeletionHandlers.delete(key2); + } +} +function setConfigDeletionHandler(key2, fn2) { + if (!Recoil_gkx_1("recoil_memory_managament_2020")) { + return; + } + if (fn2 === void 0) { + configDeletionHandlers.delete(key2); + } else { + configDeletionHandlers.set(key2, fn2); + } +} +function getConfigDeletionHandler(key2) { + return configDeletionHandlers.get(key2); +} +var Recoil_Node = { + nodes, + recoilValues, + registerNode, + getNode, + getNodeMaybe, + deleteNodeConfigIfPossible, + setConfigDeletionHandler, + getConfigDeletionHandler, + recoilValuesForKeys, + NodeMissingError, + DefaultValue, + DEFAULT_VALUE, + RecoilValueNotReady +}; +var RetentionZone = class { +}; +function retentionZone() { + return new RetentionZone(); +} +var Recoil_RetentionZone = { + RetentionZone, + retentionZone +}; +var { + setByAddingToSet: setByAddingToSet$1 +} = Recoil_CopyOnWrite; +var { + getNode: getNode$1, + getNodeMaybe: getNodeMaybe$1, + recoilValuesForKeys: recoilValuesForKeys$1 +} = Recoil_Node; +var { + RetentionZone: RetentionZone$1 +} = Recoil_RetentionZone; +var emptySet = Object.freeze(/* @__PURE__ */ new Set()); +var ReadOnlyRecoilValueError = class extends Error { +}; +function initializeRetentionForNode(store, nodeKey, retainedBy) { + if (!Recoil_gkx_1("recoil_memory_managament_2020")) { + return () => void 0; + } + const { + nodesRetainedByZone: nodesRetainedByZone2 + } = store.getState().retention; + function addToZone(zone) { + let set = nodesRetainedByZone2.get(zone); + if (!set) { + nodesRetainedByZone2.set(zone, set = /* @__PURE__ */ new Set()); } - ++i4; - while (i4 <= newLen) { - out[g4++] = arr[i4++]; + set.add(nodeKey); + } + if (retainedBy instanceof RetentionZone$1) { + addToZone(retainedBy); + } else if (Array.isArray(retainedBy)) { + for (const zone of retainedBy) { + addToZone(zone); } - if (mutate2) { - out.length = newLen; + } + return () => { + if (!Recoil_gkx_1("recoil_memory_managament_2020")) { + return; } - return out; - }; - var arraySpliceIn = function arraySpliceIn2(mutate2, at, v3, arr) { - var len = arr.length; - if (mutate2) { - var _i = len; - while (_i >= at) { - arr[_i--] = arr[_i]; + const nodesRetainedByZone3 = store.getState().retention.nodesRetainedByZone; + function deleteFromZone(zone) { + const set = nodesRetainedByZone3.get(zone); + if (set) { + set.delete(nodeKey); + } + if (set && set.size === 0) { + nodesRetainedByZone3.delete(zone); } - arr[at] = v3; - return arr; - } - var i4 = 0, g4 = 0; - var out = new Array(len + 1); - while (i4 < at) { - out[g4++] = arr[i4++]; } - out[at] = v3; - while (i4 < len) { - out[++g4] = arr[i4++]; + if (retainedBy instanceof RetentionZone$1) { + deleteFromZone(retainedBy); + } else if (Array.isArray(retainedBy)) { + for (const zone of retainedBy) { + deleteFromZone(zone); + } } - return out; - }; - var LEAF = 1; - var COLLISION = 2; - var INDEX = 3; - var ARRAY = 4; - var empty = { - __hamt_isEmpty: true - }; - var isEmptyNode = function isEmptyNode2(x5) { - return x5 === empty || x5 && x5.__hamt_isEmpty; - }; - var Leaf = function Leaf2(edit, hash2, key2, value) { - return { - type: LEAF, - edit, - hash: hash2, - key: key2, - value, - _modify: Leaf__modify - }; - }; - var Collision2 = function Collision3(edit, hash2, children) { - return { - type: COLLISION, - edit, - hash: hash2, - children, - _modify: Collision__modify - }; - }; - var IndexedNode = function IndexedNode2(edit, mask, children) { - return { - type: INDEX, - edit, - mask, - children, - _modify: IndexedNode__modify - }; - }; - var ArrayNode = function ArrayNode2(edit, size2, children) { - return { - type: ARRAY, - edit, - size: size2, - children, - _modify: ArrayNode__modify - }; }; - var isLeaf = function isLeaf2(node) { - return node === empty || node.type === LEAF || node.type === COLLISION; +} +function initializeNodeIfNewToStore(store, treeState, key2, trigger) { + const storeState = store.getState(); + if (storeState.nodeCleanupFunctions.has(key2)) { + return; + } + const config = getNode$1(key2); + const retentionCleanup = initializeRetentionForNode(store, key2, config.retainedBy); + const nodeCleanup = config.init(store, treeState, trigger); + storeState.nodeCleanupFunctions.set(key2, () => { + nodeCleanup(); + retentionCleanup(); + }); +} +function cleanUpNode(store, key2) { + var _state$nodeCleanupFun; + const state = store.getState(); + (_state$nodeCleanupFun = state.nodeCleanupFunctions.get(key2)) === null || _state$nodeCleanupFun === void 0 ? void 0 : _state$nodeCleanupFun(); + state.nodeCleanupFunctions.delete(key2); +} +function getNodeLoadable(store, state, key2) { + initializeNodeIfNewToStore(store, state, key2, "get"); + return getNode$1(key2).get(store, state); +} +function peekNodeLoadable(store, state, key2) { + return getNode$1(key2).peek(store, state); +} +function setUnvalidatedAtomValue_DEPRECATED(state, key2, newValue) { + var _node$invalidate; + const node = getNodeMaybe$1(key2); + node === null || node === void 0 ? void 0 : (_node$invalidate = node.invalidate) === null || _node$invalidate === void 0 ? void 0 : _node$invalidate.call(node, state); + return { + ...state, + atomValues: state.atomValues.clone().delete(key2), + nonvalidatedAtoms: state.nonvalidatedAtoms.clone().set(key2, newValue), + dirtyAtoms: setByAddingToSet$1(state.dirtyAtoms, key2) }; - var expand = function expand2(edit, frag, child, bitmap, subNodes) { - var arr = []; - var bit = bitmap; - var count2 = 0; - for (var i4 = 0; bit; ++i4) { - if (bit & 1) - arr[i4] = subNodes[count2++]; - bit >>>= 1; +} +function setNodeValue(store, state, key2, newValue) { + const node = getNode$1(key2); + if (node.set == null) { + throw new ReadOnlyRecoilValueError(`Attempt to set read-only RecoilValue: ${key2}`); + } + const set = node.set; + initializeNodeIfNewToStore(store, state, key2, "set"); + return set(store, state, newValue); +} +function peekNodeInfo(store, state, key2) { + var _graph$nodeDeps$get, _storeState$nodeToCom, _storeState$nodeToCom2; + const storeState = store.getState(); + const graph2 = store.getGraph(state.version); + const type = storeState.knownAtoms.has(key2) ? "atom" : storeState.knownSelectors.has(key2) ? "selector" : void 0; + const downstreamNodes = Recoil_filterIterable(getDownstreamNodes(store, state, /* @__PURE__ */ new Set([key2])), (nodeKey) => nodeKey !== key2); + return { + loadable: peekNodeLoadable(store, state, key2), + isActive: storeState.knownAtoms.has(key2) || storeState.knownSelectors.has(key2), + isSet: type === "selector" ? false : state.atomValues.has(key2), + isModified: state.dirtyAtoms.has(key2), + type, + deps: recoilValuesForKeys$1((_graph$nodeDeps$get = graph2.nodeDeps.get(key2)) !== null && _graph$nodeDeps$get !== void 0 ? _graph$nodeDeps$get : []), + subscribers: { + nodes: recoilValuesForKeys$1(downstreamNodes), + components: Recoil_mapIterable((_storeState$nodeToCom = (_storeState$nodeToCom2 = storeState.nodeToComponentSubscriptions.get(key2)) === null || _storeState$nodeToCom2 === void 0 ? void 0 : _storeState$nodeToCom2.values()) !== null && _storeState$nodeToCom !== void 0 ? _storeState$nodeToCom : [], ([name]) => ({ + name + })) } - arr[frag] = child; - return ArrayNode(edit, count2 + 1, arr); }; - var pack = function pack2(edit, count2, removed, elements) { - var children = new Array(count2 - 1); - var g4 = 0; - var bitmap = 0; - for (var i4 = 0, len = elements.length; i4 < len; ++i4) { - if (i4 !== removed) { - var elem = elements[i4]; - if (elem && !isEmptyNode(elem)) { - children[g4++] = elem; - bitmap |= 1 << i4; - } +} +function getDownstreamNodes(store, state, keys) { + const visitedNodes = /* @__PURE__ */ new Set(); + const visitingNodes = Array.from(keys); + const graph2 = store.getGraph(state.version); + for (let key2 = visitingNodes.pop(); key2; key2 = visitingNodes.pop()) { + var _graph$nodeToNodeSubs; + visitedNodes.add(key2); + const subscribedNodes = (_graph$nodeToNodeSubs = graph2.nodeToNodeSubscriptions.get(key2)) !== null && _graph$nodeToNodeSubs !== void 0 ? _graph$nodeToNodeSubs : emptySet; + for (const downstreamNode of subscribedNodes) { + if (!visitedNodes.has(downstreamNode)) { + visitingNodes.push(downstreamNode); } } - return IndexedNode(edit, bitmap, children); - }; - var mergeLeaves = function mergeLeaves2(edit, shift, h1, n1, h22, n2) { - if (h1 === h22) - return Collision2(edit, h1, [n2, n1]); - var subH1 = hashFragment(shift, h1); - var subH2 = hashFragment(shift, h22); - return IndexedNode(edit, toBitmap(subH1) | toBitmap(subH2), subH1 === subH2 ? [mergeLeaves2(edit, shift + SIZE, h1, n1, h22, n2)] : subH1 < subH2 ? [n1, n2] : [n2, n1]); - }; - var updateCollisionList = function updateCollisionList2(mutate2, edit, keyEq, h5, list, f4, k5, size2) { - var len = list.length; - for (var i4 = 0; i4 < len; ++i4) { - var child = list[i4]; - if (keyEq(k5, child.key)) { - var value = child.value; - var _newValue = f4(value); - if (_newValue === value) - return list; - if (_newValue === nothing) { - --size2.value; - return arraySpliceOut(mutate2, i4, list); - } - return arrayUpdate(mutate2, i4, Leaf(edit, h5, k5, _newValue), list); - } + } + return visitedNodes; +} +var Recoil_FunctionalCore = { + getNodeLoadable, + peekNodeLoadable, + setNodeValue, + cleanUpNode, + setUnvalidatedAtomValue_DEPRECATED, + peekNodeInfo, + getDownstreamNodes, + initializeNodeIfNewToStore +}; +var { + CANCELED: CANCELED$1 +} = Recoil_Loadable; +var { + getDownstreamNodes: getDownstreamNodes$1, + getNodeLoadable: getNodeLoadable$1, + setNodeValue: setNodeValue$1 +} = Recoil_FunctionalCore; +var { + getNodeMaybe: getNodeMaybe$2 +} = Recoil_Node; +var { + DefaultValue: DefaultValue$1, + RecoilValueNotReady: RecoilValueNotReady$1 +} = Recoil_Node; +var { + AbstractRecoilValue: AbstractRecoilValue$1, + RecoilState: RecoilState$1, + RecoilValueReadOnly: RecoilValueReadOnly$1, + isRecoilValue: isRecoilValue$1 +} = Recoil_RecoilValue$1; +function getRecoilValueAsLoadable(store, { + key: key2 +}, treeState = store.getState().currentTree) { + var _storeState$nextTree, _storeState$previousT; + const storeState = store.getState(); + if (!(treeState.version === storeState.currentTree.version || treeState.version === ((_storeState$nextTree = storeState.nextTree) === null || _storeState$nextTree === void 0 ? void 0 : _storeState$nextTree.version) || treeState.version === ((_storeState$previousT = storeState.previousTree) === null || _storeState$previousT === void 0 ? void 0 : _storeState$previousT.version))) { + Recoil_recoverableViolation("Tried to read from a discarded tree"); + } + const loadable = getNodeLoadable$1(store, treeState, key2); + if (loadable.state === "loading") { + loadable.contents.catch(() => { + return CANCELED$1; + }); + } + return loadable; +} +function applyAtomValueWrites(atomValues, writes) { + const result = atomValues.clone(); + writes.forEach((v3, k5) => { + if (v3.state === "hasValue" && v3.contents instanceof DefaultValue$1) { + result.delete(k5); + } else { + result.set(k5, v3); } - var newValue = f4(); - if (newValue === nothing) - return list; - ++size2.value; - return arrayUpdate(mutate2, len, Leaf(edit, h5, k5, newValue), list); - }; - var canEditNode = function canEditNode2(edit, node) { - return edit === node.edit; - }; - var Leaf__modify = function Leaf__modify2(edit, keyEq, shift, f4, h5, k5, size2) { - if (keyEq(k5, this.key)) { - var _v = f4(this.value); - if (_v === this.value) - return this; - else if (_v === nothing) { - --size2.value; - return empty; - } - if (canEditNode(edit, this)) { - this.value = _v; - return this; - } - return Leaf(edit, h5, k5, _v); + }); + return result; +} +function valueFromValueOrUpdater(store, state, { + key: key2 +}, valueOrUpdater) { + if (typeof valueOrUpdater === "function") { + const current = getNodeLoadable$1(store, state, key2); + if (current.state === "loading") { + throw new RecoilValueNotReady$1(key2); + } else if (current.state === "hasError") { + throw current.contents; } - var v3 = f4(); - if (v3 === nothing) - return this; - ++size2.value; - return mergeLeaves(edit, shift, this.hash, this, h5, Leaf(edit, h5, k5, v3)); - }; - var Collision__modify = function Collision__modify2(edit, keyEq, shift, f4, h5, k5, size2) { - if (h5 === this.hash) { - var canEdit = canEditNode(edit, this); - var list = updateCollisionList(canEdit, edit, keyEq, this.hash, this.children, f4, k5, size2); - if (list === this.children) - return this; - return list.length > 1 ? Collision2(edit, this.hash, list) : list[0]; + return valueOrUpdater(current.contents); + } else { + return valueOrUpdater; + } +} +function applyAction(store, state, action) { + if (action.type === "set") { + const { + recoilValue, + valueOrUpdater + } = action; + const newValue = valueFromValueOrUpdater(store, state, recoilValue, valueOrUpdater); + const writes = setNodeValue$1(store, state, recoilValue.key, newValue); + for (const [key2, loadable] of writes.entries()) { + writeLoadableToTreeState(state, key2, loadable); } - var v3 = f4(); - if (v3 === nothing) - return this; - ++size2.value; - return mergeLeaves(edit, shift, this.hash, this, h5, Leaf(edit, h5, k5, v3)); - }; - var IndexedNode__modify = function IndexedNode__modify2(edit, keyEq, shift, f4, h5, k5, size2) { - var mask = this.mask; - var children = this.children; - var frag = hashFragment(shift, h5); - var bit = toBitmap(frag); - var indx = fromBitmap(mask, bit); - var exists = mask & bit; - var current = exists ? children[indx] : empty; - var child = current._modify(edit, keyEq, shift + SIZE, f4, h5, k5, size2); - if (current === child) - return this; - var canEdit = canEditNode(edit, this); - var bitmap = mask; - var newChildren = void 0; - if (exists && isEmptyNode(child)) { - bitmap &= ~bit; - if (!bitmap) - return empty; - if (children.length <= 2 && isLeaf(children[indx ^ 1])) - return children[indx ^ 1]; - newChildren = arraySpliceOut(canEdit, indx, children); - } else if (!exists && !isEmptyNode(child)) { - if (children.length >= MAX_INDEX_NODE) - return expand(edit, frag, child, mask, children); - bitmap |= bit; - newChildren = arraySpliceIn(canEdit, indx, child, children); - } else { - newChildren = arrayUpdate(canEdit, indx, child, children); + } else if (action.type === "setLoadable") { + const { + recoilValue: { + key: key2 + }, + loadable + } = action; + writeLoadableToTreeState(state, key2, loadable); + } else if (action.type === "markModified") { + const { + recoilValue: { + key: key2 + } + } = action; + state.dirtyAtoms.add(key2); + } else if (action.type === "setUnvalidated") { + var _node$invalidate; + const { + recoilValue: { + key: key2 + }, + unvalidatedValue + } = action; + const node = getNodeMaybe$2(key2); + node === null || node === void 0 ? void 0 : (_node$invalidate = node.invalidate) === null || _node$invalidate === void 0 ? void 0 : _node$invalidate.call(node, state); + state.atomValues.delete(key2); + state.nonvalidatedAtoms.set(key2, unvalidatedValue); + state.dirtyAtoms.add(key2); + } else { + Recoil_recoverableViolation(`Unknown action ${action.type}`); + } +} +function writeLoadableToTreeState(state, key2, loadable) { + if (loadable.state === "hasValue" && loadable.contents instanceof DefaultValue$1) { + state.atomValues.delete(key2); + } else { + state.atomValues.set(key2, loadable); + } + state.dirtyAtoms.add(key2); + state.nonvalidatedAtoms.delete(key2); +} +function applyActionsToStore(store, actions) { + store.replaceState((state) => { + const newState = copyTreeState(state); + for (const action of actions) { + applyAction(store, newState, action); } - if (canEdit) { - this.mask = bitmap; - this.children = newChildren; - return this; + invalidateDownstreams(store, newState); + return newState; + }); +} +function queueOrPerformStateUpdate(store, action) { + if (batchStack.length) { + const actionsByStore = batchStack[batchStack.length - 1]; + let actions = actionsByStore.get(store); + if (!actions) { + actionsByStore.set(store, actions = []); } - return IndexedNode(edit, bitmap, newChildren); - }; - var ArrayNode__modify = function ArrayNode__modify2(edit, keyEq, shift, f4, h5, k5, size2) { - var count2 = this.size; - var children = this.children; - var frag = hashFragment(shift, h5); - var child = children[frag]; - var newChild = (child || empty)._modify(edit, keyEq, shift + SIZE, f4, h5, k5, size2); - if (child === newChild) - return this; - var canEdit = canEditNode(edit, this); - var newChildren = void 0; - if (isEmptyNode(child) && !isEmptyNode(newChild)) { - ++count2; - newChildren = arrayUpdate(canEdit, frag, newChild, children); - } else if (!isEmptyNode(child) && isEmptyNode(newChild)) { - --count2; - if (count2 <= MIN_ARRAY_NODE) - return pack(edit, count2, frag, children); - newChildren = arrayUpdate(canEdit, frag, empty, children); - } else { - newChildren = arrayUpdate(canEdit, frag, newChild, children); + actions.push(action); + } else { + applyActionsToStore(store, [action]); + } +} +var batchStack = []; +function batchStart() { + const actionsByStore = /* @__PURE__ */ new Map(); + batchStack.push(actionsByStore); + return () => { + for (const [store, actions] of actionsByStore) { + applyActionsToStore(store, actions); } - if (canEdit) { - this.size = count2; - this.children = newChildren; - return this; + const popped = batchStack.pop(); + if (popped !== actionsByStore) { + Recoil_recoverableViolation("Incorrect order of batch popping"); } - return ArrayNode(edit, count2, newChildren); }; - empty._modify = function(edit, keyEq, shift, f4, h5, k5, size2) { - var v3 = f4(); - if (v3 === nothing) - return empty; - ++size2.value; - return Leaf(edit, h5, k5, v3); +} +function copyTreeState(state) { + return { + ...state, + atomValues: state.atomValues.clone(), + nonvalidatedAtoms: state.nonvalidatedAtoms.clone(), + dirtyAtoms: new Set(state.dirtyAtoms) }; - function Map2(editable, edit, config, root, size2) { - this._editable = editable; - this._edit = edit; - this._config = config; - this._root = root; - this._size = size2; +} +function invalidateDownstreams(store, state) { + const downstreams = getDownstreamNodes$1(store, state, state.dirtyAtoms); + for (const key2 of downstreams) { + var _getNodeMaybe, _getNodeMaybe$invalid; + (_getNodeMaybe = getNodeMaybe$2(key2)) === null || _getNodeMaybe === void 0 ? void 0 : (_getNodeMaybe$invalid = _getNodeMaybe.invalidate) === null || _getNodeMaybe$invalid === void 0 ? void 0 : _getNodeMaybe$invalid.call(_getNodeMaybe, state); } - Map2.prototype.setTree = function(newRoot, newSize) { - if (this._editable) { - this._root = newRoot; - this._size = newSize; - return this; +} +function setRecoilValue(store, recoilValue, valueOrUpdater) { + queueOrPerformStateUpdate(store, { + type: "set", + recoilValue, + valueOrUpdater + }); +} +function setRecoilValueLoadable(store, recoilValue, loadable) { + if (loadable instanceof DefaultValue$1) { + return setRecoilValue(store, recoilValue, loadable); + } + queueOrPerformStateUpdate(store, { + type: "setLoadable", + recoilValue, + loadable + }); +} +function markRecoilValueModified(store, recoilValue) { + queueOrPerformStateUpdate(store, { + type: "markModified", + recoilValue + }); +} +function setUnvalidatedRecoilValue(store, recoilValue, unvalidatedValue) { + queueOrPerformStateUpdate(store, { + type: "setUnvalidated", + recoilValue, + unvalidatedValue + }); +} +var subscriptionID = 0; +function subscribeToRecoilValue(store, { + key: key2 +}, callback, componentDebugName = null) { + const subID = subscriptionID++; + const storeState = store.getState(); + if (!storeState.nodeToComponentSubscriptions.has(key2)) { + storeState.nodeToComponentSubscriptions.set(key2, /* @__PURE__ */ new Map()); + } + Recoil_nullthrows(storeState.nodeToComponentSubscriptions.get(key2)).set(subID, [componentDebugName !== null && componentDebugName !== void 0 ? componentDebugName : "", callback]); + if (Recoil_gkx_1("recoil_early_rendering_2021")) { + const nextTree = store.getState().nextTree; + if (nextTree && nextTree.dirtyAtoms.has(key2)) { + callback(nextTree); + } + } + return { + release: () => { + const storeState2 = store.getState(); + const subs = storeState2.nodeToComponentSubscriptions.get(key2); + if (subs === void 0 || !subs.has(subID)) { + Recoil_recoverableViolation(`Subscription missing at release time for atom ${key2}. This is a bug in Recoil.`); + return; + } + subs.delete(subID); + if (subs.size === 0) { + storeState2.nodeToComponentSubscriptions.delete(key2); + } } - return newRoot === this._root ? this : new Map2(this._editable, this._edit, this._config, newRoot, newSize); }; - var tryGetHash = hamt.tryGetHash = function(alt, hash2, key2, map) { - var node = map._root; - var shift = 0; - var keyEq = map._config.keyEq; - while (true) { - switch (node.type) { - case LEAF: { - return keyEq(key2, node.key) ? node.value : alt; - } - case COLLISION: { - if (hash2 === node.hash) { - var children = node.children; - for (var i4 = 0, len = children.length; i4 < len; ++i4) { - var child = children[i4]; - if (keyEq(key2, child.key)) - return child.value; - } - } - return alt; - } - case INDEX: { - var frag = hashFragment(shift, hash2); - var bit = toBitmap(frag); - if (node.mask & bit) { - node = node.children[fromBitmap(node.mask, bit)]; - shift += SIZE; - break; - } - return alt; - } - case ARRAY: { - node = node.children[hashFragment(shift, hash2)]; - if (node) { - shift += SIZE; - break; - } - return alt; +} +var Recoil_RecoilValueInterface = { + RecoilValueReadOnly: RecoilValueReadOnly$1, + AbstractRecoilValue: AbstractRecoilValue$1, + RecoilState: RecoilState$1, + getRecoilValueAsLoadable, + setRecoilValue, + setRecoilValueLoadable, + markRecoilValueModified, + setUnvalidatedRecoilValue, + subscribeToRecoilValue, + isRecoilValue: isRecoilValue$1, + applyAtomValueWrites, + batchStart, + writeLoadableToTreeState, + invalidateDownstreams, + copyTreeState, + invalidateDownstreams_FOR_TESTING: invalidateDownstreams +}; +var { + unstable_batchedUpdates +} = bn; +var ReactBatchedUpdates = { + unstable_batchedUpdates +}; +var { + unstable_batchedUpdates: unstable_batchedUpdates$1 +} = ReactBatchedUpdates; +var Recoil_ReactBatchedUpdates = { + unstable_batchedUpdates: unstable_batchedUpdates$1 +}; +var { + batchStart: batchStart$1 +} = Recoil_RecoilValueInterface; +var { + unstable_batchedUpdates: unstable_batchedUpdates$2 +} = Recoil_ReactBatchedUpdates; +var batcher = unstable_batchedUpdates$2; +var setBatcher = (newBatcher) => { + batcher = newBatcher; +}; +var getBatcher = () => batcher; +var batchUpdates = (callback) => { + batcher(() => { + let batchEnd = () => void 0; + try { + batchEnd = batchStart$1(); + callback(); + } finally { + batchEnd(); + } + }); +}; +var Recoil_Batching = { + getBatcher, + setBatcher, + batchUpdates +}; +function enqueueExecution(s5, f4) { + f4(); +} +var Recoil_Queue = { + enqueueExecution +}; +function differenceSets(set, ...setsWithValuesToRemove) { + const ret = /* @__PURE__ */ new Set(); + FIRST: + for (const value of set) { + for (const otherSet of setsWithValuesToRemove) { + if (otherSet.has(value)) { + continue FIRST; } - default: - return alt; } + ret.add(value); } + return ret; +} +var Recoil_differenceSets = differenceSets; +function mapMap(map, callback) { + const result = /* @__PURE__ */ new Map(); + map.forEach((value, key2) => { + result.set(key2, callback(value, key2)); + }); + return result; +} +var Recoil_mapMap = mapMap; +function graph() { + return { + nodeDeps: /* @__PURE__ */ new Map(), + nodeToNodeSubscriptions: /* @__PURE__ */ new Map() }; - Map2.prototype.tryGetHash = function(alt, hash2, key2) { - return tryGetHash(alt, hash2, key2, this); - }; - var tryGet = hamt.tryGet = function(alt, key2, map) { - return tryGetHash(alt, map._config.hash(key2), key2, map); - }; - Map2.prototype.tryGet = function(alt, key2) { - return tryGet(alt, key2, this); - }; - var getHash = hamt.getHash = function(hash2, key2, map) { - return tryGetHash(void 0, hash2, key2, map); - }; - Map2.prototype.getHash = function(hash2, key2) { - return getHash(hash2, key2, this); +} +function cloneGraph(graph2) { + return { + nodeDeps: Recoil_mapMap(graph2.nodeDeps, (s5) => new Set(s5)), + nodeToNodeSubscriptions: Recoil_mapMap(graph2.nodeToNodeSubscriptions, (s5) => new Set(s5)) }; - var get = hamt.get = function(key2, map) { - return tryGetHash(void 0, map._config.hash(key2), key2, map); +} +function mergeDependencyMapIntoGraph(deps, graph2, olderGraph) { + const { + nodeDeps, + nodeToNodeSubscriptions + } = graph2; + deps.forEach((upstreams, downstream) => { + const existingUpstreams = nodeDeps.get(downstream); + if (existingUpstreams && olderGraph && existingUpstreams !== olderGraph.nodeDeps.get(downstream)) { + return; + } + nodeDeps.set(downstream, new Set(upstreams)); + const addedUpstreams = existingUpstreams == null ? upstreams : Recoil_differenceSets(upstreams, existingUpstreams); + addedUpstreams.forEach((upstream) => { + if (!nodeToNodeSubscriptions.has(upstream)) { + nodeToNodeSubscriptions.set(upstream, /* @__PURE__ */ new Set()); + } + const existing = Recoil_nullthrows(nodeToNodeSubscriptions.get(upstream)); + existing.add(downstream); + }); + if (existingUpstreams) { + const removedUpstreams = Recoil_differenceSets(existingUpstreams, upstreams); + removedUpstreams.forEach((upstream) => { + if (!nodeToNodeSubscriptions.has(upstream)) { + return; + } + const existing = Recoil_nullthrows(nodeToNodeSubscriptions.get(upstream)); + existing.delete(downstream); + if (existing.size === 0) { + nodeToNodeSubscriptions.delete(upstream); + } + }); + } + }); +} +function saveDependencyMapToStore(dependencyMap, store, version) { + var _storeState$nextTree, _storeState$previousT, _storeState$previousT2, _storeState$previousT3; + const storeState = store.getState(); + if (!(version === storeState.currentTree.version || version === ((_storeState$nextTree = storeState.nextTree) === null || _storeState$nextTree === void 0 ? void 0 : _storeState$nextTree.version) || version === ((_storeState$previousT = storeState.previousTree) === null || _storeState$previousT === void 0 ? void 0 : _storeState$previousT.version))) { + Recoil_recoverableViolation("Tried to save dependencies to a discarded tree"); + } + const graph2 = store.getGraph(version); + mergeDependencyMapIntoGraph(dependencyMap, graph2); + if (version === ((_storeState$previousT2 = storeState.previousTree) === null || _storeState$previousT2 === void 0 ? void 0 : _storeState$previousT2.version)) { + const currentGraph = store.getGraph(storeState.currentTree.version); + mergeDependencyMapIntoGraph(dependencyMap, currentGraph, graph2); + } + if (version === ((_storeState$previousT3 = storeState.previousTree) === null || _storeState$previousT3 === void 0 ? void 0 : _storeState$previousT3.version) || version === storeState.currentTree.version) { + var _storeState$nextTree2; + const nextVersion = (_storeState$nextTree2 = storeState.nextTree) === null || _storeState$nextTree2 === void 0 ? void 0 : _storeState$nextTree2.version; + if (nextVersion !== void 0) { + const nextGraph = store.getGraph(nextVersion); + mergeDependencyMapIntoGraph(dependencyMap, nextGraph, graph2); + } + } +} +function mergeDepsIntoDependencyMap(from, into) { + from.forEach((upstreamDeps, downstreamNode) => { + if (!into.has(downstreamNode)) { + into.set(downstreamNode, /* @__PURE__ */ new Set()); + } + const deps = Recoil_nullthrows(into.get(downstreamNode)); + upstreamDeps.forEach((dep) => deps.add(dep)); + }); +} +function addToDependencyMap(downstream, upstream, dependencyMap) { + if (!dependencyMap.has(downstream)) { + dependencyMap.set(downstream, /* @__PURE__ */ new Set()); + } + Recoil_nullthrows(dependencyMap.get(downstream)).add(upstream); +} +var Recoil_Graph = { + addToDependencyMap, + cloneGraph, + graph, + mergeDepsIntoDependencyMap, + saveDependencyMapToStore +}; +function createCommonjsModule(fn2, module2) { + return module2 = { exports: {} }, fn2(module2, module2.exports), module2.exports; +} +var hamt_1 = createCommonjsModule(function(module2) { + var _typeof5 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + var hamt = {}; + var SIZE = 5; + var BUCKET_SIZE = Math.pow(2, SIZE); + var MASK = BUCKET_SIZE - 1; + var MAX_INDEX_NODE = BUCKET_SIZE / 2; + var MIN_ARRAY_NODE = BUCKET_SIZE / 4; + var nothing = {}; + var constant = function constant2(x5) { + return function() { + return x5; + }; + }; + var hash = hamt.hash = function(str) { + var type = typeof str === "undefined" ? "undefined" : _typeof5(str); + if (type === "number") + return str; + if (type !== "string") + str += ""; + var hash2 = 0; + for (var i4 = 0, len = str.length; i4 < len; ++i4) { + var c4 = str.charCodeAt(i4); + hash2 = (hash2 << 5) - hash2 + c4 | 0; + } + return hash2; + }; + var popcount = function popcount2(x5) { + x5 -= x5 >> 1 & 1431655765; + x5 = (x5 & 858993459) + (x5 >> 2 & 858993459); + x5 = x5 + (x5 >> 4) & 252645135; + x5 += x5 >> 8; + x5 += x5 >> 16; + return x5 & 127; + }; + var hashFragment = function hashFragment2(shift, h5) { + return h5 >>> shift & MASK; + }; + var toBitmap = function toBitmap2(x5) { + return 1 << x5; + }; + var fromBitmap = function fromBitmap2(bitmap, bit) { + return popcount(bitmap & bit - 1); + }; + var arrayUpdate = function arrayUpdate2(mutate2, at, v3, arr) { + var out = arr; + if (!mutate2) { + var len = arr.length; + out = new Array(len); + for (var i4 = 0; i4 < len; ++i4) { + out[i4] = arr[i4]; + } + } + out[at] = v3; + return out; + }; + var arraySpliceOut = function arraySpliceOut2(mutate2, at, arr) { + var newLen = arr.length - 1; + var i4 = 0; + var g4 = 0; + var out = arr; + if (mutate2) { + i4 = g4 = at; + } else { + out = new Array(newLen); + while (i4 < at) { + out[g4++] = arr[i4++]; + } + } + ++i4; + while (i4 <= newLen) { + out[g4++] = arr[i4++]; + } + if (mutate2) { + out.length = newLen; + } + return out; + }; + var arraySpliceIn = function arraySpliceIn2(mutate2, at, v3, arr) { + var len = arr.length; + if (mutate2) { + var _i = len; + while (_i >= at) { + arr[_i--] = arr[_i]; + } + arr[at] = v3; + return arr; + } + var i4 = 0, g4 = 0; + var out = new Array(len + 1); + while (i4 < at) { + out[g4++] = arr[i4++]; + } + out[at] = v3; + while (i4 < len) { + out[++g4] = arr[i4++]; + } + return out; + }; + var LEAF = 1; + var COLLISION = 2; + var INDEX = 3; + var ARRAY = 4; + var empty = { + __hamt_isEmpty: true + }; + var isEmptyNode = function isEmptyNode2(x5) { + return x5 === empty || x5 && x5.__hamt_isEmpty; + }; + var Leaf = function Leaf2(edit, hash2, key2, value) { + return { + type: LEAF, + edit, + hash: hash2, + key: key2, + value, + _modify: Leaf__modify + }; + }; + var Collision2 = function Collision3(edit, hash2, children) { + return { + type: COLLISION, + edit, + hash: hash2, + children, + _modify: Collision__modify + }; + }; + var IndexedNode = function IndexedNode2(edit, mask, children) { + return { + type: INDEX, + edit, + mask, + children, + _modify: IndexedNode__modify + }; + }; + var ArrayNode = function ArrayNode2(edit, size, children) { + return { + type: ARRAY, + edit, + size, + children, + _modify: ArrayNode__modify + }; + }; + var isLeaf = function isLeaf2(node) { + return node === empty || node.type === LEAF || node.type === COLLISION; + }; + var expand = function expand2(edit, frag, child, bitmap, subNodes) { + var arr = []; + var bit = bitmap; + var count3 = 0; + for (var i4 = 0; bit; ++i4) { + if (bit & 1) + arr[i4] = subNodes[count3++]; + bit >>>= 1; + } + arr[frag] = child; + return ArrayNode(edit, count3 + 1, arr); + }; + var pack = function pack2(edit, count3, removed, elements) { + var children = new Array(count3 - 1); + var g4 = 0; + var bitmap = 0; + for (var i4 = 0, len = elements.length; i4 < len; ++i4) { + if (i4 !== removed) { + var elem = elements[i4]; + if (elem && !isEmptyNode(elem)) { + children[g4++] = elem; + bitmap |= 1 << i4; + } + } + } + return IndexedNode(edit, bitmap, children); + }; + var mergeLeaves = function mergeLeaves2(edit, shift, h1, n1, h22, n2) { + if (h1 === h22) + return Collision2(edit, h1, [n2, n1]); + var subH1 = hashFragment(shift, h1); + var subH2 = hashFragment(shift, h22); + return IndexedNode(edit, toBitmap(subH1) | toBitmap(subH2), subH1 === subH2 ? [mergeLeaves2(edit, shift + SIZE, h1, n1, h22, n2)] : subH1 < subH2 ? [n1, n2] : [n2, n1]); + }; + var updateCollisionList = function updateCollisionList2(mutate2, edit, keyEq, h5, list, f4, k5, size) { + var len = list.length; + for (var i4 = 0; i4 < len; ++i4) { + var child = list[i4]; + if (keyEq(k5, child.key)) { + var value = child.value; + var _newValue = f4(value); + if (_newValue === value) + return list; + if (_newValue === nothing) { + --size.value; + return arraySpliceOut(mutate2, i4, list); + } + return arrayUpdate(mutate2, i4, Leaf(edit, h5, k5, _newValue), list); + } + } + var newValue = f4(); + if (newValue === nothing) + return list; + ++size.value; + return arrayUpdate(mutate2, len, Leaf(edit, h5, k5, newValue), list); + }; + var canEditNode = function canEditNode2(edit, node) { + return edit === node.edit; + }; + var Leaf__modify = function Leaf__modify2(edit, keyEq, shift, f4, h5, k5, size) { + if (keyEq(k5, this.key)) { + var _v = f4(this.value); + if (_v === this.value) + return this; + else if (_v === nothing) { + --size.value; + return empty; + } + if (canEditNode(edit, this)) { + this.value = _v; + return this; + } + return Leaf(edit, h5, k5, _v); + } + var v3 = f4(); + if (v3 === nothing) + return this; + ++size.value; + return mergeLeaves(edit, shift, this.hash, this, h5, Leaf(edit, h5, k5, v3)); + }; + var Collision__modify = function Collision__modify2(edit, keyEq, shift, f4, h5, k5, size) { + if (h5 === this.hash) { + var canEdit = canEditNode(edit, this); + var list = updateCollisionList(canEdit, edit, keyEq, this.hash, this.children, f4, k5, size); + if (list === this.children) + return this; + return list.length > 1 ? Collision2(edit, this.hash, list) : list[0]; + } + var v3 = f4(); + if (v3 === nothing) + return this; + ++size.value; + return mergeLeaves(edit, shift, this.hash, this, h5, Leaf(edit, h5, k5, v3)); + }; + var IndexedNode__modify = function IndexedNode__modify2(edit, keyEq, shift, f4, h5, k5, size) { + var mask = this.mask; + var children = this.children; + var frag = hashFragment(shift, h5); + var bit = toBitmap(frag); + var indx = fromBitmap(mask, bit); + var exists = mask & bit; + var current = exists ? children[indx] : empty; + var child = current._modify(edit, keyEq, shift + SIZE, f4, h5, k5, size); + if (current === child) + return this; + var canEdit = canEditNode(edit, this); + var bitmap = mask; + var newChildren = void 0; + if (exists && isEmptyNode(child)) { + bitmap &= ~bit; + if (!bitmap) + return empty; + if (children.length <= 2 && isLeaf(children[indx ^ 1])) + return children[indx ^ 1]; + newChildren = arraySpliceOut(canEdit, indx, children); + } else if (!exists && !isEmptyNode(child)) { + if (children.length >= MAX_INDEX_NODE) + return expand(edit, frag, child, mask, children); + bitmap |= bit; + newChildren = arraySpliceIn(canEdit, indx, child, children); + } else { + newChildren = arrayUpdate(canEdit, indx, child, children); + } + if (canEdit) { + this.mask = bitmap; + this.children = newChildren; + return this; + } + return IndexedNode(edit, bitmap, newChildren); + }; + var ArrayNode__modify = function ArrayNode__modify2(edit, keyEq, shift, f4, h5, k5, size) { + var count3 = this.size; + var children = this.children; + var frag = hashFragment(shift, h5); + var child = children[frag]; + var newChild = (child || empty)._modify(edit, keyEq, shift + SIZE, f4, h5, k5, size); + if (child === newChild) + return this; + var canEdit = canEditNode(edit, this); + var newChildren = void 0; + if (isEmptyNode(child) && !isEmptyNode(newChild)) { + ++count3; + newChildren = arrayUpdate(canEdit, frag, newChild, children); + } else if (!isEmptyNode(child) && isEmptyNode(newChild)) { + --count3; + if (count3 <= MIN_ARRAY_NODE) + return pack(edit, count3, frag, children); + newChildren = arrayUpdate(canEdit, frag, empty, children); + } else { + newChildren = arrayUpdate(canEdit, frag, newChild, children); + } + if (canEdit) { + this.size = count3; + this.children = newChildren; + return this; + } + return ArrayNode(edit, count3, newChildren); + }; + empty._modify = function(edit, keyEq, shift, f4, h5, k5, size) { + var v3 = f4(); + if (v3 === nothing) + return empty; + ++size.value; + return Leaf(edit, h5, k5, v3); + }; + function Map2(editable, edit, config, root, size) { + this._editable = editable; + this._edit = edit; + this._config = config; + this._root = root; + this._size = size; + } + Map2.prototype.setTree = function(newRoot, newSize) { + if (this._editable) { + this._root = newRoot; + this._size = newSize; + return this; + } + return newRoot === this._root ? this : new Map2(this._editable, this._edit, this._config, newRoot, newSize); + }; + var tryGetHash = hamt.tryGetHash = function(alt, hash2, key2, map) { + var node = map._root; + var shift = 0; + var keyEq = map._config.keyEq; + while (true) { + switch (node.type) { + case LEAF: { + return keyEq(key2, node.key) ? node.value : alt; + } + case COLLISION: { + if (hash2 === node.hash) { + var children = node.children; + for (var i4 = 0, len = children.length; i4 < len; ++i4) { + var child = children[i4]; + if (keyEq(key2, child.key)) + return child.value; + } + } + return alt; + } + case INDEX: { + var frag = hashFragment(shift, hash2); + var bit = toBitmap(frag); + if (node.mask & bit) { + node = node.children[fromBitmap(node.mask, bit)]; + shift += SIZE; + break; + } + return alt; + } + case ARRAY: { + node = node.children[hashFragment(shift, hash2)]; + if (node) { + shift += SIZE; + break; + } + return alt; + } + default: + return alt; + } + } + }; + Map2.prototype.tryGetHash = function(alt, hash2, key2) { + return tryGetHash(alt, hash2, key2, this); + }; + var tryGet = hamt.tryGet = function(alt, key2, map) { + return tryGetHash(alt, map._config.hash(key2), key2, map); + }; + Map2.prototype.tryGet = function(alt, key2) { + return tryGet(alt, key2, this); + }; + var getHash = hamt.getHash = function(hash2, key2, map) { + return tryGetHash(void 0, hash2, key2, map); + }; + Map2.prototype.getHash = function(hash2, key2) { + return getHash(hash2, key2, this); + }; + var get = hamt.get = function(key2, map) { + return tryGetHash(void 0, map._config.hash(key2), key2, map); }; Map2.prototype.get = function(key2, alt) { return tryGet(alt, key2, this); @@ -19466,11 +17178,11 @@ var hamt_1 = createCommonjsModule(function(module2) { return isEmpty(this); }; var modifyHash = hamt.modifyHash = function(f4, hash2, key2, map) { - var size2 = { + var size = { value: map._size }; - var newRoot = map._root._modify(map._editable ? map._edit : NaN, map._config.keyEq, 0, f4, hash2, key2, size2); - return map.setTree(newRoot, size2.value); + var newRoot = map._root._modify(map._editable ? map._edit : NaN, map._config.keyEq, 0, f4, hash2, key2, size); + return map.setTree(newRoot, size.value); }; Map2.prototype.modifyHash = function(hash2, key2, f4) { return modifyHash(f4, hash2, key2, this); @@ -19630,11 +17342,11 @@ var hamt_1 = createCommonjsModule(function(module2) { Map2.prototype.forEach = function(f4) { return forEach(f4, this); }; - var count = hamt.count = function(map) { + var count2 = hamt.count = function(map) { return map._size; }; Map2.prototype.count = function() { - return count(this); + return count2(this); }; Object.defineProperty(Map2.prototype, "size", { get: Map2.prototype.count @@ -20447,17 +18159,17 @@ if (true) { } } function initialStoreState_DEPRECATED(store, initializeState) { - const initial = makeEmptyStoreState$2(); + const initial2 = makeEmptyStoreState$2(); initializeState({ set: (atom2, value) => { - const state = initial.currentTree; + const state = initial2.currentTree; const writes = setNodeValue$2(store, state, atom2.key, value); const writtenNodes = new Set(writes.keys()); const nonvalidatedAtoms = state.nonvalidatedAtoms.clone(); for (const n2 of writtenNodes) { nonvalidatedAtoms.delete(n2); } - initial.currentTree = { + initial2.currentTree = { ...state, dirtyAtoms: Recoil_unionSets(state.dirtyAtoms, writtenNodes), atomValues: applyAtomValueWrites$1(state.atomValues, writes), @@ -20466,11 +18178,11 @@ function initialStoreState_DEPRECATED(store, initializeState) { }, setUnvalidatedAtomValues: (atomValues) => { atomValues.forEach((v3, k5) => { - initial.currentTree = setUnvalidatedAtomValue_DEPRECATED$1(initial.currentTree, k5, v3); + initial2.currentTree = setUnvalidatedAtomValue_DEPRECATED$1(initial2.currentTree, k5, v3); }); } }); - return initial; + return initial2; } function initialStoreState(initializeState) { const snapshot = freshSnapshot$1().map(initializeState); @@ -20587,14 +18299,14 @@ function RecoilRoot_INTERNAL({ setNotifyBatcherOfChange }), children)); } -function RecoilRoot(props) { +function RecoilRoot(props2) { const { override, ...propsExceptOverride - } = props; + } = props2; const ancestorStoreRef = useStoreRef(); if (override === false && ancestorStoreRef.current !== defaultStore) { - return props.children; + return props2.children; } return /* @__PURE__ */ bn.createElement(RecoilRoot_INTERNAL, propsExceptOverride); } @@ -21736,7 +19448,7 @@ var pruneUpstreamBranches = (root, branchNode, parent) => { } return pruneUpstreamBranches(root, parent, parent.parent); }; -var countDownstreamLeaves = (node) => node.type === "leaf" ? 1 : Array.from(node.branches.values()).reduce((sum, currNode) => sum + countDownstreamLeaves(currNode), 0); +var countDownstreamLeaves = (node) => node.type === "leaf" ? 1 : Array.from(node.branches.values()).reduce((sum2, currNode) => sum2 + countDownstreamLeaves(currNode), 0); var Recoil_TreeCache = { TreeCache }; @@ -23179,11 +20891,8 @@ var Recoil_index_33 = Recoil_index.batchUpdates; var Recoil_index_34 = Recoil_index.setBatcher; var Recoil_index_35 = Recoil_index.snapshot_UNSTABLE; -// src/components/Spaces/MainMenu.tsx -init_compat_module(); - // src/components/ui/modals/modals.ts -var import_obsidian16 = require("obsidian"); +var import_obsidian22 = require("obsidian"); // src/i18n.ts var T4 = class { @@ -23314,8 +21023,12 @@ var T4 = class { trash: "Move to Obsidian Trash", "system-trash": "Move to System Trash" }, + hideRibbon: { + name: "App Ribbon", + desc: `Show/hide the left menu aka. ribbon` + }, sidebarTabs: { - name: "Show Sidebar Tabs", + name: "Sidebar Tabs", desc: `Show/hide other sidebar tabs` }, spacesPerformance: { @@ -23372,7 +21085,7 @@ var T4 = class { var i18n_default = new T4().texts; // src/utils/file.ts -var import_obsidian15 = require("obsidian"); +var import_obsidian21 = require("obsidian"); // src/types/types.ts var eventTypes = { @@ -23381,6 +21094,7 @@ var eventTypes = { revealFile: "mkmd-reveal-file", vaultChange: "mkmd-vault-change", mdbChange: "mkmd-mdb-change", + spacesChange: "mkmd-spaces-change", updateSections: "mkmd-update-sections", settingsChanged: "mkmd-settings-changed", spawnPortal: "mkmd-portal-spawn", @@ -23390,36 +21104,12 @@ var eventTypes = { }; // src/components/ContextView/ContextView.tsx -var import_obsidian14 = require("obsidian"); -init_compat_module(); - -// src/components/ContextView/FolderContextViewComponent.tsx -init_compat_module(); +var import_obsidian20 = require("obsidian"); // src/components/ui/menus/menu.tsx var import_obsidian = require("obsidian"); -init_compat_module(); - -// src/components/ui/libs/react-tags/ReactTags.jsx -init_compat_module(); -var import_prop_types = __toESM(require_prop_types()); - -// src/components/ui/libs/react-tags/Tag.jsx -init_compat_module(); -function Tag(props) { - return /* @__PURE__ */ bn.createElement("button", { - type: "button", - className: props.classNames.selectedTag, - title: props.removeButtonText, - onClick: props.onDelete - }, /* @__PURE__ */ bn.createElement("span", { - className: props.classNames.selectedTagName - }, props.tag.name)); -} -var Tag_default = Tag; -// src/components/ui/libs/react-tags/Input.jsx -init_compat_module(); +// src/components/ui/libs/react-tags/Input.tsx var SIZER_STYLES = { position: "absolute", width: 0, @@ -23436,70 +21126,57 @@ var STYLE_PROPS = [ "letterSpacing", "textTransform" ]; -var Input = class extends bn.Component { - constructor(props) { - super(props); - this.state = { inputWidth: null }; - this.input = bn.createRef(); - this.sizer = bn.createRef(); - } - componentDidMount() { - if (this.props.autoresize) { - this.copyInputStyles(); - this.updateInputWidth(); - } +var Input = k3((props2, input) => { + const { classNames: classNames8, inputAttributes, inputEventHandlers, index } = props2; + const sizer = _2(null); + const [inputWidth, setInputWidth] = p2(null); + const [query, setQuery] = p2(""); + const [placeholderText, setPlaceholderText] = p2(""); + h2(() => { + copyInputStyles(); + updateInputWidth(); setTimeout(() => { - this.input.current.focus(); + input.current.focus(); }, 50); - } - componentDidUpdate({ query, placeholderText }) { - if (query !== this.props.query || placeholderText !== this.props.placeholderText) { - this.updateInputWidth(); - } - } - copyInputStyles() { - const inputStyle = window.getComputedStyle(this.input.current); + }, []); + h2(() => { + if (query !== props2.query || placeholderText !== props2.placeholderText) { + setQuery(props2.query); + setPlaceholderText(props2.placeholderText); + updateInputWidth(); + } + }, [props2.query, props2.placeholderText]); + const copyInputStyles = () => { + const inputStyle = window.getComputedStyle(input.current); STYLE_PROPS.forEach((prop) => { - this.sizer.current.style[prop] = inputStyle[prop]; + sizer.current.style[prop] = inputStyle[prop]; }); - } - updateInputWidth() { - let inputWidth; - if (this.props.autoresize) { - inputWidth = Math.ceil(this.sizer.current.scrollWidth) + 2; - } - if (inputWidth !== this.state.inputWidth) { - this.setState({ inputWidth }); + }; + const updateInputWidth = () => { + let _inputWidth; + _inputWidth = Math.ceil(sizer.current.scrollWidth) + 2; + if (_inputWidth !== inputWidth) { + setInputWidth(_inputWidth); } - } - render() { - const { id: id2, query, ariaLabelText, placeholderText, expanded, classNames: classNames7, inputAttributes, inputEventHandlers, index } = this.props; - return /* @__PURE__ */ bn.createElement("div", { - className: classNames7.searchWrapper - }, /* @__PURE__ */ bn.createElement("input", { - ...inputAttributes, - ...inputEventHandlers, - ref: this.input, - value: query, - placeholder: placeholderText, - className: classNames7.searchInput, - role: "combobox", - "aria-autocomplete": "list", - "aria-owns": id2, - "aria-activedescendant": index > -1 ? `${id2}-${index}` : null, - "aria-expanded": expanded, - style: { width: "100%" } - }), /* @__PURE__ */ bn.createElement("div", { - ref: this.sizer, - style: SIZER_STYLES - }, query || placeholderText)); - } -}; + }; + return /* @__PURE__ */ bn.createElement("div", { + className: classNames8.searchWrapper + }, /* @__PURE__ */ bn.createElement("input", { + ...inputAttributes, + ...inputEventHandlers, + ref: input, + value: query, + placeholder: placeholderText, + className: classNames8.searchInput, + role: "combobox", + style: { width: "100%" } + }), /* @__PURE__ */ bn.createElement("div", { + ref: sizer, + style: SIZER_STYLES + }, query || placeholderText)); +}); var Input_default = Input; -// src/components/ui/libs/react-tags/Suggestions.jsx -init_compat_module(); - // src/components/ui/libs/react-tags/concerns/matchers.js function escapeForRegExp(string) { return string.replace(/[-\\^$*+?.()|[\]{}]/g, "\\$&"); @@ -23511,49 +21188,69 @@ function matchExact(string) { return new RegExp(`^${escapeForRegExp(string)}$`, "i"); } -// src/components/ui/libs/react-tags/Suggestions.jsx +// src/components/ui/libs/react-tags/Suggestions.tsx function markIt(name, query) { const regexp = matchAny(query); return name.replace(regexp, "$&"); } -function DefaultSuggestionComponent({ item, query }) { - return /* @__PURE__ */ bn.createElement("span", { - dangerouslySetInnerHTML: { __html: markIt(item.name, query) } - }); -} -function Suggestions(props) { - const SuggestionComponent = props.suggestionComponent || DefaultSuggestionComponent; - const options = props.options.map((item, index) => { - const key2 = `${props.id}-${index}`; - const classNames7 = []; - if (props.index === index) { - classNames7.push(props.classNames.suggestionActive); +var SuggestionComponent = (props2) => { + const ref = _2(null); + h2(() => { + var _a2; + if (props2.active) { + (_a2 = ref == null ? void 0 : ref.current) == null ? void 0 : _a2.scrollIntoViewIfNeeded(); + } + }, [props2.active]); + return /* @__PURE__ */ bn.createElement(bn.Fragment, null, props2.item.onToggle && /* @__PURE__ */ bn.createElement("div", null, "Toggle"), /* @__PURE__ */ bn.createElement("span", { + ref, + dangerouslySetInnerHTML: { __html: markIt(props2.item.name, props2.query) } + }), props2.item.description && /* @__PURE__ */ bn.createElement("span", { + className: "mk-description", + ref, + dangerouslySetInnerHTML: { __html: markIt(props2.item.description, props2.query) } + }), props2.item.removeable && /* @__PURE__ */ bn.createElement("div", null, "Remove")); +}; +var Suggestions = (props2) => { + const timer = _2(null); + const mouseOver = (e4, index) => { + if (!props2.hoverSelect) { + return; + } + timer.current && clearTimeout(timer.current); + timer.current = setTimeout(() => props2.setIndex(index), 300); + }; + const options = props2.options.map((item, index) => { + const key2 = `${props2.id}-${index}`; + const classNames8 = []; + if (props2.index === index) { + classNames8.push(props2.classNames.suggestionActive); } if (item.disabled) { - classNames7.push(props.classNames.suggestionDisabled); + classNames8.push(props2.classNames.suggestionDisabled); } return /* @__PURE__ */ bn.createElement("li", { id: key2, key: key2, role: "option", - className: classNames7.join(" "), + className: classNames8.join(" "), "aria-disabled": Boolean(item.disabled), onMouseDown: (e4) => e4.preventDefault(), - onClick: () => props.addTag(item) - }, item.prefix ? /* @__PURE__ */ bn.createElement("span", { - className: props.classNames.suggestionPrefix - }, item.prefix, " ") : null, item.disableMarkIt ? item.name : /* @__PURE__ */ bn.createElement(SuggestionComponent, { + onClick: () => props2.addTag(item), + onMouseOver: (e4) => mouseOver(e4, index), + onMouseOut: (e4) => props2.hoverSelect && clearTimeout(timer.current) + }, /* @__PURE__ */ bn.createElement(SuggestionComponent, { item, - query: props.query + query: props2.query, + active: index == props2.index })); }); return /* @__PURE__ */ bn.createElement("div", { - className: props.classNames.suggestions + className: props2.classNames.suggestions }, /* @__PURE__ */ bn.createElement("ul", { role: "listbox", - id: props.id + id: props2.id }, options)); -} +}; var Suggestions_default = Suggestions; // src/components/ui/libs/react-tags/concerns/focusNextElement.js @@ -23569,7 +21266,19 @@ function focusNextElement(scope, currentTarget) { } } -// src/components/ui/libs/react-tags/ReactTags.jsx +// src/components/ui/libs/react-tags/Tag.tsx +var TagComponent = (props2) => { + return /* @__PURE__ */ bn.createElement("button", { + type: "button", + className: props2.classNames.selectedTag, + onClick: props2.onDelete + }, /* @__PURE__ */ bn.createElement("span", { + className: props2.classNames.selectedTagName + }, props2.tag.name)); +}; +var Tag_default = TagComponent; + +// src/components/ui/libs/react-tags/ReactTags.tsx var KEYS = { ENTER: "Enter", TAB: "Tab", @@ -23590,274 +21299,220 @@ var CLASS_NAMES = { searchInput: "mk-options-menu__search-input", suggestions: "mk-options-menu__suggestions", suggestionActive: "is-active", - suggestionDisabled: "is-disabled", - suggestionPrefix: "mk-options-menu__suggestion-prefix" + suggestionDisabled: "is-disabled" +}; +var defaultProps = { + id: "ReactTags", + tags: [], + suggestionsOnly: false, + placeholderText: "Add new tag", + noSuggestionsText: null, + newTagText: null, + suggestions: [], + suggestionsFilter: defaultSuggestionsFilter, + suggestionsTransform: null, + classNames: CLASS_NAMES, + delimiters: [KEYS.ENTER], + minQueryLength: 2, + maxSuggestionsLength: 8, + inputAttributes: {}, + hoverSelect: false }; -function findMatchIndex(options, query) { +var findMatchIndex = (options, query) => { return options.findIndex((option) => matchExact(query).test(option.name)); -} -function pressDelimiter() { - if (this.state.query.length >= this.props.minQueryLength) { - const match2 = findMatchIndex(this.state.options, this.state.query); - const index = this.state.index === -1 ? match2 : this.state.index; - const tag = index > -1 ? this.state.options[index] : null; +}; +var pressDelimiter = (props2, query, index, options, addTag) => { + if (query.length >= props2.minQueryLength) { + const match2 = findMatchIndex(options, query); + const _index = index === -1 ? match2 : index; + const tag = _index > -1 ? options[_index] : null; if (tag) { - this.addTag(tag); - } else if (this.props.allowNew) { - this.addTag({ name: this.state.query }); + addTag(tag); + } else { + addTag({ name: query, value: query }); } } -} -function pressUpKey(e4) { - e4.preventDefault(); - const size2 = this.state.options.length - 1; - this.setState({ index: this.state.index <= 0 ? size2 : this.state.index - 1 }); -} -function pressDownKey(e4) { - e4.preventDefault(); - const size2 = this.state.options.length - 1; - this.setState({ index: this.state.index >= size2 ? 0 : this.state.index + 1 }); -} -function pressBackspaceKey() { - if (!this.state.query.length) { - this.deleteTag(this.props.tags.length - 1); - } -} +}; function defaultSuggestionsFilter(item, query) { const regexp = matchAny(query); return regexp.test(item.name); } -function getOptions(props, state) { +function getOptions(props2, query) { let options; - if (props.suggestionsTransform) { - options = props.suggestionsTransform(state.query, props.suggestions); + if (props2.suggestionsTransform) { + options = props2.suggestionsTransform(query, props2.suggestions); } else { - options = props.suggestions.filter((item) => props.suggestionsFilter(item, state.query)); + options = props2.suggestions.filter((item) => props2.suggestionsFilter(item, query)); } - options = options.slice(0, props.maxSuggestionsLength); - if (props.allowNew && props.newTagText && findMatchIndex(options, state.query) === -1) { - options.push({ id: 0, name: state.query, prefix: props.newTagText, disableMarkIt: true }); - } else if (props.noSuggestionsText && options.length === 0) { - options.push({ id: 0, name: props.noSuggestionsText, disabled: true, disableMarkIt: true }); + options = options.slice(0, props2.maxSuggestionsLength); + if (props2.newTagText && findMatchIndex(options, query) === -1) { + options.push({ id: 0, name: query, value: query }); + } else if (props2.noSuggestionsText && options.length === 0) { + options.push({ id: 0, name: props2.noSuggestionsText, value: "", disabled: true }); } return options; } -var ReactTags = class extends bn.Component { - constructor(props) { - super(props); - this.state = { - query: "", - focused: false, - index: -1 - }; - this.inputEventHandlers = { - onChange: () => { - }, - onBlur: this.onBlur.bind(this), - onFocus: this.onFocus.bind(this), - onInput: this.onInput.bind(this), - onKeyDown: this.onKeyDown.bind(this) - }; - this.container = bn.createRef(); - this.input = bn.createRef(); - } - onInput(e4) { - const query = e4.target.value; - if (this.props.onInput) { - this.props.onInput(query); +var ReactTags = (_props) => { + const props2 = { ...defaultProps, ..._props }; + const [options, setOptions] = p2([]); + const inputRef = _2(null); + const [query, setQuery] = p2(""); + const [focused, setFocused] = p2(false); + const [index, setIndex] = p2(-1); + h2(() => { + var _a2; + if (index != -1 && props2.onHover && props2.hoverSelect) { + props2.onHover((_a2 = options[index]) == null ? void 0 : _a2.value); } - if (query.length === this.state.query.length + 1 && this.props.delimiters.indexOf(query.slice(-1)) > -1) { - pressDelimiter.call(this); - } else if (query !== this.state.query) { - this.setState({ query }); + }, [index]); + h2(() => { + if (query.length == 0 && props2.defaultSuggestions) { + setOptions(props2.defaultSuggestions); + return; } - } - onKeyDown(e4) { - if (this.props.delimiters.indexOf(e4.key) > -1) { - if (this.state.query || this.state.index > -1) { + setOptions(getOptions(props2, query)); + }, [query, props2.suggestions]); + const container = _2(null); + const onInput = (e4) => { + const _query = e4.target.value; + if (props2.onInput) { + props2.onInput(_query); + } + if (_query.length === query.length + 1 && props2.delimiters.indexOf(query.slice(-1)) > -1) { + pressDelimiter(props2, query, index, options, addTag); + } else if (_query !== query) { + setQuery(_query); + } + }; + const onKeyDown = (e4) => { + if (props2.delimiters.indexOf(e4.key) > -1) { + if (query || index > -1) { e4.preventDefault(); } - pressDelimiter.call(this); + pressDelimiter(props2, query, index, options, addTag); } - if (e4.key === KEYS.BACKSPACE && this.props.allowBackspace) { - pressBackspaceKey.call(this, e4); + if (e4.key === KEYS.BACKSPACE) { + pressBackspaceKey(); } if (e4.key === KEYS.UP_ARROW || e4.key === KEYS.UP_ARROW_COMPAT) { - pressUpKey.call(this, e4); + pressUpKey(e4); } if (e4.key === KEYS.DOWN_ARROW || e4.key === KEYS.DOWN_ARROW_COMPAT) { - pressDownKey.call(this, e4); + pressDownKey(e4); } - } - onClick(e4) { - if (document.activeElement !== e4.target) { - this.focusInput(); - } - } - onBlur() { - this.setState({ focused: false, index: -1 }); - if (this.props.onBlur) { - this.props.onBlur(); - } - if (this.props.addOnBlur) { - pressDelimiter.call(this); + }; + const onBlur = () => { + setFocused(false); + setIndex(-1); + if (props2.onBlur) { + props2.onBlur(); } - } - onFocus() { - this.setState({ focused: true }); - if (this.props.onFocus) { - this.props.onFocus(); + }; + const onFocus = () => { + setFocused(true); + if (props2.onFocus) { + props2.onFocus(); } - } - onDeleteTag(index, event) { - if (this.container.current) { - focusNextElement(this.container.current, event.currentTarget); + }; + const onDeleteTag = (index2, event) => { + if (container.current) { + focusNextElement(container.current, event.currentTarget); } - this.deleteTag(index); - } - addTag(tag) { + deleteTag(index2); + }; + const addTag = (tag) => { if (tag.disabled) { return; } - if (typeof this.props.onValidate === "function" && !this.props.onValidate(tag)) { + if (props2.onValidate && !props2.onValidate(tag)) { return; } - this.props.onAddition(tag); - this.clearInput(); - } - deleteTag(i4) { - this.props.onDelete(i4); - } - clearInput() { - this.setState({ - query: "", - index: -1 - }); - } - clearSelectedIndex() { - this.setState({ index: -1 }); - } - focusInput() { - if (this.input.current && this.input.current.input.current) { - this.input.current.input.current.focus(); - } - } - render() { - const TagComponent = this.props.tagComponent || Tag_default; - const expanded = this.state.focused && this.state.query.length >= this.props.minQueryLength; - const classNames7 = Object.assign({}, CLASS_NAMES, this.props.classNames); - const rootClassNames = [classNames7.root]; - this.state.focused && rootClassNames.push(classNames7.rootFocused); - return /* @__PURE__ */ bn.createElement("div", { - ref: this.container, - className: rootClassNames.join(" "), - onClick: this.onClick.bind(this) - }, /* @__PURE__ */ bn.createElement("div", { - className: classNames7.selected, - "aria-relevant": "additions removals", - "aria-live": "polite" - }, /* @__PURE__ */ bn.createElement(bn.Fragment, null, this.props.tags.map((tag, i4) => /* @__PURE__ */ bn.createElement(TagComponent, { - key: i4, - tag, - removeButtonText: this.props.removeButtonText, - classNames: classNames7, - onDelete: this.onDeleteTag.bind(this, i4) - }))), /* @__PURE__ */ bn.createElement("div", { - className: classNames7.search - }, /* @__PURE__ */ bn.createElement(Input_default, { - ...this.state, - id: this.props.id, - ref: this.input, - classNames: classNames7, - inputAttributes: this.props.inputAttributes, - inputEventHandlers: this.inputEventHandlers, - autoresize: this.props.autoresize, - expanded, - placeholderText: this.props.placeholderText, - ariaLabelText: this.props.ariaLabelText - }))), this.state.options.length ? /* @__PURE__ */ bn.createElement(Suggestions_default, { - ...this.state, - id: this.props.id, - classNames: classNames7, - expanded, - addTag: this.addTag.bind(this), - suggestionComponent: this.props.suggestionComponent - }) : null); - } - static getDerivedStateFromProps(props, state) { - if (state.prevQuery !== state.query || state.prevSuggestions !== props.suggestions) { - return { - prevQuery: state.query, - prevSuggestions: props.suggestions, - options: getOptions(props, state) - }; + props2.onAddition(tag); + clearInput(); + }; + const deleteTag = (i4) => { + props2.onDelete(i4); + }; + const clearInput = () => { + setQuery(""); + setIndex(-1); + }; + const clearSelectedIndex = () => { + setIndex(-1); + }; + const pressUpKey = (e4) => { + e4.preventDefault(); + const size = options.length - 1; + setIndex(index <= 0 ? size : index - 1); + }; + const pressDownKey = (e4) => { + e4.preventDefault(); + const size = options.length - 1; + setIndex((i4) => i4 >= size ? 0 : i4 + 1); + }; + function pressBackspaceKey() { + if (!query.length) { + deleteTag(props2.tags.length - 1); } - return null; } -}; -ReactTags.defaultProps = { - id: "ReactTags", - tags: [], - placeholderText: "Add new tag", - removeButtonText: "Click to remove tag", - noSuggestionsText: null, - newTagText: null, - suggestions: [], - suggestionsFilter: defaultSuggestionsFilter, - suggestionsTransform: null, - autoresize: true, - classNames: CLASS_NAMES, - delimiters: [KEYS.TAB, KEYS.ENTER], - minQueryLength: 2, - maxSuggestionsLength: 8, - allowNew: false, - allowBackspace: true, - addOnBlur: false, - tagComponent: null, - suggestionComponent: null, - inputAttributes: {} -}; -ReactTags.propTypes = { - id: import_prop_types.default.string, - tags: import_prop_types.default.arrayOf(import_prop_types.default.object), - placeholderText: import_prop_types.default.string, - ariaLabelText: import_prop_types.default.string, - removeButtonText: import_prop_types.default.string, - noSuggestionsText: import_prop_types.default.string, - newTagText: import_prop_types.default.string, - suggestions: import_prop_types.default.arrayOf(import_prop_types.default.object), - suggestionsFilter: import_prop_types.default.func, - suggestionsTransform: import_prop_types.default.func, - autoresize: import_prop_types.default.bool, - delimiters: import_prop_types.default.arrayOf(import_prop_types.default.string), - onDelete: import_prop_types.default.func.isRequired, - onAddition: import_prop_types.default.func.isRequired, - onInput: import_prop_types.default.func, - onFocus: import_prop_types.default.func, - onBlur: import_prop_types.default.func, - onValidate: import_prop_types.default.func, - minQueryLength: import_prop_types.default.number, - maxSuggestionsLength: import_prop_types.default.number, - classNames: import_prop_types.default.object, - allowNew: import_prop_types.default.bool, - allowBackspace: import_prop_types.default.bool, - addOnBlur: import_prop_types.default.bool, - tagComponent: import_prop_types.default.oneOfType([ - import_prop_types.default.func, - import_prop_types.default.element - ]), - suggestionComponent: import_prop_types.default.oneOfType([ - import_prop_types.default.func, - import_prop_types.default.element - ]), - inputAttributes: import_prop_types.default.object + const focusInput = () => { + inputRef.current.focus(); + }; + const inputEventHandlers = { + onChange: () => { + }, + onBlur, + onFocus, + onInput, + onKeyDown + }; + const expanded = focused && query.length >= props2.minQueryLength; + const classNames8 = Object.assign({}, CLASS_NAMES, props2.classNames); + const rootClassNames = [classNames8.root]; + focused && rootClassNames.push(classNames8.rootFocused); + return /* @__PURE__ */ bn.createElement("div", { + ref: container, + className: rootClassNames.join(" ") + }, !props2.suggestionsOnly ? /* @__PURE__ */ bn.createElement("div", { + className: classNames8.selected, + "aria-relevant": "additions removals", + "aria-live": "polite" + }, /* @__PURE__ */ bn.createElement(bn.Fragment, null, props2.tags.map((tag, i4) => /* @__PURE__ */ bn.createElement(Tag_default, { + key: i4, + tag, + classNames: classNames8, + onDelete: (e4) => onDeleteTag(i4, e4) + }))), /* @__PURE__ */ bn.createElement("div", { + className: classNames8.search + }, /* @__PURE__ */ bn.createElement(Input_default, { + ref: inputRef, + query, + index, + id: props2.id, + classNames: classNames8, + inputAttributes: props2.inputAttributes, + inputEventHandlers, + expanded, + placeholderText: props2.placeholderText + }))) : null, options.length ? /* @__PURE__ */ bn.createElement(Suggestions_default, { + options, + hoverSelect: props2.hoverSelect, + query, + setIndex, + index, + id: props2.id, + classNames: classNames8, + expanded, + addTag + }) : null, query && props2.allowNew && /* @__PURE__ */ bn.createElement("div", { + className: "mk-options-menu__suggestions" + }, /* @__PURE__ */ bn.createElement("ul", null, /* @__PURE__ */ bn.createElement("li", { + onMouseDown: (e4) => e4.preventDefault(), + onClick: () => addTag({ name: query, value: query }) + }, "Add ", query))), props2.previewComponent); }; var ReactTags_default = ReactTags; -// node_modules/react-day-picker/dist/index.esm.js -init_compat_module(); -init_compat_module(); - // node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js var formatDistanceLocale = { lessThanXSeconds: { @@ -23922,15 +21577,15 @@ var formatDistanceLocale = { other: "almost {{count}} years" } }; -var formatDistance = function formatDistance2(token, count, options) { +var formatDistance = function formatDistance2(token, count2, options) { var result; var tokenValue = formatDistanceLocale[token]; if (typeof tokenValue === "string") { result = tokenValue; - } else if (count === 1) { + } else if (count2 === 1) { result = tokenValue.one; } else { - result = tokenValue.other.replace("{{count}}", count.toString()); + result = tokenValue.other.replace("{{count}}", count2.toString()); } if (options !== null && options !== void 0 && options.addSuffix) { if (options.comparison && options.comparison > 0) { @@ -23948,8 +21603,8 @@ function buildFormatLongFn(args) { return function() { var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; var width = options.width ? String(options.width) : args.defaultWidth; - var format2 = args.formats[width] || args.formats[args.defaultWidth]; - return format2; + var format3 = args.formats[width] || args.formats[args.defaultWidth]; + return format3; }; } @@ -25321,15 +22976,15 @@ function isProtectedDayOfYearToken(token) { function isProtectedWeekYearToken(token) { return protectedWeekYearTokens.indexOf(token) !== -1; } -function throwProtectedError(token, format2, input) { +function throwProtectedError(token, format3, input) { if (token === "YYYY") { - throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(format2, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); + throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(format3, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); } else if (token === "YY") { - throw new RangeError("Use `yy` instead of `YY` (in `".concat(format2, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); + throw new RangeError("Use `yy` instead of `YY` (in `".concat(format3, "`) for formatting years to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); } else if (token === "D") { - throw new RangeError("Use `d` instead of `D` (in `".concat(format2, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); + throw new RangeError("Use `d` instead of `D` (in `".concat(format3, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); } else if (token === "DD") { - throw new RangeError("Use `dd` instead of `DD` (in `".concat(format2, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); + throw new RangeError("Use `dd` instead of `DD` (in `".concat(format3, "`) for formatting days of the month to the input `").concat(input, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")); } } @@ -25736,6 +23391,21 @@ function min(dirtyDatesArray) { return result || new Date(NaN); } +// node_modules/date-fns/esm/compareAsc/index.js +function compareAsc(dirtyDateLeft, dirtyDateRight) { + requiredArgs(2, arguments); + var dateLeft = toDate(dirtyDateLeft); + var dateRight = toDate(dirtyDateRight); + var diff = dateLeft.getTime() - dateRight.getTime(); + if (diff < 0) { + return -1; + } else if (diff > 0) { + return 1; + } else { + return diff; + } +} + // node_modules/date-fns/esm/differenceInCalendarWeeks/index.js var MILLISECONDS_IN_WEEK3 = 6048e5; function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) { @@ -25747,6 +23417,72 @@ function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) { return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK3); } +// node_modules/date-fns/esm/differenceInMilliseconds/index.js +function differenceInMilliseconds(dateLeft, dateRight) { + requiredArgs(2, arguments); + return toDate(dateLeft).getTime() - toDate(dateRight).getTime(); +} + +// node_modules/date-fns/esm/_lib/roundingMethods/index.js +var roundingMap = { + ceil: Math.ceil, + round: Math.round, + floor: Math.floor, + trunc: function trunc(value) { + return value < 0 ? Math.ceil(value) : Math.floor(value); + } +}; +var defaultRoundingMethod = "trunc"; +function getRoundingMethod(method) { + return method ? roundingMap[method] : roundingMap[defaultRoundingMethod]; +} + +// node_modules/date-fns/esm/endOfDay/index.js +function endOfDay(dirtyDate) { + requiredArgs(1, arguments); + var date = toDate(dirtyDate); + date.setHours(23, 59, 59, 999); + return date; +} + +// node_modules/date-fns/esm/isLastDayOfMonth/index.js +function isLastDayOfMonth(dirtyDate) { + requiredArgs(1, arguments); + var date = toDate(dirtyDate); + return endOfDay(date).getTime() === endOfMonth(date).getTime(); +} + +// node_modules/date-fns/esm/differenceInMonths/index.js +function differenceInMonths(dirtyDateLeft, dirtyDateRight) { + requiredArgs(2, arguments); + var dateLeft = toDate(dirtyDateLeft); + var dateRight = toDate(dirtyDateRight); + var sign = compareAsc(dateLeft, dateRight); + var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight)); + var result; + if (difference < 1) { + result = 0; + } else { + if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) { + dateLeft.setDate(30); + } + dateLeft.setMonth(dateLeft.getMonth() - sign * difference); + var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign; + if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) { + isLastMonthNotFull = false; + } + result = sign * (difference - Number(isLastMonthNotFull)); + } + return result === 0 ? 0 : result; +} + +// node_modules/date-fns/esm/differenceInSeconds/index.js +function differenceInSeconds(dateLeft, dateRight, options) { + requiredArgs(2, arguments); + var diff = differenceInMilliseconds(dateLeft, dateRight) / 1e3; + return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff); +} + // node_modules/date-fns/esm/endOfWeek/index.js function endOfWeek(dirtyDate, options) { var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2; @@ -25772,6 +23508,114 @@ function endOfISOWeek(dirtyDate) { }); } +// node_modules/date-fns/esm/_lib/assign/index.js +function assign(target, object) { + if (target == null) { + throw new TypeError("assign requires that input parameter not be null or undefined"); + } + for (var property in object) { + if (Object.prototype.hasOwnProperty.call(object, property)) { + ; + target[property] = object[property]; + } + } + return target; +} + +// node_modules/date-fns/esm/_lib/cloneObject/index.js +function cloneObject(object) { + return assign({}, object); +} + +// node_modules/date-fns/esm/formatDistance/index.js +var MINUTES_IN_DAY = 1440; +var MINUTES_IN_ALMOST_TWO_DAYS = 2520; +var MINUTES_IN_MONTH = 43200; +var MINUTES_IN_TWO_MONTHS = 86400; +function formatDistance3(dirtyDate, dirtyBaseDate, options) { + var _ref, _options$locale; + requiredArgs(2, arguments); + var defaultOptions3 = getDefaultOptions(); + var locale2 = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions3.locale) !== null && _ref !== void 0 ? _ref : defaultLocale_default; + if (!locale2.formatDistance) { + throw new RangeError("locale must contain formatDistance property"); + } + var comparison = compareAsc(dirtyDate, dirtyBaseDate); + if (isNaN(comparison)) { + throw new RangeError("Invalid time value"); + } + var localizeOptions = assign(cloneObject(options), { + addSuffix: Boolean(options === null || options === void 0 ? void 0 : options.addSuffix), + comparison + }); + var dateLeft; + var dateRight; + if (comparison > 0) { + dateLeft = toDate(dirtyBaseDate); + dateRight = toDate(dirtyDate); + } else { + dateLeft = toDate(dirtyDate); + dateRight = toDate(dirtyBaseDate); + } + var seconds = differenceInSeconds(dateRight, dateLeft); + var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1e3; + var minutes = Math.round((seconds - offsetInSeconds) / 60); + var months; + if (minutes < 2) { + if (options !== null && options !== void 0 && options.includeSeconds) { + if (seconds < 5) { + return locale2.formatDistance("lessThanXSeconds", 5, localizeOptions); + } else if (seconds < 10) { + return locale2.formatDistance("lessThanXSeconds", 10, localizeOptions); + } else if (seconds < 20) { + return locale2.formatDistance("lessThanXSeconds", 20, localizeOptions); + } else if (seconds < 40) { + return locale2.formatDistance("halfAMinute", 0, localizeOptions); + } else if (seconds < 60) { + return locale2.formatDistance("lessThanXMinutes", 1, localizeOptions); + } else { + return locale2.formatDistance("xMinutes", 1, localizeOptions); + } + } else { + if (minutes === 0) { + return locale2.formatDistance("lessThanXMinutes", 1, localizeOptions); + } else { + return locale2.formatDistance("xMinutes", minutes, localizeOptions); + } + } + } else if (minutes < 45) { + return locale2.formatDistance("xMinutes", minutes, localizeOptions); + } else if (minutes < 90) { + return locale2.formatDistance("aboutXHours", 1, localizeOptions); + } else if (minutes < MINUTES_IN_DAY) { + var hours = Math.round(minutes / 60); + return locale2.formatDistance("aboutXHours", hours, localizeOptions); + } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) { + return locale2.formatDistance("xDays", 1, localizeOptions); + } else if (minutes < MINUTES_IN_MONTH) { + var days = Math.round(minutes / MINUTES_IN_DAY); + return locale2.formatDistance("xDays", days, localizeOptions); + } else if (minutes < MINUTES_IN_TWO_MONTHS) { + months = Math.round(minutes / MINUTES_IN_MONTH); + return locale2.formatDistance("aboutXMonths", months, localizeOptions); + } + months = differenceInMonths(dateRight, dateLeft); + if (months < 12) { + var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH); + return locale2.formatDistance("xMonths", nearestMonth, localizeOptions); + } else { + var monthsSinceStartOfYear = months % 12; + var years = Math.floor(months / 12); + if (monthsSinceStartOfYear < 3) { + return locale2.formatDistance("aboutXYears", years, localizeOptions); + } else if (monthsSinceStartOfYear < 9) { + return locale2.formatDistance("overXYears", years, localizeOptions); + } else { + return locale2.formatDistance("almostXYears", years + 1, localizeOptions); + } + } +} + // node_modules/date-fns/esm/getISOWeek/index.js var MILLISECONDS_IN_WEEK4 = 6048e5; function getISOWeek(dirtyDate) { @@ -25899,14 +23743,14 @@ function __spreadArray(to, from, pack) { } return to.concat(ar || Array.prototype.slice.call(from)); } -function isDayPickerMultiple(props) { - return props.mode === "multiple"; +function isDayPickerMultiple(props2) { + return props2.mode === "multiple"; } -function isDayPickerRange(props) { - return props.mode === "range"; +function isDayPickerRange(props2) { + return props2.mode === "range"; } -function isDayPickerSingle(props) { - return props.mode === "single"; +function isDayPickerSingle(props2) { + return props2.mode === "single"; } var defaultClassNames = { root: "rdp", @@ -26011,7 +23855,7 @@ var labels = /* @__PURE__ */ Object.freeze({ }); function getDefaultContextValues() { var captionLayout = "buttons"; - var classNames7 = defaultClassNames; + var classNames8 = defaultClassNames; var locale2 = en_US_default; var modifiersClassNames = {}; var modifiers = {}; @@ -26020,7 +23864,7 @@ function getDefaultContextValues() { var today = new Date(); return { captionLayout, - classNames: classNames7, + classNames: classNames8, formatters: formatters3, labels, locale: locale2, @@ -26032,9 +23876,9 @@ function getDefaultContextValues() { mode: "default" }; } -function parseFromToProps(props) { - var fromYear = props.fromYear, toYear = props.toYear, fromMonth = props.fromMonth, toMonth = props.toMonth; - var fromDate = props.fromDate, toDate2 = props.toDate; +function parseFromToProps(props2) { + var fromYear = props2.fromYear, toYear = props2.toYear, fromMonth = props2.fromMonth, toMonth = props2.toMonth; + var fromDate = props2.fromDate, toDate2 = props2.toDate; if (fromMonth) { fromDate = startOfMonth(fromMonth); } else if (fromYear) { @@ -26051,9 +23895,9 @@ function parseFromToProps(props) { }; } var DayPickerContext = B(void 0); -function DayPickerProvider(props) { +function DayPickerProvider(props2) { var _a2; - var initialProps = props.initialProps; + var initialProps = props2.initialProps; var defaultContextValues = getDefaultContextValues(); var _b2 = parseFromToProps(initialProps), fromDate = _b2.fromDate, toDate2 = _b2.toDate; var captionLayout = (_a2 = initialProps.captionLayout) !== null && _a2 !== void 0 ? _a2 : defaultContextValues.captionLayout; @@ -26065,7 +23909,7 @@ function DayPickerProvider(props) { onSelect = initialProps.onSelect; } var value = __assign(__assign(__assign({}, defaultContextValues), initialProps), { captionLayout, classNames: __assign(__assign({}, defaultContextValues.classNames), initialProps.classNames), components: __assign({}, initialProps.components), formatters: __assign(__assign({}, defaultContextValues.formatters), initialProps.formatters), fromDate, labels: __assign(__assign({}, defaultContextValues.labels), initialProps.labels), mode: initialProps.mode || defaultContextValues.mode, modifiers: __assign(__assign({}, defaultContextValues.modifiers), initialProps.modifiers), modifiersClassNames: __assign(__assign({}, defaultContextValues.modifiersClassNames), initialProps.modifiersClassNames), onSelect, styles: __assign(__assign({}, defaultContextValues.styles), initialProps.styles), toDate: toDate2 }); - return bn.createElement(DayPickerContext.Provider, { value }, props.children); + return bn.createElement(DayPickerContext.Provider, { value }, props2.children); } function useDayPicker() { var context = q2(DayPickerContext); @@ -26074,27 +23918,27 @@ function useDayPicker() { } return context; } -function CaptionLabel(props) { - var _a2 = useDayPicker(), locale2 = _a2.locale, classNames7 = _a2.classNames, styles = _a2.styles, formatCaption2 = _a2.formatters.formatCaption; - return bn.createElement("h2", { className: classNames7.caption_label, style: styles.caption_label, "aria-live": "polite", "aria-atomic": "true", id: props.id }, formatCaption2(props.displayMonth, { locale: locale2 })); +function CaptionLabel(props2) { + var _a2 = useDayPicker(), locale2 = _a2.locale, classNames8 = _a2.classNames, styles = _a2.styles, formatCaption2 = _a2.formatters.formatCaption; + return bn.createElement("h2", { className: classNames8.caption_label, style: styles.caption_label, "aria-live": "polite", "aria-atomic": "true", id: props2.id }, formatCaption2(props2.displayMonth, { locale: locale2 })); } -function IconDropdown(props) { +function IconDropdown(props2) { return bn.createElement( "svg", - __assign({ width: "8px", height: "8px", viewBox: "0 0 120 120", "data-testid": "iconDropdown" }, props), + __assign({ width: "8px", height: "8px", viewBox: "0 0 120 120", "data-testid": "iconDropdown" }, props2), bn.createElement("path", { d: "M4.22182541,48.2218254 C8.44222828,44.0014225 15.2388494,43.9273804 19.5496459,47.9996989 L19.7781746,48.2218254 L60,88.443 L100.221825,48.2218254 C104.442228,44.0014225 111.238849,43.9273804 115.549646,47.9996989 L115.778175,48.2218254 C119.998577,52.4422283 120.07262,59.2388494 116.000301,63.5496459 L115.778175,63.7781746 L67.7781746,111.778175 C63.5577717,115.998577 56.7611506,116.07262 52.4503541,112.000301 L52.2218254,111.778175 L4.22182541,63.7781746 C-0.0739418023,59.4824074 -0.0739418023,52.5175926 4.22182541,48.2218254 Z", fill: "currentColor", fillRule: "nonzero" }) ); } -function Dropdown(props) { +function Dropdown(props2) { var _a2, _b2; - var onChange = props.onChange, value = props.value, children = props.children, caption = props.caption, className = props.className, style = props.style; + var onChange = props2.onChange, value = props2.value, children = props2.children, caption = props2.caption, className = props2.className, style = props2.style; var dayPicker = useDayPicker(); var IconDropdownComponent = (_b2 = (_a2 = dayPicker.components) === null || _a2 === void 0 ? void 0 : _a2.IconDropdown) !== null && _b2 !== void 0 ? _b2 : IconDropdown; return bn.createElement( "div", { className, style }, - bn.createElement("span", { className: dayPicker.classNames.vhidden }, props["aria-label"]), - bn.createElement("select", { name: props.name, "aria-label": props["aria-label"], className: dayPicker.classNames.dropdown, style: dayPicker.styles.dropdown, value, onChange }, children), + bn.createElement("span", { className: dayPicker.classNames.vhidden }, props2["aria-label"]), + bn.createElement("select", { name: props2.name, "aria-label": props2["aria-label"], className: dayPicker.classNames.dropdown, style: dayPicker.styles.dropdown, value, onChange }, children), bn.createElement( "div", { className: dayPicker.classNames.caption_label, style: dayPicker.styles.caption_label, "aria-hidden": "true" }, @@ -26103,9 +23947,9 @@ function Dropdown(props) { ) ); } -function MonthsDropdown(props) { +function MonthsDropdown(props2) { var _a2; - var _b2 = useDayPicker(), fromDate = _b2.fromDate, toDate2 = _b2.toDate, styles = _b2.styles, locale2 = _b2.locale, formatMonthCaption2 = _b2.formatters.formatMonthCaption, classNames7 = _b2.classNames, components = _b2.components, labelMonthDropdown2 = _b2.labels.labelMonthDropdown; + var _b2 = useDayPicker(), fromDate = _b2.fromDate, toDate2 = _b2.toDate, styles = _b2.styles, locale2 = _b2.locale, formatMonthCaption2 = _b2.formatters.formatMonthCaption, classNames8 = _b2.classNames, components = _b2.components, labelMonthDropdown2 = _b2.labels.labelMonthDropdown; if (!fromDate) return bn.createElement(bn.Fragment, null); if (!toDate2) @@ -26124,18 +23968,18 @@ function MonthsDropdown(props) { } var handleChange = function(e4) { var selectedMonth = Number(e4.target.value); - var newMonth = setMonth(startOfMonth(props.displayMonth), selectedMonth); - props.onChange(newMonth); + var newMonth = setMonth(startOfMonth(props2.displayMonth), selectedMonth); + props2.onChange(newMonth); }; var DropdownComponent2 = (_a2 = components === null || components === void 0 ? void 0 : components.Dropdown) !== null && _a2 !== void 0 ? _a2 : Dropdown; - return bn.createElement(DropdownComponent2, { name: "months", "aria-label": labelMonthDropdown2(), className: classNames7.dropdown_month, style: styles.dropdown_month, onChange: handleChange, value: props.displayMonth.getMonth(), caption: formatMonthCaption2(props.displayMonth, { locale: locale2 }) }, dropdownMonths.map(function(m5) { + return bn.createElement(DropdownComponent2, { name: "months", "aria-label": labelMonthDropdown2(), className: classNames8.dropdown_month, style: styles.dropdown_month, onChange: handleChange, value: props2.displayMonth.getMonth(), caption: formatMonthCaption2(props2.displayMonth, { locale: locale2 }) }, dropdownMonths.map(function(m5) { return bn.createElement("option", { key: m5.getMonth(), value: m5.getMonth() }, formatMonthCaption2(m5, { locale: locale2 })); })); } -function YearsDropdown(props) { +function YearsDropdown(props2) { var _a2; - var displayMonth = props.displayMonth; - var _b2 = useDayPicker(), fromDate = _b2.fromDate, toDate2 = _b2.toDate, locale2 = _b2.locale, styles = _b2.styles, classNames7 = _b2.classNames, components = _b2.components, formatYearCaption2 = _b2.formatters.formatYearCaption, labelYearDropdown2 = _b2.labels.labelYearDropdown; + var displayMonth = props2.displayMonth; + var _b2 = useDayPicker(), fromDate = _b2.fromDate, toDate2 = _b2.toDate, locale2 = _b2.locale, styles = _b2.styles, classNames8 = _b2.classNames, components = _b2.components, formatYearCaption2 = _b2.formatters.formatYearCaption, labelYearDropdown2 = _b2.labels.labelYearDropdown; var years = []; if (!fromDate) return bn.createElement(bn.Fragment, null); @@ -26148,10 +23992,10 @@ function YearsDropdown(props) { } var handleChange = function(e4) { var newMonth = setYear(startOfMonth(displayMonth), Number(e4.target.value)); - props.onChange(newMonth); + props2.onChange(newMonth); }; var DropdownComponent2 = (_a2 = components === null || components === void 0 ? void 0 : components.Dropdown) !== null && _a2 !== void 0 ? _a2 : Dropdown; - return bn.createElement(DropdownComponent2, { name: "years", "aria-label": labelYearDropdown2(), className: classNames7.dropdown_year, style: styles.dropdown_year, onChange: handleChange, value: displayMonth.getFullYear(), caption: formatYearCaption2(displayMonth, { locale: locale2 }) }, years.map(function(year2) { + return bn.createElement(DropdownComponent2, { name: "years", "aria-label": labelYearDropdown2(), className: classNames8.dropdown_year, style: styles.dropdown_year, onChange: handleChange, value: displayMonth.getFullYear(), caption: formatYearCaption2(displayMonth, { locale: locale2 }) }, years.map(function(year2) { return bn.createElement("option", { key: year2.getFullYear(), value: year2.getFullYear() }, formatYearCaption2(year2, { locale: locale2 })); })); } @@ -26234,7 +24078,7 @@ function getPreviousMonth(startingMonth, options) { return addMonths(month, -offset); } var NavigationContext = B(void 0); -function NavigationProvider(props) { +function NavigationProvider(props2) { var dayPicker = useDayPicker(); var _a2 = useNavigationState(), currentMonth = _a2[0], goToMonth = _a2[1]; var displayMonths = getDisplayMonths(currentMonth, dayPicker); @@ -26264,7 +24108,7 @@ function NavigationProvider(props) { nextMonth, isDateDisplayed }; - return bn.createElement(NavigationContext.Provider, { value }, props.children); + return bn.createElement(NavigationContext.Provider, { value }, props2.children); } function useNavigation() { var context = q2(NavigationContext); @@ -26273,82 +24117,82 @@ function useNavigation() { } return context; } -function CaptionDropdowns(props) { +function CaptionDropdowns(props2) { var _a2; - var _b2 = useDayPicker(), classNames7 = _b2.classNames, styles = _b2.styles, components = _b2.components; + var _b2 = useDayPicker(), classNames8 = _b2.classNames, styles = _b2.styles, components = _b2.components; var goToMonth = useNavigation().goToMonth; var handleMonthChange = function(newMonth) { goToMonth(newMonth); }; var CaptionLabelComponent = (_a2 = components === null || components === void 0 ? void 0 : components.CaptionLabel) !== null && _a2 !== void 0 ? _a2 : CaptionLabel; - var captionLabel = bn.createElement(CaptionLabelComponent, { id: props.id, displayMonth: props.displayMonth }); + var captionLabel = bn.createElement(CaptionLabelComponent, { id: props2.id, displayMonth: props2.displayMonth }); return bn.createElement( "div", - { className: classNames7.caption_dropdowns, style: styles.caption_dropdowns }, - bn.createElement("div", { className: classNames7.vhidden }, captionLabel), - bn.createElement(MonthsDropdown, { onChange: handleMonthChange, displayMonth: props.displayMonth }), - bn.createElement(YearsDropdown, { onChange: handleMonthChange, displayMonth: props.displayMonth }) + { className: classNames8.caption_dropdowns, style: styles.caption_dropdowns }, + bn.createElement("div", { className: classNames8.vhidden }, captionLabel), + bn.createElement(MonthsDropdown, { onChange: handleMonthChange, displayMonth: props2.displayMonth }), + bn.createElement(YearsDropdown, { onChange: handleMonthChange, displayMonth: props2.displayMonth }) ); } -function IconLeft(props) { +function IconLeft(props2) { return bn.createElement( "svg", - __assign({ width: "16px", height: "16px", viewBox: "0 0 120 120" }, props), + __assign({ width: "16px", height: "16px", viewBox: "0 0 120 120" }, props2), bn.createElement("path", { d: "M69.490332,3.34314575 C72.6145263,0.218951416 77.6798462,0.218951416 80.8040405,3.34314575 C83.8617626,6.40086786 83.9268205,11.3179931 80.9992143,14.4548388 L80.8040405,14.6568542 L35.461,60 L80.8040405,105.343146 C83.8617626,108.400868 83.9268205,113.317993 80.9992143,116.454839 L80.8040405,116.656854 C77.7463184,119.714576 72.8291931,119.779634 69.6923475,116.852028 L69.490332,116.656854 L18.490332,65.6568542 C15.4326099,62.5991321 15.367552,57.6820069 18.2951583,54.5451612 L18.490332,54.3431458 L69.490332,3.34314575 Z", fill: "currentColor", fillRule: "nonzero" }) ); } -function IconRight(props) { +function IconRight(props2) { return bn.createElement( "svg", - __assign({ width: "16px", height: "16px", viewBox: "0 0 120 120" }, props), + __assign({ width: "16px", height: "16px", viewBox: "0 0 120 120" }, props2), bn.createElement("path", { d: "M49.8040405,3.34314575 C46.6798462,0.218951416 41.6145263,0.218951416 38.490332,3.34314575 C35.4326099,6.40086786 35.367552,11.3179931 38.2951583,14.4548388 L38.490332,14.6568542 L83.8333725,60 L38.490332,105.343146 C35.4326099,108.400868 35.367552,113.317993 38.2951583,116.454839 L38.490332,116.656854 C41.5480541,119.714576 46.4651794,119.779634 49.602025,116.852028 L49.8040405,116.656854 L100.804041,65.6568542 C103.861763,62.5991321 103.926821,57.6820069 100.999214,54.5451612 L100.804041,54.3431458 L49.8040405,3.34314575 Z", fill: "currentColor" }) ); } -var Button = k3(function(props, ref) { - var _a2 = useDayPicker(), classNames7 = _a2.classNames, styles = _a2.styles; - var classNamesArr = [classNames7.button_reset, classNames7.button]; - if (props.className) { - classNamesArr.push(props.className); +var Button = k3(function(props2, ref) { + var _a2 = useDayPicker(), classNames8 = _a2.classNames, styles = _a2.styles; + var classNamesArr = [classNames8.button_reset, classNames8.button]; + if (props2.className) { + classNamesArr.push(props2.className); } var className = classNamesArr.join(" "); var style = __assign(__assign({}, styles.button_reset), styles.button); - if (props.style) { - Object.assign(style, props.style); + if (props2.style) { + Object.assign(style, props2.style); } - return bn.createElement("button", __assign({}, props, { ref, type: "button", className, style })); + return bn.createElement("button", __assign({}, props2, { ref, type: "button", className, style })); }); -function Navigation(props) { +function Navigation(props2) { var _a2, _b2; - var _c2 = useDayPicker(), dir = _c2.dir, locale2 = _c2.locale, classNames7 = _c2.classNames, styles = _c2.styles, _d2 = _c2.labels, labelPrevious2 = _d2.labelPrevious, labelNext2 = _d2.labelNext, components = _c2.components; - if (!props.nextMonth && !props.previousMonth) { + var _c2 = useDayPicker(), dir = _c2.dir, locale2 = _c2.locale, classNames8 = _c2.classNames, styles = _c2.styles, _d2 = _c2.labels, labelPrevious2 = _d2.labelPrevious, labelNext2 = _d2.labelNext, components = _c2.components; + if (!props2.nextMonth && !props2.previousMonth) { return bn.createElement(bn.Fragment, null); } - var previousLabel = labelPrevious2(props.previousMonth, { locale: locale2 }); + var previousLabel = labelPrevious2(props2.previousMonth, { locale: locale2 }); var previousClassName = [ - classNames7.nav_button, - classNames7.nav_button_previous + classNames8.nav_button, + classNames8.nav_button_previous ].join(" "); - var nextLabel = labelNext2(props.nextMonth, { locale: locale2 }); + var nextLabel = labelNext2(props2.nextMonth, { locale: locale2 }); var nextClassName = [ - classNames7.nav_button, - classNames7.nav_button_next + classNames8.nav_button, + classNames8.nav_button_next ].join(" "); var IconRightComponent = (_a2 = components === null || components === void 0 ? void 0 : components.IconRight) !== null && _a2 !== void 0 ? _a2 : IconRight; var IconLeftComponent = (_b2 = components === null || components === void 0 ? void 0 : components.IconLeft) !== null && _b2 !== void 0 ? _b2 : IconLeft; return bn.createElement( "div", - { className: classNames7.nav, style: styles.nav }, - !props.hidePrevious && bn.createElement(Button, { name: "previous-month", "aria-label": previousLabel, className: previousClassName, style: styles.nav_button_previous, disabled: !props.previousMonth, onClick: props.onPreviousClick }, dir === "rtl" ? bn.createElement(IconRightComponent, { className: classNames7.nav_icon, style: styles.nav_icon }) : bn.createElement(IconLeftComponent, { className: classNames7.nav_icon, style: styles.nav_icon })), - !props.hideNext && bn.createElement(Button, { name: "next-month", "aria-label": nextLabel, className: nextClassName, style: styles.nav_button_next, disabled: !props.nextMonth, onClick: props.onNextClick }, dir === "rtl" ? bn.createElement(IconLeftComponent, { className: classNames7.nav_icon, style: styles.nav_icon }) : bn.createElement(IconRightComponent, { className: classNames7.nav_icon, style: styles.nav_icon })) + { className: classNames8.nav, style: styles.nav }, + !props2.hidePrevious && bn.createElement(Button, { name: "previous-month", "aria-label": previousLabel, className: previousClassName, style: styles.nav_button_previous, disabled: !props2.previousMonth, onClick: props2.onPreviousClick }, dir === "rtl" ? bn.createElement(IconRightComponent, { className: classNames8.nav_icon, style: styles.nav_icon }) : bn.createElement(IconLeftComponent, { className: classNames8.nav_icon, style: styles.nav_icon })), + !props2.hideNext && bn.createElement(Button, { name: "next-month", "aria-label": nextLabel, className: nextClassName, style: styles.nav_button_next, disabled: !props2.nextMonth, onClick: props2.onNextClick }, dir === "rtl" ? bn.createElement(IconLeftComponent, { className: classNames8.nav_icon, style: styles.nav_icon }) : bn.createElement(IconRightComponent, { className: classNames8.nav_icon, style: styles.nav_icon })) ); } -function CaptionNavigation(props) { +function CaptionNavigation(props2) { var _a2; var _b2; var _c2 = useDayPicker(), numberOfMonths = _c2.numberOfMonths, dir = _c2.dir, components = _c2.components; var _d2 = useNavigation(), previousMonth = _d2.previousMonth, nextMonth = _d2.nextMonth, goToMonth = _d2.goToMonth, displayMonths = _d2.displayMonths; var displayIndex = displayMonths.findIndex(function(month) { - return isSameMonth(props.displayMonth, month); + return isSameMonth(props2.displayMonth, month); }); var isFirst = displayIndex === 0; var isLast = displayIndex === displayMonths.length - 1; @@ -26368,27 +24212,27 @@ function CaptionNavigation(props) { goToMonth(nextMonth); }; var CaptionLabelComponent = (_b2 = components === null || components === void 0 ? void 0 : components.CaptionLabel) !== null && _b2 !== void 0 ? _b2 : CaptionLabel; - var captionLabel = bn.createElement(CaptionLabelComponent, { id: props.id, displayMonth: props.displayMonth }); + var captionLabel = bn.createElement(CaptionLabelComponent, { id: props2.id, displayMonth: props2.displayMonth }); return bn.createElement( bn.Fragment, null, captionLabel, - bn.createElement(Navigation, { displayMonth: props.displayMonth, hideNext, hidePrevious, nextMonth, previousMonth, onPreviousClick: handlePreviousClick, onNextClick: handleNextClick }) + bn.createElement(Navigation, { displayMonth: props2.displayMonth, hideNext, hidePrevious, nextMonth, previousMonth, onPreviousClick: handlePreviousClick, onNextClick: handleNextClick }) ); } -function Caption(props) { +function Caption(props2) { var _a2; - var _b2 = useDayPicker(), classNames7 = _b2.classNames, disableNavigation = _b2.disableNavigation, styles = _b2.styles, captionLayout = _b2.captionLayout, components = _b2.components; + var _b2 = useDayPicker(), classNames8 = _b2.classNames, disableNavigation = _b2.disableNavigation, styles = _b2.styles, captionLayout = _b2.captionLayout, components = _b2.components; var CaptionLabelComponent = (_a2 = components === null || components === void 0 ? void 0 : components.CaptionLabel) !== null && _a2 !== void 0 ? _a2 : CaptionLabel; var caption; if (disableNavigation) { - caption = bn.createElement(CaptionLabelComponent, { id: props.id, displayMonth: props.displayMonth }); + caption = bn.createElement(CaptionLabelComponent, { id: props2.id, displayMonth: props2.displayMonth }); } else if (captionLayout === "dropdown") { - caption = bn.createElement(CaptionDropdowns, { displayMonth: props.displayMonth, id: props.id }); + caption = bn.createElement(CaptionDropdowns, { displayMonth: props2.displayMonth, id: props2.id }); } else { - caption = bn.createElement(CaptionNavigation, { displayMonth: props.displayMonth, id: props.id }); + caption = bn.createElement(CaptionNavigation, { displayMonth: props2.displayMonth, id: props2.id }); } - return bn.createElement("div", { className: classNames7.caption, style: styles.caption }, caption); + return bn.createElement("div", { className: classNames8.caption, style: styles.caption }, caption); } function Footer() { var _a2 = useDayPicker(), footer = _a2.footer, styles = _a2.styles, tfoot = _a2.classNames.tfoot; @@ -26414,60 +24258,60 @@ function getWeekdays(locale2, weekStartsOn, ISOWeek) { return days; } function HeadRow() { - var _a2 = useDayPicker(), classNames7 = _a2.classNames, styles = _a2.styles, showWeekNumber = _a2.showWeekNumber, locale2 = _a2.locale, weekStartsOn = _a2.weekStartsOn, ISOWeek = _a2.ISOWeek, formatWeekdayName2 = _a2.formatters.formatWeekdayName, labelWeekday2 = _a2.labels.labelWeekday; + var _a2 = useDayPicker(), classNames8 = _a2.classNames, styles = _a2.styles, showWeekNumber = _a2.showWeekNumber, locale2 = _a2.locale, weekStartsOn = _a2.weekStartsOn, ISOWeek = _a2.ISOWeek, formatWeekdayName2 = _a2.formatters.formatWeekdayName, labelWeekday2 = _a2.labels.labelWeekday; var weekdays = getWeekdays(locale2, weekStartsOn, ISOWeek); return bn.createElement( "tr", - { style: styles.head_row, className: classNames7.head_row }, - showWeekNumber && bn.createElement("th", { scope: "col", style: styles.head_cell, className: classNames7.head_cell }), + { style: styles.head_row, className: classNames8.head_row }, + showWeekNumber && bn.createElement("th", { scope: "col", style: styles.head_cell, className: classNames8.head_cell }), weekdays.map(function(weekday, i4) { return bn.createElement( "th", - { key: i4, scope: "col", className: classNames7.head_cell, style: styles.head_cell }, + { key: i4, scope: "col", className: classNames8.head_cell, style: styles.head_cell }, bn.createElement("span", { "aria-hidden": true }, formatWeekdayName2(weekday, { locale: locale2 })), - bn.createElement("span", { className: classNames7.vhidden }, labelWeekday2(weekday, { locale: locale2 })) + bn.createElement("span", { className: classNames8.vhidden }, labelWeekday2(weekday, { locale: locale2 })) ); }) ); } function Head() { var _a2; - var _b2 = useDayPicker(), classNames7 = _b2.classNames, styles = _b2.styles, components = _b2.components; + var _b2 = useDayPicker(), classNames8 = _b2.classNames, styles = _b2.styles, components = _b2.components; var HeadRowComponent = (_a2 = components === null || components === void 0 ? void 0 : components.HeadRow) !== null && _a2 !== void 0 ? _a2 : HeadRow; return bn.createElement( "thead", - { style: styles.head, className: classNames7.head }, + { style: styles.head, className: classNames8.head }, bn.createElement(HeadRowComponent, null) ); } -function DayContent(props) { +function DayContent(props2) { var _a2 = useDayPicker(), locale2 = _a2.locale, formatDay2 = _a2.formatters.formatDay; - return bn.createElement(bn.Fragment, null, formatDay2(props.date, { locale: locale2 })); + return bn.createElement(bn.Fragment, null, formatDay2(props2.date, { locale: locale2 })); } var SelectMultipleContext = B(void 0); -function SelectMultipleProvider(props) { - if (!isDayPickerMultiple(props.initialProps)) { +function SelectMultipleProvider(props2) { + if (!isDayPickerMultiple(props2.initialProps)) { var emptyContextValue = { selected: void 0, modifiers: { disabled: [] } }; - return bn.createElement(SelectMultipleContext.Provider, { value: emptyContextValue }, props.children); + return bn.createElement(SelectMultipleContext.Provider, { value: emptyContextValue }, props2.children); } - return bn.createElement(SelectMultipleProviderInternal, { initialProps: props.initialProps, children: props.children }); + return bn.createElement(SelectMultipleProviderInternal, { initialProps: props2.initialProps, children: props2.children }); } function SelectMultipleProviderInternal(_a2) { var initialProps = _a2.initialProps, children = _a2.children; - var selected = initialProps.selected, min2 = initialProps.min, max2 = initialProps.max; + var selected = initialProps.selected, min3 = initialProps.min, max3 = initialProps.max; var onDayClick = function(day, activeModifiers, e4) { var _a3, _b2; (_a3 = initialProps.onDayClick) === null || _a3 === void 0 ? void 0 : _a3.call(initialProps, day, activeModifiers, e4); - var isMinSelected = Boolean(activeModifiers.selected && min2 && (selected === null || selected === void 0 ? void 0 : selected.length) === min2); + var isMinSelected = Boolean(activeModifiers.selected && min3 && (selected === null || selected === void 0 ? void 0 : selected.length) === min3); if (isMinSelected) { return; } - var isMaxSelected = Boolean(!activeModifiers.selected && max2 && (selected === null || selected === void 0 ? void 0 : selected.length) === max2); + var isMaxSelected = Boolean(!activeModifiers.selected && max3 && (selected === null || selected === void 0 ? void 0 : selected.length) === max3); if (isMaxSelected) { return; } @@ -26487,7 +24331,7 @@ function SelectMultipleProviderInternal(_a2) { }; if (selected) { modifiers.disabled.push(function(day) { - var isMaxSelected = max2 && selected.length > max2 - 1; + var isMaxSelected = max3 && selected.length > max3 - 1; var isSelected = selected.some(function(selectedDay) { return isSameDay(selectedDay, day); }); @@ -26537,8 +24381,8 @@ function addToRange(day, range) { return { from, to: day }; } var SelectRangeContext = B(void 0); -function SelectRangeProvider(props) { - if (!isDayPickerRange(props.initialProps)) { +function SelectRangeProvider(props2) { + if (!isDayPickerRange(props2.initialProps)) { var emptyContextValue = { selected: void 0, modifiers: { @@ -26548,16 +24392,16 @@ function SelectRangeProvider(props) { disabled: [] } }; - return bn.createElement(SelectRangeContext.Provider, { value: emptyContextValue }, props.children); + return bn.createElement(SelectRangeContext.Provider, { value: emptyContextValue }, props2.children); } - return bn.createElement(SelectRangeProviderInternal, { initialProps: props.initialProps, children: props.children }); + return bn.createElement(SelectRangeProviderInternal, { initialProps: props2.initialProps, children: props2.children }); } function SelectRangeProviderInternal(_a2) { var initialProps = _a2.initialProps, children = _a2.children; var selected = initialProps.selected; var _b2 = selected || {}, selectedFrom = _b2.from, selectedTo = _b2.to; - var min2 = initialProps.min; - var max2 = initialProps.max; + var min3 = initialProps.min; + var max3 = initialProps.max; var onDayClick = function(day, activeModifiers, e4) { var _a3, _b3; (_a3 = initialProps.onDayClick) === null || _a3 === void 0 ? void 0 : _a3.call(initialProps, day, activeModifiers, e4); @@ -26586,32 +24430,32 @@ function SelectRangeProviderInternal(_a2) { } } } - if (min2) { + if (min3) { if (selectedFrom && !selectedTo) { modifiers.disabled.push({ - after: subDays(selectedFrom, min2 - 1), - before: addDays(selectedFrom, min2 - 1) + after: subDays(selectedFrom, min3 - 1), + before: addDays(selectedFrom, min3 - 1) }); } if (selectedFrom && selectedTo) { modifiers.disabled.push({ after: selectedFrom, - before: addDays(selectedFrom, min2 - 1) + before: addDays(selectedFrom, min3 - 1) }); } } - if (max2) { + if (max3) { if (selectedFrom && !selectedTo) { modifiers.disabled.push({ - before: addDays(selectedFrom, -max2 + 1) + before: addDays(selectedFrom, -max3 + 1) }); modifiers.disabled.push({ - after: addDays(selectedFrom, max2 - 1) + after: addDays(selectedFrom, max3 - 1) }); } if (selectedFrom && selectedTo) { var selectedCount = differenceInCalendarDays(selectedTo, selectedFrom) + 1; - var offset = max2 - selectedCount; + var offset = max3 - selectedCount; modifiers.disabled.push({ before: subDays(selectedFrom, offset) }); @@ -26685,14 +24529,14 @@ function getInternalModifiers(dayPicker, selectMultiple, selectRange) { return internalModifiers; } var ModifiersContext = B(void 0); -function ModifiersProvider(props) { +function ModifiersProvider(props2) { var dayPicker = useDayPicker(); var selectMultiple = useSelectMultiple(); var selectRange = useSelectRange(); var internalModifiers = getInternalModifiers(dayPicker, selectMultiple, selectRange); var customModifiers = getCustomModifiers(dayPicker.modifiers); var modifiers = __assign(__assign({}, internalModifiers), customModifiers); - return bn.createElement(ModifiersContext.Provider, { value: modifiers }, props.children); + return bn.createElement(ModifiersContext.Provider, { value: modifiers }, props2.children); } function useModifiers() { var context = q2(ModifiersContext); @@ -26872,7 +24716,7 @@ function getNextFocus(focusedDay, options) { } } var FocusContext = B(void 0); -function FocusProvider(props) { +function FocusProvider(props2) { var navigation = useNavigation(); var modifiers = useModifiers(); var _a2 = p2(), focusedDay = _a2[0], setFocusedDay = _a2[1]; @@ -26937,7 +24781,7 @@ function FocusProvider(props) { return moveFocus("endOfWeek", "after"); } }; - return bn.createElement(FocusContext.Provider, { value }, props.children); + return bn.createElement(FocusContext.Provider, { value }, props2.children); } function useFocusContext() { var context = q2(FocusContext); @@ -26952,14 +24796,14 @@ function useActiveModifiers(day, displayMonth) { return activeModifiers; } var SelectSingleContext = B(void 0); -function SelectSingleProvider(props) { - if (!isDayPickerSingle(props.initialProps)) { +function SelectSingleProvider(props2) { + if (!isDayPickerSingle(props2.initialProps)) { var emptyContextValue = { selected: void 0 }; - return bn.createElement(SelectSingleContext.Provider, { value: emptyContextValue }, props.children); + return bn.createElement(SelectSingleContext.Provider, { value: emptyContextValue }, props2.children); } - return bn.createElement(SelectSingleProviderInternal, { initialProps: props.initialProps, children: props.children }); + return bn.createElement(SelectSingleProviderInternal, { initialProps: props2.initialProps, children: props2.children }); } function SelectSingleProviderInternal(_a2) { var initialProps = _a2.initialProps, children = _a2.children; @@ -27114,19 +24958,19 @@ function isInternalModifier(modifier) { return Object.values(InternalModifier).includes(modifier); } function getDayClassNames(dayPicker, activeModifiers) { - var classNames7 = [dayPicker.classNames.day]; + var classNames8 = [dayPicker.classNames.day]; Object.keys(activeModifiers).forEach(function(modifier) { var customClassName = dayPicker.modifiersClassNames[modifier]; if (customClassName) { - classNames7.push(customClassName); + classNames8.push(customClassName); } else if (isInternalModifier(modifier)) { var internalClassName = dayPicker.classNames["day_".concat(modifier)]; if (internalClassName) { - classNames7.push(internalClassName); + classNames8.push(internalClassName); } } }); - return classNames7; + return classNames8; } function getDayStyle(dayPicker, activeModifiers) { var style = __assign({}, dayPicker.styles.day); @@ -27190,9 +25034,9 @@ function useDayRender(day, displayMonth, buttonRef) { }; return dayRender; } -function Day(props) { +function Day(props2) { var buttonRef = _2(null); - var dayRender = useDayRender(props.date, props.displayMonth, buttonRef); + var dayRender = useDayRender(props2.date, props2.displayMonth, buttonRef); if (dayRender.isHidden) { return bn.createElement(bn.Fragment, null); } @@ -27201,41 +25045,41 @@ function Day(props) { } return bn.createElement(Button, __assign({ name: "day", ref: buttonRef }, dayRender.buttonProps)); } -function WeekNumber(props) { - var weekNumber = props.number, dates = props.dates; - var _a2 = useDayPicker(), onWeekNumberClick = _a2.onWeekNumberClick, styles = _a2.styles, classNames7 = _a2.classNames, locale2 = _a2.locale, labelWeekNumber2 = _a2.labels.labelWeekNumber, formatWeekNumber2 = _a2.formatters.formatWeekNumber; +function WeekNumber(props2) { + var weekNumber = props2.number, dates = props2.dates; + var _a2 = useDayPicker(), onWeekNumberClick = _a2.onWeekNumberClick, styles = _a2.styles, classNames8 = _a2.classNames, locale2 = _a2.locale, labelWeekNumber2 = _a2.labels.labelWeekNumber, formatWeekNumber2 = _a2.formatters.formatWeekNumber; var content = formatWeekNumber2(Number(weekNumber), { locale: locale2 }); if (!onWeekNumberClick) { - return bn.createElement("span", { className: classNames7.weeknumber, style: styles.weeknumber }, content); + return bn.createElement("span", { className: classNames8.weeknumber, style: styles.weeknumber }, content); } var label = labelWeekNumber2(Number(weekNumber), { locale: locale2 }); var handleClick = function(e4) { onWeekNumberClick(weekNumber, dates, e4); }; - return bn.createElement(Button, { name: "week-number", "aria-label": label, className: classNames7.weeknumber, style: styles.weeknumber, onClick: handleClick }, content); + return bn.createElement(Button, { name: "week-number", "aria-label": label, className: classNames8.weeknumber, style: styles.weeknumber, onClick: handleClick }, content); } -function Row(props) { +function Row(props2) { var _a2, _b2; - var _c2 = useDayPicker(), styles = _c2.styles, classNames7 = _c2.classNames, showWeekNumber = _c2.showWeekNumber, components = _c2.components; + var _c2 = useDayPicker(), styles = _c2.styles, classNames8 = _c2.classNames, showWeekNumber = _c2.showWeekNumber, components = _c2.components; var DayComponent = (_a2 = components === null || components === void 0 ? void 0 : components.Day) !== null && _a2 !== void 0 ? _a2 : Day; var WeeknumberComponent = (_b2 = components === null || components === void 0 ? void 0 : components.WeekNumber) !== null && _b2 !== void 0 ? _b2 : WeekNumber; var weekNumberCell; if (showWeekNumber) { weekNumberCell = bn.createElement( "td", - { className: classNames7.cell, style: styles.cell }, - bn.createElement(WeeknumberComponent, { number: props.weekNumber, dates: props.dates }) + { className: classNames8.cell, style: styles.cell }, + bn.createElement(WeeknumberComponent, { number: props2.weekNumber, dates: props2.dates }) ); } return bn.createElement( "tr", - { className: classNames7.row, style: styles.row }, + { className: classNames8.row, style: styles.row }, weekNumberCell, - props.dates.map(function(date) { + props2.dates.map(function(date) { return bn.createElement( "td", - { className: classNames7.cell, style: styles.cell, key: getUnixTime(date) }, - bn.createElement(DayComponent, { displayMonth: props.displayMonth, date }) + { className: classNames8.cell, style: styles.cell, key: getUnixTime(date) }, + bn.createElement(DayComponent, { displayMonth: props2.displayMonth, date }) ); }) ); @@ -27279,10 +25123,10 @@ function getMonthWeeks(month, options) { } return weeksInMonth; } -function Table(props) { +function Table(props2) { var _a2, _b2, _c2; - var _d2 = useDayPicker(), locale2 = _d2.locale, classNames7 = _d2.classNames, styles = _d2.styles, hideHead = _d2.hideHead, fixedWeeks = _d2.fixedWeeks, components = _d2.components, weekStartsOn = _d2.weekStartsOn, firstWeekContainsDate = _d2.firstWeekContainsDate, ISOWeek = _d2.ISOWeek; - var weeks = getMonthWeeks(props.displayMonth, { + var _d2 = useDayPicker(), locale2 = _d2.locale, classNames8 = _d2.classNames, styles = _d2.styles, hideHead = _d2.hideHead, fixedWeeks = _d2.fixedWeeks, components = _d2.components, weekStartsOn = _d2.weekStartsOn, firstWeekContainsDate = _d2.firstWeekContainsDate, ISOWeek = _d2.ISOWeek; + var weeks = getMonthWeeks(props2.displayMonth, { useFixedWeeks: Boolean(fixedWeeks), ISOWeek, locale: locale2, @@ -27294,10 +25138,10 @@ function Table(props) { var FooterComponent = (_c2 = components === null || components === void 0 ? void 0 : components.Footer) !== null && _c2 !== void 0 ? _c2 : Footer; return bn.createElement( "table", - { className: classNames7.table, style: styles.table, role: "grid", "aria-labelledby": props["aria-labelledby"] }, + { className: classNames8.table, style: styles.table, role: "grid", "aria-labelledby": props2["aria-labelledby"] }, !hideHead && bn.createElement(HeadComponent, null), - bn.createElement("tbody", { className: classNames7.tbody, style: styles.tbody }, weeks.map(function(week) { - return bn.createElement(RowComponent, { displayMonth: props.displayMonth, key: week.weekNumber, dates: week.dates, weekNumber: week.weekNumber }); + bn.createElement("tbody", { className: classNames8.tbody, style: styles.tbody }, weeks.map(function(week) { + return bn.createElement(RowComponent, { displayMonth: props2.displayMonth, key: week.weekNumber, dates: week.dates, weekNumber: week.weekNumber }); })), bn.createElement(FooterComponent, null) ); @@ -27327,39 +25171,39 @@ function useId(providedId) { }, []); return (_a2 = providedId !== null && providedId !== void 0 ? providedId : id2) !== null && _a2 !== void 0 ? _a2 : void 0; } -function Month(props) { +function Month(props2) { var _a2; var _b2; var dayPicker = useDayPicker(); - var dir = dayPicker.dir, classNames7 = dayPicker.classNames, styles = dayPicker.styles, components = dayPicker.components; + var dir = dayPicker.dir, classNames8 = dayPicker.classNames, styles = dayPicker.styles, components = dayPicker.components; var displayMonths = useNavigation().displayMonths; - var captionId = useId(dayPicker.id ? "".concat(dayPicker.id, "-").concat(props.displayIndex) : void 0); - var className = [classNames7.month]; + var captionId = useId(dayPicker.id ? "".concat(dayPicker.id, "-").concat(props2.displayIndex) : void 0); + var className = [classNames8.month]; var style = styles.month; - var isStart = props.displayIndex === 0; - var isEnd = props.displayIndex === displayMonths.length - 1; + var isStart = props2.displayIndex === 0; + var isEnd = props2.displayIndex === displayMonths.length - 1; var isCenter = !isStart && !isEnd; if (dir === "rtl") { _a2 = [isStart, isEnd], isEnd = _a2[0], isStart = _a2[1]; } if (isStart) { - className.push(classNames7.caption_start); + className.push(classNames8.caption_start); style = __assign(__assign({}, style), styles.caption_start); } if (isEnd) { - className.push(classNames7.caption_end); + className.push(classNames8.caption_end); style = __assign(__assign({}, style), styles.caption_end); } if (isCenter) { - className.push(classNames7.caption_between); + className.push(classNames8.caption_between); style = __assign(__assign({}, style), styles.caption_between); } var CaptionComponent = (_b2 = components === null || components === void 0 ? void 0 : components.Caption) !== null && _b2 !== void 0 ? _b2 : Caption; return bn.createElement( "div", - { key: props.displayIndex, className: className.join(" "), style }, - bn.createElement(CaptionComponent, { id: captionId, displayMonth: props.displayMonth }), - bn.createElement(Table, { "aria-labelledby": captionId, displayMonth: props.displayMonth }) + { key: props2.displayIndex, className: className.join(" "), style }, + bn.createElement(CaptionComponent, { id: captionId, displayMonth: props2.displayMonth }), + bn.createElement(Table, { "aria-labelledby": captionId, displayMonth: props2.displayMonth }) ); } function Root() { @@ -27383,24 +25227,24 @@ function Root() { focusContext.focusTarget, focusContext ]); - var classNames7 = [dayPicker.classNames.root, dayPicker.className]; + var classNames8 = [dayPicker.classNames.root, dayPicker.className]; if (dayPicker.numberOfMonths > 1) { - classNames7.push(dayPicker.classNames.multiple_months); + classNames8.push(dayPicker.classNames.multiple_months); } if (dayPicker.showWeekNumber) { - classNames7.push(dayPicker.classNames.with_weeknumber); + classNames8.push(dayPicker.classNames.with_weeknumber); } var style = __assign(__assign({}, dayPicker.styles.root), dayPicker.style); return bn.createElement( "div", - { className: classNames7.join(" "), style, dir: dayPicker.dir }, + { className: classNames8.join(" "), style, dir: dayPicker.dir }, bn.createElement("div", { className: dayPicker.classNames.months, style: dayPicker.styles.months }, navigation.displayMonths.map(function(month, i4) { return bn.createElement(Month, { key: i4, displayIndex: i4, displayMonth: month }); })) ); } -function RootProvider(props) { - var children = props.children, initialProps = __rest(props, ["children"]); +function RootProvider(props2) { + var children = props2.children, initialProps = __rest(props2, ["children"]); return bn.createElement( DayPickerProvider, { initialProps }, @@ -27427,34 +25271,265 @@ function RootProvider(props) { ) ); } -function DayPicker(props) { +function DayPicker(props2) { return bn.createElement( RootProvider, - __assign({}, props), + __assign({}, props2), bn.createElement(Root, null) ); } +// src/utils/contexts/predicate/filter.ts +var stringEqual = (value, filterValue) => { + return value == filterValue; +}; +var stringCompare = (value, filterValue) => { + return (value != null ? value : "").toLowerCase().includes((filterValue != null ? filterValue : "").toLowerCase()); +}; +var greaterThan = (value, filterValue) => { + return parseFloat(value) > parseFloat(filterValue); +}; +var lessThan = (value, filterValue) => { + return parseInt(value) > parseInt(filterValue); +}; +var listIncludes = (value, filterValue) => { + const valueList = value ? splitString(value) : []; + const strings = filterValue ? splitString(filterValue) : []; + return strings.some((f4) => valueList.some((g4) => g4 == f4)); +}; +var filterFnTypes = { + "include": { + type: ["text", "file", "link", "link-multi"], + fn: stringCompare, + label: "contains", + valueType: "text" + }, + "notInclude": { + type: ["text", "file", "link", "link-multi"], + fn: (v3, f4) => !stringCompare(v3, f4), + label: "does not contain", + valueType: "text" + }, + "is": { + type: ["text", "file", "link", "context"], + fn: stringEqual, + label: "is", + valueType: "text" + }, + "isNot": { + type: ["text", "file", "link", "context"], + fn: (v3, f4) => !stringEqual(v3, f4), + label: "is not", + valueType: "text" + }, + "equal": { + type: ["number"], + fn: stringEqual, + label: "=", + valueType: "number" + }, + "isGreatThan": { + type: ["number"], + fn: greaterThan, + label: ">", + valueType: "number" + }, + "isLessThan": { + type: ["number"], + fn: lessThan, + label: "<", + valueType: "number" + }, + "isLessThanOrEqual": { + type: ["number"], + fn: (v3, f4) => !greaterThan(v3, f4), + label: "\u2264", + valueType: "number" + }, + "isGreatThanOrEqual": { + type: ["number"], + fn: (v3, f4) => !lessThan(v3, f4), + label: "\u2265", + valueType: "number" + }, + "dateBefore": { + type: ["date"], + fn: lessThan, + label: "before", + valueType: "date" + }, + "dateAfter": { + type: ["date"], + fn: greaterThan, + label: "after", + valueType: "date" + }, + "isAnyInList": { + type: ["option", "context", "option-multi", "context-multi"], + fn: listIncludes, + label: "is any of", + valueType: "list" + }, + "isNoneInList": { + type: ["option", "context", "option-multi", "context-multi"], + fn: (v3, f4) => !listIncludes(v3, f4), + label: "is none of", + valueType: "list" + }, + "isTrue": { + type: ["boolean"], + fn: (v3, f4) => v3 == "true", + label: "is checked", + valueType: "boolean" + }, + "isFalse": { + type: ["boolean"], + fn: (v3, f4) => v3 != "true", + label: "is unchecked", + valueType: "boolean" + } +}; +var filterReturnForCol = (col, filter, row) => { + if (!col) + return true; + const filterType = filterFnTypes[filter.type]; + let result = true; + if (filterType) { + result = filterType.fn(row[filter.field], filter.value); + } + return result; +}; + +// src/utils/contexts/predicate/sort.ts +var simpleSort = (a5, b4) => { + if (a5 < b4) + return -1; + if (a5 > b4) + return 1; + return 0; +}; +var stringSort = (value, filterValue) => simpleSort(value, filterValue); +var numSort = (value, filterValue) => simpleSort(parseFloat(value), parseFloat(filterValue)); +var boolSort = (value, filterValue) => simpleSort(value == "true" ? 1 : 0, filterValue == "true" ? 1 : 0); +var countSort = (value, filterValue) => simpleSort(splitString(value).length, splitString(filterValue).length); +var sortFnTypes = { + "alphabetical": { + type: ["text", "file", "link", "context"], + fn: stringSort, + label: "A to Z", + desc: false + }, + "reverseAlphabetical": { + type: ["text", "file", "link", "context"], + fn: (v3, f4) => stringSort(v3, f4) * -1, + label: "Z to A", + desc: true + }, + "boolean": { + type: ["boolean"], + fn: boolSort, + label: "Checked \u2192 Unchecked", + desc: false + }, + "booleanReverse": { + type: ["boolean"], + fn: (v3, f4) => boolSort(v3, f4) * -1, + label: "Unchecked \u2192 Checked", + desc: true + }, + "number": { + type: ["number"], + fn: numSort, + label: "1 \u2192 9", + desc: false + }, + "reverseNumber": { + type: ["number"], + fn: (v3, f4) => numSort(v3, f4) * -1, + label: "9 \u2192 1", + desc: true + }, + "count": { + type: ["option-multi", "context-multi", "link-multi"], + fn: countSort, + label: "Most Items", + desc: true + }, + "reverseCount": { + type: ["option-multi", "context-multi", "link-multi"], + fn: (v3, f4) => countSort(v3, f4) * -1, + label: "Least Items", + desc: false + } +}; +var sortReturnForCol = (col, sort, row, row2) => { + if (!col) + return 0; + const sortType = sortFnTypes[sort.type]; + if (sortType) { + return sortType.fn(row[sort.field], row2[sort.field]); + } + return 0; +}; + +// src/utils/contexts/predicate/predicate.tsx +var defaultPredicateFnForType = (type, types) => { + const fnType = Object.keys(types).find((f4) => types[f4].type.find((g4) => g4 == type)); + return fnType; +}; +var predicateFnsForType = (type, types) => { + const fnTypes = Object.keys(types).filter((f4) => types[f4].type.find((g4) => g4 == type)); + return fnTypes; +}; +var cleanPredicateType = (type, definedTypes) => { + return type.filter((f4) => Object.keys(definedTypes).find((g4) => g4 == f4.type)); +}; +var validatePredicate = (prevPredicate) => { + if (!prevPredicate) { + return defaultPredicate; + } + return { + ...defaultPredicate, + filters: Array.isArray(prevPredicate.filters) ? cleanPredicateType(prevPredicate.filters, filterFnTypes) : [], + sort: Array.isArray(prevPredicate.sort) ? cleanPredicateType(prevPredicate.sort, sortFnTypes) : [], + groupBy: Array.isArray(prevPredicate.groupBy) ? prevPredicate.groupBy : [], + colsOrder: Array.isArray(prevPredicate.colsOrder) ? prevPredicate.colsOrder : [], + colsHidden: Array.isArray(prevPredicate.colsHidden) ? prevPredicate.colsHidden : [], + colsSize: prevPredicate.colsSize + }; +}; +var defaultPredicate = { filters: [], sort: [], groupBy: [], colsOrder: [], colsHidden: [], colsSize: {} }; +var splitString = (str) => { + var _a2; + return (_a2 = str == null ? void 0 : str.match(/(\\.|[^,])+/g)) != null ? _a2 : []; +}; + // src/components/ui/menus/menu.tsx -var OptionMenu = (props) => { +var OptionMenu = (props2) => { var _a2; - const initialOptions = props.options.map((o3, i4) => { + const initialOptions = props2.options.map((o3, i4) => { return { - id: i4 + 1, - name: o3.name, - value: o3.value + ...o3, + id: i4 + 1 }; }); + h2(() => { + setSuggestions(props2.options.map((o3, i4) => { + return { + ...o3, + id: i4 + 1 + }; + })); + }, [props2.options]); const [suggestions, setSuggestions] = p2(initialOptions); - const [tags, setTags] = p2(props.value.map((v3) => { + const [tags, setTags] = p2(props2.value.map((v3) => { var _a3; return (_a3 = initialOptions.find((f4) => f4.value == v3)) != null ? _a3 : { id: 0, name: v3, value: v3 }; })); - const reactTags = _2(); const onDelete = T2((tagIndex) => { const newTags = tags.filter((_4, i4) => i4 !== tagIndex); setTags(newTags); - props.saveOptions(suggestions.map((f4) => f4.value), newTags.map((f4) => f4.value)); + props2.saveOptions(suggestions.map((f4) => f4.value), newTags.map((f4) => f4.value)); }, [suggestions, tags]); const onAddition = T2((newTag) => { let tag = newTag; @@ -27469,7 +25544,7 @@ var OptionMenu = (props) => { newSuggestions = [...suggestions, tag]; setSuggestions(newSuggestions); } - if (props.multi) { + if (props2.multi) { if (!tags.find((t4) => t4.value == tag.value)) { newTags = [...tags, tag]; setTags(newTags); @@ -27478,13 +25553,13 @@ var OptionMenu = (props) => { newTags = [tag]; setTags(newTags); } - props.saveOptions(newSuggestions.map((f4) => f4.value), newTags.map((f4) => f4.value)); - if (!props.multi) { - props.hide(); + props2.saveOptions(newSuggestions.map((f4) => f4.value), newTags.map((f4) => f4.value)); + if (!props2.multi) { + props2.hide(); } }, [tags, suggestions]); const onValidation = T2((newTag) => { - if (!props.editable && !suggestions.find((s5) => s5.value == newTag.value)) { + if (!props2.editable && !suggestions.find((s5) => s5.value == newTag.value)) { return false; } if (newTag.name.length == 0) { @@ -27492,24 +25567,22 @@ var OptionMenu = (props) => { } return true; }, [suggestions]); - const tagProps = props.detail ? { - suggestionComponent: (props2) => /* @__PURE__ */ bn.createElement("div", { - className: "mk-suggestion" - }, /* @__PURE__ */ bn.createElement("span", null, props2.item.name), /* @__PURE__ */ bn.createElement("span", null, props2.item.value)), - maxSuggestionsLength: 4 - } : {}; - return /* @__PURE__ */ bn.createElement("div", null, /* @__PURE__ */ bn.createElement(ReactTags_default, { - ref: reactTags, - tags: props.multi ? tags : [], + return /* @__PURE__ */ bn.createElement(ReactTags_default, { + tags: props2.multi ? tags : [], suggestions, onDelete, onAddition, onValidate: onValidation, - placeholderText: (_a2 = props.placeholder) != null ? _a2 : "", - allowNew: true, + defaultSuggestions: props2.defaultOptions, + placeholderText: (_a2 = props2.placeholder) != null ? _a2 : "", minQueryLength: 0, - ...tagProps - })); + onHover: props2.onHover, + hoverSelect: props2.onHover ? true : false, + maxSuggestionsLength: props2.showAll ? Math.min(50, props2.options.length) : 8, + suggestionsOnly: !props2.searchable && !props2.editable, + allowNew: props2.editable, + previewComponent: props2.previewComponent + }); }; var inputMenuItem = (menuItem, value, setValue) => { const frag = document.createDocumentFragment(); @@ -27531,7 +25604,7 @@ var inputMenuItem = (menuItem, value, setValue) => { menuItem.setTitle(frag); return menuItem; }; -var showSelectMenu = (point, multi, editable, value, options, saveOptions, placeholder2, detail) => { +var showSelectMenu = (point, optionProps) => { const menu = new import_obsidian.Menu(); menu.dom.toggleClass("mk-menu", true); menu.setUseNativeMenu(false); @@ -27550,14 +25623,8 @@ var showSelectMenu = (point, multi, editable, value, options, saveOptions, place }); const root = createRoot(div); root.render(/* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement(OptionMenu, { - multi, - editable, - value, - options, - saveOptions, hide: () => menu.hide(), - placeholder: placeholder2, - detail + ...optionProps }))); menu.addItem((item) => { item.setTitle(frag); @@ -27604,7 +25671,7 @@ var showTimePickerMenu = (point, value, setValue) => { } menu.showAtPosition(point); }; -var showDatePickerMenu = (point, value, setValue, format2) => { +var showDatePickerMenu = (point, value, setValue, format3) => { const menu = new import_obsidian.Menu(); menu.dom.toggleClass("mk-menu", true); menu.setUseNativeMenu(false); @@ -27653,14 +25720,13 @@ var disclosureMenuItem = (menuItem, multi, editable, title, value, options, save var _a2; ev.stopPropagation(); const offset = menuItem.dom.getBoundingClientRect(); - showSelectMenu({ x: offset.right + 10, y: offset.top }, multi, editable, (_a2 = value.match(/(\\.|[^,])+/g)) != null ? _a2 : [], options, saveOptions); + showSelectMenu({ x: offset.right + 10, y: offset.top }, { multi, editable, value: (_a2 = splitString(value)) != null ? _a2 : [], options, saveOptions, searchable: true, showAll: true }); }); return menuItem; }; // src/components/ContextView/FilterBar/FilterBar.tsx -var import_obsidian6 = require("obsidian"); -init_compat_module(); +var import_obsidian9 = require("obsidian"); // src/utils/icons.ts var uiIconSet = { @@ -27711,6 +25777,40 @@ var uiIconSet = { "mk-ui-new-file": ` +`, + "mk-ui-blink": ` + + + + +`, + "mk-ui-spaces": ` + +`, + "mk-ui-tags": ` + +`, + "mk-ui-handle": ` + + + + + + + +`, + "mk-ui-new-space": ` + + +`, + "mk-ui-file-solid": ` + + + +`, + "mk-ui-folder-solid": ` + + ` }; var makeIconSet = { @@ -27884,197 +25984,19 @@ var safelyParseJSON = (json) => { } return parsed; }; -function buildTree(flattenedItems) { - var _a2, _b2; - const root = { ...flattenedItems.find((f4) => f4.id == "/"), children: [], isRoot: () => true }; - const items = flattenedItems.map((item) => ({ ...item, children: [] })); - for (const item of items) { - const { id: id2, children, vault, path, name, parent } = item; - const parentId = (_a2 = item.parentId) != null ? _a2 : "/"; - const _parent = (_b2 = items.find((f4) => f4.id == parentId)) != null ? _b2 : items.find((f4) => f4.id == "/"); - if (_parent) { - if (item.isFolder) { - _parent.children.push({ children, vault, parent, path, name }); - } else { - _parent.children.push({ vault, parent, path, name }); - } - } - } - return { - ...root, - children: items.filter((f4) => f4.parentId == "/").map((item) => { - const { children, vault, path, name, parent } = item; - if (item.isFolder) { - return { children, vault, parent, path, name }; - } else { - return { vault, parent, path, name }; - } - }) - }; -} var nodeIsAncestorOfTarget = (node, target) => { - const nodeFolder = node.isFolder ? getFolderPathFromString(node.path + "/") : getFolderPathFromString(node.path); - const targetFolder = target.isFolder ? getFolderPathFromString(target.path + "/") : getFolderPathFromString(target.path); - return targetFolder.contains(nodeFolder) && targetFolder != nodeFolder && nodeFolder != "" || targetFolder == node.path; - let isAncestor = false; - let condition = true; - let _target = app.vault.getAbstractFileByPath(target.path); - while (condition) { - if (_target.path && _target.path != "/") { - condition = false; - return; - } - if (_target.parent.path == node.path) { - isAncestor = true; - condition = false; - return; - } - _target = target.parent; - } - return isAncestor; -}; -var flattenTrees = (items, section, sectionIndex, parentId = null, depth = 0) => { - return items.filter((f4) => f4).reduce((acc, item, index) => { - const id2 = parentId + "/" + item.path; - if (item.children) { - return [ - ...acc, - { ...item, parentId, depth, section: sectionIndex, index, id: id2, isFolder: true }, - ...flattenTrees(folderChildren(item), section, sectionIndex, id2, depth + 1) - ]; - } else { - return [ - ...acc, - { ...item, parentId, depth, section: sectionIndex, index, id: id2, isFolder: false } - ]; - } - }, []); -}; -var flattenTree = (folder, path, sectionIndex, collapsed) => { - return [{ - ...folder, - id: folder.path, - parentId: null, - depth: 0, - index: 0, - section: -1, - isFolder: true - }, ...!collapsed ? flattenTrees(folderChildren(folder), path, sectionIndex, path, 1) : []]; -}; -function includeChildrenOf(items, ids2) { - const excludeParentIds = items.filter((f4) => { - var _a2; - return ((_a2 = f4.children) == null ? void 0 : _a2.length) > 0 && !ids2.find((i4) => i4 == f4.id) && f4.id != "/"; - }).map((f4) => f4.id); - return items.filter((item) => { - var _a2; - if (item.parentId && excludeParentIds.includes(item.parentId)) { - if ((_a2 = item.children) == null ? void 0 : _a2.length) { - excludeParentIds.push(item.id); - } - return false; - } - return true; - }); -} -var sortFolderTree = async (folderTree2, plugin) => { - if (plugin.settings.vaultSort.length > 0) { - return sortFolderTreeUsingField(folderTree2, plugin.settings.vaultSort[0], plugin.settings.vaultSort[1]); - } - const stringTree = plugin.settings.folderRank; - const rawStringTree = folderTreeToStringTree(folderTree2); - const newStringTree = mergeStringTree(stringTree, rawStringTree); - plugin.settings.folderRank = newStringTree; - plugin.saveSettings(false); - const sortedFolderTree = sortFolderTreeUsingStringTree(folderTree2, newStringTree); - return sortedFolderTree; -}; -var renamePathInStringTree = (oldPath, newFile, plugin) => { - const stringTree = plugin.settings.folderRank; - const newName = newFile.name; - const newPath = newFile.path; - const recursive = (tree, path, oldS, newS) => { - if (path == oldS) { - return { - ...tree, - node: newS - }; - } else if (!tree.isFolder) { - return tree; - } - return { - ...tree, - children: tree.children.map((f4) => recursive(f4, path + "/" + f4.node, oldS, newS)) - }; - }; - plugin.settings.fileIcons = plugin.settings.fileIcons.map((f4) => f4[0] == oldPath ? [newPath, f4[1]] : f4); - plugin.settings.spaces = plugin.settings.spaces.map((f4) => { - return { ...f4, children: f4.children.map( - (g4) => g4 == oldPath ? newPath : g4 - ) }; - }); - plugin.settings.folderRank = recursive(stringTree, "", "/" + oldPath, newName); - plugin.saveSettings(); -}; -var excludeFilePredicate = (f4) => !(f4 instanceof import_obsidian2.TFile && window.make.settings.hiddenExtensions.find((e4) => f4.extension == e4)) && !window.make.settings.hiddenFiles.find((e4) => e4 == f4.path) && !(f4.parent.name == fileNameToString(f4.name)); -var folderChildren = (f4, exclusionList) => { - return f4.children.filter(excludeFilePredicate); -}; -var folderTreeToStringTree = (tree) => { - const recursive = (subtree) => { - if (subtree.children) { - return { - node: subtree.name, - children: folderChildren(subtree).map((f4) => recursive(f4)), - isFolder: true - }; - } else { - return { - node: subtree.name, - children: [], - isFolder: false - }; - } - }; - return recursive(tree); + var _a2, _b2, _c2; + if (((_a2 = node.item) == null ? void 0 : _a2.folder) == "false") + return false; + return (_c2 = target.item) == null ? void 0 : _c2.path.contains(((_b2 = node.item) == null ? void 0 : _b2.path) + "/"); }; -var reorderStringTree = (savedTrees, rawTrees) => { - const missingTrees = rawTrees.filter((f4) => !savedTrees.find((g4) => f4.node == g4.node)); - const allTrees = [...savedTrees, ...missingTrees]; - const filteredTrees = allTrees.filter((f4) => rawTrees.find((g4) => f4.node == g4.node)); - return filteredTrees; +var excludeVaultItemPredicate = (plugin) => (f4) => !(f4.folder != "true" && plugin.settings.hiddenExtensions.find((e4) => fileExtensionForFile(f4.path) == e4)) && !plugin.settings.hiddenFiles.find((e4) => e4 == f4.path) && !(f4.parent + "/" + folderPathToString(f4.parent) == fileNameToString(f4.path)); +var excludeFilePredicate = (plugin) => (f4) => { + var _a2; + return !(f4 instanceof import_obsidian2.TFile && plugin.settings.hiddenExtensions.find((e4) => f4.extension == e4)) && !plugin.settings.hiddenFiles.find((e4) => e4 == f4.path) && !(((_a2 = f4.parent) == null ? void 0 : _a2.name) == fileNameToString(f4 == null ? void 0 : f4.name)); }; -var mergeStringTree = (savedTree, rawTree) => { - const flattenSavedTree = (tree) => { - const treeReduce = (t4, currPath) => { - return t4.reduce((p3, c4) => { - return [...p3, { - ...c4, - path: currPath + "/" + c4.node - }, ...treeReduce(c4.children, currPath + "/" + c4.node)]; - }, []); - }; - return [ - { ...tree, path: "/" }, - ...treeReduce(tree.children, "/") - ]; - }; - const rankReferences = flattenSavedTree(savedTree); - const recursive = (subtree, treePaths, currPath) => { - const existingTree = treePaths.find((f4) => currPath == f4.path); - if (existingTree) { - return { - ...subtree, - children: reorderStringTree(existingTree.children, subtree.children).map((t4) => recursive(t4, treePaths, currPath + "/" + t4.node)) - }; - } else { - return { - ...subtree, - children: subtree.children.map((t4) => recursive(t4, treePaths, currPath + "/" + t4.node)) - }; - } - }; - return recursive(rawTree, rankReferences, "/"); +var folderChildren = (plugin, f4, exclusionList) => { + return f4.children.filter(excludeFilePredicate(plugin)); }; var compareByField = (field, dir) => (_a2, _b2) => { const a5 = dir ? _a2 : _b2; @@ -28087,37 +26009,6 @@ var compareByField = (field, dir) => (_a2, _b2) => { } return 0; }; -var sortFolderTreeUsingField = (folderTree2, strategy, direction) => { - const recursiveSort = (file) => { - if (file instanceof import_obsidian2.TFolder) { - return { - ...file, - children: [...folderChildren(file).filter((f4) => f4 instanceof import_obsidian2.TFolder).map((f4) => recursiveSort(f4)).sort(compareByField("name", true)), ...folderChildren(file).filter((f4) => f4 instanceof import_obsidian2.TFile).sort(compareByField(strategy, direction))] - }; - } else { - return file; - } - }; - return recursiveSort(folderTree2); -}; -var sortFolderTreeUsingStringTree = (folderTree2, stringTree) => { - const recursiveSort = (file, strings) => { - if (file instanceof import_obsidian2.TFolder) { - return { - ...file, - children: folderChildren(file).map((f4) => { - const currStringTree = strings.children.find((g4) => g4.node == f4.name); - if (currStringTree) - return recursiveSort(f4, currStringTree); - return f4; - }).sort((a5, b4) => strings.children.findIndex((x5) => x5.node == a5.name) - strings.children.findIndex((x5) => x5.node == b4.name)) - }; - } else { - return file; - } - }; - return recursiveSort(folderTree2, stringTree); -}; var internalPluginLoaded = (pluginName, app2) => { var _a2; return (_a2 = app2.internalPlugins.plugins[pluginName]) == null ? void 0 : _a2._loaded; @@ -28134,19 +26025,168 @@ function selectElementContents(el) { var import_obsidian_dataview = __toESM(require_lib()); // src/components/ContextView/MDBContext.tsx -var import_obsidian4 = require("obsidian"); -init_compat_module(); +var import_obsidian5 = require("obsidian"); -// src/utils/db.ts +// src/schemas/mdb.ts +var defaultFileDBSchema = { + id: "files", + name: "Files", + type: "db", + primary: "true" +}; +var defaultFileListSchema = { + id: "filesView", + name: "Files", + type: "list", + def: "files" +}; +var defaultFileTableSchema = { + id: "filesView", + name: "Files", + type: "table", + def: "files" +}; +var defaultFolderSchema = { + uniques: ["id"], + cols: ["id", "name", "type", "def", "predicate", "primary"], + rows: [defaultFileDBSchema, defaultFileListSchema] +}; +var defaultTagSchema = { + uniques: ["id"], + cols: ["id", "name", "type", "def", "predicate", "primary"], + rows: [defaultFileDBSchema, defaultFileTableSchema] +}; +var fieldSchema = { + uniques: ["name,schemaId"], + cols: ["name", "schemaId", "type", "value", "attrs", "hidden", "unique", "primary"] +}; +var defaultFolderFields = { + ...fieldSchema, + rows: [ + { + name: "_id", + schemaId: "files", + type: "id", + unique: "true", + hidden: "true" + }, + { + name: "_source", + schemaId: "files", + type: "source", + hidden: "true" + }, + { + name: "Preview", + schemaId: "files", + type: "preview" + }, + { + name: "File", + schemaId: "files", + type: "file", + primary: "true" + }, + { + name: "Created", + schemaId: "files", + type: "fileprop", + value: "ctime" + } + ] +}; +var defaultTagFields = { + ...fieldSchema, + rows: [ + { + name: "_id", + schemaId: "files", + type: "id", + unique: "true", + hidden: "true" + }, + { + name: "_source", + schemaId: "files", + type: "source", + hidden: "true" + }, + { + name: "_sourceId", + schemaId: "files", + type: "sourceid", + hidden: "true" + }, + { + name: "File", + schemaId: "files", + type: "file", + primary: "true" + } + ] +}; +var defaultFolderMDBTable = { + schema: defaultFileDBSchema, + cols: defaultFolderFields.rows, + rows: [] +}; +var defaultTagMDBTable = { + schema: defaultFileDBSchema, + cols: defaultTagFields.rows, + rows: [] +}; +var fieldsToTable = (fields, schemas) => { + return fields.filter((s5) => schemas.find((g4) => g4.id == s5.schemaId && g4.type == "db")).reduce((p3, c4) => { + return { + ...p3, + ...p3[c4.schemaId] ? { + [c4.schemaId]: { + uniques: c4.unique == "true" ? [...p3[c4.schemaId].uniques, c4.name] : p3[c4.schemaId].uniques, + cols: [...p3[c4.schemaId].cols, c4.name], + rows: [] + } + } : { + [c4.schemaId]: { + uniques: c4.unique == "true" ? [c4.name] : [], + cols: [c4.name], + rows: [] + } + } + }; + }, {}); +}; +var defaultFolderTables = { + m_schema: defaultFolderSchema, + m_fields: defaultFolderFields, + ...fieldsToTable(defaultFolderFields.rows, defaultFolderSchema.rows) +}; +var defaultTagTables = { + m_schema: defaultTagSchema, + m_fields: defaultTagFields, + ...fieldsToTable(defaultTagFields.rows, defaultTagSchema.rows) +}; + +// src/utils/db/db.ts +var import_obsidian3 = require("obsidian"); var getDBFile = async (path) => { - if (!getAbstractFileAtPath(app, path)) { + if (!await app.vault.adapter.exists((0, import_obsidian3.normalizePath)(path))) { return null; } - const file = await app.vault.adapter.readBinary(path); + const file = await app.vault.adapter.readBinary((0, import_obsidian3.normalizePath)(path)); return file; }; +var getDB = async (sqlJS, path) => { + const buf = await getDBFile(path); + if (buf) { + return new sqlJS.Database(new Uint8Array(buf)); + } + return new sqlJS.Database(); +}; +var saveDBAndKeepAlive = (db, path) => { + return saveDBFile(path, db.export().buffer); +}; var saveDBFile = async (path, binary) => { - const file = await app.vault.adapter.writeBinary(path, binary); + const file = app.vault.adapter.writeBinary((0, import_obsidian3.normalizePath)(path), binary); return file; }; var dbResultsToDBTables = (res) => { @@ -28158,6 +26198,87 @@ var dbResultsToDBTables = (res) => { } ], []); }; +var selectDB = (db, table, condition) => { + const sqlstr = condition ? `SELECT * FROM ${table} WHERE ${condition};` : `SELECT * FROM ${table};`; + let tables; + try { + tables = dbResultsToDBTables(db.exec(sqlstr)); + } catch (e4) { + return null; + } + if (tables.length == 1) + return tables[0]; + return null; +}; +var updateDB = (db, tables, updateCol, updateRef) => { + const sqlstr = Object.keys(tables).map((t4) => { + const tableFields = tables[t4].cols.filter((f4) => f4 != updateRef); + const rowsQuery = tables[t4].rows.reduce((prev, curr) => { + var _a2, _b2; + return `${prev} UPDATE ${t4} SET ${tableFields.map((c4) => { + var _a3, _b3; + return `${c4}='${(_b3 = (_a3 = curr == null ? void 0 : curr[c4]) == null ? void 0 : _a3.replace(`'`, `''`)) != null ? _b3 : ""}'`; + }).join(", ")} WHERE ${updateCol}='${(_b2 = (_a2 = curr == null ? void 0 : curr[updateRef]) == null ? void 0 : _a2.replace(`'`, `''`)) != null ? _b2 : ""}';`; + }, ""); + return rowsQuery; + }).join("; "); + const test = db.exec(sqlstr); +}; +var execQuery = (db, sqlstr) => { + db.exec(sqlstr); +}; +var deleteFromDB = (db, table, condition) => { + const sqlstr = `DELETE FROM ${table} WHERE ${condition};`; + db.exec(sqlstr); +}; +var insertIntoDB = (db, tables) => { + const sqlstr = Object.keys(tables).map((t4) => { + const tableFields = tables[t4].cols; + const rowsQuery = tables[t4].rows.reduce((prev, curr) => { + return `${prev} REPLACE INTO ${t4} VALUES (${tableFields.map((c4) => { + var _a2, _b2; + return `'${(_b2 = (_a2 = curr == null ? void 0 : curr[c4]) == null ? void 0 : _a2.replace(`'`, `''`)) != null ? _b2 : ""}'`; + }).join(", ")});`; + }, ""); + return rowsQuery; + }).join("; "); + db.exec(sqlstr); +}; +var replaceDB = (db, tables) => { + const sqlstr = Object.keys(tables).map((t4) => { + const tableFields = tables[t4].cols; + const fieldQuery = uniq(tableFields).map((f4) => `'${f4}' char`).join(", "); + const rowsQuery = tables[t4].rows.reduce((prev, curr) => { + return `${prev} REPLACE INTO ${t4} VALUES (${tableFields.map((c4) => { + var _a2, _b2; + return `'${(_b2 = (_a2 = curr == null ? void 0 : curr[c4]) == null ? void 0 : _a2.replace(`'`, `''`)) != null ? _b2 : ""}'`; + }).join(", ")});`; + }, ""); + const idxQuery = tables[t4].uniques.reduce((p3, c4) => { + return `${p3} CREATE UNIQUE INDEX IF NOT EXISTS idx_${t4}_${c4.replace(",", "_")} ON ${t4}(${c4});`; + }, ""); + return `DROP TABLE IF EXISTS ${t4}; CREATE TABLE IF NOT EXISTS ${t4} (${fieldQuery}); ${idxQuery} ${rowsQuery}`; + }).join("; "); + db.exec(sqlstr); +}; +var saveDBToPath = async (plugin, path, tables) => { + const sqlJS = await plugin.sqlJS(); + let db = await getDB(sqlJS, path); + replaceDB(db, tables); + await saveDBFile(path, db.export().buffer); + db.close(); + return true; +}; + +// src/utils/uuid.js +function genId2() { + return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace( + /[018]/g, + (c4) => (c4 ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c4 / 4).toString(16) + ); +} + +// src/utils/contexts/mdb.ts var dbTableToMDBTable = (table, schema, fields) => { var _a2; return { @@ -28166,12 +26287,20 @@ var dbTableToMDBTable = (table, schema, fields) => { rows: (_a2 = table == null ? void 0 : table.rows) != null ? _a2 : [] }; }; -var getMDBTable = async (sqlJS, table, path) => { +var updateFieldsToSchema = (fields, tag) => { + if (tag) { + return [...fields, ...defaultTagFields.rows.filter((f4) => !fields.some((g4) => g4.name == f4.name && g4.schemaId == f4.schemaId))]; + } + return [...fields, ...defaultFolderFields.rows.filter((f4) => !fields.some((g4) => g4.name == f4.name && g4.schemaId == f4.schemaId))]; +}; +var getMDBTable = async (plugin, table, path, tag) => { + const sqlJS = await plugin.sqlJS(); const buf = await getDBFile(path); if (!buf) { return null; } const db = new sqlJS.Database(new Uint8Array(buf)); + await sanitizeTableSchema(plugin, db, path, tag); let fieldsTables; let schema; try { @@ -28186,14 +26315,16 @@ var getMDBTable = async (sqlJS, table, path) => { const fields = fieldsTables[0].rows.filter((f4) => f4.name.length > 0); const dbTable = dbResultsToDBTables(db.exec(`SELECT ${fields.reduce((p3, c4) => [...p3, `"${c4.name}"`], []).join(", ")} FROM ${table}`)); db.close(); - return dbTableToMDBTable(dbTable[0], schema, fields); + return dbTableToMDBTable(dbTable[0], schema, updateFieldsToSchema(fields, tag)); }; -var getMDBTableSchemas = async (sqlJS, path) => { +var getMDBTableSchemas = async (plugin, path, tag) => { + const sqlJS = await plugin.sqlJS(); const buf = await getDBFile(path); if (!buf) { return null; } const db = new sqlJS.Database(new Uint8Array(buf)); + await sanitizeTableSchema(plugin, db, path, tag); const tables = db.exec(`SELECT * FROM m_schema`); db.close(); return tables[0].values.map((f4) => { @@ -28201,18 +26332,19 @@ var getMDBTableSchemas = async (sqlJS, path) => { return { id: id2, name, type, def, predicate, primary }; }); }; -var mdbToDBTables = async (sqlJS, path, mdb) => { +var saveMDBToPath = async (plugin, path, mdb) => { var _a2, _b2; + const sqlJS = await plugin.sqlJS(); const buf = await getDBFile(path); if (!buf) { return null; } const db = new sqlJS.Database(new Uint8Array(buf)); const fieldsTables = dbResultsToDBTables(db.exec(`SELECT * FROM m_fields WHERE schemaId != '${mdb.schema.id}'`)); - return { + const tables = { m_fields: { - uniques: defaultFields.uniques, - cols: defaultFields.cols, + uniques: fieldSchema.uniques, + cols: fieldSchema.cols, rows: [...(_b2 = (_a2 = fieldsTables[0]) == null ? void 0 : _a2.rows) != null ? _b2 : [], ...mdb.cols] }, [mdb.schema.id]: { @@ -28221,149 +26353,139 @@ var mdbToDBTables = async (sqlJS, path, mdb) => { rows: mdb.rows } }; + return saveDBToPath(plugin, path, tables); +}; +var optionValuesForColumn = (column, table) => { + var _a2; + return uniq((_a2 = table == null ? void 0 : table.rows.reduce((p3, c4) => { + return [...p3, ...splitString(c4[column])]; + }, [])) != null ? _a2 : []); +}; +var createDefaultDB = async (plugin, path, tag) => { + const sqlJS = await plugin.sqlJS(); + const table = tag ? defaultTagTables : defaultFolderTables; + return saveDBToPath(plugin, path, table); +}; +var sanitizeTableSchema = async (plugin, db, path, tag) => { + const sqlJS = await plugin.sqlJS(); + const tableRes = db.exec(`SELECT name FROM sqlite_master WHERE type='table';`); + if (!tableRes[0] || !tableRes[0].values.some((f4) => f4[0] == "m_schema") || !tableRes[0].values.some((f4) => f4[0] == "m_fields") || !tableRes[0].values.some((f4) => f4[0] == "files")) { + await createDefaultDB(plugin, path, tag); + } +}; +var newRowByDBRow = (row) => ({ + _id: genId2(), + ...row +}); +var rowWithID = (row, tag) => { + return row._id && row._id.length > 0 ? row : { + ...newRowByDBRow({ ...row, _source: tag ? "tag" : "folder" }) + }; +}; +var createNewRow = (mdb, row) => { + return { + ...mdb, + rows: [newRowByDBRow(row), ...mdb.rows] + }; }; -var saveDBToPath = async (sqlJS, path, tables) => { +var consolidateFilesToTable = async (plugin, path, table, files, tag) => { + const sqlJS = await plugin.sqlJS(); let db = new sqlJS.Database(); ; if (getAbstractFileAtPath(app, path)) { const buf = await getDBFile(path); db = new sqlJS.Database(new Uint8Array(buf)); + } else { + await createDefaultDB(plugin, path, false); } - const sqlstr = Object.keys(tables).map((t4) => { - const tableFields = tables[t4].cols; - const fieldQuery = uniq(tableFields).map((f4) => `'${f4}' char`).join(", "); - const rowsQuery = tables[t4].rows.reduce((prev, curr) => { - return `${prev} REPLACE INTO ${t4} VALUES (${tableFields.map((c4) => { - var _a2, _b2; - return `'${(_b2 = (_a2 = curr == null ? void 0 : curr[c4]) == null ? void 0 : _a2.replace(`'`, `''`)) != null ? _b2 : ""}'`; - }).join(", ")});`; - }, ""); - const idxQuery = tables[t4].uniques.reduce((p3, c4) => { - return `${p3} CREATE UNIQUE INDEX IF NOT EXISTS idx_${t4}_${c4.replace(",", "_")} ON ${t4}(${c4});`; - }, ""); - return `DROP TABLE IF EXISTS ${t4}; CREATE TABLE IF NOT EXISTS ${t4} (${fieldQuery}); ${idxQuery} ${rowsQuery}`; - }).join("; "); - db.exec(sqlstr); - await saveDBFile(path, db.export().buffer); - db.close(); - return true; + const mdbTable = await getMDBTable(plugin, table, path, tag); + const missingFiles = files.filter((f4) => !mdbTable.rows.some((g4) => g4.File == f4 && (g4._source == "folder" || g4._source == "tag"))).map((f4) => ({ File: f4 })); + const mergeDuplicates = (rows, tag2) => { + const mergeFields = (row, row2) => { + return { ...row, ...row2 }; + }; + return rows.reduce((p3, c4) => { + const findIndex2 = p3.findIndex((f4) => (f4._source == "folder" || f4._source == "tag") && f4.File == c4.File); + if (findIndex2 != -1) { + return p3.map((f4, i4) => i4 == findIndex2 ? mergeFields(f4, c4) : f4); + } + return [...p3, c4]; + }, []); + }; + const newRows = [...mdbTable.rows.filter((f4) => f4._source != "folder" && f4._source != "tag"), ...[...mergeDuplicates(mdbTable.rows.filter((f4) => (f4._source == "folder" || f4._source == "tag") && files.some((g4) => g4 == f4.File)), tag), ...missingFiles].map((f4) => rowWithID(f4, tag))]; + const newMDBTable = { + ...mdbTable, + cols: [...(tag ? defaultTagFields : defaultFolderFields).rows, ...mdbTable.cols].filter(onlyUniqueProp("name")), + rows: newRows + }; + await saveMDBToPath(plugin, path, newMDBTable); + return newMDBTable; }; -var consolidateFilesToTable = async (sqlJS, path, table, col, files) => { +var consolidateRowsToTag = async (plugin, path, table, source, rows) => { + const sqlJS = await plugin.sqlJS(); let db = new sqlJS.Database(); ; if (getAbstractFileAtPath(app, path)) { const buf = await getDBFile(path); db = new sqlJS.Database(new Uint8Array(buf)); } else { - await saveDBToPath(sqlJS, path, defaultFolderTables); - } - const tableRes = db.exec(`SELECT name FROM sqlite_master WHERE type='table' AND name='${table}';`); - if (!tableRes[0]) { - await saveDBToPath(sqlJS, path, defaultFolderTables); - const fieldQuery = defaultFields.rows.filter((f4) => f4.schemaId == table).map((f4) => f4).map((f4) => `'${f4}' char`).join(", "); - await db.exec(`CREATE TABLE IF NOT EXISTS ${table} (${fieldQuery});`); - } - const fileTable = db.exec(`SELECT "${col}" FROM ${table}`); - const prevFiles = fileTable.length > 0 ? fileTable[0].values.reduce((p3, c4) => [...p3, ...c4], []) : []; - const missingFiles = files.filter((f4) => !prevFiles.find((g4) => g4 == f4)); - const insertQuery = missingFiles.reduce((prev, curr) => { - return `${prev} REPLACE INTO ${table} (${col}) VALUES ('${curr == null ? void 0 : curr.replace(`'`, `''`)}');`; - }, ""); - db.exec(insertQuery); - await saveDBFile(path, db.export().buffer); - db.close(); - const rmdb = await getMDBTable(sqlJS, table, path); - return rmdb; -}; -var defaultFileDBSchema = { - id: "files", - name: "Files", - type: "db", - primary: "true" -}; -var defaultFileTableSchema = { - id: "filesView", - name: "Files", - type: "table", - def: "files" -}; -var defaultFolderSchema = { - uniques: ["id"], - cols: ["id", "name", "type", "def", "predicate", "primary"], - rows: [defaultFileDBSchema, defaultFileTableSchema] -}; -var defaultFields = { - uniques: ["name,schemaId"], - cols: ["name", "schemaId", "type", "value", "attrs", "hidden", "unique", "primary"], - rows: [ - { - name: "File", - schemaId: "files", - type: "file", - primary: "true" - }, - { - name: "Created", - schemaId: "files", - type: "fileprop", - value: "ctime" + await createDefaultDB(plugin, path, true); + } + const mdbTable = await getMDBTable(plugin, table, path, true); + const prevRows = mdbTable.rows.map((f4) => { + if (f4._source != source) { + return f4; } - ] -}; -var defaultMDBTable = { - schema: defaultFileDBSchema, - cols: defaultFields.rows, - rows: [] -}; -var fieldsToTable = (fields, schemas) => { - return fields.filter((s5) => schemas.find((g4) => g4.id == s5.schemaId && g4.type == "db")).reduce((p3, c4) => { - return { - ...p3, - ...p3[c4.schemaId] ? { [c4.schemaId]: { - uniques: c4.unique == "true" ? [...p3[c4.schemaId].uniques, c4.name] : p3[c4.schemaId].uniques, - cols: [...p3[c4.schemaId].cols, c4.name], - rows: [] - } } : { [c4.schemaId]: { - uniques: c4.unique == "true" ? [c4.name] : [], - cols: [c4.name], - rows: [] - } } - }; - }, {}); -}; -var defaultFolderTables = { - m_schema: defaultFolderSchema, - m_fields: defaultFields, - ...fieldsToTable(defaultFields.rows, defaultFolderSchema.rows) -}; -var defaultTagTables = { - m_schema: defaultFolderSchema, - m_fields: defaultFields, - ...fieldsToTable(defaultFields.rows, defaultFolderSchema.rows) + const row = rows.find((g4) => g4._id == f4._sourceId); + return row ? { ...f4, File: row["File"] } : f4; + }).filter((f4) => f4._source != source || rows.some((g4) => g4._id == f4._sourceId)); + const missingRows = rows.filter((f4) => !mdbTable.rows.some((g4) => g4._source == source && g4._sourceId == f4._id)).map((f4) => newRowByDBRow({ File: f4.File, _source: source, _sourceId: f4._id })); + const newRows = [...prevRows, ...missingRows]; + const newMDBTable = { + ...mdbTable, + cols: [...defaultTagFields.rows, ...mdbTable.cols].filter(onlyUniqueProp("name")), + rows: newRows + }; + await saveMDBToPath(plugin, path, newMDBTable); + return newMDBTable; }; -// src/utils/contexts.ts -var import_obsidian3 = require("obsidian"); -var loadTags = async () => { +// src/utils/contexts/contexts.ts +var import_obsidian4 = require("obsidian"); +var tagFromString = (tag) => { + let string = tag; + if (string.charAt(0) != "#") + string = "#" + string; + return string.replace("/", "_"); +}; +var loadTags = (plugin) => { var _a2; - const folder = window.make.settings.tagContextFolder == "" ? app.vault.getRoot() : getAbstractFileAtPath(app, getFolderPathFromString(window.make.settings.tagContextFolder)); - return uniq([...Object.keys(app.metadataCache.getTags()), ...(_a2 = folder == null ? void 0 : folder.children.filter((f4) => f4 instanceof import_obsidian3.TFile && f4.extension == "mdb" && f4.name.charAt(0) == "#").map((f4) => fileNameToString(f4.name))) != null ? _a2 : []]); + const folder = plugin.settings.tagContextFolder == "" ? app.vault.getRoot() : getAbstractFileAtPath(app, getFolderPathFromString2(plugin.settings.tagContextFolder)); + return uniq([...Object.keys(app.metadataCache.getTags()), ...(_a2 = folder == null ? void 0 : folder.children.filter((f4) => f4 instanceof import_obsidian4.TFile && f4.extension == "mdb" && f4.name.charAt(0) == "#").map((f4) => fileNameToString(f4.name))) != null ? _a2 : []]); +}; +var tagContextFromTag = (plugin, tag) => { + return plugin.settings.tagContextFolder + tagFromString(tag) + ".mdb"; }; -var tagFileFromTag = (tag) => { - return window.make.settings.tagContextFolder + tag.replace("/", "_") + ".mdb"; +var folderContextFromFolder = (plugin, folder) => { + return folder + "/" + plugin.settings.folderContextFile + ".mdb"; }; // src/components/ContextView/MDBContext.tsx var MDBContext = B({ tables: [], cols: [], + sortedColumns: [], data: [], + filteredData: [], tableData: null, contextTable: {}, + selectedRows: [], + setSelectedRows: () => { + }, setContextTable: () => { }, predicate: defaultPredicate, - setPredicate: () => { + savePredicate: () => { }, saveDB: () => { }, @@ -28378,9 +26500,9 @@ var MDBContext = B({ dbPath: null, isFolderContext: false, folderPath: "", - saveField: () => false, - newField: () => false, - delField: () => { + saveColumn: () => false, + newColumn: () => false, + delColumn: () => { }, saveSchema: () => { }, @@ -28388,11 +26510,13 @@ var MDBContext = B({ dbFileExists: false, searchString: "", setSearchString: () => { + }, + loadContextFields: () => { } }); -var MDBProvider = (props) => { - var _a2, _b2, _c2, _d2, _e2, _f; - const { dbPath } = props; +var MDBProvider = (props2) => { + var _a2, _b2, _c2; + const { dbPath } = props2; const [dbFileExists, setDBFileExists] = p2(false); const [schema, setSchema] = p2(null); const [searchString, setSearchString] = p2(null); @@ -28402,10 +26526,14 @@ var MDBProvider = (props) => { const [dbSchema, setDBSchema] = p2(null); const [contextTable, setContextTable] = p2({}); const [predicate, setPredicate] = p2(defaultPredicate); - const [selectedRows, setSelectedRows] = p2(null); - const folderPath = (_c2 = (_b2 = props.folder) != null ? _b2 : props.tag) != null ? _c2 : ""; - const isFolderContext = props.folder ? true : false; - const tagContexts = ((_d2 = dbSchema == null ? void 0 : dbSchema.def) == null ? void 0 : _d2.length) > 0 ? (_f = (_e2 = dbSchema == null ? void 0 : dbSchema.def) == null ? void 0 : _e2.split("&")) != null ? _f : [] : []; + const [selectedRows, setSelectedRows] = p2([]); + const defaultSchema = props2.tag ? defaultTagSchema : defaultFolderSchema; + const folderPath = (_c2 = (_b2 = props2.folder) != null ? _b2 : props2.tag) != null ? _c2 : ""; + const isFolderContext = props2.folder ? true : false; + const tagContexts = F(() => { + var _a3, _b3, _c3; + return ((_a3 = dbSchema == null ? void 0 : dbSchema.def) == null ? void 0 : _a3.length) > 0 ? (_c3 = (_b3 = dbSchema == null ? void 0 : dbSchema.def) == null ? void 0 : _b3.split("&")) != null ? _c3 : [] : []; + }, [dbSchema]); const cols = F( () => { var _a3; @@ -28417,21 +26545,34 @@ var MDBProvider = (props) => { }, []) ]; }, - [tableData, schema, contextTable] + [tableData, schema, contextTable, tagContexts] ); const data = F(() => { var _a3; - return (_a3 = tableData == null ? void 0 : tableData.rows.map((r3) => ({ - ...r3, + return (_a3 = tableData == null ? void 0 : tableData.rows.map((r3, index) => ({ + ...{ ...appendFileMetadataForRow(r3, tableData.cols), "_index": index.toString() }, ...tagContexts.reduce((p3, c4) => { - var _a4, _b3, _c3, _d3; + var _a4, _b3, _c3, _d2; const contextRowIndexByFile = (_b3 = (_a4 = contextTable[c4]) == null ? void 0 : _a4.rows.findIndex((f4) => f4.File == r3.File)) != null ? _b3 : -1; - const contextRowsByFile = (_d3 = (_c3 = contextTable[c4]) == null ? void 0 : _c3.rows[contextRowIndexByFile]) != null ? _d3 : {}; + const contextRowsByFile = (_d2 = (_c3 = contextTable[c4]) == null ? void 0 : _c3.rows[contextRowIndexByFile]) != null ? _d2 : {}; const contextRowsWithKeysAppended = Object.keys(contextRowsByFile).reduce((pa, ca) => ({ ...pa, [ca + c4]: contextRowsByFile[ca] }), { ["_index" + c4]: contextRowIndexByFile.toString() }); return { ...p3, ...contextRowsWithKeysAppended }; }, {}) }))) != null ? _a3 : []; }, [tableData, schema, contextTable]); + const sortedColumns = F(() => cols.filter((f4) => f4.hidden != "true" || props2.plugin.settings.dbDebug).sort((a5, b4) => predicate.colsOrder.findIndex((x5) => x5 == a5.name + a5.table) - predicate.colsOrder.findIndex((x5) => x5 == b4.name + b4.table)), [cols, predicate]); + const filteredData = F( + () => data.filter((f4) => { + return predicate.filters.reduce((p3, c4) => { + return p3 ? filterReturnForCol(cols.find((col) => col.name + col.table == c4.field), c4, f4) : p3; + }, true); + }).filter((f4) => (searchString == null ? void 0 : searchString.length) > 0 ? matchAny(searchString).test(Object.values(f4).join("|")) : true).sort((a5, b4) => { + return predicate.sort.reduce((p3, c4) => { + return p3 == 0 ? sortReturnForCol(cols.find((col) => col.name + col.table == c4.field), c4, a5, b4) : p3; + }, 0); + }), + [predicate, data, cols, searchString] + ); const saveSchema = async (table) => { const newSchema = schemaTable.rows.find((f4) => f4.id == table.id) ? true : false; const newSchemaTable = newSchema ? { @@ -28441,7 +26582,7 @@ var MDBProvider = (props) => { ...schemaTable, rows: [...schemaTable.rows, table] }; - await saveDBToPath(window.make.sqlJS, dbPath, { m_schema: newSchemaTable }); + await saveDBToPath(props2.plugin, dbPath, { m_schema: newSchemaTable }); if (table.id == dbSchema.id) { setDBSchema(table); } @@ -28457,27 +26598,27 @@ var MDBProvider = (props) => { setSchemaTable(newSchemaTable); }; const loadTables = async () => { - if (getAbstractFileAtPath(app, props.dbPath)) { + if (getAbstractFileAtPath(app, props2.dbPath)) { setDBFileExists(true); - getMDBTableSchemas(window.make.sqlJS, props.dbPath).then((f4) => { + getMDBTableSchemas(props2.plugin, props2.dbPath, props2.tag ? true : false).then((f4) => { setSchemaTable({ - ...defaultFolderSchema, + ...defaultSchema, rows: f4 }); - setDBSchema(f4.find((f5) => f5.type == "db")); + setDBSchema(f4 == null ? void 0 : f4.find((g4) => g4.type == "db")); }); } else { - setSchemaTable(defaultFolderSchema); + setSchemaTable(defaultSchema); setDBSchema(defaultFileDBSchema); } }; - const refreshMDB = (evt) => { + const refreshMDB = async (evt) => { if (evt.detail.dbPath == dbPath) { if (dbSchema) - getMDBTable(window.make.sqlJS, dbSchema.id, dbPath).then( + getMDBTable(props2.plugin, dbSchema.id, dbPath, !isFolderContext).then( (f4) => setTableData(f4) ); - } else if (tagContexts.find((t4) => t4 == evt.detail.tag)) { + } else if (Object.keys(contextTable).find((t4) => t4 == evt.detail.tag)) { loadContextFields(evt.detail.tag); } }; @@ -28486,15 +26627,17 @@ var MDBProvider = (props) => { return () => { window.removeEventListener(eventTypes.mdbChange, refreshMDB); }; - }, []); + }, [contextTable, dbSchema, dbPath]); h2(() => { loadTables(); }, [dbPath]); - const saveDB2 = (newTable) => { + const saveDB2 = async (newTable) => { var _a3; if (!dbFileExists) { + const defaultFields = isFolderContext ? defaultFolderFields : defaultTagFields; + const defaultTable = isFolderContext ? defaultFolderTables : defaultTagTables; const dbField = { - ...defaultFolderTables, + ...defaultTable, m_fields: { uniques: defaultFields.uniques, cols: defaultFields.cols, @@ -28506,14 +26649,14 @@ var MDBProvider = (props) => { rows: newTable.rows } }; - saveDBToPath(window.make.sqlJS, dbPath, dbField).then((f4) => { + saveDBToPath(props2.plugin, dbPath, dbField).then((f4) => { setDBFileExists(true); - f4 ? setTableData(newTable) : new import_obsidian4.Notice("DB ERROR"); + f4 ? setTableData(newTable) : new import_obsidian5.Notice("DB ERROR"); }); } else { - mdbToDBTables(window.make.sqlJS, dbPath, newTable).then((f4) => saveDBToPath(window.make.sqlJS, dbPath, f4)).then((f4) => { + saveMDBToPath(props2.plugin, dbPath, newTable).then((f4) => { setDBFileExists(true); - f4 ? setTableData(newTable) : new import_obsidian4.Notice("DB ERROR"); + f4 ? setTableData(newTable) : new import_obsidian5.Notice("DB ERROR"); }); } }; @@ -28541,50 +26684,70 @@ var MDBProvider = (props) => { }, [tableData]); const loadDefaultTableData = () => { let files; - if (props.folder) { - files = folderChildren(getAbstractFileAtPath(window.make.app, props.folder)); - } else if (props.tag) { - files = getAllFilesForTag(props.tag).map((f4) => getAbstractFileAtPath(app, f4)).filter((f4) => f4); + if (props2.folder) { + files = folderChildren(props2.plugin, getAbstractFileAtPath(props2.plugin.app, props2.folder)); + setTableData({ ...isFolderContext ? defaultFolderMDBTable : defaultTagMDBTable, rows: files.map((f4) => newRowByDBRow({ _source: "folder", "File": f4.path })) }); + } else if (props2.tag) { + files = getAllFilesForTag(props2.tag).map((f4) => getAbstractFileAtPath(app, f4)).filter((f4) => f4); + setTableData({ ...isFolderContext ? defaultFolderMDBTable : defaultTagMDBTable, rows: files.map((f4) => newRowByDBRow({ _source: "tag", "File": f4.path })) }); } - setTableData({ ...defaultMDBTable, rows: files.map((f4) => ({ "File": f4.path })) }); }; const getContextTags = async (_tableData) => { - for (let c4 of tagContexts) { - loadTagContext(c4, _tableData.rows.reduce((p3, c5) => [...p3, c5.File], [])); - } - const contextFields = _tableData.cols.filter((f4) => f4.type.contains("context")).map((f4) => f4.value).filter((f4) => !tagContexts.find((g4) => g4 == f4)); + const contextFields = _tableData.cols.filter((f4) => f4.type.contains("context")).map((f4) => f4.value).filter((f4) => !tagContexts.some((g4) => g4 == f4)); for (let c4 of contextFields) { loadContextFields(c4); } }; const runDef = async () => { let files; - if (props.folder) { - files = folderChildren(getAbstractFileAtPath(window.make.app, props.folder)); - } else if (props.tag) { - files = getAllFilesForTag(props.tag).map((f4) => getAbstractFileAtPath(app, f4)).filter((f4) => f4); + if (props2.folder) { + files = folderChildren(props2.plugin, getAbstractFileAtPath(props2.plugin.app, props2.folder)); + consolidateFilesToTable(props2.plugin, dbPath, dbSchema.id, files.map((f4) => f4.path), false).then((f4) => { + for (let c4 of tagContexts) { + loadTagContext(c4, f4.rows); + } + setTableData(f4); + return f4; + }); + } else if (props2.tag) { + files = getAllFilesForTag(props2.tag).map((f4) => getAbstractFileAtPath(app, f4)).filter((f4) => f4); + consolidateFilesToTable(props2.plugin, dbPath, dbSchema.id, files.map((f4) => f4.path), true).then((f4) => { + for (let c4 of tagContexts) { + loadTagContext(c4, f4.rows); + } + setTableData(f4); + return f4; + }); } - consolidateFilesToTable(window.make.sqlJS, dbPath, dbSchema.id, "File", files.map((f4) => f4.path)).then((f4) => { - setTableData(f4); - return f4; - }); }; - const loadTagContext = (tag, files) => { - consolidateFilesToTable(window.make.sqlJS, tagFileFromTag(tag), dbSchema.id, "File", files).then((f4) => setContextTable((t4) => ({ - ...t4, - [tag]: f4 - }))); + const loadTagContext = async (tag, files) => { + consolidateRowsToTag(props2.plugin, tagContextFromTag(props2.plugin, tag), dbSchema.id, dbPath, files).then( + (f4) => { + if (f4) { + const contextFields = f4.cols.filter((g4) => g4.type.contains("context")).map((g4) => g4.value).filter((g4) => !tagContexts.some((h5) => h5 == g4)); + for (let c4 of contextFields) { + loadContextFields(c4); + } + setContextTable((t4) => ({ + ...t4, + [tag]: f4 + })); + } + } + ); }; - const loadContextFields = (tag) => { - getMDBTable(window.make.sqlJS, dbSchema.id, tagFileFromTag(tag)).then((f4) => setContextTable((t4) => ({ - ...t4, - [tag]: f4 - }))); + const loadContextFields = async (tag) => { + getMDBTable(props2.plugin, dbSchema.id, tagContextFromTag(props2.plugin, tag), true).then((f4) => { + setContextTable((t4) => ({ + ...t4, + [tag]: f4 + })); + }); }; const tagExists = (currentCache, findTag) => { let currentTags = []; - if ((0, import_obsidian4.getAllTags)(currentCache)) { - currentTags = (0, import_obsidian4.getAllTags)(currentCache); + if ((0, import_obsidian5.getAllTags)(currentCache)) { + currentTags = (0, import_obsidian5.getAllTags)(currentCache); } return currentTags.find((tag) => tag.toLowerCase() == findTag.toLowerCase()) ? true : false; }; @@ -28605,30 +26768,42 @@ var MDBProvider = (props) => { })(); return tagsCache; }; - const saveContextDB = (newTable, context) => { - const dbPath2 = tagFileFromTag(context); - mdbToDBTables(window.make.sqlJS, dbPath2, newTable).then((f4) => saveDBToPath(window.make.sqlJS, dbPath2, f4)).then((f4) => f4 ? setContextTable((t4) => ({ + const saveContextDB = async (newTable, context) => { + const dbPath2 = tagContextFromTag(props2.plugin, context); + saveMDBToPath(props2.plugin, dbPath2, newTable).then((f4) => f4 ? setContextTable((t4) => ({ ...t4, [context]: newTable - })) : new import_obsidian4.Notice("Database Error")); + })) : new import_obsidian5.Notice("Database Error")); + }; + const savePredicate = (newPredicate) => { + const cleanedPredicate = validatePredicate(newPredicate); + saveSchema({ + ...schema, + predicate: JSON.stringify(cleanedPredicate) + }); + setPredicate(cleanedPredicate); }; + h2(() => { + setPredicate((p3) => ({ ...p3, colsOrder: uniq([...p3.colsOrder, ...cols.filter((f4) => f4.hidden != "true" || props2.plugin.settings.dbDebug).map((c4) => c4.name + c4.table)]) })); + }, [cols]); const parsePredicate = (predicateStr) => { const newPredicate = safelyParseJSON(predicateStr); - setPredicate({ ...defaultPredicate, ...newPredicate != null ? newPredicate : {} }); + setPredicate(validatePredicate(newPredicate)); }; - const delField = (field, table) => { + const delColumn = (column) => { let mdbtable; + const table = column.table; if (table == "") { mdbtable = tableData; } else if (contextTable[table]) { mdbtable = contextTable[table]; } - const newFields = mdbtable.cols.filter((f4, i4) => f4.name != field.name); + const newFields = mdbtable.cols.filter((f4, i4) => f4.name != column.name); const newTable = { ...mdbtable, cols: newFields, rows: mdbtable.rows.map((r3) => { - const { [field.name]: val, ...rest } = r3; + const { [column.name]: val, ...rest } = r3; return rest; }) }; @@ -28638,26 +26813,31 @@ var MDBProvider = (props) => { saveContextDB(newTable, table); } }; - const newField = (mdb) => { - return saveField(mdb, ""); + const newColumn = (col) => { + return saveColumn(col); }; - const saveField = (mdb, table, oldField) => { + const saveColumn = (newColumn2, oldColumn) => { let mdbtable; + const column = { + ...newColumn2, + name: newColumn2.name.replace(/[^\w ]/g, "") + }; + const table = column.table; if (table == "") { mdbtable = tableData; } else if (contextTable[table]) { mdbtable = contextTable[table]; } - if (mdb.name == "") { - new import_obsidian4.Notice("No Column Name"); + if (column.name == "") { + new import_obsidian5.Notice("No Column Name"); return false; } - if (!oldField && mdbtable.cols.find((f4) => f4.name.toLowerCase() == mdb.name.toLowerCase()) || oldField && oldField.name != mdb.name && mdbtable.cols.find((f4) => f4.name.toLowerCase() == mdb.name.toLowerCase())) { - new import_obsidian4.Notice("Duplicate Column Name"); + if (!oldColumn && mdbtable.cols.find((f4) => f4.name.toLowerCase() == column.name.toLowerCase()) || oldColumn && oldColumn.name != column.name && mdbtable.cols.find((f4) => f4.name.toLowerCase() == column.name.toLowerCase())) { + new import_obsidian5.Notice("Duplicate Column Name"); return false; } - const oldFieldIndex = oldField ? mdbtable.cols.findIndex((f4) => f4.name == oldField.name) : -1; - const newFields = oldFieldIndex == -1 ? [...mdbtable.cols, mdb] : mdbtable.cols.map((f4, i4) => i4 == oldFieldIndex ? mdb : f4); + const oldFieldIndex = oldColumn ? mdbtable.cols.findIndex((f4) => f4.name == oldColumn.name) : -1; + const newFields = oldFieldIndex == -1 ? [...mdbtable.cols, column] : mdbtable.cols.map((f4, i4) => i4 == oldFieldIndex ? column : f4); const newTable = { ...mdbtable, cols: newFields @@ -28672,19 +26852,24 @@ var MDBProvider = (props) => { return /* @__PURE__ */ bn.createElement(MDBContext.Provider, { value: { data, + filteredData, + loadContextFields, + selectedRows, + setSelectedRows, tableData, cols, + sortedColumns, contextTable, setContextTable, predicate, - setPredicate, + savePredicate, saveDB: saveDB2, saveContextDB, schema, dbPath, - saveField, - delField, - newField, + saveColumn, + delColumn, + newColumn, tagContexts, tables, setSchema, @@ -28697,22 +26882,20 @@ var MDBProvider = (props) => { isFolderContext, setDBSchema } - }, props.children); + }, props2.children); }; // src/components/ContextView/FilterBar/SearchBar.tsx -init_compat_module(); -var SearchBar = (props) => { - const [searchActive, setSearchActive] = p2(false); +var SearchBar = (props2) => { const clearSearch = () => { - setSearchActive(false); - props.setSearchString(""); - }; - return /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("button", { - dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-search"] }, - onClick: () => setSearchActive(true) - }), searchActive && /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("input", { - onChange: (e4) => props.setSearchString(e4.target.value), + props2.setSearchString(""); + }; + return /* @__PURE__ */ bn.createElement("div", { + className: "mk-view-search" + }, /* @__PURE__ */ bn.createElement("button", { + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-search"] } + }), /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("input", { + onChange: (e4) => props2.setSearchString(e4.target.value), placeholder: "Type to search...", className: "mk-search-bar" }), /* @__PURE__ */ bn.createElement("button", { @@ -28721,9 +26904,12 @@ var SearchBar = (props) => { }))); }; -// src/utils/fm.ts -var import_obsidian5 = require("obsidian"); +// src/utils/contexts/fm.ts +var import_obsidian6 = require("obsidian"); var saveContextToFile = (file, cols, context) => { + if (!app.fileManager.processFrontmatter) { + return; + } app.fileManager.processFrontMatter(file, (frontmatter) => { Object.keys(context).filter((f4) => cols.find((c4) => c4.name == f4) && !cols.find((c4) => c4.name == f4).type.contains("file") && context[f4]).forEach((c4) => { frontmatter[c4] = context[c4]; @@ -28732,7 +26918,7 @@ var saveContextToFile = (file, cols, context) => { }; var frontMatterForFile = (file) => { let currentCache; - if (file instanceof import_obsidian5.TFile && app.metadataCache.getFileCache(file) !== null) { + if (file instanceof import_obsidian6.TFile && app.metadataCache.getFileCache(file) !== null) { currentCache = app.metadataCache.getFileCache(file); } return currentCache == null ? void 0 : currentCache.frontmatter; @@ -28810,18 +26996,270 @@ var processFrontMatter = (field, value) => { }; // src/components/ContextView/FilterBar/FilterBar.tsx +var import_lodash2 = __toESM(require_lodash()); + +// src/dispatch/mdb.ts +var import_obsidian7 = require("obsidian"); +var dispatchDatabaseFileChanged = (dbPath, tag) => { + let evt = new CustomEvent(eventTypes.mdbChange, { detail: { dbPath, tag } }); + window.dispatchEvent(evt); +}; +var processFolderDB = async (plugin, folderPath, processor, fallback) => { + let tags = []; + const dbPath = folderContextFromFolder(plugin, folderPath); + const dbFileExists = getAbstractFileAtPath(app, dbPath); + if (dbFileExists) { + const folderDB = await getMDBTable(plugin, "files", dbPath, false); + if (folderDB) { + tags.push(...folderDB.schema.def.split("&")); + const newDB = await processor(folderDB, dbPath); + dispatchDatabaseFileChanged(dbPath); + const promises = tags.map((tag) => { + const tagdbPath = tagContextFromTag(plugin, tag); + const tagFileExists = getAbstractFileAtPath(app, tagdbPath); + if (tagFileExists) { + return consolidateRowsToTag(plugin, tagdbPath, "files", dbPath, newDB.rows).then((f4) => { + dispatchDatabaseFileChanged(tagdbPath, tag); + }); + } + }); + return Promise.all(promises); + } else if (fallback) { + await fallback(); + } + } else if (fallback) { + await fallback(); + } +}; +var saveDB = async (plugin, dbPath, newTable) => { + return saveMDBToPath(plugin, dbPath, newTable); +}; +var renameRow = (folder, filePath, toFilePath) => { + return { + ...folder, + rows: folder.rows.map((f4) => f4.File == filePath && f4._source == "folder" ? { ...f4, "File": toFilePath } : f4) + }; +}; +var removeRows = (folder, source) => { + return { + ...folder, + rows: folder.rows.filter((f4) => f4._source != source) + }; +}; +var removeRow = (folder, filePath) => { + return { + ...folder, + rows: folder.rows.filter((f4) => f4.File != filePath && f4._source == "folder") + }; +}; +var insertRow = (folder, row) => { + if (folder.rows.find((f4) => f4.File == row.File && f4._source == "folder")) { + return { + ...folder, + rows: folder.rows.map((f4) => f4.File == row.File ? { ...f4, ...row } : f4) + }; + } + return { + ...folder, + rows: [...folder.rows, row] + }; +}; +var insertRows = (folder, rows) => { + const newRows = rows.filter((row) => { + var _a2; + return ((_a2 = row.File) == null ? void 0 : _a2.length) > 0 && !folder.rows.some((f4) => f4.File == row.File && f4._source == "folder"); + }); + return { + ...folder, + rows: [...folder.rows, ...newRows] + }; +}; +var saveContextToFrontmatter = (file, cols, context) => { + const afile = getAbstractFileAtPath(app, file); + if (afile && afile instanceof import_obsidian7.TFile) + saveContextToFile(afile, cols, context); +}; +var removeSourceFromTag = async (plugin, tag, source) => { + const dbPath = tagContextFromTag(plugin, tag); + const tagFileExists = getAbstractFileAtPath(app, dbPath); + if (tagFileExists) { + const tagDB = await getMDBTable(plugin, "files", dbPath, true); + const files = tagDB.rows.filter((f4) => f4._source == source); + files.forEach( + (row) => saveContextToFrontmatter(row["File"], tagDB.cols, tagDB.cols.reduce((p3, c4) => ({ ...p3, [c4.name]: row[c4.name] }), {})) + ); + await saveDB(plugin, dbPath, removeRows(tagDB, source)); + } +}; +var initiateContextIfNotExists = async (plugin, tag) => { + const dbPath = tagContextFromTag(plugin, tag); + const tagFileExists = getAbstractFileAtPath(app, dbPath); + if (tagFileExists) + return false; + return createDefaultDB(plugin, dbPath, true); +}; +var insertContextItems = async (plugin, newPaths, t4) => { + const saveNewContextRows = async (tag, path) => { + const newRow = newPaths.map((newPath) => ({ "File": newPath })); + await saveDB(plugin, path, insertRows(tag, newRow)); + }; + const dbPath = tagContextFromTag(plugin, t4); + const tagFileExists = getAbstractFileAtPath(app, dbPath); + if (!tagFileExists) { + await createDefaultDB(plugin, dbPath, true); + } + await getMDBTable(plugin, "files", dbPath, true).then((tagDB) => saveNewContextRows(tagDB, dbPath).then((f4) => { + dispatchDatabaseFileChanged(dbPath, t4); + })); +}; +var onFileCreated = async (plugin, newPath) => { + const newFolderPath = getFolderPathFromString2(newPath); + await processFolderDB(plugin, newFolderPath, async (folder, path) => { + const amendedFolderDB = insertRow(folder, newRowByDBRow({ File: newPath, _source: "folder" })); + await saveDB(plugin, path, amendedFolderDB); + return amendedFolderDB; + }); +}; +var onFileChanged = async (plugin, oldPath, newPath) => { + const oldFolderPath = getFolderPathFromString2(oldPath); + const newFolderPath = getFolderPathFromString2(newPath); + if (oldFolderPath == newFolderPath) { + await processFolderDB(plugin, oldFolderPath, async (folder, path) => { + const amendedFolderDB = renameRow(folder, oldPath, newPath); + await saveDB(plugin, path, amendedFolderDB); + return amendedFolderDB; + }); + } else { + await processFolderDB(plugin, oldFolderPath, async (folder, path) => { + const amendedFolderDB = removeRow(folder, oldPath); + await saveDB(plugin, path, amendedFolderDB); + const dbPath = folderContextFromFolder(plugin, newFolderPath); + const fromDBRow = folder.rows.find((f4) => f4.File == oldPath); + const toDBFileExists = getAbstractFileAtPath(app, dbPath); + if (toDBFileExists) { + const toFolderDB = await getMDBTable(plugin, "files", dbPath, false); + if (toFolderDB) { + const [newDBCols, fmDBCols] = Object.keys(fromDBRow).reduce((p3, c4) => fromDBRow[c4].length == 0 ? p3 : toFolderDB.cols.find((f4) => f4.name == fromDBRow[c4]) ? [[...p3[0], c4], p3[1]] : [p3[0], [...p3[1], c4]], [[], []]); + const newRow = { ...newDBCols.reduce((p3, c4) => ({ ...p3, [c4]: fromDBRow[c4] }), {}), "File": newPath }; + await saveDB(plugin, dbPath, insertRow(toFolderDB, newRowByDBRow(newRow))); + saveContextToFrontmatter(newPath, folder.cols, fmDBCols.reduce((p3, c4) => ({ ...p3, [c4]: fromDBRow[c4] }), {})); + dispatchDatabaseFileChanged(dbPath); + } + } else { + saveContextToFrontmatter(newPath, folder.cols, Object.keys(fromDBRow).reduce((p3, c4) => ({ ...p3, [c4]: fromDBRow[c4] }), {})); + } + return amendedFolderDB; + }, async () => { + const dbPath = folderContextFromFolder(plugin, newFolderPath); + const toDBFileExists = getAbstractFileAtPath(app, dbPath); + if (toDBFileExists) { + const toFolderDB = await getMDBTable(plugin, "files", dbPath, false); + if (toFolderDB) + dispatchDatabaseFileChanged(dbPath); + } + }); + } +}; +var onFileDeleted = async (plugin, oldPath) => { + const oldFolderPath = getFolderPathFromString2(oldPath); + await processFolderDB(plugin, oldFolderPath, async (folder, path) => { + const amendedFolderDB = removeRow(folder, oldPath); + await saveDB(plugin, path, amendedFolderDB); + return amendedFolderDB; + }); +}; +var onFolderChanged = async (plugin, oldPath, newPath) => { + await processFolderDB(plugin, newPath, async (folder, path) => { + const newDB = { + ...folder, + rows: folder.rows.map((f4) => getFolderPathFromString2(f4["File"]) == oldPath ? { ...f4, "File": f4["File"].replace(oldPath, newPath) } : f4) + }; + await saveDB(plugin, path, newDB); + return newDB; + }); +}; +var onFolderDeleted = async (oldPath) => { +}; + +// src/components/ContextView/FilterBar/TagSelector.tsx var import_lodash = __toESM(require_lodash()); -var defaultPredicate = { filters: [], sort: [], groupBy: "", colsOrder: [], colsHidden: [], colsSize: {} }; -var FilterBar = (props) => { - const { folderNoteOpen, viewFolderNote } = props; - const ctxRef = _2(null); - const { tables, data, setDBSchema, cols, isFolderContext, saveSchema, saveDB: saveDB2, saveContextDB, setSchema, setSearchString, predicate, tagContexts, setPredicate, schema, dbSchema, dbPath, contextTable, tableData } = q2(MDBContext); - const saveOptions = (_4, value) => { +var import_obsidian8 = require("obsidian"); +var TagSelector = (props2) => { + const { data, tagContexts, tableData, dbSchema, dbPath, saveSchema, loadContextFields } = q2(MDBContext); + const removeContext = (value) => { + const removeTags = value.map((f4) => tagFromString(f4)); + const tags = tagContexts.filter((f4) => !removeTags.some((t4) => t4 == f4)); + removeTags.forEach((t4) => { + removeSourceFromTag(props2.plugin, t4, dbPath); + }); + saveSchema({ + ...dbSchema, + def: tags.join("&") + }); + }; + const saveContexts = async (_4, value) => { + const tags = (0, import_lodash.uniq)([...tagContexts, ...value.map((f4) => tagFromString(f4))]); + tags.forEach((tag) => { + initiateContextIfNotExists(props2.plugin, tag).then((f4) => { + if (f4) { + return consolidateRowsToTag(props2.plugin, tagContextFromTag(props2.plugin, tag), dbSchema.id, dbPath, tableData.rows); + } + }).then((f4) => loadContextFields(tag)); + }); saveSchema({ ...dbSchema, - def: value.join("&") + def: tags.join("&") }); }; + const showContextMenu = (e4) => { + const offset = e4.target.getBoundingClientRect(); + const f4 = loadTags(props2.plugin); + showSelectMenu({ x: offset.left, y: offset.top + 30 }, { + multi: false, + editable: true, + value: [], + options: f4.map((m5) => ({ name: m5, value: m5 })), + saveOptions: saveContexts, + placeholder: "Select Context", + searchable: true, + showAll: true + }); + }; + const showTagMenu = (e4, tag) => { + const menu = new import_obsidian8.Menu(); + menu.addItem((menuItem) => { + menuItem.setIcon("file-up"); + menuItem.setTitle("Goto Tag"); + menuItem.onClick(() => { + openTag(tag, app, e4.metaKey); + }); + }); + menu.addItem((menuItem) => { + menuItem.setIcon("file-up"); + menuItem.setTitle("Remove Tag"); + menuItem.onClick(() => { + removeContext([tag]); + }); + }); + const offset = e4.target.getBoundingClientRect(); + menu.showAtPosition({ x: offset.left, y: offset.top + 30 }); + }; + return /* @__PURE__ */ bn.createElement("div", { + className: "mk-tag-selector" + }, tagContexts.map((f4) => /* @__PURE__ */ bn.createElement("button", { + onContextMenu: (e4) => showTagMenu(e4, f4), + onClick: (e4) => openTag(f4, app, e4.metaKey) + }, f4)), " ", /* @__PURE__ */ bn.createElement("button", { + onClick: (e4) => showContextMenu(e4) + }, "+ Tag")); +}; + +// src/components/ContextView/FilterBar/FilterBar.tsx +var FilterBar = (props2) => { + const { folderNoteOpen, viewFolderNote } = props2; + const ctxRef = _2(null); + const { tables, data, setDBSchema, loadContextFields, cols, isFolderContext, saveSchema, saveDB: saveDB2, saveContextDB, setSchema, setSearchString, predicate, tagContexts, savePredicate, schema, dbSchema, dbPath, contextTable, tableData } = q2(MDBContext); + const filteredCols = cols.filter((f4) => f4.hidden != "true"); const saveViewType = (type) => { saveSchema({ ...schema, @@ -28846,33 +27284,18 @@ var FilterBar = (props) => { const offset = e4.target.getBoundingClientRect(); showSelectMenu( { x: offset.left, y: offset.top + 30 }, - false, - false, - tagContexts, - views.map((m5) => ({ name: m5.name, value: m5.id })), - (_4, value) => selectView(_dbschema, value[0]), - "Select View" + { + multi: false, + editable: false, + value: tagContexts, + options: views.map((m5) => ({ name: m5.name, value: m5.id })), + saveOptions: (_4, value) => selectView(_dbschema, value[0]), + placeholder: "Select View", + searchable: true, + showAll: true + } ); }; - const showContextMenu = (e4) => { - const offset = e4.target.getBoundingClientRect(); - loadTags().then((f4) => showSelectMenu( - { x: offset.left, y: offset.top + 30 }, - true, - false, - tagContexts, - f4.map((m5) => ({ name: m5, value: m5 })), - saveOptions, - "Select Context" - )); - }; - const savePredicate = (newPredicate) => { - saveSchema({ - ...schema, - predicate: JSON.stringify(newPredicate) - }); - setPredicate(newPredicate); - }; const clearFilters = () => { savePredicate({ ...predicate, @@ -28894,9 +27317,9 @@ var FilterBar = (props) => { }); }; const showFilterMenu = (e4) => { - const menu = new import_obsidian6.Menu(); + const menu = new import_obsidian9.Menu(); menu.addItem((item) => { - item.setTitle("List View"); + item.setTitle("Table View"); item.setIcon("table-2"); item.onClick(() => { saveViewType("table"); @@ -28909,6 +27332,20 @@ var FilterBar = (props) => { saveViewType("card"); }); }); + menu.addItem((item) => { + item.setTitle("List View"); + item.setIcon("layout-list"); + item.onClick(() => { + saveViewType("list"); + }); + }); + menu.addItem((item) => { + item.setTitle("Flow View"); + item.setIcon("infinity"); + item.onClick(() => { + saveViewType("flow"); + }); + }); menu.addSeparator(); menu.addItem((item) => { item.setTitle("Group By"); @@ -28919,7 +27356,7 @@ var FilterBar = (props) => { }); menu.addItem((item) => { item.setTitle("Sort By"); - item.setIcon("lucide-arrow-up-down"); + item.setIcon("sort-desc"); item.onClick(() => { showSortMenu(e4); }); @@ -28950,20 +27387,26 @@ var FilterBar = (props) => { const offset = e4.target.getBoundingClientRect(); menu.showAtPosition({ x: offset.left, y: offset.top + 30 }); }; - const saveSort = (_4, sort) => { - const newSort = { - field: sort[0], - direction: "asc" - }; - savePredicate({ - ...predicate, - sort: [...predicate.sort.filter((s5) => s5.field != newSort.field), newSort] - }); + const addSort = (_4, sort) => { + var _a2; + const field = sort[0]; + const fieldType = (_a2 = filteredCols.find((f4) => f4.name + f4.table == field)) == null ? void 0 : _a2.type; + if (fieldType) { + const type = defaultPredicateFnForType(fieldType, sortFnTypes); + const newSort = { + field, + type + }; + savePredicate({ + ...predicate, + sort: [...predicate.sort.filter((s5) => s5.field != newSort.field), newSort] + }); + } }; - const saveGroupBy = (_4, groupBy) => { + const saveGroupBy = (_4, groupBy2) => { savePredicate({ ...predicate, - groupBy: groupBy[0] + groupBy: groupBy2 }); }; const removeSort = (sort) => { @@ -28973,51 +27416,140 @@ var FilterBar = (props) => { sort: newSort }); }; - const saveFilter = (filter) => { - savePredicate({ - ...predicate, - filters: [...predicate.filters, filter] - }); + const addFilter = (_4, filter) => { + var _a2; + const field = filter[0]; + const fieldType = (_a2 = filteredCols.find((f4) => f4.name + f4.table == field)) == null ? void 0 : _a2.type; + if (fieldType) { + const type = defaultPredicateFnForType(fieldType, filterFnTypes); + const newFilter = fieldType == "boolean" ? { + field, + type, + value: "true" + } : { + field, + type, + value: "" + }; + savePredicate({ + ...predicate, + filters: [...predicate.filters.filter((s5) => s5.field != newFilter.field), newFilter] + }); + } }; - const selectFilter = (e4, _4, field) => { - const menu = new import_obsidian6.Menu(); - menu.setUseNativeMenu(false); - menu.addItem((menuItem) => { - menuItem.setTitle("Text Contains"); - }); - menu.addItem((menuItem) => { - inputMenuItem(menuItem, "", (value) => saveFilter({ field: field[0], type: "contains", value })); - menuItem.setIcon("type"); + const changeSortMenu = (e4, sort) => { + var _a2; + const offset = e4.target.getBoundingClientRect(); + const saveSort = (_4, newType) => { + const type = newType[0]; + const newSort = { + ...sort, + type + }; + savePredicate({ + ...predicate, + sort: [...predicate.sort.filter((s5) => s5.field != newSort.field), newSort] + }); + }; + const fieldType = (_a2 = filteredCols.find((f4) => f4.name + f4.table == sort.field)) == null ? void 0 : _a2.type; + const sortsForType = predicateFnsForType(fieldType, sortFnTypes); + showSelectMenu({ x: offset.left, y: offset.top + 30 }, { + multi: false, + editable: false, + value: [], + options: sortsForType.map((f4) => ({ + name: sortFnTypes[f4].label, + value: f4 + })), + saveOptions: saveSort, + placeholder: "Select Sort", + searchable: false, + showAll: true }); + }; + const changeFilterMenu = (e4, filter) => { + var _a2; const offset = e4.target.getBoundingClientRect(); - menu.showAtPosition({ x: offset.left, y: offset.top + 30 }); + const saveFilter = (_4, newType) => { + const type = newType[0]; + const newFilter = { + ...filter, + type + }; + savePredicate({ + ...predicate, + filters: [...predicate.filters.filter((s5) => s5.field != newFilter.field), newFilter] + }); + }; + const fieldType = (_a2 = filteredCols.find((f4) => f4.name + f4.table == filter.field)) == null ? void 0 : _a2.type; + const filtersForType = predicateFnsForType(fieldType, filterFnTypes); + showSelectMenu({ x: offset.left, y: offset.top + 30 }, { + multi: false, + editable: false, + value: [], + options: filtersForType.map((f4) => ({ + name: filterFnTypes[f4].label, + value: f4 + })), + saveOptions: saveFilter, + placeholder: "Select Filter", + searchable: false, + showAll: true + }); }; const showAddFilterMenu = (e4) => { const offset = e4.target.getBoundingClientRect(); - showSelectMenu({ x: offset.left, y: offset.top + 30 }, false, false, [], cols.map((f4) => ({ - name: f4.name + f4.table, - value: f4.name + f4.table - })), (_4, field) => selectFilter(e4, _4, field), "Select Field"); + showSelectMenu({ x: offset.left, y: offset.top + 30 }, { + multi: false, + editable: false, + value: [], + options: filteredCols.map((f4) => ({ + name: f4.name + f4.table, + value: f4.name + f4.table + })), + saveOptions: addFilter, + placeholder: "Select Field", + searchable: false, + showAll: true + }); }; const showSortMenu = (e4) => { const offset = e4.target.getBoundingClientRect(); - showSelectMenu({ x: offset.left, y: offset.top + 30 }, false, false, [], cols.map((f4) => ({ - name: f4.name + f4.table, - value: f4.name + f4.table - })), saveSort, "Sort By"); + showSelectMenu({ x: offset.left, y: offset.top + 30 }, { + multi: false, + editable: false, + value: [], + options: filteredCols.map((f4) => ({ + name: f4.name + f4.table, + value: f4.name + f4.table + })), + saveOptions: addSort, + placeholder: "Select Sort", + searchable: false, + showAll: true + }); }; const showGroupByMenu = (e4) => { const offset = e4.target.getBoundingClientRect(); - showSelectMenu({ x: offset.left, y: offset.top + 30 }, false, false, [], cols.filter((f4) => f4.primary != "true").map((f4) => ({ - name: f4.name + f4.table, - value: f4.name + f4.table - })), saveGroupBy, "Group By"); + showSelectMenu({ x: offset.left, y: offset.top + 30 }, { + multi: false, + editable: false, + value: [], + options: filteredCols.filter((f4) => f4.primary != "true").map((f4) => ({ + name: f4.name + f4.table, + value: f4.name + f4.table + })), + saveOptions: saveGroupBy, + placeholder: "Group By", + searchable: false, + showAll: true + }); }; const showFMMenu = (e4) => { const saveFM = () => { data.forEach((f4) => { const file = getAbstractFileAtPath(app, f4.File); - if (file && file instanceof import_obsidian6.TFile) { + if (file && file instanceof import_obsidian9.TFile) { saveContextToFile(file, cols, f4); } }); @@ -29040,7 +27572,7 @@ var FilterBar = (props) => { return newSet; }, {}); const guessType = (ts) => { - return import_lodash.default.head((0, import_lodash.default)(ts).countBy().entries().maxBy(import_lodash.default.last)); + return import_lodash2.default.head((0, import_lodash2.default)(ts).countBy().entries().maxBy(import_lodash2.default.last)); }; const guessedTypes = Object.keys(types).reduce((p3, c4) => { return { ...p3, [c4]: guessType(types[c4]) }; @@ -29053,7 +27585,7 @@ var FilterBar = (props) => { const fmKeys = uniqCaseInsensitive(Object.keys(dvValues != null ? dvValues : {}).filter((f4, i4, self2) => !self2.find((g4, j4) => g4.toLowerCase().replace(/\s/g, "-") == f4.toLowerCase().replace(/\s/g, "-") && i4 > j4) ? true : false).filter((f4) => f4 != "file")); return { uniques: [], - cols: (0, import_lodash.uniq)([...p3.cols, ...fmKeys]), + cols: uniqCaseInsensitive([...p3.cols, ...fmKeys]), rows: [...p3.rows, { File: c4, ...fmKeys.reduce((p4, c5) => ({ ...p4, [c5]: processFrontMatter(c5, dvValues[c5]) }), {}) @@ -29067,7 +27599,7 @@ var FilterBar = (props) => { const fmKeys = uniqCaseInsensitive(frontMatterKeys(fm)); return { uniques: [], - cols: (0, import_lodash.uniq)([...p3.cols, ...fmKeys]), + cols: (0, import_lodash2.uniq)([...p3.cols, ...fmKeys]), rows: [...p3.rows, { File: c4.path, ...fmKeys.reduce((p4, c5) => ({ ...p4, [c5]: processFrontMatter(c5, fm[c5]) }), {}) @@ -29096,7 +27628,7 @@ var FilterBar = (props) => { const newTable = mergeTableData(table, yamlTableData, yamlTypes); saveDB2(newTable); }; - const menu = new import_obsidian6.Menu(); + const menu = new import_obsidian9.Menu(); menu.addItem((menuItem) => { menuItem.setIcon("file-up"); menuItem.setTitle("Get All Metadata"); @@ -29148,10 +27680,10 @@ var FilterBar = (props) => { var _a2; let vaultChangeModal = new MergeColumnModal( [ - ...(_a2 = tableData == null ? void 0 : tableData.cols.map((f4) => ({ ...f4, table: "" }))) != null ? _a2 : [], + ...(_a2 = filteredCols == null ? void 0 : filteredCols.map((f4) => ({ ...f4, table: "" }))) != null ? _a2 : [], ...tagContexts.reduce((p3, c4) => { var _a3, _b2; - return [...p3, ...(_b2 = (_a3 = contextTable[c4]) == null ? void 0 : _a3.cols.filter((f4) => f4.name != "File" && f4.type != "fileprop").map((f4) => ({ ...f4, table: c4 }))) != null ? _b2 : []]; + return [...p3, ...(_b2 = (_a3 = contextTable[c4]) == null ? void 0 : _a3.cols.filter((f4) => f4.name != "File" && f4.hidden != "true" && f4.type != "fileprop").map((f4) => ({ ...f4, table: c4 }))) != null ? _b2 : []]; }, []) ], mergeColumn @@ -29162,46 +27694,141 @@ var FilterBar = (props) => { let vaultChangeModal = new SaveViewModal(schema, saveSchema); vaultChangeModal.open(); }; - return /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", { + const selectFilterValue = (e4, filter) => { + var _a2, _b2, _c2; + switch (filterFnTypes[filter.type].valueType) { + case "text": + case "number": + { + const menu = new import_obsidian9.Menu(); + menu.setUseNativeMenu(false); + const saveFilterValue = (value) => { + const newFilter = { + ...filter, + value + }; + savePredicate({ + ...predicate, + filters: [...predicate.filters.filter((s5) => s5.field != newFilter.field), newFilter] + }); + }; + menu.addItem((menuItem) => { + inputMenuItem(menuItem, filter.value, (value) => saveFilterValue(value)); + menuItem.setIcon("type"); + }); + const offset = e4.target.getBoundingClientRect(); + menu.showAtPosition({ x: offset.left, y: offset.top + 30 }); + } + break; + case "date": { + const saveValue = (date2) => { + const newFilter = { + ...filter, + value: date2.valueOf().toString() + }; + savePredicate({ + ...predicate, + filters: [...predicate.filters.filter((s5) => s5.field != newFilter.field), newFilter] + }); + }; + const offset = e4.target.getBoundingClientRect(); + const date = new Date(filter.value); + showDatePickerMenu({ x: offset.left, y: offset.top + 30 }, date.getTime() ? date : null, saveValue); + break; + } + case "list": + { + const col = cols.find((f4) => f4.name + f4.table == filter.field); + const saveOptions = (options, values) => { + const newFilter = { + ...filter, + value: values.join(",") + }; + savePredicate({ + ...predicate, + filters: [...predicate.filters.filter((s5) => s5.field != newFilter.field), newFilter] + }); + }; + if (col.type.startsWith("option")) { + const offset = e4.target.getBoundingClientRect(); + showSelectMenu({ x: offset.left, y: offset.top + 30 }, { + multi: true, + editable: false, + value: splitString(filter.value), + options: splitString(col.value).map((f4) => ({ + name: f4, + value: f4 + })), + saveOptions, + placeholder: "Select Options", + searchable: true, + showAll: true + }); + } else if (col.type.startsWith("context")) { + const contextData = (_b2 = (_a2 = contextTable[col.table]) == null ? void 0 : _a2.rows) != null ? _b2 : []; + const offset = e4.target.getBoundingClientRect(); + showSelectMenu({ x: offset.left, y: offset.top + 30 }, { + multi: true, + editable: false, + value: splitString(filter.value), + options: (_c2 = contextData.map((f4) => ({ name: filePathToString(f4["File"]), value: f4["File"] }))) != null ? _c2 : [], + saveOptions, + placeholder: "Select Options", + searchable: true, + showAll: true + }); + } + } + break; + } + }; + return /* @__PURE__ */ bn.createElement(bn.Fragment, null, isFolderContext && /* @__PURE__ */ bn.createElement(TagSelector, { + plugin: props2.plugin + }), /* @__PURE__ */ bn.createElement("div", { className: "mk-view-selector" }, /* @__PURE__ */ bn.createElement("div", { className: "mk-table-selector" }, viewFolderNote && /* @__PURE__ */ bn.createElement("button", { className: `mk-folder-note ${folderNoteOpen ? "mk-is-active" : ""}`, onClick: () => viewFolderNote(true) - }, /* @__PURE__ */ bn.createElement("div", { - dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-file"] } - }), props.folderNoteName), tables.filter((f4) => f4.type == "db").map((f4) => /* @__PURE__ */ bn.createElement("button", { + }, props2.folderNoteName), tables.filter((f4) => f4.type == "db").map((f4) => /* @__PURE__ */ bn.createElement("button", { className: `${!folderNoteOpen && (dbSchema == null ? void 0 : dbSchema.id) == f4.id ? "mk-is-active" : ""}`, onClick: (e4) => showViewMenu(e4, f4) - }, schema == null ? void 0 : schema.name))), /* @__PURE__ */ bn.createElement("span", null), /* @__PURE__ */ bn.createElement(SearchBar, { + }, schema == null ? void 0 : schema.name))), /* @__PURE__ */ bn.createElement("span", null), !props2.folderNoteOpen && /* @__PURE__ */ bn.createElement("div", { + className: "mk-view-options" + }, /* @__PURE__ */ bn.createElement(SearchBar, { setSearchString - }), isFolderContext && /* @__PURE__ */ bn.createElement("button", { - ref: ctxRef, - onClick: (e4) => showContextMenu(e4) - }, "#"), /* @__PURE__ */ bn.createElement("button", { + }), /* @__PURE__ */ bn.createElement("button", { onClick: (e4) => showFilterMenu(e4), dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-view-options"] } }), /* @__PURE__ */ bn.createElement("button", { onClick: (e4) => showFMMenu(e4), dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-options"] } - })), (predicate.filters.length > 0 || predicate.sort.length > 0 || predicate.groupBy.length > 0) && /* @__PURE__ */ bn.createElement("div", { + }))), (predicate.filters.length > 0 || predicate.sort.length > 0 || predicate.groupBy.length > 0) && /* @__PURE__ */ bn.createElement("div", { className: "mk-filter-bar" }, predicate.groupBy.length > 0 && /* @__PURE__ */ bn.createElement("div", { className: "mk-filter" }, /* @__PURE__ */ bn.createElement("span", null, "Group By"), /* @__PURE__ */ bn.createElement("span", { onClick: (e4) => showGroupByMenu(e4) - }, predicate.groupBy), /* @__PURE__ */ bn.createElement("div", { - onClick: () => saveGroupBy(null, [""]), + }, predicate.groupBy[0]), /* @__PURE__ */ bn.createElement("div", { + onClick: () => saveGroupBy(null, []), dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-close"] } })), predicate.sort.map((f4) => /* @__PURE__ */ bn.createElement("div", { className: "mk-filter" - }, /* @__PURE__ */ bn.createElement("span", null, f4.field), /* @__PURE__ */ bn.createElement("span", null, f4.direction), /* @__PURE__ */ bn.createElement("div", { + }, /* @__PURE__ */ bn.createElement("span", null, f4.field), /* @__PURE__ */ bn.createElement("span", { + onClick: (e4) => changeSortMenu(e4, f4) + }, sortFnTypes[f4.type].label), /* @__PURE__ */ bn.createElement("div", { onClick: () => removeSort(f4), dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-close"] } }))), predicate.filters.map((f4) => /* @__PURE__ */ bn.createElement("div", { className: "mk-filter" - }, /* @__PURE__ */ bn.createElement("span", null, f4.field), /* @__PURE__ */ bn.createElement("span", null, f4.type), /* @__PURE__ */ bn.createElement("span", null, f4.value), /* @__PURE__ */ bn.createElement("div", { + }, /* @__PURE__ */ bn.createElement("span", null, f4.field), /* @__PURE__ */ bn.createElement("span", { + onClick: (e4) => changeFilterMenu(e4, f4) + }, filterFnTypes[f4.type].label), /* @__PURE__ */ bn.createElement(FilterValueSpan, { + col: cols.find((c4) => c4.name + c4.table == f4.field), + filter: f4, + selectFilterValue + }), /* @__PURE__ */ bn.createElement("div", { onClick: () => removeFilter(f4), dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-close"] } }))), /* @__PURE__ */ bn.createElement("span", null), /* @__PURE__ */ bn.createElement("div", { @@ -29209,478 +27836,181 @@ var FilterBar = (props) => { onClick: () => showSaveViewModal() }, "Save View"))); }; +var FilterValueSpan = (props2) => { + var _a2; + const { filter, selectFilterValue } = props2; + const fieldType = (_a2 = props2.col) == null ? void 0 : _a2.type; + if (fieldType == "boolean" || !fieldType) { + return /* @__PURE__ */ bn.createElement(bn.Fragment, null); + } else if (filter.value.length == 0) { + return /* @__PURE__ */ bn.createElement("span", { + onClick: (e4) => selectFilterValue(e4, filter) + }, "Select"); + } else if (fieldType.startsWith("option") || fieldType.startsWith("context")) { + const options = splitString(filter.value); + return /* @__PURE__ */ bn.createElement("span", { + onClick: (e4) => selectFilterValue(e4, filter) + }, " ", options.map((f4) => /* @__PURE__ */ bn.createElement("span", null, f4))); + } + return /* @__PURE__ */ bn.createElement("span", { + onClick: (e4) => selectFilterValue(e4, filter) + }, filter.value); +}; // src/cm-extensions/markSans/callout.tsx var import_view = require("@codemirror/view"); var import_language = require("@codemirror/language"); var import_state = require("@codemirror/state"); - -// src/components/FlowEditor/FlowEditor.tsx -var import_obsidian7 = require("obsidian"); -function genId2(size2) { - const chars = []; - for (let n2 = 0; n2 < size2; n2++) - chars.push((16 * Math.random() | 0).toString(16)); - return chars.join(""); -} -var popovers = /* @__PURE__ */ new WeakMap(); -var mouseCoords = { x: 0, y: 0 }; -function nosuper(base) { - const derived = function() { - return Object.setPrototypeOf(new import_obsidian7.Component(), new.target.prototype); - }; - derived.prototype = base.prototype; - return Object.setPrototypeOf(derived, base); -} -var _a, _b, _c, _d, _e; -var FlowEditor = class extends nosuper(import_obsidian7.HoverPopover) { - constructor(parent, targetEl, plugin, waitTime, onShowCallback) { - super(); - this.targetEl = targetEl; - this.plugin = plugin; - this.onShowCallback = onShowCallback; - this.abortController = this.addChild(new import_obsidian7.Component()); - this.detaching = false; - this.opening = false; - this.rootSplit = new import_obsidian7.WorkspaceSplit( - window.app.workspace, - "vertical" - ); - this.targetRect = (_a = this.targetEl) == null ? void 0 : _a.getBoundingClientRect(); - this.oldPopover = (_b = this.parent) == null ? void 0 : _b.flowEditor; - this.document = (_e = (_d = (_c = this.targetEl) == null ? void 0 : _c.ownerDocument) != null ? _d : window.activeDocument) != null ? _e : window.document; - this.id = genId2(8); - this.hoverEl = this.document.defaultView.createDiv({ - cls: "mk-floweditor mk-hover-popover", - attr: { id: "he" + this.id } - }); - if (waitTime === void 0) { - waitTime = 300; - } - this.onTarget = true; - this.parent = parent; - this.waitTime = waitTime; - this.state = import_obsidian7.PopoverState.Showing; - const { hoverEl } = this; - this.abortController.load(); - this.timer = window.setTimeout(this.show.bind(this), waitTime); - this.setActive = this._setActive.bind(this); - if (hoverEl) { - hoverEl.addEventListener("mousedown", this.setActive); - } - popovers.set(this.hoverEl, this); - this.hoverEl.addClass("hover-editor"); - this.containerEl = this.hoverEl.createDiv("popover-content"); - this.setTitleBar(); - this.hoverEl.style.height = "auto"; - this.hoverEl.style.width = "100%"; +var portalTypeAnnotation = import_state.Annotation.define(); +var flowIDAnnotation = import_state.Annotation.define(); +var flowIDStateField = import_state.StateField.define({ + create: () => void 0, + update(value, tr) { + if (tr.annotation(flowIDAnnotation)) + return tr.annotation(flowIDAnnotation); + return value; } - static activeWindows() { - const windows = [window]; - const { floatingSplit } = app.workspace; - if (floatingSplit) { - for (const split of floatingSplit.children) { - if (split.win) - windows.push(split.win); +}); +var flowTypeStateField = import_state.StateField.define({ + create: () => "none", + update(value, tr) { + if (tr.annotation(portalTypeAnnotation)) + return tr.annotation(portalTypeAnnotation); + return value; + } +}); +var calloutField = import_state.StateField.define({ + create() { + return import_view.Decoration.none; + }, + update(value, tr) { + if (tr.state.field(flowTypeStateField) != "doc") { + return value; + } + let builder = new import_state.RangeSetBuilder(); + let nodes2 = []; + (0, import_language.syntaxTree)(tr.state).iterate({ + enter: ({ name, from, to }) => { + nodes2.push({ name, from, to }); + } + }); + const nextQuote = (ns, to) => { + const nq = ns.find( + (f4) => f4.from == to + 1 && f4.name.contains("HyperMD-quote") + ); + if (nq) { + return nextQuote(ns, nq.to); } + return to; + }; + const previous = value.iter(); + const previousSpecs = []; + while (previous.value !== null) { + previousSpecs.push(previous.value.spec.widget.info); + previous.next(); } - return windows; - } - static containerForDocument(doc) { - if (doc !== document && app.workspace.floatingSplit) - for (const container of app.workspace.floatingSplit.children) { - if (container.doc === doc) - return container; + let index = 0; + nodes2.map(({ name, from, to }) => { + if (name.contains("HyperMD-callout")) { + const existingCallout = previousSpecs[index]; + const endQuote = nextQuote(nodes2, to); + const lineStart = tr.state.doc.lineAt(from).number; + const lineEnd = tr.state.doc.lineAt(endQuote).number; + if (existingCallout) { + builder.add( + from, + endQuote + 1, + calloutBlock( + { from: lineStart, to: lineEnd }, + tr.state.sliceDoc(from, endQuote), + existingCallout.id + ) + ); + } else { + builder.add( + from, + endQuote + 1, + calloutBlock( + { from: lineStart, to: lineEnd }, + tr.state.sliceDoc(from, endQuote), + genId2() + ) + ); + } + index++; } - return app.workspace.rootSplit; - } - static activePopovers() { - return this.activeWindows().flatMap(this.popoversForWindow); - } - static popoversForWindow(win) { - var _a2, _b2; - return Array.prototype.slice.call( - (_b2 = (_a2 = win == null ? void 0 : win.document) == null ? void 0 : _a2.body.querySelectorAll(".mk-hover-popover")) != null ? _b2 : [] - ).map((el) => popovers.get(el)).filter((he) => he); - } - static forLeaf(leaf) { - const el = leaf && document.body.matchParent.call(leaf.containerEl, ".mk-hover-popover"); - return el ? popovers.get(el) : void 0; + }); + const dec = builder.finish(); + return dec; + }, + provide: (f4) => import_view.EditorView.decorations.from(f4) +}); +var CalloutWidget = class extends import_view.WidgetType { + constructor(info) { + super(); + this.info = info; } - _setActive() { - this.plugin.app.workspace.setActiveLeaf(this.leaves()[0], { focus: true }); + eq(other) { + return other.info.id === this.info.id; } - getDefaultMode() { - var _a2, _b2; - return ((_b2 = (_a2 = this.parent) == null ? void 0 : _a2.view) == null ? void 0 : _b2.getMode) ? this.parent.view.getMode() : "preview"; + toDOM() { + const parseTextToCallout = (text2) => { + if (!this.info.text) { + return { icon: "", title: "" }; + } + const stringArray = text2.split("\n"); + const titleRegex = RegExp(/.*\[!(\w*)\]\s(.*)/); + const title = titleRegex.exec(stringArray[0]); + if (!title || title.length < 3) { + return { icon: "", title: "" }; + } + return { + icon: title[1], + title: title[2] + }; + }; + const callOutData = parseTextToCallout(this.info.text); + const div = document.createElement("div"); + div.toggleClass("callout", true); + const divTitle = div.createDiv("div"); + divTitle.toggleClass("callout-title", true); + const div2 = div.createDiv("div"); + div2.toggleClass("callout-content", true); + div2.setAttribute("id", "mk-callout-" + this.info.id); + return div; } - updateLeaves() { - if (this.onTarget && this.targetEl && !this.document.contains(this.targetEl)) { - this.onTarget = false; - this.transition(); +}; +var calloutBlock = (range, text2, id2) => import_view.Decoration.widget({ + widget: new CalloutWidget({ range, text: text2, id: id2 }), + block: true +}); + +// src/cm-extensions/flowEditor/flowEditor.tsx +var import_view3 = require("@codemirror/view"); +var import_state3 = require("@codemirror/state"); + +// src/utils/codemirror.ts +var import_language2 = require("@codemirror/language"); +var getActiveCM = () => { + let rcm; + app.workspace.iterateLeaves((leaf) => { + var _a2; + const cm = (_a2 = leaf.view.editor) == null ? void 0 : _a2.cm; + if (cm == null ? void 0 : cm.hasFocus) { + rcm = cm; + return true; } - let leafCount = 0; - this.plugin.app.workspace.iterateLeaves((leaf) => { - leafCount++; - }, this.rootSplit); - if (leafCount === 0) { - this.hide(); - } else if (leafCount > 1) { - } - this.hoverEl.setAttribute("data-leaf-count", leafCount.toString()); - } - setTitleBar() { - this.titleEl = this.document.defaultView.createDiv("mk-flow-titlebar"); - this.containerEl.prepend(this.titleEl); - } - attachLeaf() { - this.rootSplit.getRoot = () => this.plugin.app.workspace[this.document === document ? "rootSplit" : "floatingSplit"]; - this.rootSplit.getContainer = () => FlowEditor.containerForDocument(this.document); - this.titleEl.insertAdjacentElement("afterend", this.rootSplit.containerEl); - const leaf = this.plugin.app.workspace.createLeafInParent( - this.rootSplit, - 0 - ); - this.updateLeaves(); - return leaf; - } - onload() { - super.onload(); - this.registerEvent( - this.plugin.app.workspace.on("layout-change", this.updateLeaves, this) - ); - this.registerEvent( - app.workspace.on("layout-change", () => { - this.rootSplit.children.forEach((item, index) => { - if (item instanceof import_obsidian7.WorkspaceTabs) { - this.rootSplit.replaceChild(index, item.children[0]); - } - }); - }) - ); - } - leaves() { - const leaves = []; - this.plugin.app.workspace.iterateLeaves((leaf) => { - leaves.push(leaf); - }, this.rootSplit); - return leaves; - } - onShow() { - var _a2, _b2; - const closeDelay = 600; - setTimeout(() => this.waitTime = closeDelay, closeDelay); - (_a2 = this.oldPopover) == null ? void 0 : _a2.hide(); - this.oldPopover = null; - this.hoverEl.toggleClass("is-new", true); - this.document.body.addEventListener( - "click", - () => { - this.hoverEl.toggleClass("is-new", false); - }, - { once: true, capture: true } - ); - if (this.parent) { - this.parent.flowEditor = this; - } - const viewHeaderEl = this.hoverEl.querySelector(".view-header"); - viewHeaderEl == null ? void 0 : viewHeaderEl.remove(); - const sizer = this.hoverEl.querySelector(".workspace-leaf"); - this.hoverEl.appendChild(sizer); - const inlineTitle = this.hoverEl.querySelector(".inline-title"); - inlineTitle == null ? void 0 : inlineTitle.remove(); - (_b2 = this.onShowCallback) == null ? void 0 : _b2.call(this); - this.onShowCallback = void 0; - } - transition() { - if (this.shouldShow()) { - if (this.state === import_obsidian7.PopoverState.Hiding) { - this.state = import_obsidian7.PopoverState.Shown; - clearTimeout(this.timer); - } - } else { - if (this.state === import_obsidian7.PopoverState.Showing) { - this.hide(); - } else { - if (this.state === import_obsidian7.PopoverState.Shown) { - this.state = import_obsidian7.PopoverState.Hiding; - this.timer = window.setTimeout(() => { - if (this.shouldShow()) { - this.transition(); - } else { - this.hide(); - } - }, this.waitTime); - } - } - } - } - shouldShow() { - return this.shouldShowSelf() || this.shouldShowChild(); - } - shouldShowChild() { - return FlowEditor.activePopovers().some((popover) => { - if (popover !== this && popover.targetEl && this.hoverEl.contains(popover.targetEl)) { - return popover.shouldShow(); - } - return false; - }); - } - shouldShowSelf() { - return !this.detaching && !!(this.onTarget || this.state == import_obsidian7.PopoverState.Shown || this.document.querySelector( - `body>.modal-container, body > #he${this.id} ~ .menu, body > #he${this.id} ~ .suggestion-container` - )); - } - show() { - if (!this.targetEl || this.document.body.contains(this.targetEl)) { - this.state = import_obsidian7.PopoverState.Shown; - this.timer = 0; - this.shownPos = mouseCoords; - this.targetEl.replaceChildren(this.hoverEl); - this.onShow(); - app.workspace.onLayoutChange(); - this.load(); - } else { - this.hide(); - } - } - onHide() { - var _a2; - this.oldPopover = null; - if (((_a2 = this.parent) == null ? void 0 : _a2.flowEditor) === this) { - this.parent.flowEditor = null; - } - } - hide() { - var _a2; - this.onTarget = false; - this.detaching = true; - if (this.timer) { - clearTimeout(this.timer); - this.timer = 0; - } - this.hoverEl.hide(); - if (this.opening) - return; - const leaves = this.leaves(); - if (leaves.length) { - leaves.forEach((leaf) => leaf.detach()); - } else { - this.parent = null; - (_a2 = this.abortController) == null ? void 0 : _a2.unload(); - this.abortController = void 0; - return this.nativeHide(); - } - } - nativeHide() { - var _a2; - const { hoverEl, targetEl } = this; - this.state = import_obsidian7.PopoverState.Hidden; - hoverEl.detach(); - if (targetEl) { - const parent = targetEl.matchParent(".mk-hover-popover"); - if (parent) - (_a2 = popovers.get(parent)) == null ? void 0 : _a2.transition(); - } - this.onHide(); - this.unload(); - } - resolveLink(linkText, sourcePath) { - const link = (0, import_obsidian7.parseLinktext)(linkText); - const tFile = link ? this.plugin.app.metadataCache.getFirstLinkpathDest( - link.path, - sourcePath - ) : null; - return tFile; - } - async openFile(file, openState, useLeaf) { - if (this.detaching) - return; - const leaf = useLeaf != null ? useLeaf : this.attachLeaf(); - this.opening = true; - try { - await leaf.openFile(file, openState); - } catch (e4) { - console.error(e4); - } finally { - this.opening = false; - if (this.detaching) - this.hide(); - } - this.plugin.app.workspace.setActiveLeaf(leaf); - return leaf; - } - buildState(parentMode, eState) { - return { - active: false, - state: {}, - eState - }; - } - buildEphemeralState(file, link) { - const cache = this.plugin.app.metadataCache.getFileCache(file); - const subpath = cache ? (0, import_obsidian7.resolveSubpath)(cache, (link == null ? void 0 : link.subpath) || "") : void 0; - const eState = { subpath: link == null ? void 0 : link.subpath }; - if (subpath) { - eState.line = subpath.start.line; - eState.startLoc = subpath.start; - eState.endLoc = subpath.end || void 0; - } - return eState; - } -}; - -// src/cm-extensions/markSans/callout.tsx -var portalTypeAnnotation = import_state.Annotation.define(); -var flowIDAnnotation = import_state.Annotation.define(); -var flowIDStateField = import_state.StateField.define({ - create: () => void 0, - update(value, tr) { - if (tr.annotation(flowIDAnnotation)) - return tr.annotation(flowIDAnnotation); - return value; - } -}); -var flowTypeStateField = import_state.StateField.define({ - create: () => "none", - update(value, tr) { - if (tr.annotation(portalTypeAnnotation)) - return tr.annotation(portalTypeAnnotation); - return value; - } -}); -var calloutField = import_state.StateField.define({ - create() { - return import_view.Decoration.none; - }, - update(value, tr) { - if (tr.state.field(flowTypeStateField) != "doc") { - return value; - } - let builder = new import_state.RangeSetBuilder(); - let nodes2 = []; - (0, import_language.syntaxTree)(tr.state).iterate({ - enter: ({ name, from, to }) => { - nodes2.push({ name, from, to }); - } - }); - const nextQuote = (ns, to) => { - const nq = ns.find( - (f4) => f4.from == to + 1 && f4.name.contains("HyperMD-quote") - ); - if (nq) { - return nextQuote(ns, nq.to); - } - return to; - }; - const previous = value.iter(); - const previousSpecs = []; - while (previous.value !== null) { - previousSpecs.push(previous.value.spec.widget.info); - previous.next(); - } - let index = 0; - nodes2.map(({ name, from, to }) => { - if (name.contains("HyperMD-callout")) { - const existingCallout = previousSpecs[index]; - const endQuote = nextQuote(nodes2, to); - const lineStart = tr.state.doc.lineAt(from).number; - const lineEnd = tr.state.doc.lineAt(endQuote).number; - if (existingCallout) { - builder.add( - from, - endQuote + 1, - calloutBlock( - { from: lineStart, to: lineEnd }, - tr.state.sliceDoc(from, endQuote), - existingCallout.id - ) - ); - } else { - builder.add( - from, - endQuote + 1, - calloutBlock( - { from: lineStart, to: lineEnd }, - tr.state.sliceDoc(from, endQuote), - genId2(8) - ) - ); - } - index++; - } - }); - const dec = builder.finish(); - return dec; - }, - provide: (f4) => import_view.EditorView.decorations.from(f4) -}); -var CalloutWidget = class extends import_view.WidgetType { - constructor(info) { - super(); - this.info = info; - } - eq(other) { - return other.info.id === this.info.id; - } - toDOM() { - const parseTextToCallout = (text) => { - if (!this.info.text) { - return { icon: "", title: "" }; - } - const stringArray = text.split("\n"); - const titleRegex = RegExp(/.*\[!(\w*)\]\s(.*)/); - const title = titleRegex.exec(stringArray[0]); - if (!title || title.length < 3) { - return { icon: "", title: "" }; - } - return { - icon: title[1], - title: title[2] - }; - }; - const callOutData = parseTextToCallout(this.info.text); - const div = document.createElement("div"); - div.toggleClass("callout", true); - const divTitle = div.createDiv("div"); - divTitle.toggleClass("callout-title", true); - const div2 = div.createDiv("div"); - div2.toggleClass("callout-content", true); - div2.setAttribute("id", "mk-callout-" + this.info.id); - return div; - } -}; -var calloutBlock = (range, text, id2) => import_view.Decoration.widget({ - widget: new CalloutWidget({ range, text, id: id2 }), - block: true -}); - -// src/cm-extensions/flowEditor/flowEditor.tsx -var import_view3 = require("@codemirror/view"); -var import_state3 = require("@codemirror/state"); - -// src/utils/codemirror.ts -var import_language2 = require("@codemirror/language"); -var getActiveCM = () => { - let rcm; - app.workspace.iterateLeaves((leaf) => { - var _a2; - const cm = (_a2 = leaf.view.editor) == null ? void 0 : _a2.cm; - if (cm == null ? void 0 : cm.hasFocus) { - rcm = cm; - return true; - } - }, app.workspace["rootSplit"]); - return rcm; -}; -var getActiveMarkdownView = () => { - let rv; - app.workspace.iterateLeaves((leaf) => { - var _a2; - const cm = (_a2 = leaf.view.editor) == null ? void 0 : _a2.cm; - if (cm == null ? void 0 : cm.hasFocus) { - rv = leaf.view; - return true; + }, app.workspace["rootSplit"]); + return rcm; +}; +var getActiveMarkdownView = () => { + let rv; + app.workspace.iterateLeaves((leaf) => { + var _a2; + const cm = (_a2 = leaf.view.editor) == null ? void 0 : _a2.cm; + if (cm == null ? void 0 : cm.hasFocus) { + rv = leaf.view; + return true; } }, app.workspace["rootSplit"]); return rv; @@ -29899,16 +28229,16 @@ var tooltipPlugin = import_view2.ViewPlugin.fromClass( let others = []; for (let i4 = 0; i4 < this.manager.tooltips.length; i4++) { let tooltip = this.manager.tooltips[i4], tView = this.manager.tooltipViews[i4], { dom } = tView; - let pos = measured.pos[i4], size2 = measured.size[i4]; + let pos = measured.pos[i4], size = measured.size[i4]; if (!pos || pos.bottom <= Math.max(editor.top, space.top) || pos.top >= Math.min(editor.bottom, space.bottom) || pos.right < Math.max(editor.left, space.left) - 0.1 || pos.left > Math.min(editor.right, space.right) + 0.1) { dom.style.top = Outside2; continue; } let arrow = tooltip.arrow ? tView.dom.querySelector(".cm-tooltip-arrow") : null; let arrowHeight = arrow ? 7 /* Size */ : 0; - let width = size2.right - size2.left, height = size2.bottom - size2.top; + let width = size.right - size.left, height = size.bottom - size.top; let offset = tView.offset || noOffset, ltr = this.view.textDirection == import_view2.Direction.LTR; - let left = size2.width > space.right - space.left ? ltr ? space.left : space.right - size2.width : ltr ? Math.min( + let left = size.width > space.right - space.left ? ltr ? space.left : space.right - size.width : ltr ? Math.min( pos.left - (arrow ? 14 /* Offset */ : 0) + offset.x, space.right - width ) : Math.max( @@ -29916,7 +28246,7 @@ var tooltipPlugin = import_view2.ViewPlugin.fromClass( pos.left - width + (arrow ? 14 /* Offset */ : 0) - offset.x ); let above = !!tooltip.above; - if (!tooltip.strictSide && (above ? pos.top - (size2.bottom - size2.top) - offset.y < space.top : pos.bottom + (size2.bottom - size2.top) + offset.y > space.bottom) && above == space.bottom - pos.bottom > pos.top - space.top) + if (!tooltip.strictSide && (above ? pos.top - (size.bottom - size.top) - offset.y < space.top : pos.bottom + (size.bottom - size.top) + offset.y > space.bottom) && above == space.bottom - pos.bottom > pos.top - space.top) above = !above; let top = above ? pos.top - height - arrowHeight - offset.y : pos.bottom + arrowHeight + offset.y; let right = left + width; @@ -30270,9 +28600,6 @@ function hoverTooltip(source, options = {}) { var closeHoverTooltipEffect = import_state2.StateEffect.define(); var closeHoverTooltips = closeHoverTooltipEffect.of(null); -// src/cm-extensions/flowEditor/flowEditor.tsx -init_compat_module(); - // src/dispatch/flowDispatch.ts var createFlowEditorInElement = (id2, el, type, file, from, to) => { let evt = new CustomEvent(eventTypes.spawnPortal, { @@ -30306,16 +28633,15 @@ var openFileFlowEditor = (file, source) => { }; // src/components/FlowEditor/FlowEditorHover.tsx -init_compat_module(); -var FlowEditorHover = (props) => { - return /* @__PURE__ */ bn.createElement(bn.Fragment, null, props.toggle && /* @__PURE__ */ bn.createElement("div", { +var FlowEditorHover = (props2) => { + return /* @__PURE__ */ bn.createElement(bn.Fragment, null, props2.toggle && /* @__PURE__ */ bn.createElement("div", { "aria-label": i18n_default.buttons.toggleFlow, - onClick: props.toggleFlow, - className: props.toggleState ? "mk-toggle-on" : "", + onClick: props2.toggleFlow, + className: props2.toggleState ? "mk-toggle-on" : "", dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-flow-hover"] } }), /* @__PURE__ */ bn.createElement("div", { "aria-label": i18n_default.buttons.openLink, - onClick: props.openLink, + onClick: props2.openLink, dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-open-link"] } })); }; @@ -30346,7 +28672,7 @@ var preloadFlowEditor = import_state3.EditorState.transactionFilter.of( } ); var internalLinkHover = hoverTooltip((view, pos, side) => { - let { from: lineFrom, to: lineTo, text } = view.state.doc.lineAt(pos); + let { from: lineFrom, to: lineTo, text: text2 } = view.state.doc.lineAt(pos); let hovObject = null; iterateTreeInSelection({ from: lineFrom, to: lineTo }, view.state, { enter: ({ name, from, to }) => { @@ -30389,17 +28715,17 @@ var internalLinkHover = hoverTooltip((view, pos, side) => { return hovObject; }); var findFullInternalLink = (posA, posB, state) => { - let { text, from, length } = state.doc.lineAt(posA); + let { text: text2, from, length } = state.doc.lineAt(posA); let start = posA - from + 1, end = posB - from - 1; while (start > 0) { let prev = start - 1; - if (text.slice(prev, start) == "[") + if (text2.slice(prev, start) == "[") break; start = prev; } while (end < length) { let next = end + 1; - if (text.slice(end, next) == "]") + if (text2.slice(end, next) == "]") break; end = next; } @@ -30424,7 +28750,7 @@ var flowEditorInfo = import_state3.StateField.define({ const existingLinks = previous.filter((f4) => f4.link == link); const offset = usedContainers.filter((f4) => f4 == link).length; const existingInfo = existingLinks[offset]; - const id2 = existingInfo ? existingInfo.id : genId2(8); + const id2 = existingInfo ? existingInfo.id : genId2(); let listEmbed = false; const embedOverride = tr.state.sliceDoc(fullRange.from - 4, fullRange.from - 3) == "!"; const embedType = name.contains("hmd-embed") ? embedOverride ? 1 : 2 : 0; @@ -30558,7 +28884,8 @@ var flowEditorWidgetDecoration = (info) => import_view3.Decoration.widget({ block: true }); -// src/utils/flowEditor.ts +// src/utils/flow/flowEditor.ts +var import_obsidian19 = require("obsidian"); var import_state6 = require("@codemirror/state"); // src/cm-extensions/flowEditor/selectiveEditor.ts @@ -30731,6 +29058,315 @@ var editBlockExtensions = () => [ selectiveLinesFacet ]; +// src/components/FlowEditor/FlowEditor.tsx +var import_obsidian10 = require("obsidian"); +var popovers = /* @__PURE__ */ new WeakMap(); +var mouseCoords = { x: 0, y: 0 }; +function nosuper(base) { + const derived = function() { + return Object.setPrototypeOf(new import_obsidian10.Component(), new.target.prototype); + }; + derived.prototype = base.prototype; + return Object.setPrototypeOf(derived, base); +} +var _a, _b, _c, _d, _e; +var FlowEditor = class extends nosuper(import_obsidian10.HoverPopover) { + constructor(parent, targetEl, plugin, waitTime, onShowCallback) { + super(); + this.targetEl = targetEl; + this.plugin = plugin; + this.onShowCallback = onShowCallback; + this.abortController = this.addChild(new import_obsidian10.Component()); + this.detaching = false; + this.opening = false; + this.rootSplit = new import_obsidian10.WorkspaceSplit( + window.app.workspace, + "vertical" + ); + this.targetRect = (_a = this.targetEl) == null ? void 0 : _a.getBoundingClientRect(); + this.oldPopover = (_b = this.parent) == null ? void 0 : _b.flowEditor; + this.document = (_e = (_d = (_c = this.targetEl) == null ? void 0 : _c.ownerDocument) != null ? _d : window.activeDocument) != null ? _e : window.document; + this.id = genId2(); + this.hoverEl = this.document.defaultView.createDiv({ + cls: "mk-floweditor mk-hover-popover", + attr: { id: "he" + this.id } + }); + if (waitTime === void 0) { + waitTime = 300; + } + this.onTarget = true; + this.parent = parent; + this.waitTime = waitTime; + this.state = import_obsidian10.PopoverState.Showing; + const { hoverEl } = this; + this.abortController.load(); + this.timer = window.setTimeout(this.show.bind(this), waitTime); + this.setActive = this._setActive.bind(this); + if (hoverEl) { + hoverEl.addEventListener("mousedown", this.setActive); + } + popovers.set(this.hoverEl, this); + this.hoverEl.addClass("hover-editor"); + this.containerEl = this.hoverEl.createDiv("popover-content"); + this.setTitleBar(); + this.hoverEl.style.height = "auto"; + this.hoverEl.style.width = "100%"; + } + static activeWindows() { + const windows = [window]; + const { floatingSplit } = app.workspace; + if (floatingSplit) { + for (const split of floatingSplit.children) { + if (split.win) + windows.push(split.win); + } + } + return windows; + } + static containerForDocument(doc) { + if (doc !== document && app.workspace.floatingSplit) + for (const container of app.workspace.floatingSplit.children) { + if (container.doc === doc) + return container; + } + return app.workspace.rootSplit; + } + static activePopovers() { + return this.activeWindows().flatMap(this.popoversForWindow); + } + static popoversForWindow(win) { + var _a2, _b2; + return Array.prototype.slice.call( + (_b2 = (_a2 = win == null ? void 0 : win.document) == null ? void 0 : _a2.body.querySelectorAll(".mk-hover-popover")) != null ? _b2 : [] + ).map((el) => popovers.get(el)).filter((he) => he); + } + static forLeaf(leaf) { + const el = leaf && document.body.matchParent.call(leaf.containerEl, ".mk-hover-popover"); + return el ? popovers.get(el) : void 0; + } + _setActive() { + this.plugin.app.workspace.setActiveLeaf(this.leaves()[0], { focus: true }); + } + getDefaultMode() { + var _a2, _b2; + return ((_b2 = (_a2 = this.parent) == null ? void 0 : _a2.view) == null ? void 0 : _b2.getMode) ? this.parent.view.getMode() : "preview"; + } + updateLeaves() { + if (this.onTarget && this.targetEl && !this.document.contains(this.targetEl)) { + this.onTarget = false; + this.transition(); + } + let leafCount = 0; + this.plugin.app.workspace.iterateLeaves((leaf) => { + leafCount++; + }, this.rootSplit); + if (leafCount === 0) { + this.hide(); + } else if (leafCount > 1) { + } + this.hoverEl.setAttribute("data-leaf-count", leafCount.toString()); + } + setTitleBar() { + this.titleEl = this.document.defaultView.createDiv("mk-flow-titlebar"); + this.containerEl.prepend(this.titleEl); + } + attachLeaf() { + this.rootSplit.getRoot = () => this.plugin.app.workspace[this.document === document ? "rootSplit" : "floatingSplit"]; + this.rootSplit.getContainer = () => FlowEditor.containerForDocument(this.document); + this.titleEl.insertAdjacentElement("afterend", this.rootSplit.containerEl); + const leaf = this.plugin.app.workspace.createLeafInParent( + this.rootSplit, + 0 + ); + this.updateLeaves(); + return leaf; + } + onload() { + super.onload(); + this.registerEvent( + this.plugin.app.workspace.on("layout-change", this.updateLeaves, this) + ); + this.registerEvent( + app.workspace.on("layout-change", () => { + this.rootSplit.children.forEach((item, index) => { + if (item instanceof import_obsidian10.WorkspaceTabs) { + this.rootSplit.replaceChild(index, item.children[0]); + } + }); + }) + ); + } + leaves() { + const leaves = []; + this.plugin.app.workspace.iterateLeaves((leaf) => { + leaves.push(leaf); + }, this.rootSplit); + return leaves; + } + onShow() { + var _a2, _b2; + const closeDelay = 600; + setTimeout(() => this.waitTime = closeDelay, closeDelay); + (_a2 = this.oldPopover) == null ? void 0 : _a2.hide(); + this.oldPopover = null; + this.hoverEl.toggleClass("is-new", true); + this.document.body.addEventListener( + "click", + () => { + this.hoverEl.toggleClass("is-new", false); + }, + { once: true, capture: true } + ); + if (this.parent) { + this.parent.flowEditor = this; + } + const viewHeaderEl = this.hoverEl.querySelector(".view-header"); + viewHeaderEl == null ? void 0 : viewHeaderEl.remove(); + const sizer = this.hoverEl.querySelector(".workspace-leaf"); + this.hoverEl.appendChild(sizer); + const inlineTitle = this.hoverEl.querySelector(".inline-title"); + inlineTitle == null ? void 0 : inlineTitle.remove(); + (_b2 = this.onShowCallback) == null ? void 0 : _b2.call(this); + this.onShowCallback = void 0; + } + transition() { + if (this.shouldShow()) { + if (this.state === import_obsidian10.PopoverState.Hiding) { + this.state = import_obsidian10.PopoverState.Shown; + clearTimeout(this.timer); + } + } else { + if (this.state === import_obsidian10.PopoverState.Showing) { + this.hide(); + } else { + if (this.state === import_obsidian10.PopoverState.Shown) { + this.state = import_obsidian10.PopoverState.Hiding; + this.timer = window.setTimeout(() => { + if (this.shouldShow()) { + this.transition(); + } else { + this.hide(); + } + }, this.waitTime); + } + } + } + } + shouldShow() { + return this.shouldShowSelf() || this.shouldShowChild(); + } + shouldShowChild() { + return FlowEditor.activePopovers().some((popover) => { + if (popover !== this && popover.targetEl && this.hoverEl.contains(popover.targetEl)) { + return popover.shouldShow(); + } + return false; + }); + } + shouldShowSelf() { + return !this.detaching && !!(this.onTarget || this.state == import_obsidian10.PopoverState.Shown || this.document.querySelector( + `body>.modal-container, body > #he${this.id} ~ .menu, body > #he${this.id} ~ .suggestion-container` + )); + } + show() { + if (!this.targetEl || this.document.body.contains(this.targetEl)) { + this.state = import_obsidian10.PopoverState.Shown; + this.timer = 0; + this.shownPos = mouseCoords; + this.targetEl.replaceChildren(this.hoverEl); + this.onShow(); + app.workspace.onLayoutChange(); + this.load(); + } else { + this.hide(); + } + } + onHide() { + var _a2; + this.oldPopover = null; + if (((_a2 = this.parent) == null ? void 0 : _a2.flowEditor) === this) { + this.parent.flowEditor = null; + } + } + hide() { + var _a2; + this.onTarget = false; + this.detaching = true; + if (this.timer) { + clearTimeout(this.timer); + this.timer = 0; + } + this.hoverEl.hide(); + if (this.opening) + return; + const leaves = this.leaves(); + if (leaves.length) { + leaves.forEach((leaf) => leaf.detach()); + } else { + this.parent = null; + (_a2 = this.abortController) == null ? void 0 : _a2.unload(); + this.abortController = void 0; + return this.nativeHide(); + } + } + nativeHide() { + var _a2; + const { hoverEl, targetEl } = this; + this.state = import_obsidian10.PopoverState.Hidden; + hoverEl.detach(); + if (targetEl) { + const parent = targetEl.matchParent(".mk-hover-popover"); + if (parent) + (_a2 = popovers.get(parent)) == null ? void 0 : _a2.transition(); + } + this.onHide(); + this.unload(); + } + resolveLink(linkText, sourcePath) { + const link = (0, import_obsidian10.parseLinktext)(linkText); + const tFile = link ? this.plugin.app.metadataCache.getFirstLinkpathDest( + link.path, + sourcePath != null ? sourcePath : "" + ) : null; + return tFile; + } + async openFile(file, openState, useLeaf) { + if (this.detaching) + return; + const leaf = useLeaf != null ? useLeaf : this.attachLeaf(); + this.opening = true; + try { + await leaf.openFile(file, openState); + } catch (e4) { + console.error(e4); + } finally { + this.opening = false; + if (this.detaching) + this.hide(); + } + this.plugin.app.workspace.setActiveLeaf(leaf); + return leaf; + } + buildState(parentMode, eState) { + return { + active: false, + state: {}, + eState + }; + } + buildEphemeralState(file, link) { + const cache = this.plugin.app.metadataCache.getFileCache(file); + const subpath = cache ? (0, import_obsidian10.resolveSubpath)(cache, (link == null ? void 0 : link.subpath) || "") : void 0; + const eState = { subpath: link == null ? void 0 : link.subpath }; + if (subpath) { + eState.line = subpath.start.line; + eState.startLoc = subpath.start; + eState.endLoc = subpath.end || void 0; + } + return eState; + } +}; + // src/cm-extensions/flowEditor/atomic.ts var import_state5 = require("@codemirror/state"); var arrowKeyAnnotation = import_state5.Annotation.define(); @@ -30774,424 +29410,160 @@ var atomicSelect = import_state5.EditorState.transactionFilter.of( } ); -// src/utils/flowEditor.ts -var parseOutReferences = (ostr) => { - const str = ostr.split("|")[0]; - const refIndex = str.lastIndexOf("#"); - return refIndex != -1 ? [str.substring(0, refIndex), str.substring(refIndex + 1)] : [str, void 0]; -}; -var getFileFromString = (url, source) => { - return app.metadataCache.getFirstLinkpathDest(url, source); -}; -var getLineRangeFromRef = (file, ref, plugin) => { - var _a2; - if (!ref) { - return [void 0, void 0]; +// src/components/ContextView/InlineContextView.tsx +var import_obsidian18 = require("obsidian"); + +// node_modules/@dnd-kit/utilities/dist/utilities.esm.js +function useCombinedRefs(...refs) { + return F( + () => (node) => { + refs.forEach((ref) => ref(node)); + }, + refs + ); +} +var canUseDOM2 = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"; +function isWindow(element) { + const elementString = Object.prototype.toString.call(element); + return elementString === "[object Window]" || elementString === "[object global]"; +} +function isNode2(node) { + return "nodeType" in node; +} +function getWindow(target) { + var _target$ownerDocument, _target$ownerDocument2; + if (!target) { + return window; } - const cache = app.metadataCache.getFileCache(file); - const headings = cache.headings; - const blocks = cache.blocks; - const sections2 = cache.sections; - if (blocks && ref.charAt(0) == "^" && blocks[ref.substring(1)]) { - return [ - blocks[ref.substring(1)].position.start.line + 1, - blocks[ref.substring(1)].position.end.line + 1 - ]; + if (isWindow(target)) { + return target; } - const heading = headings == null ? void 0 : headings.find((f4) => f4.heading.replace("#", " ") == ref); - if (heading) { - const index = headings.findIndex((f4) => f4.heading == heading.heading); - const level = (_a2 = headings[index]) == null ? void 0 : _a2.level; - const nextIndex2 = headings.findIndex( - (f4, i4) => i4 > index && f4.level <= level - ); - const start = plugin.settings.editorFlowStyle == "classic" ? heading.position.start.line + 1 : heading.position.start.line + 2; - if (index < headings.length - 1 && nextIndex2 != -1) { - return [start, headings[nextIndex2].position.end.line]; - } - return [start, sections2[sections2.length - 1].position.end.line + 1]; + if (!isNode2(target)) { + return window; } - return [void 0, void 0]; -}; -var loadFlowEditorByDOM2 = (make, el, view, id2) => { - setTimeout(async () => { - let counter = 0; - while (!el.parentElement && counter++ <= 50) - await sleep(50); - if (!el.parentElement) - return; - let dom = el; - while (!dom.hasClass("mk-floweditor") && !dom.hasClass("workspace") && dom.parentElement) { - dom = dom.parentElement; + return (_target$ownerDocument = (_target$ownerDocument2 = target.ownerDocument) == null ? void 0 : _target$ownerDocument2.defaultView) != null ? _target$ownerDocument : window; +} +function isDocument(node) { + const { + Document + } = getWindow(node); + return node instanceof Document; +} +function isHTMLElement(node) { + if (isWindow(node)) { + return false; + } + return node instanceof getWindow(node).HTMLElement; +} +function isSVGElement(node) { + return node instanceof getWindow(node).SVGElement; +} +function getOwnerDocument(target) { + if (!target) { + return document; + } + if (isWindow(target)) { + return target.document; + } + if (!isNode2(target)) { + return document; + } + if (isDocument(target)) { + return target; + } + if (isHTMLElement(target)) { + return target.ownerDocument; + } + return document; +} +var useIsomorphicLayoutEffect2 = canUseDOM2 ? s2 : h2; +function useEvent(handler) { + const handlerRef = _2(handler); + useIsomorphicLayoutEffect2(() => { + handlerRef.current = handler; + }); + return T2(function(...args) { + return handlerRef.current == null ? void 0 : handlerRef.current(...args); + }, []); +} +function useInterval() { + const intervalRef = _2(null); + const set = T2((listener, duration) => { + intervalRef.current = setInterval(listener, duration); + }, []); + const clear = T2(() => { + if (intervalRef.current !== null) { + clearInterval(intervalRef.current); + intervalRef.current = null; } - if (!dom.hasClass("mk-floweditor") && !dom.hasClass("workspace") && !(dom.nodeName == "HTML")) { - return; + }, []); + return [set, clear]; +} +function useLatestValue(value, dependencies = [value]) { + const valueRef = _2(value); + useIsomorphicLayoutEffect2(() => { + if (valueRef.current !== value) { + valueRef.current = value; } - setTimeout(async () => { - var _a2; - let leafFound = false; - if (app.workspace.activeEditor) { - if (app.workspace.activeEditor.editMode.cm.dom == view.dom) { - leafFound = true; - loadFlowEditorsForLeafForID(app.workspace.activeEditor.editMode.cm, (_a2 = app.workspace.activeEditor.file) == null ? void 0 : _a2.path, make, id2); - } + }, dependencies); + return valueRef; +} +function useLazyMemo(callback, dependencies) { + const valueRef = _2(); + return F( + () => { + const newValue = callback(valueRef.current); + valueRef.current = newValue; + return newValue; + }, + [...dependencies] + ); +} +function useNodeRef(onChange) { + const onChangeHandler = useEvent(onChange); + const node = _2(null); + const setNodeRef = T2( + (element) => { + if (element !== node.current) { + onChangeHandler == null ? void 0 : onChangeHandler(element, node.current); } - if (!leafFound) { - app.workspace.iterateLeaves((leaf) => { - var _a3, _b2; - const cm = (_a3 = leaf.view.editor) == null ? void 0 : _a3.cm; - if (cm && view.dom == cm.dom) { - leafFound = true; - loadFlowEditorsForLeafForID(cm, (_b2 = leaf.view.file) == null ? void 0 : _b2.path, make, id2); - } - }, app.workspace["rootSplit"]); + node.current = element; + }, + [] + ); + return [node, setNodeRef]; +} +function usePrevious2(value) { + const ref = _2(); + h2(() => { + ref.current = value; + }, [value]); + return ref.current; +} +var ids = {}; +function useUniqueId(prefix, value) { + return F(() => { + if (value) { + return value; + } + const id2 = ids[prefix] == null ? 0 : ids[prefix] + 1; + ids[prefix] = id2; + return `${prefix}-${id2}`; + }, [prefix, value]); +} +function createAdjustmentFn(modifier) { + return (object, ...adjustments) => { + return adjustments.reduce((accumulator, adjustment) => { + const entries = Object.entries(adjustment); + for (const [key2, valueAdjustment] of entries) { + const value = accumulator[key2]; + if (value != null) { + accumulator[key2] = value + modifier * valueAdjustment; + } } - }); - }); -}; -var loadFlowEditorsForLeafForID = (cm, source, make, id2) => { - const stateField = cm.state.field(flowEditorInfo, false); - if (!stateField) - return; - const flowInfo = stateField.find((f4) => f4.id == id2); - if (flowInfo && flowInfo.expandedState == 2) { - loadFlowEditor(cm, flowInfo, source, make); - } -}; -var loadFlowEditor = (cm, flowEditorInfo2, source, make) => { - const dom = cm.dom.querySelector( - "#mk-flow-" + flowEditorInfo2.id - ); - const [link, ref] = parseOutReferences(flowEditorInfo2.link); - const file = getFileFromString(link, source); - if (dom) { - if (file) { - const selectiveRange = getLineRangeFromRef(file, ref, make); - if (!dom.hasAttribute("ready")) { - dom.setAttribute("ready", ""); - createFlowEditorInElement( - flowEditorInfo2.id, - dom, - ref ? "block" : "flow", - file.path, - selectiveRange[0], - selectiveRange[1] - ); - } - } else { - dom.empty(); - const createDiv = dom.createDiv("file-embed"); - createDiv.toggleClass("mod-empty", true); - const createFile = async (e4) => { - e4.stopPropagation(); - e4.stopImmediatePropagation(); - await app.fileManager.createNewMarkdownFile(app.vault.getRoot(), link); - loadFlowEditor(cm, flowEditorInfo2, source, make); - }; - createDiv.setText(`"${link}" ` + i18n_default.labels.noFile); - createDiv.addEventListener("click", createFile); - } - } -}; -var focusPortal = async (plugin, evt) => { - const { id: id2, parent, top } = evt.detail; - if (parent) { - app.workspace.iterateLeaves((leaf) => { - var _a2; - const cm = (_a2 = leaf.view.editor) == null ? void 0 : _a2.cm; - if (cm) { - const stateField = cm.state.field(flowEditorInfo, false); - if (stateField) { - const foundInfo = stateField.find((f4) => f4.id == id2); - if (foundInfo) { - cm.focus(); - if (top) { - cm.dispatch({ - selection: import_state6.EditorSelection.single(foundInfo.from - 4), - annotations: arrowKeyAnnotation.of(1) - }); - } else { - if (foundInfo.to + 2 == cm.state.doc.length) { - cm.dispatch({ - changes: [ - { - from: foundInfo.to + 2, - to: foundInfo.to + 2, - insert: cm.state.lineBreak - } - ], - selection: import_state6.EditorSelection.single(foundInfo.to + 3), - annotations: arrowKeyAnnotation.of(2) - }); - } else { - cm.dispatch({ - selection: import_state6.EditorSelection.single(foundInfo.to + 3), - annotations: arrowKeyAnnotation.of(2) - }); - } - } - } - } - } - }, app.workspace["rootSplit"]); - } else { - app.workspace.iterateLeaves((leaf) => { - var _a2; - const cm = (_a2 = leaf.view.editor) == null ? void 0 : _a2.cm; - if (cm) { - const stateField = cm.state.field(flowIDStateField, false); - if (stateField && stateField == id2) { - cm.focus(); - const lineRange = cm.state.field(selectiveLinesFacet, false); - const posRange = lineRange && lineRange[0] != void 0 ? lineRangeToPosRange(cm.state, lineRange) : { from: 0, to: cm.state.doc.length }; - if (top) { - cm.dispatch({ - selection: import_state6.EditorSelection.single(posRange.from) - }); - } else { - cm.dispatch({ - selection: import_state6.EditorSelection.single(posRange.to) - }); - } - } - } - }, app.workspace["rootSplit"]); - } -}; -var openFileFromPortal = (plugin, evt) => { - const { file: fullLink, source } = evt.detail; - const [link, ref] = parseOutReferences(fullLink); - const file = getFileFromString(link, source); - openFile({ ...file, isFolder: false }, plugin.app, false); -}; -var spawnNewPortal = async (plugin, evt) => { - var _a2, _b2; - const { file, el, from, to } = evt.detail; - let portalFile = plugin.app.vault.getAbstractFileByPath(file); - const newLeaf = spawnPortal(plugin, el, !from && portalFile.name); - await newLeaf.openFile(portalFile); - if (!newLeaf.view.editor) { - return; - } - const view = (_a2 = newLeaf.view.editor) == null ? void 0 : _a2.cm; - view.dispatch({ - annotations: [ - portalTypeAnnotation.of(evt.detail.type), - flowIDAnnotation.of(evt.detail.id) - ] - }); - view.dom.addEventListener("keydown", (e4) => { - if (e4.key == "ArrowUp") { - if (e4.metaKey == true) { - view.dispatch({ - annotations: arrowKeyAnnotation.of(3) - }); - } else { - view.dispatch({ - annotations: arrowKeyAnnotation.of(1) - }); - } - } - if (e4.key == "ArrowDown") { - if (e4.metaKey == true) { - view.dispatch({ - annotations: arrowKeyAnnotation.of(4) - }); - } else { - view.dispatch({ - annotations: arrowKeyAnnotation.of(2) - }); - } - } - }); - if (from && to) { - (_b2 = newLeaf.view.editor) == null ? void 0 : _b2.cm.dispatch({ - annotations: [editableRange.of([from, to])] - }); - } -}; -var spawnPortal = (plugin, initiatingEl, fileName, onShowCallback) => { - const parent = plugin.app.workspace.activeLeaf; - if (!initiatingEl) - initiatingEl = parent.containerEl; - const hoverPopover = new FlowEditor( - parent, - initiatingEl, - plugin, - void 0, - onShowCallback - ); - if (fileName) - hoverPopover.titleEl.textContent = fileName.substring( - 0, - fileName.lastIndexOf(".") - ); - return hoverPopover.attachLeaf(); -}; - -// src/components/ContextView/ContextListView.tsx -init_compat_module(); - -// src/components/ContextView/CardsView/CardsView.tsx -init_compat_module(); -init_compat_module(); - -// node_modules/@dnd-kit/core/dist/core.esm.js -init_compat_module(); -init_compat_module(); - -// node_modules/@dnd-kit/utilities/dist/utilities.esm.js -init_compat_module(); -function useCombinedRefs(...refs) { - return F( - () => (node) => { - refs.forEach((ref) => ref(node)); - }, - refs - ); -} -var canUseDOM2 = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined"; -function isWindow(element) { - const elementString = Object.prototype.toString.call(element); - return elementString === "[object Window]" || elementString === "[object global]"; -} -function isNode2(node) { - return "nodeType" in node; -} -function getWindow(target) { - var _target$ownerDocument, _target$ownerDocument2; - if (!target) { - return window; - } - if (isWindow(target)) { - return target; - } - if (!isNode2(target)) { - return window; - } - return (_target$ownerDocument = (_target$ownerDocument2 = target.ownerDocument) == null ? void 0 : _target$ownerDocument2.defaultView) != null ? _target$ownerDocument : window; -} -function isDocument(node) { - const { - Document - } = getWindow(node); - return node instanceof Document; -} -function isHTMLElement(node) { - if (isWindow(node)) { - return false; - } - return node instanceof getWindow(node).HTMLElement; -} -function isSVGElement(node) { - return node instanceof getWindow(node).SVGElement; -} -function getOwnerDocument(target) { - if (!target) { - return document; - } - if (isWindow(target)) { - return target.document; - } - if (!isNode2(target)) { - return document; - } - if (isDocument(target)) { - return target; - } - if (isHTMLElement(target)) { - return target.ownerDocument; - } - return document; -} -var useIsomorphicLayoutEffect2 = canUseDOM2 ? s2 : h2; -function useEvent(handler) { - const handlerRef = _2(handler); - useIsomorphicLayoutEffect2(() => { - handlerRef.current = handler; - }); - return T2(function(...args) { - return handlerRef.current == null ? void 0 : handlerRef.current(...args); - }, []); -} -function useInterval() { - const intervalRef = _2(null); - const set = T2((listener, duration) => { - intervalRef.current = setInterval(listener, duration); - }, []); - const clear = T2(() => { - if (intervalRef.current !== null) { - clearInterval(intervalRef.current); - intervalRef.current = null; - } - }, []); - return [set, clear]; -} -function useLatestValue(value, dependencies = [value]) { - const valueRef = _2(value); - useIsomorphicLayoutEffect2(() => { - if (valueRef.current !== value) { - valueRef.current = value; - } - }, dependencies); - return valueRef; -} -function useLazyMemo(callback, dependencies) { - const valueRef = _2(); - return F( - () => { - const newValue = callback(valueRef.current); - valueRef.current = newValue; - return newValue; - }, - [...dependencies] - ); -} -function useNodeRef(onChange) { - const onChangeHandler = useEvent(onChange); - const node = _2(null); - const setNodeRef = T2( - (element) => { - if (element !== node.current) { - onChangeHandler == null ? void 0 : onChangeHandler(element, node.current); - } - node.current = element; - }, - [] - ); - return [node, setNodeRef]; -} -function usePrevious2(value) { - const ref = _2(); - h2(() => { - ref.current = value; - }, [value]); - return ref.current; -} -var ids = {}; -function useUniqueId(prefix, value) { - return F(() => { - if (value) { - return value; - } - const id2 = ids[prefix] == null ? 0 : ids[prefix] + 1; - ids[prefix] = id2; - return `${prefix}-${id2}`; - }, [prefix, value]); -} -function createAdjustmentFn(modifier) { - return (object, ...adjustments) => { - return adjustments.reduce((accumulator, adjustment) => { - const entries = Object.entries(adjustment); - for (const [key2, valueAdjustment] of entries) { - const value = accumulator[key2]; - if (value != null) { - accumulator[key2] = value + modifier * valueAdjustment; - } - } - return accumulator; - }, { - ...object + return accumulator; + }, { + ...object }); }; } @@ -31300,7 +29672,6 @@ function findFirstFocusableNode(element) { } // node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js -init_compat_module(); var hiddenStyles = { display: "none" }; @@ -32234,19 +30605,19 @@ var defaultKeyboardCoordinateGetter = (event, _ref) => { return void 0; }; var KeyboardSensor = class { - constructor(props) { + constructor(props2) { this.props = void 0; this.autoScrollEnabled = false; this.referenceCoordinates = void 0; this.listeners = void 0; this.windowListeners = void 0; - this.props = props; + this.props = props2; const { event: { target } - } = props; - this.props = props; + } = props2; + this.props = props2; this.listeners = new Listeners(getOwnerDocument(target)); this.windowListeners = new Listeners(getWindow(target)); this.handleKeyDown = this.handleKeyDown.bind(this); @@ -32446,10 +30817,10 @@ function isDelayConstraint(constraint) { return Boolean(constraint && "delay" in constraint); } var AbstractPointerSensor = class { - constructor(props, events2, listenerTarget) { + constructor(props2, events2, listenerTarget) { var _getEventCoordinates; if (listenerTarget === void 0) { - listenerTarget = getEventListenerTarget(props.event.target); + listenerTarget = getEventListenerTarget(props2.event.target); } this.props = void 0; this.events = void 0; @@ -32461,15 +30832,15 @@ var AbstractPointerSensor = class { this.listeners = void 0; this.documentListeners = void 0; this.windowListeners = void 0; - this.props = props; + this.props = props2; this.events = events2; const { event - } = props; + } = props2; const { target } = event; - this.props = props; + this.props = props2; this.events = events2; this.document = getOwnerDocument(target); this.documentListeners = new Listeners(this.document); @@ -32544,14 +30915,14 @@ var AbstractPointerSensor = class { const { activated, initialCoordinates, - props + props: props2 } = this; const { onMove, options: { activationConstraint } - } = props; + } = props2; if (!initialCoordinates) { return; } @@ -32612,12 +30983,12 @@ var events = { } }; var PointerSensor = class extends AbstractPointerSensor { - constructor(props) { + constructor(props2) { const { event - } = props; + } = props2; const listenerTarget = getOwnerDocument(event.target); - super(props, events, listenerTarget); + super(props2, events, listenerTarget); } }; PointerSensor.activators = [{ @@ -32651,8 +31022,8 @@ var MouseButton; MouseButton2[MouseButton2["RightClick"] = 2] = "RightClick"; })(MouseButton || (MouseButton = {})); var MouseSensor = class extends AbstractPointerSensor { - constructor(props) { - super(props, events$1, getOwnerDocument(props.event.target)); + constructor(props2) { + super(props2, events$1, getOwnerDocument(props2.event.target)); } }; MouseSensor.activators = [{ @@ -32682,8 +31053,8 @@ var events$2 = { } }; var TouchSensor = class extends AbstractPointerSensor { - constructor(props) { - super(props, events$2); + constructor(props2) { + super(props2, events$2); } static setup() { window.addEventListener(events$2.move.name, noop2, { @@ -32901,10 +31272,10 @@ function useCombineActivators(sensors, getSyntheticHandler) { }, []), [sensors, getSyntheticHandler]); } var MeasuringStrategy; -(function(MeasuringStrategy2) { - MeasuringStrategy2[MeasuringStrategy2["Always"] = 0] = "Always"; - MeasuringStrategy2[MeasuringStrategy2["BeforeDragging"] = 1] = "BeforeDragging"; - MeasuringStrategy2[MeasuringStrategy2["WhileDragging"] = 2] = "WhileDragging"; +(function(MeasuringStrategy3) { + MeasuringStrategy3[MeasuringStrategy3["Always"] = 0] = "Always"; + MeasuringStrategy3[MeasuringStrategy3["BeforeDragging"] = 1] = "BeforeDragging"; + MeasuringStrategy3[MeasuringStrategy3["WhileDragging"] = 2] = "WhileDragging"; })(MeasuringStrategy || (MeasuringStrategy = {})); var MeasuringFrequency; (function(MeasuringFrequency2) { @@ -33698,7 +32069,7 @@ var DndContext = /* @__PURE__ */ R(function DndContext2(_ref) { collisionDetection = rectIntersection, measuring, modifiers, - ...props + ...props2 } = _ref; const store = y2(reducer, void 0, getInitialState); const [state, dispatch] = store; @@ -33731,7 +32102,7 @@ var DndContext = /* @__PURE__ */ R(function DndContext2(_ref) { const activeRef = _2(null); const [activeSensor, setActiveSensor] = p2(null); const [activatorEvent, setActivatorEvent] = p2(null); - const latestProps = useLatestValue(props, Object.values(props)); + const latestProps = useLatestValue(props2, Object.values(props2)); const draggableDescribedById = useUniqueId("DndDescribedBy", id2); const enabledDroppableContainers = F(() => droppableContainers.getEnabled(), [droppableContainers]); const measuringConfiguration = useMeasuringConfiguration(measuring); @@ -34459,12 +32830,12 @@ var defaultDropAnimationSideEffects = (options) => (_ref) => { var defaultKeyframeResolver = (_ref2) => { let { transform: { - initial, + initial: initial2, final } } = _ref2; return [{ - transform: CSS.Transform.toString(initial) + transform: CSS.Transform.toString(initial2) }, { transform: CSS.Transform.toString(final) }]; @@ -34676,7 +33047,6 @@ var DragOverlay = /* @__PURE__ */ bn.memo((_ref) => { }); // node_modules/@dnd-kit/sortable/dist/sortable.esm.js -init_compat_module(); function arrayMove(array, from, to) { const newArray = array.slice(); newArray.splice(to < 0 ? newArray.length + to : to, 0, newArray.splice(from, 1)[0]); @@ -34982,16 +33352,16 @@ function useDerivedTransform(_ref) { const previousIndex = _2(index); useIsomorphicLayoutEffect2(() => { if (!disabled && index !== previousIndex.current && node.current) { - const initial = rect.current; - if (initial) { + const initial2 = rect.current; + if (initial2) { const current = getClientRect(node.current, { ignoreTransform: true }); const delta = { - x: initial.left - current.left, - y: initial.top - current.top, - scaleX: initial.width / current.width, - scaleY: initial.height / current.height + x: initial2.left - current.left, + y: initial2.top - current.top, + scaleX: initial2.width / current.width, + scaleY: initial2.height / current.height }; if (delta.x || delta.y) { setDerivedtransform(delta); @@ -35317,16 +33687,11 @@ function isAfter2(a5, b4) { } // src/components/ContextView/CardsView/KanbanColumn.tsx -init_compat_module(); var import_classnames = __toESM(require_classnames()); -// src/components/ContextView/DataTypeView/DataTypeView.tsx -init_compat_module(); - // src/components/ContextView/DataTypeView/TextCell.tsx -init_compat_module(); -var TextCell = (props) => { - const { initialValue, saveValue } = props; +var TextCell = (props2) => { + const { initialValue, saveValue } = props2; const [value, setValue] = bn.useState(initialValue); const onBlur = () => { if (initialValue != value) @@ -35338,7 +33703,7 @@ var TextCell = (props) => { bn.useEffect(() => { setValue(initialValue); }, [initialValue]); - return props.editable ? /* @__PURE__ */ bn.createElement("input", { + return props2.editable ? /* @__PURE__ */ bn.createElement("input", { className: "mk-cell-text", type: "text", value, @@ -35349,9 +33714,8 @@ var TextCell = (props) => { }; // src/components/ContextView/DataTypeView/NumberCell.tsx -init_compat_module(); -var NumberCell = (props) => { - const { initialValue, saveValue } = props; +var NumberCell = (props2) => { + const { initialValue, saveValue } = props2; const [value, setValue] = bn.useState(initialValue); const onBlur = () => { if (initialValue != value) @@ -35363,7 +33727,7 @@ var NumberCell = (props) => { bn.useEffect(() => { setValue(initialValue); }, [initialValue]); - return props.editable ? /* @__PURE__ */ bn.createElement("input", { + return props2.editable ? /* @__PURE__ */ bn.createElement("input", { className: "mk-cell-text", type: "number", step: "any", @@ -35375,36 +33739,14 @@ var NumberCell = (props) => { }; // src/components/ContextView/DataTypeView/FilePropertyCell.tsx -var import_obsidian8 = require("obsidian"); -init_compat_module(); -var FilePropertyCell = (props) => { - const { property } = props; - const file = getAbstractFileAtPath(app, props.file); - const appendFileMetaData = (propType, file2) => { - let value = ""; - if (file2) { - if (propType == "folder") { - value = file2.parent.path; - } - if (file2 instanceof import_obsidian8.TFile) { - if (propType == "ctime") { - value = file2.stat.ctime.toString(); - } else if (propType == "mtime") { - value = file2.stat.mtime.toString(); - } else if (propType == "extension") { - value = file2.extension; - } else if (propType == "size") { - value = file2.stat.size.toString(); - } - } else if (propType == "extension") { - value = "Folder"; - } - } - return value; - }; +var FilePropertyCell = (props2) => { + const { property } = props2; + const file = getAbstractFileAtPath(app, props2.file); + const [cache, setCache] = p2(null); const initialValue = file ? appendFileMetaData(property, file) : ""; if (property == "folder") { return /* @__PURE__ */ bn.createElement("div", { + className: "mk-cell-fileprop", onClick: () => { openTFolder(getAbstractFileAtPath(app, initialValue), app, false); } @@ -35418,7 +33760,7 @@ var FilePropertyCell = (props) => { const date = new Date(parseInt(initialValue)).getTime() ? new Date(parseInt(initialValue)) : null; return /* @__PURE__ */ bn.createElement("div", { className: "mk-cell-fileprop" - }, date && format(new Date(date), "MMM d, yyyy h:mm a")); + }, date && formatDistance3(new Date(date), new Date(), { addSuffix: true })); } else if (property == "size") { return /* @__PURE__ */ bn.createElement("div", { className: "mk-cell-fileprop" @@ -35430,74 +33772,85 @@ var FilePropertyCell = (props) => { }; // src/components/ContextView/DataTypeView/ContextCell.tsx -init_compat_module(); -var ContextCell = (props) => { +var ContextCell = (props2) => { var _a2, _b2, _c2; - const initialValue = (props.multi ? (_a2 = props.initialValue.match(/(\\.|[^,])+/g)) != null ? _a2 : [] : [props.initialValue]).filter((f4) => (f4 == null ? void 0 : f4.length) > 0).map((f4) => ({ + const initialValue = (props2.multi ? (_a2 = splitString(props2.initialValue)) != null ? _a2 : [] : [props2.initialValue]).filter((f4) => (f4 == null ? void 0 : f4.length) > 0).map((f4) => ({ path: f4, label: filePathToString(f4) })); const ref = _2(null); - const options = (_c2 = (_b2 = props.contextTable) == null ? void 0 : _b2.rows.map((f4) => ({ name: filePathToString(f4["File"]), value: f4["File"] }))) != null ? _c2 : []; + const options = (_c2 = (_b2 = props2.contextTable) == null ? void 0 : _b2.rows.map((f4) => ({ name: filePathToString(f4["File"]), value: f4["File"] }))) != null ? _c2 : []; const [value, setValue] = p2(initialValue); const removeValue = (v3) => { const newValues = value.filter((f4) => f4.path != v3.path); setValue(newValues); - props.saveValue(newValues.map((f4) => f4.path).join(",")); + props2.saveValue(newValues.map((f4) => f4.path).join(",")); }; - const saveOptions = (_4, _value) => { - if (!props.multi) { + const saveOptions = (_options, _value) => { + insertContextItems(props2.plugin, _options, props2.contextTag); + if (!props2.multi) { setValue(_value.map((f4) => ({ path: f4, label: filePathToString(f4) }))); - props.saveValue(_value.join(",")); + props2.saveValue(_value.join(",")); } else { const newValue = _value[0]; if (newValue) { const newValues = uniq([...value.map((f4) => f4.path), newValue]); setValue(newValues.map((f4) => ({ label: filePathToString(f4), path: f4 }))); - props.saveValue(newValues.join(",")); + props2.saveValue(newValues.join(",")); } } }; const showMenu = () => { const offset = ref.current.getBoundingClientRect(); - const _options = !props.multi ? [{ name: "None", value: "" }, ...options] : options; - showSelectMenu({ x: offset.left, y: offset.top + 30 }, false, false, value.map((f4) => f4.path), _options, saveOptions, "Find Item"); + const _options = !props2.multi ? [{ name: "None", value: "" }, ...options] : options; + showSelectMenu( + { x: offset.left, y: offset.top + 30 }, + { + multi: false, + editable: true, + value: value.map((f4) => f4.path), + options: _options, + saveOptions, + placeholder: "Find Item", + searchable: true, + showAll: true + } + ); }; return /* @__PURE__ */ bn.createElement("div", { className: "mk-cell-option", ref }, value.length > 0 ? value.map((o3) => /* @__PURE__ */ bn.createElement("div", { className: "mk-cell-option-item" - }, o3.label.length > 0 ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", null, o3.label), props.multi ? /* @__PURE__ */ bn.createElement("div", { + }, o3.label.length > 0 ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", null, o3.label), props2.editable && props2.multi ? /* @__PURE__ */ bn.createElement("div", { className: "mk-icon-xsmall", onClick: () => removeValue(o3), dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-close"] } - }) : /* @__PURE__ */ bn.createElement(bn.Fragment, null)) : /* @__PURE__ */ bn.createElement("div", null, "Select"), props.editable && !props.multi && value.length > 0 ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("span", null), /* @__PURE__ */ bn.createElement("div", { - onClick: () => props.editable && !props.multi && showMenu(), + }) : /* @__PURE__ */ bn.createElement(bn.Fragment, null)) : /* @__PURE__ */ bn.createElement("div", null, "Select"), props2.editable && !props2.multi && value.length > 0 ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("span", null), /* @__PURE__ */ bn.createElement("div", { + onClick: () => props2.editable && !props2.multi && showMenu(), className: "mk-cell-option-select mk-icon-xxsmall mk-icon-rotated", dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-collapse-sm"] } - })) : /* @__PURE__ */ bn.createElement(bn.Fragment, null))) : !props.multi ? /* @__PURE__ */ bn.createElement("div", { + })) : /* @__PURE__ */ bn.createElement(bn.Fragment, null))) : props2.editable && !props2.multi ? /* @__PURE__ */ bn.createElement("div", { className: "mk-cell-option-item" }, /* @__PURE__ */ bn.createElement("div", { - onClick: () => props.editable && !props.multi && showMenu() - }, "Select")) : /* @__PURE__ */ bn.createElement(bn.Fragment, null), props.editable && props.multi ? /* @__PURE__ */ bn.createElement("div", { - onClick: () => props.editable && showMenu(), + onClick: () => props2.editable && !props2.multi && showMenu() + }, "Select")) : /* @__PURE__ */ bn.createElement(bn.Fragment, null), props2.editable && props2.multi ? /* @__PURE__ */ bn.createElement("div", { + onClick: () => props2.editable && showMenu(), className: "mk-cell-option-new mk-icon-small", dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-plus"] } }) : /* @__PURE__ */ bn.createElement(bn.Fragment, null)); }; // src/components/ContextView/DataTypeView/DateCell.tsx -init_compat_module(); -var DateCell = (props) => { - const date = new Date(props.initialValue); +var DateCell = (props2) => { + const date = new Date(props2.initialValue); const [value, setValue] = p2(date.getTime() ? date : null); const [time, setTime] = p2(""); const saveValue = (date2) => { - props.saveValue(date2.toDateString()); + props2.saveValue(date2.valueOf().toString()); setValue(date2); }; const ref = _2(null); @@ -35520,69 +33873,79 @@ var DateCell = (props) => { }; // src/components/ContextView/DataTypeView/OptionCell.tsx -init_compat_module(); -var OptionCell = (props) => { - var _a2, _b2, _c2, _d2, _e2; - const initialValue = (props.multi ? (_b2 = (_a2 = props.initialValue) == null ? void 0 : _a2.match(/(\\.|[^,])+/g)) != null ? _b2 : [] : [props.initialValue]).filter((f4) => f4); +var OptionCell = (props2) => { + var _a2, _b2; + const initialValue = (props2.multi ? (_a2 = splitString(props2.initialValue)) != null ? _a2 : [] : [props2.initialValue]).filter((f4) => f4); const ref = _2(null); - const initialOptions = [...(_e2 = (_d2 = (_c2 = props.options) == null ? void 0 : _c2.match(/(\\.|[^,])+/g)) == null ? void 0 : _d2.filter((f4) => f4).map((t4) => ({ name: t4, value: t4 }))) != null ? _e2 : [], ...initialValue.map((f4) => ({ name: f4, value: f4 }))].filter(onlyUniqueProp("value")); + const initialOptions = [...(_b2 = splitString(props2.options).filter((f4) => f4).map((t4) => ({ name: t4, value: t4 }))) != null ? _b2 : [], ...initialValue.map((f4) => ({ name: f4, value: f4 }))].filter(onlyUniqueProp("value")); const [options, setOptions] = p2(initialOptions); const [value, setValue] = p2(initialValue); const removeValue = (v3) => { const newValues = value.filter((f4) => f4 != v3); setValue(newValues); - props.saveOptions(options.map((f4) => f4.value).join(","), newValues.join(",")); + props2.saveOptions(options.map((f4) => f4.value).join(","), newValues.join(",")); }; const saveOptions = (_options, _value) => { - if (!props.multi) { + if (!props2.multi) { setOptions(_options.filter((f4) => f4.length > 0).map((t4) => ({ name: t4, value: t4 }))); setValue(_value); - props.saveOptions(_options.filter((f4) => f4.length > 0).join(","), _value.join(",")); + props2.saveOptions(_options.filter((f4) => f4.length > 0).join(","), _value.join(",")); } else { const newValue = _value[0]; setOptions(_options.map((t4) => ({ name: t4, value: t4 }))); if (newValue) { const newValues = uniq([...value, newValue]); setValue(newValues); - props.saveOptions(_options.join(","), newValues.join(",")); + props2.saveOptions(_options.join(","), newValues.join(",")); } else { - props.saveOptions(_options.join(","), value.join(",")); + props2.saveOptions(_options.join(","), value.join(",")); } } }; const showMenu = () => { const offset = ref.current.getBoundingClientRect(); - const _options = !props.multi ? [{ name: "None", value: "" }, ...options] : options; - showSelectMenu({ x: offset.left - 4, y: offset.top - 4 }, false, true, value, _options, saveOptions, "Select Option"); + const _options = !props2.multi ? [{ name: "None", value: "" }, ...options] : options; + showSelectMenu( + { x: offset.left - 4, y: offset.top - 4 }, + { + multi: false, + editable: true, + value, + options: _options, + saveOptions, + placeholder: "Select Option", + searchable: true, + showAll: true + } + ); }; return /* @__PURE__ */ bn.createElement("div", { className: "mk-cell-option", ref }, value.length > 0 ? value.map((o3) => /* @__PURE__ */ bn.createElement("div", { className: "mk-cell-option-item" - }, o3.length > 0 ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", null, o3), props.multi ? /* @__PURE__ */ bn.createElement("div", { + }, o3.length > 0 ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", null, o3), props2.editable && props2.multi ? /* @__PURE__ */ bn.createElement("div", { className: "mk-icon-xsmall", onClick: () => removeValue(o3), dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-close"] } - }) : /* @__PURE__ */ bn.createElement(bn.Fragment, null)) : /* @__PURE__ */ bn.createElement("div", null, "Select"), props.editable && !props.multi && value.length > 0 ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("span", null), /* @__PURE__ */ bn.createElement("div", { - onClick: () => props.editable && !props.multi && showMenu(), + }) : /* @__PURE__ */ bn.createElement(bn.Fragment, null)) : /* @__PURE__ */ bn.createElement("div", null, "Select"), props2.editable && !props2.multi && value.length > 0 ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("span", null), /* @__PURE__ */ bn.createElement("div", { + onClick: () => props2.editable && !props2.multi && showMenu(), className: "mk-cell-option-select mk-icon-xxsmall mk-icon-rotated", dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-collapse-sm"] } - })) : /* @__PURE__ */ bn.createElement(bn.Fragment, null))) : props.editable && !props.multi ? /* @__PURE__ */ bn.createElement("div", { + })) : /* @__PURE__ */ bn.createElement(bn.Fragment, null))) : props2.editable && !props2.multi ? /* @__PURE__ */ bn.createElement("div", { className: "mk-cell-option-item" }, /* @__PURE__ */ bn.createElement("div", { - onClick: () => !props.multi && showMenu() - }, "Select")) : /* @__PURE__ */ bn.createElement(bn.Fragment, null), props.editable && props.multi ? /* @__PURE__ */ bn.createElement("div", { - onClick: () => props.editable && showMenu(), + onClick: () => !props2.multi && showMenu() + }, "Select")) : /* @__PURE__ */ bn.createElement(bn.Fragment, null), props2.editable && props2.multi ? /* @__PURE__ */ bn.createElement("div", { + onClick: () => props2.editable && showMenu(), className: "mk-cell-option-new mk-icon-small", dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-plus"] } }) : /* @__PURE__ */ bn.createElement(bn.Fragment, null)); }; // src/components/ContextView/DataTypeView/BooleanCell.tsx -init_compat_module(); -var BooleanCell = (props) => { - const { initialValue, saveValue } = props; +var BooleanCell = (props2) => { + const { initialValue, saveValue } = props2; const [value, setValue] = bn.useState(initialValue == "true"); const onChange = () => { setValue(!value); @@ -35591,6 +33954,15 @@ var BooleanCell = (props) => { bn.useEffect(() => { setValue(initialValue == "true"); }, [initialValue]); + if (!props2.editable) { + return /* @__PURE__ */ bn.createElement("div", { + className: "mk-cell-option-item" + }, /* @__PURE__ */ bn.createElement("div", null, /* @__PURE__ */ bn.createElement("input", { + type: "checkbox", + checked: value, + onChange + })), /* @__PURE__ */ bn.createElement("div", null, props2.column.name)); + } return /* @__PURE__ */ bn.createElement("input", { type: "checkbox", checked: value, @@ -35599,8 +33971,7 @@ var BooleanCell = (props) => { }; // src/components/ContextView/DataTypeView/FileCell.tsx -var import_obsidian12 = require("obsidian"); -init_compat_module(); +var import_obsidian14 = require("obsidian"); // src/hooks/useLongPress.tsx function isMouseEvent(e4) { @@ -35608,7 +33979,7 @@ function isMouseEvent(e4) { } // src/components/ui/menus/fileMenu.tsx -var import_obsidian10 = require("obsidian"); +var import_obsidian13 = require("obsidian"); // src/components/StickerMenu/emojis/default.ts var emojis = { @@ -41002,31 +39373,600 @@ var emojis = { ] }; +// src/schemas/spaces.ts +var vaultSchema = { + uniques: ["path"], + cols: ["path", "parent", "created", "sticker", "color", "folder", "rank"], + rows: [] +}; +var spaceSchema = { + uniques: ["name"], + cols: ["name", "sticker", "color", "pinned", "sort", "def", "rank"], + rows: [] +}; +var spaceItemsSchema = { + uniques: [], + cols: ["space", "path", "rank"], + rows: [] +}; + +// src/dispatch/spaces.ts +var dispatchDatabaseFileChanged2 = (type) => { + let evt = new CustomEvent(eventTypes.spacesChange, { + detail: { + changeType: type + } + }); + window.dispatchEvent(evt); +}; +var onFileCreated2 = async (plugin, newPath, folder) => { + const parent = getFolderFromPath(app, newPath).parent.path; + const db = plugin.spaceDBInstance(); + insertIntoDB(db, { + "vault": { + ...vaultSchema, + rows: [{ + path: newPath, + parent, + created: Math.trunc(Date.now() / 1e3).toString(), + folder: folder ? "true" : "false" + }] + } + }); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("vault"); +}; +var onFileDeleted2 = (plugin, oldPath) => { + const db = plugin.spaceDBInstance(); + deleteFromDB(db, "vault", `path = '${oldPath}'`); + deleteFromDB(db, "spaceItems", `path = '${oldPath}'`); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("vault"); +}; +var onFileChanged2 = (plugin, oldPath, newPath) => { + const newFolderPath = getFolderPathFromString2(newPath); + const db = plugin.spaceDBInstance(); + updateDB(db, { + "vault": { + uniques: [], + cols: ["path", "parent"], + rows: [{ path: newPath, oldPath, parent: newFolderPath }] + } + }, "path", "oldPath"); + updateDB(db, { + "spaceItems": { + uniques: [], + cols: ["path"], + rows: [{ path: newPath, oldPath }] + } + }, "path", "oldPath"); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("vault"); +}; +var onFolderChanged2 = (plugin, oldPath, newPath) => { + const newFolderPath = getFolderPathFromString2(newPath); + const db = plugin.spaceDBInstance(); + updateDB(db, { + "vault": { + uniques: [], + cols: ["path", "parent"], + rows: [{ path: newPath, oldPath, parent: newFolderPath }] + } + }, "oldPath", "path"); + execQuery(db, `UPDATE vault SET parent=REPLACE(parent,'${oldPath}','${newPath}) WHERE parent LIKE '${oldPath}%';`); + execQuery(db, `UPDATE vault SET path=REPLACE(path,'${oldPath}','${newPath}) WHERE path LIKE '${oldPath}%/';`); + updateDB(db, { + "spaceItems": { + uniques: [], + cols: ["path"], + rows: [{ path: newPath, oldPath }] + } + }, "oldPath", "path"); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("vault"); +}; +var onFolderDeleted2 = (plugin, oldPath) => { + const db = plugin.spaceDBInstance(); + deleteFromDB(db, "vault", `path = '${oldPath}' OR parent LIKE '${oldPath}%'`); + deleteFromDB(db, "spaceItems", `path = '${oldPath}'`); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("vault"); +}; + +// src/utils/spaces/spaces.ts +var import_obsidian11 = require("obsidian"); + +// src/utils/array.ts +var insert = (arr, index, newItem) => [ + ...arr.slice(0, index), + newItem, + ...arr.slice(index) +]; + +// src/utils/spaces/spaces.ts +var rebuildIndex = async (plugin) => { + console.time("Reindex Spaces Data"); + const db = plugin.spaceDBInstance(); + indexCurrentFileTree(db); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("vault"); + console.timeEnd("Reindex Spaces Data"); +}; +var spaceItemToTreeNode = (space, collapsed, sortable) => { + return { id: space.name, spaceItem: space, parentId: null, depth: 0, index: 0, space: space.name, item: null, collapsed, sortable }; +}; +var vaulItemToTreeNode = (item, space, path, depth, i4, collapsed, sortable) => ({ + item, + file: getAbstractFileAtPath(app, item.path), + space, + id: (space == "/" ? "" : space) + "//" + item.path, + parentId: (space == "/" ? "" : space) + "//" + path, + depth, + index: i4, + collapsed, + sortable +}); +var folderSortFn = (sortStrategy, direction) => (a5, b4) => { + if (sortStrategy == "rank") { + return a5.rank.localeCompare(b4.rank, void 0, { numeric: true }); + } + const sortFns = [compareByField("folder", false), compareByField(sortStrategy, direction)]; + return sortFns.reduce((p3, c4) => { + return p3 == 0 ? c4(a5, b4) : p3; + }, 0); +}; +var flattenedTreeFromVaultItems = (root, space, vaultItems, openNodes, depth, sortStrategy, direction) => { + if (!vaultItems[root]) { + return []; + } + const flattenTree = (path, vaultItems2, openNodes2, depth2, index) => { + let items = []; + let i4 = index; + vaultItems2[path].sort(folderSortFn(sortStrategy, direction)).forEach((item) => { + const collapsed = !openNodes2.includes(item.path); + const node = vaulItemToTreeNode(item, space, path, depth2, i4, collapsed, sortStrategy == "rank"); + if (node.file) + items.push(node); + i4 = i4 + 1; + if (vaultItems2[item.path] && !collapsed) { + items.push(...flattenTree(item.path, vaultItems2, openNodes2, depth2 + 1, i4)); + } + }); + return items; + }; + return flattenTree(root, vaultItems, openNodes, depth, 0); +}; +var vaultItemForPath = (plugin, path) => { + var _a2; + const db = plugin.spaceDBInstance(); + const table = selectDB(db, "vault", `path='${path}'`); + return (_a2 = table == null ? void 0 : table.rows) == null ? void 0 : _a2[0]; +}; +var saveFileSticker = (plugin, path, sticker) => { + const db = plugin.spaceDBInstance(); + updateDB(db, { + vault: { + ...vaultSchema, + cols: ["path", "sticker"], + rows: [{ path, sticker }] + } + }, "path", "path"); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("sticker"); +}; +var saveFileColor = (plugin, path, color) => { + const db = plugin.spaceDBInstance(); + updateDB(db, { + vault: { + ...vaultSchema, + cols: ["path", "color"], + rows: [{ path, color }] + } + }, "path", "path"); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("sticker"); +}; +var saveSpaceSticker = (plugin, name, sticker) => { + const db = plugin.spaceDBInstance(); + updateDB(db, { + spaces: { + ...spaceSchema, + cols: ["name", "sticker"], + rows: [{ name, sticker }] + } + }, "name", "name"); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("space"); +}; +var updateFileRank = (plugin, item, vaultTree, rank) => { + const db = plugin.spaceDBInstance(); + if (Object.keys(vaultTree).includes(item.parent)) { + let fixedRank = rank; + if (parseInt(item.rank) > rank) + fixedRank = rank + 1; + const newItems = insert(vaultTree[item.parent].filter((f4) => f4.path != item.path), fixedRank, item).map((f4, index) => ({ path: f4.path, rank: index.toString() })); + updateDB(db, { + vault: { + ...vaultSchema, + cols: ["path", "rank"], + rows: newItems + } + }, "path", "path"); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("vault"); + } +}; +var moveAFileToNewParentAtIndex = (plugin, item, newParent, vaultTree, index) => { + var _a2; + const currFile = getAbstractFileAtPath(app, item.path); + const newPath = newParent == "/" ? currFile.name : newParent + "/" + currFile.name; + const newItem = { + ...item, + path: newPath, + parent: newParent, + rank: index.toString() + }; + if (Object.keys(vaultTree).includes(newParent)) { + vaultTree[newParent] = insert(vaultTree[newParent], index, newItem); + const db = plugin.spaceDBInstance(); + const table = selectDB(db, "vault", `parent='${newParent}'`); + const rows = insert((_a2 = table == null ? void 0 : table.rows.sort((a5, b4) => a5.rank.localeCompare(b4.rank, void 0, { numeric: true }))) != null ? _a2 : [], index, newItem).map((f4, index2) => ({ ...f4, rank: index2.toString() })); + insertIntoDB(db, { + vault: { + ...vaultSchema, + rows: [newItem] + } + }); + deleteFromDB(db, "vault", `path='${item.path}'`); + updateDB(db, { + vault: { + ...vaultSchema, + cols: ["path", "rank"], + rows + } + }, "path", "path"); + plugin.saveSpacesDB(); + const afile = getAbstractFileAtPath(app, item.path); + app.fileManager.renameFile( + afile, + newPath + ); + } else { + const afile = getAbstractFileAtPath(app, item.path); + app.fileManager.renameFile( + afile, + newPath + ); + } +}; +var insertSpaceAtIndex = (plugin, space, pinned, rank, def) => { + const db = plugin.spaceDBInstance(); + let newSpace = { name: space, pinned: pinned ? "true" : "false", def }; + const spaces2 = retrieveSpaces(plugin); + const spaceExists = spaces2.find((f4) => f4.name == space); + let fixedRank = rank; + if (spaceExists) { + updateDB(db, { + spaces: { + ...spaceSchema, + rows: [{ ...spaceExists, ...newSpace }] + } + }, "name", "name"); + if (parseInt(spaceExists.rank) < rank) + fixedRank = rank - 1; + } else { + insertIntoDB(db, { + spaces: { + ...spaceSchema, + rows: [newSpace] + } + }); + } + const newSpaces = insert(spaces2.filter((f4) => f4.name != space), fixedRank, newSpace).map((f4, index) => ({ name: f4.name, rank: index.toString() })); + updateDB(db, { + spaces: { + ...spaceSchema, + cols: ["name", "rank"], + rows: newSpaces + } + }, "name", "name"); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("space"); +}; +var insertSpaceItemAtIndex = (plugin, spaceName, path, rank) => { + var _a2; + const db = plugin.spaceDBInstance(); + const space = retrieveSpaces(plugin).find((f4) => f4.name == spaceName); + if (!space) + return; + let newSpace = { space: space.name, path, rank: rank.toString() }; + const spaceItems = retrieveSpaceItems(plugin, [space]); + const spaceExists = (_a2 = spaceItems[space.name]) != null ? _a2 : []; + const pathExists = spaceExists.find((f4) => f4.path == path); + let fixedRank = rank; + if (!pathExists) { + insertIntoDB(db, { + spaceItems: { + ...spaceItemsSchema, + rows: [newSpace] + } + }); + fixedRank = rank + 1; + } else { + if (parseInt(pathExists.rank) > rank) + fixedRank = rank + 1; + } + const newSpaceItems = insert(spaceExists.filter((f4) => f4.path != path), fixedRank, newSpace).map((f4, index) => ({ space: f4.space, path: f4.path, rank: index.toString() })); + updateDB(db, { + spaceItems: { + ...spaceItemsSchema, + rows: newSpaceItems + } + }, `space='${space.name}' AND path`, "path"); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("space"); +}; +var renameSpace = (plugin, space, newName) => { + const db = plugin.spaceDBInstance(); + updateDB(db, { + spaces: { + ...spaceSchema, + rows: [{ oldName: space, name: newName }] + } + }, "name", "oldName"); + updateDB(db, { + spaceItems: { + ...spaceSchema, + rows: [{ oldSpace: space, space: newName }] + } + }, "space", "oldSpace"); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("space"); +}; +var removeSpace = (plugin, space) => { + const db = plugin.spaceDBInstance(); + deleteFromDB(db, "spaces", `name='${space}'`); + deleteFromDB(db, "spaceItems", `space='${space}'`); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("space"); +}; +var updateSpaceSort = (plugin, space, sort) => { + const db = plugin.spaceDBInstance(); + updateDB(db, { + spaces: { + ...spaceSchema, + cols: ["name", "sort"], + rows: [{ name: space, sort: JSON.stringify(sort) }] + } + }, "name", "name"); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("space"); +}; +var toggleSpacePin = (plugin, space, state) => { + const db = plugin.spaceDBInstance(); + updateDB(db, { + spaces: { + ...spaceSchema, + cols: ["name", "pinned"], + rows: [{ name: space, pinned: state ? "true" : "false" }] + } + }, "name", "name"); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("space"); +}; +var addPathsToSpace = (plugin, space, paths) => { + const db = plugin.spaceDBInstance(); + insertIntoDB(db, { + spaceItems: { + ...spaceItemsSchema, + rows: [...paths.map((p3) => ({ space, path: p3 }))] + } + }); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("space"); +}; +var removePathsFromSpace = (plugin, space, paths) => { + const db = plugin.spaceDBInstance(); + paths.forEach((path) => deleteFromDB(db, "spaceItems", `space='${space}' AND path='${path}'`)); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("space"); +}; +var retrieveSpaces = (plugin) => { + const db = plugin.spaceDBInstance(); + const table = selectDB(db, "spaces"); + if (table) { + return table.rows.sort((a5, b4) => a5.rank.localeCompare(b4.rank, void 0, { numeric: true })); + } + return []; +}; +var retrieveSpaceItems = (plugin, spaces2) => { + console.time("retrieve spaceItems"); + const db = plugin.spaceDBInstance(); + let retrievedSpaces = {}; + spaces2.forEach((space) => { + var _a2, _b2, _c2, _d2; + const table = selectDB(db, "spaceItems", `space='${space.name}'`); + let rows = (_a2 = table == null ? void 0 : table.rows) != null ? _a2 : []; + if (((_b2 = space.def) == null ? void 0 : _b2.length) > 0) { + const spaceItems = ((_d2 = (_c2 = selectDB(db, "vault", `parent='${space.def}'`)) == null ? void 0 : _c2.rows) != null ? _d2 : []).filter(excludeVaultItemPredicate(plugin)); + const extraItems = rows.filter((f4) => !spaceItems.some((g4) => g4.path == f4.path)); + rows = rows.filter((f4) => !extraItems.some((g4) => f4.path == g4.path)); + extraItems.forEach( + (row) => deleteFromDB(db, "spaceItems", `space='${space.name}' AND path='${row.path}'`) + ); + spaceItems.forEach((row) => { + if (!rows.some((f4) => f4.path == row.path)) { + const newItem = { space: space.name, path: row.path, rank: "0" }; + insertIntoDB(db, { + spaceItems: { + ...spaceItemsSchema, + rows: [newItem] + } + }); + rows.push(newItem); + } + }); + } + retrievedSpaces[space.name] = rows.sort((a5, b4) => a5.rank.localeCompare(b4.rank, void 0, { numeric: true })); + }); + console.timeEnd("retrieve spaceItems"); + return retrievedSpaces; +}; +var retrieveFolders = async (plugin, paths) => { + console.time("retrieve folders"); + const db = plugin.spaceDBInstance(); + let retrievedFolders = {}; + paths.forEach((folder) => { + const table = selectDB(db, "vault", `parent='${folder}'`); + if (table) { + retrievedFolders[folder] = table.rows.filter(excludeVaultItemPredicate(plugin)); + } + }); + console.timeEnd("retrieve folders"); + return retrievedFolders; +}; +var migrateIndex = async (plugin) => { + console.time("Migrate Spaces Data"); + const db = plugin.spaceDBInstance(); + initiateDB(db); + indexCurrentFileTree(db); + mergeCurrentRanks(db, plugin.settings.folderRank); + mergeExistingFileIcons(db, plugin.settings.fileIcons); + mergeSpaces(db, plugin.settings.spaces); + plugin.saveSpacesDB(); + dispatchDatabaseFileChanged2("vault"); + console.log("Backing up previous data"); + await app.vault.adapter.copy((0, import_obsidian11.normalizePath)(app.vault.configDir + "/plugins/make-md/data.json"), (0, import_obsidian11.normalizePath)(app.vault.configDir + "/plugins/make-md/data-old.json")); + console.log("Clearing previous data"); + plugin.settings.folderRank = null; + plugin.settings.fileIcons = null; + plugin.settings.spaces = null; + plugin.saveSettings(); + console.timeEnd("Migrate Spaces Data"); +}; +var initiateDB = (db) => { + replaceDB(db, { + vault: vaultSchema, + spaces: spaceSchema, + spaceItems: spaceItemsSchema + }); +}; +var indexCurrentFileTree = (db) => { + var _a2, _b2; + let treeItems = []; + import_obsidian11.Vault.recurseChildren(app.vault.getRoot(), (file) => { + var _a3; + treeItems.push({ path: file.path, parent: (_a3 = file.parent) == null ? void 0 : _a3.path, created: file instanceof import_obsidian11.TFile ? file.stat.ctime.toString() : void 0, folder: file instanceof import_obsidian11.TFolder ? "true" : "false" }); + }); + const currentPaths = (_b2 = (_a2 = selectDB(db, "vault")) == null ? void 0 : _a2.rows) != null ? _b2 : []; + const deleteRows = currentPaths.filter((item) => !treeItems.some((i4) => i4.path == item.path)); + const fixRows = currentPaths.filter((item) => treeItems.some((i4) => i4.path == item.path && i4.parent != item.parent)).map((item) => ({ ...item, ...treeItems.find((i4) => i4.path == item.path) })); + const newRows = treeItems.filter((item) => !currentPaths.some((i4) => i4.path == item.path)); + fixRows.forEach((row) => { + updateDB(db, { vault: { ...vaultSchema, rows: [row] } }, "path", "path"); + }); + deleteRows.forEach((path) => { + deleteFromDB(db, "vault", `path='${path.path}'`); + }); + deleteRows.forEach((path) => { + deleteFromDB(db, "spaceItems", `path='${path.path}'`); + }); + return insertIntoDB(db, { + "vault": { + ...vaultSchema, + rows: newRows + } + }); +}; +var mergeExistingFileIcons = (db, fileIcons) => { + const dbRows = fileIcons.map(([path, sticker]) => ({ path, sticker })); + updateDB(db, { + "vault": { + uniques: [], + cols: ["sticker"], + rows: dbRows + } + }, "path", "path"); +}; +var mergeCurrentRanks = (db, ranks) => { + const flattenStringTreeChildren = (path, children) => { + const dbRows2 = []; + children.forEach((item, index) => { + dbRows2.push({ + path: path + item.node, + rank: index.toString() + }); + if (item.children.length > 0) { + dbRows2.push(...flattenStringTreeChildren(path + item.node + "/", item.children)); + } + }); + return dbRows2; + }; + const dbRows = flattenStringTreeChildren("", ranks.children); + updateDB(db, { + "vault": { + uniques: [], + cols: ["rank"], + rows: dbRows + } + }, "path", "path"); +}; +var mergeSpaces = (db, sectionTrees) => { + let spaces2 = []; + let spaceItems = []; + sectionTrees.forEach((space, index) => { + spaces2.push({ name: space.section, rank: index.toString() }); + spaceItems.push(...space.children.map((f4, index2) => ({ space: space.section, path: f4, rank: index2.toString() }))); + }); + insertIntoDB(db, { + "spaces": { + ...spaceSchema, + rows: spaces2 + }, + "spaceItems": { + ...spaceItemsSchema, + rows: spaceItems + } + }); +}; + // src/utils/emoji.ts var unifiedToNative = (unified) => { let unicodes = unified.split("-"); let codePoints = unicodes.map((u4) => `0x${u4}`); return String.fromCodePoint(...codePoints); }; +var saveFileIcons = (plugin, files, icon) => { + files.forEach((file) => { + saveFileSticker(plugin, file, icon); + }); +}; +var saveFileColors = (plugin, files, icon) => { + files.forEach((file) => { + saveFileColor(plugin, file, icon); + }); +}; +var saveSpaceIcon = (plugin, space, icon) => { + saveSpaceSticker(plugin, space, icon); +}; +var removeSpaceIcon = (plugin, space) => { + saveSpaceSticker(plugin, space, ""); +}; var saveFileIcon = (plugin, data, icon) => { - const fileIcons2 = plugin.settings.fileIcons; - const newFileIcons = [ - ...fileIcons2.filter((f4) => f4[0] != data.path), - [data.path, icon] - ]; - plugin.settings.fileIcons = newFileIcons; - plugin.saveSettings(); + saveFileSticker(plugin, data.path, icon); +}; +var removeFileIcons = (plugin, files) => { + files.forEach((file) => { + saveFileSticker(plugin, file, ""); + }); }; var removeFileIcon = (plugin, data) => { - const fileIcons2 = plugin.settings.fileIcons; - const newFileIcons = [...fileIcons2.filter((f4) => f4[0] != data.path)]; - plugin.settings.fileIcons = newFileIcons; - plugin.saveSettings(); + saveFileSticker(plugin, data.path, ""); }; // src/components/Spaces/TreeView/FileStickerMenu/FileStickerMenu.tsx -var import_obsidian9 = require("obsidian"); -var StickerModal = class extends import_obsidian9.FuzzySuggestModal { +var import_obsidian12 = require("obsidian"); +var StickerModal = class extends import_obsidian12.FuzzySuggestModal { constructor(app2, setIcon3) { super(app2); this.setIcon = setIcon3; @@ -41062,14 +40002,237 @@ var StickerModal = class extends import_obsidian9.FuzzySuggestModal { } }; +// src/utils/color.ts +var colors = [ + ["Red", "#eb3b5a"], + ["Orange", "#fa8231"], + ["Yellow", "#f7b731"], + ["Green", "#20bf6b"], + ["Turquoise", "#0fb9b1"], + ["Teal", "#2d98da"], + ["Blue", "#3867d6"], + ["Purple", "#8854d0"], + ["Charcoal", "#4b6584"] +]; + // src/components/ui/menus/fileMenu.tsx +var triggerSectionMenu = (plugin, spaceName, spaces2, e4) => { + const fileMenu = new import_obsidian13.Menu(); + const space = spaces2.find((f4) => f4.name == spaceName); + fileMenu.addItem((menuItem) => { + var _a2; + const pinned = ((_a2 = spaces2.find((f4) => f4.name == spaceName)) == null ? void 0 : _a2.pinned) == "true"; + if (pinned) { + menuItem.setTitle("Unpin Space"); + } else { + menuItem.setTitle("Pin Space"); + } + menuItem.setIcon("pin"); + menuItem.onClick((ev) => { + toggleSpacePin(plugin, spaceName, !pinned); + }); + }); + if (plugin.settings.spacesStickers) { + fileMenu.addSeparator(); + fileMenu.addItem((menuItem) => { + menuItem.setTitle(i18n_default.buttons.changeIcon); + menuItem.setIcon("lucide-sticker"); + menuItem.onClick((ev) => { + let vaultChangeModal = new StickerModal( + plugin.app, + (emoji) => saveSpaceIcon(plugin, spaceName, emoji) + ); + vaultChangeModal.open(); + }); + }); + fileMenu.addItem((menuItem) => { + menuItem.setTitle(i18n_default.buttons.removeIcon); + menuItem.setIcon("lucide-file-minus"); + menuItem.onClick((ev) => { + removeSpaceIcon(plugin, spaceName); + }); + }); + } + fileMenu.addSeparator(); + fileMenu.addItem((menuItem) => { + menuItem.setTitle("Collapse All"); + menuItem.setIcon("lucide-chevrons-down-up"); + menuItem.onClick((ev) => { + plugin.settings.expandedFolders = { + ...plugin.settings.expandedFolders, + [spaceName]: [] + }; + plugin.saveSettings(); + }); + }); + fileMenu.addSeparator(); + fileMenu.addItem((menuItem) => { + const sortOption = ["rank", true]; + menuItem.setTitle("Custom Sort"); + menuItem.setChecked(space.sort == JSON.stringify(sortOption) || space.sort == ""); + menuItem.onClick((ev) => { + updateSpaceSort(plugin, spaceName, sortOption); + }); + }); + fileMenu.addSeparator(); + fileMenu.addItem((menuItem) => { + const sortOption = ["path", true]; + menuItem.setTitle("File Name (A to Z)"); + menuItem.setChecked(space.sort == JSON.stringify(sortOption)); + menuItem.onClick((ev) => { + updateSpaceSort(plugin, spaceName, sortOption); + }); + }); + fileMenu.addItem((menuItem) => { + const sortOption = ["path", false]; + menuItem.setTitle("File Name (Z to A)"); + menuItem.setChecked(space.sort == JSON.stringify(sortOption)); + menuItem.onClick((ev) => { + updateSpaceSort(plugin, spaceName, sortOption); + }); + }); + fileMenu.addSeparator(); + fileMenu.addItem((menuItem) => { + const sortOption = ["created", true]; + menuItem.setTitle("Created Time (new to old)"); + menuItem.setChecked(space.sort == JSON.stringify(sortOption)); + menuItem.onClick((ev) => { + updateSpaceSort(plugin, spaceName, sortOption); + }); + }); + fileMenu.addItem((menuItem) => { + const sortOption = ["created", false]; + menuItem.setTitle("Created Time (old to new)"); + menuItem.setChecked(space.sort == JSON.stringify(sortOption)); + menuItem.onClick((ev) => { + updateSpaceSort(plugin, spaceName, sortOption); + }); + }); + fileMenu.addSeparator(); + fileMenu.addItem((menuItem) => { + menuItem.setTitle(i18n_default.menu.edit); + menuItem.setIcon("pencil"); + menuItem.onClick((ev) => { + let vaultChangeModal = new SectionChangeModal( + plugin, + space.name, + "rename" + ); + vaultChangeModal.open(); + }); + }); + fileMenu.addItem((menuItem) => { + menuItem.setTitle("Delete Space"); + menuItem.setIcon("trash"); + menuItem.onClick((ev) => { + removeSpace(plugin, space.name); + }); + }); + if (isMouseEvent(e4)) { + fileMenu.showAtPosition({ x: e4.pageX, y: e4.pageY }); + } else { + fileMenu.showAtPosition({ + x: e4.nativeEvent.locationX, + y: e4.nativeEvent.locationY + }); + } + return false; +}; +var triggerMultiFileMenu = (plugin, selectedFiles2, e4) => { + const files = selectedFiles2.map((s5) => s5.item.path); + const spaces2 = retrieveSpaces(plugin); + const spaceItems = retrieveSpaceItems(plugin, spaces2); + const fileMenu = new import_obsidian13.Menu(); + fileMenu.addSeparator(); + fileMenu.addItem((menuItem) => { + menuItem.setTitle(i18n_default.menu.spaceTitle); + menuItem.setDisabled(true); + }); + spaces2.map((f4) => { + fileMenu.addItem((menuItem) => { + const allIn = files.reduce((p3, c4) => { + var _a2; + return p3 ? (_a2 = spaceItems[f4.name]) == null ? void 0 : _a2.some((g4) => g4.path == c4) : p3; + }, true); + if (allIn) { + menuItem.setIcon("checkmark"); + menuItem.setTitle(f4.name); + } else { + menuItem.setTitle(f4.name); + menuItem.setIcon("plus"); + } + menuItem.onClick((ev) => { + if (allIn) { + removePathsFromSpace(plugin, f4.name, files); + } else { + addPathsToSpace(plugin, f4.name, files); + } + }); + }); + }); + if (plugin.settings.spacesStickers) { + fileMenu.addSeparator(); + fileMenu.addItem((menuItem) => { + menuItem.setIcon("palette"); + disclosureMenuItem(menuItem, false, false, "Change Color", "", [{ name: "None", value: "" }, ...colors.map((f4) => ({ name: f4[0], value: f4[1] }))], (_4, values) => { + saveFileColors(plugin, files, values[0]); + }); + }); + fileMenu.addItem((menuItem) => { + menuItem.setTitle(i18n_default.buttons.changeIcon); + menuItem.setIcon("lucide-sticker"); + menuItem.onClick((ev) => { + let vaultChangeModal = new StickerModal( + plugin.app, + (emoji) => saveFileIcons(plugin, files, emoji) + ); + vaultChangeModal.open(); + }); + }); + fileMenu.addItem((menuItem) => { + menuItem.setTitle(i18n_default.buttons.removeIcon); + menuItem.setIcon("lucide-file-minus"); + menuItem.onClick((ev) => { + removeFileIcons(plugin, files); + }); + }); + } + fileMenu.addSeparator(); + fileMenu.addItem((menuItem) => { + menuItem.setTitle("Delete Files"); + menuItem.setIcon("trash"); + menuItem.onClick((ev) => { + deleteFiles(plugin, files); + }); + }); + fileMenu.addItem((menuItem) => { + menuItem.setIcon("go-to-file"); + menuItem.setTitle(i18n_default.menu.openFilePane); + menuItem.onClick((ev) => { + files.forEach((file) => openAFile(getAbstractFileAtPath(app, file), app, true)); + }); + }); + if (!internalPluginLoaded("file-explorer", plugin.app)) { + fileMenu.addItem((menuItem) => { + menuItem.setTitle(i18n_default.menu.moveFile); + menuItem.setIcon("paper-plane"); + menuItem.onClick((ev) => { + let fileMoveSuggester = new MoveSuggestionModal(plugin.app, files); + fileMoveSuggester.open(); + }); + }); + } + if (isMouseEvent(e4)) { + fileMenu.showAtPosition({ x: e4.pageX, y: e4.pageY }); + } else { + fileMenu.showAtPosition({ x: e4.nativeEvent.locationX, y: e4.nativeEvent.locationY }); + } + return false; +}; var triggerFileMenu = (plugin, file, isFolder, e4) => { - const sections2 = plugin.settings.spaces; - const updateSections = (sections3) => { - plugin.settings.spaces = sections3; - plugin.saveSettings(); - }; - const fileMenu = new import_obsidian10.Menu(); + const spaces2 = retrieveSpaces(plugin); + const spaceItems = retrieveSpaceItems(plugin, spaces2); + const fileMenu = new import_obsidian13.Menu(); if (isFolder) { fileMenu.addSeparator(); fileMenu.addItem((menuItem) => { @@ -41083,7 +40246,7 @@ var triggerFileMenu = (plugin, file, isFolder, e4) => { menuItem.setIcon("folder-plus"); menuItem.setTitle(i18n_default.buttons.createFolder); menuItem.onClick((ev) => { - let vaultChangeModal = new VaultChangeModal(plugin, file, "create folder", -1); + let vaultChangeModal = new VaultChangeModal(plugin, file, "create folder", "/"); vaultChangeModal.open(); }); }); @@ -41093,33 +40256,51 @@ var triggerFileMenu = (plugin, file, isFolder, e4) => { menuItem.setTitle(i18n_default.menu.spaceTitle); menuItem.setDisabled(true); }); - sections2.map((f4, i4) => { + spaces2.map((f4, i4) => { + var _a2; + const itemExists = (_a2 = spaceItems[f4.name]) == null ? void 0 : _a2.some((g4) => g4.path == file.path); fileMenu.addItem((menuItem) => { + var _a3; menuItem.setIcon("pin"); - if (f4.children.contains(file.path)) { + if (itemExists) { menuItem.setIcon("checkmark"); - menuItem.setTitle(f4.section); + menuItem.setTitle(f4.name); + } else { + menuItem.setTitle(f4.name); + } + if (((_a3 = f4.def) == null ? void 0 : _a3.length) > 0) { + menuItem.setDisabled(true); + menuItem.setIcon("folder"); } else { - menuItem.setTitle(f4.section); menuItem.setIcon("plus"); + menuItem.onClick((ev) => { + if (!itemExists) { + insertSpaceItemAtIndex(plugin, f4.name, file.path, 0); + } else { + removePathsFromSpace(plugin, f4.name, [file.path]); + } + }); } + }); + }); + if (isFolder) { + fileMenu.addSeparator(); + fileMenu.addItem((menuItem) => { + menuItem.setTitle("Make Folder Space"); + menuItem.setIcon("plus-square"); menuItem.onClick((ev) => { - updateSections(!sections2[i4].children.contains(file.path) ? sections2.map((s5, k5) => { - return k5 == i4 ? { - ...s5, - children: [file.path, ...s5.children] - } : s5; - }) : sections2.map((s5, k5) => { - return k5 == i4 ? { - ...s5, - children: s5.children.filter((g4) => g4 != file.path) - } : s5; - })); + insertSpaceAtIndex(plugin, file.name, false, 0, file.path); }); }); - }); + } if (plugin.settings.spacesStickers) { fileMenu.addSeparator(); + fileMenu.addItem((menuItem) => { + menuItem.setIcon("palette"); + disclosureMenuItem(menuItem, false, false, "Change Color", "", [{ name: "None", value: "" }, ...colors.map((f4) => ({ name: f4[0], value: f4[1] }))], (_4, values) => { + saveFileColor(plugin, file.path, values[0]); + }); + }); fileMenu.addItem((menuItem) => { menuItem.setTitle(i18n_default.buttons.changeIcon); menuItem.setIcon("lucide-sticker"); @@ -41182,7 +40363,7 @@ var triggerFileMenu = (plugin, file, isFolder, e4) => { menuItem.setTitle(i18n_default.menu.moveFile); menuItem.setIcon("paper-plane"); menuItem.onClick((ev) => { - let fileMoveSuggester = new MoveSuggestionModal(plugin.app, file); + let fileMoveSuggester = new MoveSuggestionModal(plugin.app, [file.path]); fileMoveSuggester.open(); }); }); @@ -41197,949 +40378,4011 @@ var triggerFileMenu = (plugin, file, isFolder, e4) => { }; // src/components/FileSticker/FileSticker.tsx -init_compat_module(); -var import_obsidian11 = require("obsidian"); -var FileSticker = (props) => { - const file = getAbstractFileAtPath(app, props.filePath); - const [fileIcon, setFileIcon] = p2(null); +var FileSticker = (props2) => { + const [vaultItem, setVaultItem] = p2(vaultItemForPath(props2.plugin, props2.filePath)); + const reloadIcon = (e4) => { + if (e4.detail.changeType == "sticker") + setVaultItem(vaultItemForPath(props2.plugin, props2.filePath)); + }; + h2(() => { + if ((vaultItem == null ? void 0 : vaultItem.path) != props2.filePath) { + setVaultItem(vaultItemForPath(props2.plugin, props2.filePath)); + } + window.addEventListener(eventTypes.spacesChange, reloadIcon); + return () => { + window.removeEventListener(eventTypes.spacesChange, reloadIcon); + }; + }, [props2.filePath]); + const triggerStickerMenu = (e4) => { + e4.stopPropagation(); + let vaultChangeModal = new StickerModal(props2.plugin.app, (emoji) => saveFileSticker(props2.plugin, props2.filePath, emoji)); + vaultChangeModal.open(); + }; + const color = vaultItem == null ? void 0 : vaultItem.color; + return /* @__PURE__ */ bn.createElement("div", { + className: "mk-file-icon" + }, /* @__PURE__ */ bn.createElement("button", { + "aria-label": i18n_default.buttons.changeIcon, + style: (color == null ? void 0 : color.length) > 0 ? { + "--label-color": `${vaultItem.color}`, + "--icon-color": `#ffffff` + } : { + "--icon-color": `var(--text-muted)` + }, + dangerouslySetInnerHTML: (vaultItem == null ? void 0 : vaultItem.sticker) ? { __html: unifiedToNative(vaultItem.sticker) } : (vaultItem == null ? void 0 : vaultItem.folder) == "true" ? { __html: color ? uiIconSet["mk-ui-folder-solid"] : uiIconSet["mk-ui-folder"] } : { __html: color ? uiIconSet["mk-ui-file-solid"] : uiIconSet["mk-ui-file"] }, + onClick: (e4) => triggerStickerMenu(e4) + })); +}; + +// src/components/ContextView/DataTypeView/FileCell.tsx +var FileCell = (props2) => { + var _a2; + const fileOrCleanPath = (f4) => { + if (!f4) + return { + path: "" + }; + const isInFolder = !props2.isFolder || f4.includes(props2.folder); + const fileExists2 = getAbstractFileAtPath(app, f4); + const cleanPath = (path) => path.replace(props2.folder + "/", "").replace(".md", ""); + return isInFolder ? fileExists2 ? { path: f4, file: fileExists2 } : { path: cleanPath(f4) } : { path: f4 }; + }; + const initialValue = (props2.multi ? (_a2 = splitString(props2.initialValue)) != null ? _a2 : [] : [props2.initialValue]).map((f4) => fileOrCleanPath(f4)); + const [value, setValue] = p2(initialValue); + const ref = _2(null); + const onKeyDown = (e4) => { + e4.key == "Enter" && e4.target.blur(); + }; + const fileExists = (name) => { + if (!name) + return false; + return getAbstractFileAtPath(app, `${props2.folder}/${name}.md`) ? true : false; + }; + const onBlur = () => { + var _a3; + if (fileExists((_a3 = ref.current) == null ? void 0 : _a3.value)) { + new import_obsidian14.Notice("File Already Exists"); + } else { + props2.saveValue(ref.current.value); + } + }; + const newFile = async () => { + const filePath = ref.current.value.replace("/", "").replace(".", ""); + const path = `${props2.folder}/${filePath}.md`; + if (filePath.length == 0) + return; + if (fileExists(path)) { + new import_obsidian14.Notice("File Already Exists"); + } else { + await createNewMarkdownFile(app, getAbstractFileAtPath(app, props2.folder), filePath); + props2.saveValue(path); + } + }; + const deleteRow = () => { + props2.deleteRow(); + }; + return /* @__PURE__ */ bn.createElement("div", { + className: "mk-cell-file" + }, value.map((v3, i4) => { + var _a3; + if (!props2.editable) { + if (v3.file) { + return /* @__PURE__ */ bn.createElement("div", { + className: "mk-cell-file-title" + }, v3 ? v3.file instanceof import_obsidian14.TFile ? fileNameToString(v3.file.name) : v3.file.name : "", (v3 == null ? void 0 : v3.file) instanceof import_obsidian14.TFile && v3.file.extension != "md" && /* @__PURE__ */ bn.createElement("span", { + className: "nav-file-tag" + }, (_a3 = v3.file) == null ? void 0 : _a3.extension)); + } else { + return /* @__PURE__ */ bn.createElement("div", { + className: "mk-cell-file-title" + }, v3.path); + } + } + if (v3.file) { + return /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", { + className: "mk-cell-file-item", + onContextMenu: (e4) => triggerFileMenu(props2.plugin, v3.file, v3.file instanceof import_obsidian14.TFolder, e4) + }, /* @__PURE__ */ bn.createElement(FileSticker, { + plugin: props2.plugin, + filePath: v3.file.path + }), /* @__PURE__ */ bn.createElement("div", { + className: "mk-cell-file-name", + onClick: (e4) => openFile2({ ...v3.file, isFolder: v3.file instanceof import_obsidian14.TFolder }, app, e4.ctrlKey || e4.metaKey) + }, v3 ? v3.file instanceof import_obsidian14.TFile ? fileNameToString(v3.file.name) : v3.file.name : ""))); + } + return /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", { + className: "mk-cell-file-new mk-icon-small" + }, /* @__PURE__ */ bn.createElement("div", { + onClick: (e4) => newFile(), + className: "mk-cell-file-icon", + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-new-file"] } + }), /* @__PURE__ */ bn.createElement("input", { + className: "mk-cell-file-name", + type: "text", + ref, + value: v3.path, + onKeyDown, + onBlur + }))); + })); +}; + +// src/components/ContextView/DataTypeView/LinkCell.tsx +var LinkCell = (props2) => { + var _a2; + const initialValue = (props2.multi ? (_a2 = splitString(props2.initialValue)) != null ? _a2 : [] : [props2.initialValue]).filter((f4) => f4); + const stringValueToLink = (strings) => strings.map((f4) => { + const match2 = /\[\[(.*?)\]\]/g.exec(f4); + const stringValue = (match2 == null ? void 0 : match2.length) > 1 ? match2[1].substring(0, match2[1].indexOf("|")) : f4; + return { + label: filePathToString(stringValue), + value: stringValue + }; + }); + const resolveLinks = (links) => links.map((f4) => ({ + value: f4.value, + label: filePathToString(f4.value), + file: getFileFromString(f4.value, getFolderPathFromString2(props2.file)) + })); + const ref = _2(null); + const [value, setValue] = p2(resolveLinks(stringValueToLink(initialValue))); + const removeValue = (v3) => { + const newValues = value.filter((f4) => f4.value != v3.value); + setValue(newValues); + props2.saveValue(newValues.map((f4) => f4.value).join(",")); + }; + const saveOptions = (_4, _value) => { + if (!props2.multi) { + setValue(resolveLinks(stringValueToLink(_value))); + props2.saveValue(_value.join(",")); + } else { + const newValue = _value[0]; + if (newValue) { + const newValues = uniq([...value.map((f4) => f4.value), newValue]); + setValue(resolveLinks(stringValueToLink(newValues))); + props2.saveValue(newValues.join(",")); + } + } + }; + const showMenu = () => { + const offset = ref.current.getBoundingClientRect(); + const options = getAllAbstractFilesInVault(props2.plugin, app).map((f4) => ({ name: fileNameToString(f4.name), value: f4.path })); + const _options = !props2.multi ? [{ name: "None", value: "" }, ...options] : options; + showSelectMenu( + { x: offset.left, y: offset.top + 30 }, + { + multi: false, + editable: false, + value: value.map((f4) => f4.value), + options: _options, + saveOptions, + placeholder: "Find Note", + detail: true, + searchable: true + } + ); + }; + const openLink = async (o3) => { + if (o3.file) { + openTFile(o3.file, app, false); + } else { + const file = await app.fileManager.createNewMarkdownFile(app.vault.getRoot(), o3.value); + openTFile(file, app, false); + setValue(resolveLinks(value)); + } + }; + return /* @__PURE__ */ bn.createElement("div", { + className: "mk-cell-option", + ref + }, value.length > 0 ? value.map((o3) => /* @__PURE__ */ bn.createElement("div", { + className: "mk-cell-option-item" + }, o3.label.length > 0 ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", { + className: o3.file ? "mk-cell-link-item" : "mk-cell-link-unresolved", + onClick: () => openLink(o3) + }, o3.label), props2.editable && props2.multi ? /* @__PURE__ */ bn.createElement("div", { + className: "mk-icon-xsmall", + onClick: () => removeValue(o3), + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-close"] } + }) : /* @__PURE__ */ bn.createElement(bn.Fragment, null)) : /* @__PURE__ */ bn.createElement("div", null, "Select"), props2.editable && !props2.multi && value.length > 0 ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("span", null), /* @__PURE__ */ bn.createElement("div", { + onClick: () => props2.editable && !props2.multi && showMenu(), + className: "mk-cell-option-select mk-icon-xxsmall mk-icon-rotated", + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-collapse-sm"] } + })) : /* @__PURE__ */ bn.createElement(bn.Fragment, null))) : props2.editable && !props2.multi ? /* @__PURE__ */ bn.createElement("div", { + className: "mk-cell-option-item" + }, /* @__PURE__ */ bn.createElement("div", { + onClick: () => props2.editable && !props2.multi && showMenu() + }, "Select")) : /* @__PURE__ */ bn.createElement(bn.Fragment, null), props2.editable && props2.multi ? /* @__PURE__ */ bn.createElement("div", { + onClick: () => props2.editable && showMenu(), + className: "mk-cell-option-new mk-icon-small", + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-plus"] } + }) : /* @__PURE__ */ bn.createElement(bn.Fragment, null)); + return /* @__PURE__ */ bn.createElement("div", { + className: "mk-cell-option", + ref, + onClick: () => props2.editable && !props2.multi && showMenu() + }, value.length > 0 ? value.map((o3) => /* @__PURE__ */ bn.createElement("div", { + className: o3.file ? "mk-cell-link-item" : "mk-cell-link-unresolved", + onClick: () => openLink(o3) + }, o3.value.length > 0 ? o3.value : "Select")) : "", props2.editable && props2.multi && /* @__PURE__ */ bn.createElement("div", { + onClick: () => props2.editable && showMenu(), + className: "mk-cell-option-new mk-icon-small", + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-plus"] } + })); +}; + +// src/components/ContextView/DataTypeView/PreviewCell.tsx +var PreviewCell = (props2) => { + const [vaultItem, setVaultItem] = p2(null); const loadIcon = () => { - setFileIcon(window.make.settings.fileIcons.find(([path, icon]) => path == (file == null ? void 0 : file.path))); + setVaultItem(vaultItemForPath(props2.plugin, props2.file)); }; h2(() => { loadIcon(); - window.addEventListener(eventTypes.settingsChanged, loadIcon); + window.addEventListener(eventTypes.spacesChange, loadIcon); return () => { - window.removeEventListener(eventTypes.settingsChanged, loadIcon); + window.removeEventListener(eventTypes.spacesChange, loadIcon); }; - }, [file]); - const triggerStickerMenu = () => { - let vaultChangeModal = new StickerModal(window.make.app, (emoji) => saveFileIcon(window.make, file, emoji)); - vaultChangeModal.open(); + }, [props2.file]); + return /* @__PURE__ */ bn.createElement("div", { + className: "mk-file-preview", + style: (vaultItem == null ? void 0 : vaultItem.color.length) > 0 ? { + "--label-color": `${vaultItem.color}`, + "--icon-color": `#ffffff` + } : { + "--label-color": `var(--background-secondary)`, + "--icon-color": `var(--text-muted)` + } + }, /* @__PURE__ */ bn.createElement("div", { + className: "mk-file-icon", + dangerouslySetInnerHTML: (vaultItem == null ? void 0 : vaultItem.sticker) ? { __html: unifiedToNative(vaultItem.sticker) } : (vaultItem == null ? void 0 : vaultItem.folder) == "true" ? { __html: uiIconSet["mk-ui-folder"] } : { __html: uiIconSet["mk-ui-file"] } + })); +}; + +// src/components/ContextView/DataTypeView/DataTypeView.tsx +var fieldTypes = [ + { + type: "unknown", + label: "", + restricted: true + }, + { + type: "preview", + label: "Preview", + restricted: true + }, + { + type: "text", + label: "Text" + }, + { + type: "number", + label: "Number" + }, + { + type: "boolean", + label: "Yes/No" + }, + { + type: "date", + label: "Date" + }, + { + type: "option", + label: "Option", + multi: true, + multiType: "option-multi" + }, + { + type: "file", + label: "File", + restricted: true + }, + { + type: "fileprop", + label: "File Property" + }, + { + type: "link", + label: "Link", + multi: true, + multiType: "link-multi" + }, + { + type: "context", + label: "Context", + multi: true, + multiType: "context-multi" + } +]; +var DataTypeView = (props2) => { + const { initialValue, index, column, file } = props2; + const { tableData, saveDB: saveDB2, saveContextDB, contextTable } = q2(MDBContext); + const table = column.table; + const updateData = (column2, value) => { + if (table == "") { + saveDB2({ + ...tableData, + rows: tableData.rows.map((r3, i4) => i4 == index ? { + ...r3, + [column2]: value + } : r3) + }); + } else if (contextTable[table]) { + saveContextDB({ + ...contextTable[table], + rows: contextTable[table].rows.map((r3, i4) => i4 == index ? { + ...r3, + [column2]: value + } : r3) + }, table); + } }; + const updateFieldValue = (column2, fieldValue, value) => { + if (table == "") { + const newTable = { + ...tableData, + cols: tableData.cols.map((m5) => m5.name == column2 ? { + ...m5, + value: fieldValue + } : m5), + rows: tableData.rows.map((r3, i4) => i4 == index ? { + ...r3, + [column2]: value + } : r3) + }; + saveDB2(newTable); + } else if (contextTable[table]) { + saveContextDB({ + ...contextTable[table], + cols: contextTable[table].cols.map((m5) => m5.name == column2 ? { + ...m5, + value: fieldValue + } : m5), + rows: contextTable[table].rows.map((r3, i4) => i4 == index ? { + ...r3, + [column2]: value + } : r3) + }, table); + } + }; + const saveValue = (value) => { + updateData(column.name, value); + }; + const saveFieldValue = (fieldValue, value) => { + updateFieldValue(column.name, fieldValue, value); + }; + const viewProps = { + initialValue, + saveValue, + editable: props2.editable, + plugin: props2.plugin + }; + const fieldType = fieldTypes.find((t4) => column.type == t4.type) || fieldTypes.find((t4) => column.type == t4.multiType); + if (!fieldType) { + return /* @__PURE__ */ bn.createElement(bn.Fragment, null); + } + if (fieldType.type == "preview") { + return /* @__PURE__ */ bn.createElement(PreviewCell, { + ...viewProps, + file + }); + } else if (fieldType.type == "file") { + return /* @__PURE__ */ bn.createElement(FileCell, { + isFolder: false, + ...viewProps, + multi: fieldType.multiType == column.type + }); + } else if (fieldType.type == "boolean") { + return /* @__PURE__ */ bn.createElement(BooleanCell, { + ...viewProps, + column + }); + } else if (fieldType.type == "option") { + return /* @__PURE__ */ bn.createElement(OptionCell, { + ...viewProps, + options: column.value, + multi: fieldType.multiType == column.type, + saveOptions: saveFieldValue + }); + } else if (fieldType.type == "date") { + return /* @__PURE__ */ bn.createElement(DateCell, { + ...viewProps + }); + } else if (fieldType.type == "context") { + return /* @__PURE__ */ bn.createElement(ContextCell, { + ...viewProps, + multi: fieldType.multiType == column.type, + contextTable: contextTable[column.value], + contextTag: column.value + }); + } else if (fieldType.type == "fileprop") { + return /* @__PURE__ */ bn.createElement(FilePropertyCell, { + ...viewProps, + property: column.value, + file + }); + } else if (fieldType.type == "number") { + return /* @__PURE__ */ bn.createElement(NumberCell, { + ...viewProps + }); + } else if (fieldType.type == "link") { + return /* @__PURE__ */ bn.createElement(LinkCell, { + ...viewProps, + multi: fieldType.multiType == column.type, + file + }); + } + return /* @__PURE__ */ bn.createElement(TextCell, { + ...viewProps + }); +}; + +// src/components/ContextView/CardsView/KanbanColumn.tsx +var KanbanColumn = k3( + ({ + id: id2, + children, + columns = 1, + handleProps, + horizontal, + hover, + onClick, + onRemove, + plugin, + field, + label, + file, + placeholder: placeholder2, + style, + scrollable, + shadow, + unstyled, + ...props2 + }, ref) => { + const Component3 = "div"; + return /* @__PURE__ */ bn.createElement(Component3, { + ...props2, + ref, + style: { + ...style, + "--columns": columns + }, + className: (0, import_classnames.default)( + "mk-list-group", + unstyled && "unstyled", + horizontal && "horizontal", + hover && "hover", + placeholder2 && "placeholder", + scrollable && "scrollable", + shadow && "shadow" + ), + onClick, + tabIndex: onClick ? 0 : void 0 + }, label != null && field ? /* @__PURE__ */ bn.createElement("div", { + className: "mk-list-group-header" + }, /* @__PURE__ */ bn.createElement(DataTypeView, { + initialValue: label, + plugin, + index: parseInt(id2) * -1, + file, + column: field, + editable: false + }), /* @__PURE__ */ bn.createElement("div", { + className: "Actions", + ...handleProps + })) : null, placeholder2 ? children : /* @__PURE__ */ bn.createElement("ul", null, children)); + } +); + +// src/components/ContextView/CardsView/KanbanCard.tsx +var import_classnames2 = __toESM(require_classnames()); +var KanbanCard = bn.memo( + bn.forwardRef( + ({ + color, + dragOverlay, + dragging, + disabled, + fadeIn, + handle, + height, + index, + listeners, + selected, + onSelect, + onRemove, + renderItem, + plugin, + id: id2, + sorting, + style, + transition, + transform, + value, + cols, + wrapperStyle, + ...props2 + }, ref) => { + const onClickHandler = (e4) => { + if (!onSelect) { + return; + } + if (e4.detail === 1) { + onSelect(e4.shiftKey ? 1 : e4.metaKey ? 2 : 0, value["_index"]); + } else if (e4.detail === 2) { + onSelect(3, value["_index"]); + } + }; + h2(() => { + if (!dragOverlay) { + return; + } + document.body.style.cursor = "grabbing"; + return () => { + document.body.style.cursor = ""; + }; + }, [dragOverlay]); + return renderItem ? renderItem({ + dragOverlay: Boolean(dragOverlay), + dragging: Boolean(dragging), + sorting: Boolean(sorting), + index, + fadeIn: Boolean(fadeIn), + listeners, + ref, + style, + transform, + transition, + value + }) : /* @__PURE__ */ bn.createElement("li", { + className: (0, import_classnames2.default)( + "mk-list-item", + fadeIn && "fadeIn", + sorting && "sorting", + dragOverlay && "dragOverlay", + selected && "mk-is-active" + ), + style: { + ...wrapperStyle, + transition, + "--translate-x": transform ? `${Math.round(transform.x)}px` : void 0, + "--translate-y": transform ? `${Math.round(transform.y)}px` : void 0, + "--scale-x": (transform == null ? void 0 : transform.scaleX) ? `${transform.scaleX}` : void 0, + "--scale-y": (transform == null ? void 0 : transform.scaleY) ? `${transform.scaleY}` : void 0, + "--index": index, + "--color": color + }, + ref + }, value && cols.filter((f4) => f4.type == "preview").map((f4) => /* @__PURE__ */ bn.createElement(DataTypeView, { + plugin, + initialValue: value[f4.name + f4.table], + column: f4, + index: parseInt(id2), + file: value["File"], + editable: false + })), /* @__PURE__ */ bn.createElement("div", { + className: (0, import_classnames2.default)( + "mk-list-fields", + dragging && "dragging", + handle && "withHandle", + dragOverlay && "dragOverlay", + disabled && "disabled", + color && "color" + ), + style, + "data-cypress": "draggable-item", + ...listeners, + ...props2, + tabIndex: !handle ? 0 : void 0, + onClick: onClickHandler + }, value && cols.map((f4) => { + var _a2; + return ((_a2 = value[f4.name + f4.table]) == null ? void 0 : _a2.length) > 0 || f4.type == "fileprop" ? /* @__PURE__ */ bn.createElement(DataTypeView, { + plugin, + initialValue: value[f4.name + f4.table], + column: f4, + index: parseInt(id2), + file: value["File"], + editable: false + }) : /* @__PURE__ */ bn.createElement(bn.Fragment, null); + }), /* @__PURE__ */ bn.createElement("span", { + className: "Actions" + }))); + } + ) +); + +// src/components/ContextView/CardsView/CardsView.tsx +var import_classnames3 = __toESM(require_classnames()); +var animateLayoutChanges = (args) => args.isSorting || args.wasDragging ? defaultAnimateLayoutChanges(args) : true; +function DroppableContainer({ + children, + columns = 1, + disabled, + id: id2, + items, + style, + ...props2 +}) { + var _a2; + const { + active, + attributes, + isDragging, + listeners, + over, + setNodeRef, + transition, + transform + } = useSortable({ + id: id2, + data: { + type: "container" + }, + animateLayoutChanges + }); + const isOverContainer = over ? id2 === over.id && ((_a2 = active == null ? void 0 : active.data.current) == null ? void 0 : _a2.type) !== "container" || items.includes(over.id) : false; + return /* @__PURE__ */ bn.createElement(KanbanColumn, { + id: id2, + ref: disabled ? void 0 : setNodeRef, + style: { + ...style, + transition, + transform: CSS.Translate.toString(transform), + opacity: isDragging ? 0.5 : void 0 + }, + hover: isOverContainer, + handleProps: { + ...attributes, + ...listeners + }, + columns, + ...props2 + }, children); +} +var PLACEHOLDER_ID = "placeholder"; +var CardsView = ({ + adjustScale: adjustScale2 = false, + itemCount = 3, + cancelDrop, + columns, + handle = false, + items: initialItems, + containerStyle, + getItemStyles = () => ({}), + wrapperStyle = () => ({}), + minimal = false, + modifiers, + renderItem, + strategy = verticalListSortingStrategy, + vertical = false, + scrollable, + plugin +}) => { + var _a2, _b2; + const { tableData, filteredData, selectedRows, setSelectedRows, sortedColumns: cols, predicate, tagContexts, contextTable, schema, saveDB: saveDB2, saveContextDB } = q2(MDBContext); + const groupBy2 = ((_a2 = predicate.groupBy) == null ? void 0 : _a2.length) > 0 ? cols.find((f4) => f4.name + f4.table == predicate.groupBy[0]) : null; + const displayCols = (_b2 = cols == null ? void 0 : cols.filter((f4) => !(f4.name == (groupBy2 == null ? void 0 : groupBy2.name) && f4.table == groupBy2.table))) != null ? _b2 : []; + const viewType = schema.type; + const items = F(() => { + var _a3, _b3; + if (groupBy2) { + const options = uniq([ + "", + ...(_a3 = splitString(groupBy2.value)) != null ? _a3 : [], + ...filteredData.reduce((p3, c4) => { + var _a4; + return [...p3, (_a4 = c4[groupBy2.name + groupBy2.table]) != null ? _a4 : ""]; + }, []) + ]); + return options.reduce((p3, c4) => { + return { ...p3, [c4]: filteredData.filter((r3) => r3[groupBy2.name + groupBy2.table] == c4).map((r3) => r3._index) }; + }, { "": [] }); + } + return { + "": (_b3 = filteredData == null ? void 0 : filteredData.map((r3) => r3._index)) != null ? _b3 : [] + }; + }, [filteredData, predicate]); + const containers = F(() => Object.keys(items).map((f4, i4) => "-" + i4.toString()), [items]); + const [activeId, setActiveId] = p2(null); + const [overId, setOverId] = p2(null); + const recentlyMovedToNewContainer = _2(false); + const isSortingContainer = activeId ? containers.includes(activeId) : false; + const sensors = useSensors( + useSensor(MouseSensor, { + activationConstraint: { + distance: 10 + } + }), + useSensor(TouchSensor, { + activationConstraint: { + delay: 250, + tolerance: 5 + } + }), + useSensor(KeyboardSensor, { + coordinateGetter: sortableKeyboardCoordinates + }) + ); + const findContainer = (id2) => { + if (id2.charAt(0) == "-") { + return id2; + } + return "-" + Object.keys(items).findIndex((key2) => items[key2].includes(id2)).toString(); + }; + const getIndex = (id2) => { + const container = findContainer(id2); + if (!container) { + return -1; + } + const index = items[Object.keys(items)[parseInt(container) * -1]].indexOf(id2); + return index; + }; + const resetState = () => { + setActiveId(null); + setOverId(null); + }; + const onDragCancel = () => { + resetState(); + }; + h2(() => { + requestAnimationFrame(() => { + recentlyMovedToNewContainer.current = false; + }); + }, [items]); + const saveFieldValue = (table, fieldValue, column) => { + if (table == "") { + const newTable = { + ...tableData, + cols: tableData.cols.map((m5) => m5.name == column ? { + ...m5, + value: fieldValue + } : m5) + }; + saveDB2(newTable); + } else if (contextTable[table]) { + saveContextDB({ + ...contextTable[table], + cols: contextTable[table].cols.map((m5) => m5.name == column ? { + ...m5, + value: fieldValue + } : m5) + }, table); + } + }; + const saveValue = (table, value, index, column) => { + if (table == "") { + const newTable = { + ...tableData, + rows: tableData.rows.map((r3, i4) => i4 == index ? { + ...r3, + [column]: value + } : r3) + }; + saveDB2(newTable); + } else if (contextTable[table]) { + saveContextDB({ + ...contextTable[table], + rows: contextTable[table].rows.map((r3, i4) => i4 == index ? { + ...r3, + [column]: value + } : r3) + }, table); + } + }; + const selectItem = (modifier, index) => { + if (modifier == 3 || true) { + const file = getAbstractFileAtPath(app, tableData.rows[parseInt(index)].File); + if (file) + openAFile(file, app, false); + return; + } + if (modifier == 2) { + setSelectedRows((s5) => uniq([...s5, index])); + } else { + setSelectedRows((s5) => [index]); + } + }; + return /* @__PURE__ */ bn.createElement(DndContext, { + sensors, + collisionDetection: closestCenter, + measuring: { + droppable: { + strategy: MeasuringStrategy.Always + } + }, + onDragStart: ({ active }) => { + setActiveId(active.id); + }, + onDragOver: ({ active, over }) => { + const overId2 = over == null ? void 0 : over.id; + if (overId2) + setOverId(overId2); + }, + onDragEnd: ({ active, over }) => { + if (active.id in items && (over == null ? void 0 : over.id)) { + return; + } + const activeContainer = findContainer(active.id); + if (!activeContainer) { + resetState(); + return; + } + const overId2 = over == null ? void 0 : over.id; + if (!overId2) { + resetState(); + return; + } + if (overId2 === PLACEHOLDER_ID) { + return; + } + const overContainer = findContainer(overId2); + if (overContainer) { + const activeIndex = items[Object.keys(items)[parseInt(activeContainer) * -1]].indexOf(active.id); + const overIndex = items[Object.keys(items)[parseInt(overContainer) * -1]].indexOf(overId2); + if (activeContainer != overContainer) { + saveValue( + groupBy2.table, + Object.keys(items)[parseInt(overContainer) * -1], + groupBy2.table == "" ? parseInt(activeId) : parseInt(filteredData.find((f4) => f4._index == activeId)["_index" + groupBy2.table]), + groupBy2.name + ); + } + } + resetState(); + }, + cancelDrop, + onDragCancel, + modifiers + }, /* @__PURE__ */ bn.createElement("div", { + className: (0, import_classnames3.default)(viewType == "card" ? "mk-cards-container" : "mk-list-container", viewType == "card" && containers.length == 1 && "mk-cards-grid") + }, /* @__PURE__ */ bn.createElement("div", { + className: "mk-list-view" + }, /* @__PURE__ */ bn.createElement(SortableContext, { + items: [...containers, PLACEHOLDER_ID], + strategy: vertical ? verticalListSortingStrategy : horizontalListSortingStrategy + }, containers.map((containerId) => /* @__PURE__ */ bn.createElement(DroppableContainer, { + key: containerId, + id: containerId, + plugin, + label: minimal ? void 0 : `${Object.keys(items)[parseInt(containerId) * -1]}`, + field: groupBy2, + columns, + items: items[Object.keys(items)[parseInt(containerId) * -1]], + scrollable, + style: containerStyle, + unstyled: minimal + }, /* @__PURE__ */ bn.createElement(SortableContext, { + items: items[Object.keys(items)[parseInt(containerId) * -1]], + strategy + }, items[Object.keys(items)[parseInt(containerId) * -1]].map((value, index) => { + return /* @__PURE__ */ bn.createElement(SortableItem, { + disabled: isSortingContainer, + key: value, + id: value, + plugin, + value: filteredData.find((f4) => f4._index == value), + cols: displayCols, + index, + handle, + style: getItemStyles, + wrapperStyle, + renderItem, + onSelect: selectItem, + selected: selectedRows == null ? void 0 : selectedRows.some((f4) => f4 == value), + containerId, + getIndex + }); + }))))))), j3( + /* @__PURE__ */ bn.createElement(DragOverlay, { + adjustScale: adjustScale2 + }, activeId ? containers.includes(activeId) ? renderContainerDragOverlay(activeId) : renderSortableItemDragOverlay(activeId) : null), + document.body + )); + function renderSortableItemDragOverlay(id2) { + return /* @__PURE__ */ bn.createElement("div", { + className: viewType == "card" ? "mk-cards-container" : "mk-list-container" + }, /* @__PURE__ */ bn.createElement(KanbanCard, { + plugin, + value: filteredData.find((f4) => f4._index == id2), + handle, + id: id2, + cols: displayCols, + style: getItemStyles({ + containerId: findContainer(id2), + overIndex: -1, + index: getIndex(id2), + value: id2, + isSorting: true, + isDragging: true, + isDragOverlay: true + }), + color: getColor(id2), + wrapperStyle: wrapperStyle({ index: 0 }), + renderItem, + dragOverlay: true + })); + } + function renderContainerDragOverlay(containerId) { + return /* @__PURE__ */ bn.createElement(KanbanColumn, { + id: containerId, + plugin, + label: `Column ${containerId}`, + field: groupBy2, + columns, + style: { + height: "100%" + }, + shadow: true, + unstyled: false + }, items[Object.keys(items)[parseInt(containerId) * -1]].map((item, index) => /* @__PURE__ */ bn.createElement(KanbanCard, { + key: item, + id: item, + plugin, + value: filteredData.find((f4) => f4._index == item), + cols: displayCols, + handle, + style: getItemStyles({ + containerId, + overIndex: -1, + index: getIndex(item), + value: item, + isDragging: false, + isSorting: false, + isDragOverlay: false + }), + color: getColor(item), + selected: selectedRows.some((f4) => f4 == item), + onSelect: selectItem, + wrapperStyle: wrapperStyle({ index }), + renderItem + }))); + } + function getNextContainerId() { + const containeIds = Object.keys(items); + const lastContaineId = containeIds[containeIds.length - 1]; + return String.fromCharCode(lastContaineId.charCodeAt(0) + 1); + } +}; +function getColor(id2) { + switch (id2[0]) { + case "A": + return "#7193f1"; + case "B": + return "#ffda6c"; + case "C": + return "#00bcd4"; + case "D": + return "#ef769f"; + } + return void 0; +} +function SortableItem({ + disabled, + id: id2, + plugin, + index, + handle, + renderItem, + style, + containerId, + onSelect, + selected, + getIndex, + cols, + value, + wrapperStyle +}) { + const { + setNodeRef, + listeners, + isDragging, + isSorting, + over, + overIndex, + transform, + transition + } = useSortable({ + id: id2 + }); + const mounted = useMountStatus(); + const mountedWhileDragging = isDragging && !mounted; + return /* @__PURE__ */ bn.createElement(KanbanCard, { + ref: disabled ? void 0 : setNodeRef, + value, + plugin, + id: id2, + cols, + dragging: isDragging, + sorting: isSorting, + handle, + index, + wrapperStyle: wrapperStyle({ index }), + style: style({ + index, + value: id2, + isDragging, + isSorting, + overIndex: over ? getIndex(over.id) : overIndex, + containerId + }), + onSelect, + selected, + color: getColor(id2), + transition, + transform, + fadeIn: mountedWhileDragging, + listeners, + renderItem + }); +} +function useMountStatus() { + const [isMounted, setIsMounted] = p2(false); + h2(() => { + const timeout = setTimeout(() => setIsMounted(true), 500); + return () => clearTimeout(timeout); + }, []); + return isMounted; +} + +// src/components/FlowEditor/FlowView.tsx +var FlowView = (props2) => { + const ref = _2(null); + const loadFile = () => { + const div = ref.current; + spawnLeafFromFile(props2.plugin, props2.path, div); + }; + const toggleFlow = () => { + if (props2.load) { + loadFile(); + } else { + ref.current.empty(); + } + }; + h2(() => { + toggleFlow(); + }, [props2.load, props2.path]); return /* @__PURE__ */ bn.createElement("div", { - className: "mk-file-icon" - }, /* @__PURE__ */ bn.createElement("button", { - "aria-label": i18n_default.buttons.changeIcon, - dangerouslySetInnerHTML: fileIcon ? { __html: unifiedToNative(fileIcon[1]) } : file instanceof import_obsidian11.TFolder ? { __html: uiIconSet["mk-ui-folder"] } : { __html: uiIconSet["mk-ui-file"] }, - onClick: (e4) => triggerStickerMenu() - })); + className: "mk-flowspace-editor", + ref + }); }; -// src/components/ContextView/DataTypeView/FileCell.tsx -var FileCell = (props) => { - var _a2; - const fileOrCleanPath = (f4) => { - if (!f4) +// src/components/ContextView/FlowListView/FlowListView.tsx +var import_obsidian15 = require("obsidian"); +var FlowListView = (props2) => { + const { tableData, sortedColumns: cols, filteredData: data, tagContexts, folderPath, saveSchema, searchString, dbSchema, contextTable, setContextTable, predicate, savePredicate, saveDB: saveDB2, saveContextDB, schema, dbPath, saveColumn, delColumn, newColumn, isFolderContext } = q2(MDBContext); + const flowItems = F(() => { + return data.map((f4) => getAbstractFileAtPath(app, f4.File)).filter((f4) => f4 instanceof import_obsidian15.TFile && f4.extension == "md"); + }, [data]); + return /* @__PURE__ */ bn.createElement("div", { + className: "mk-flow-container" + }, flowItems.map((f4) => /* @__PURE__ */ bn.createElement("div", null, /* @__PURE__ */ bn.createElement("span", null, fileNameToString(f4.name)), /* @__PURE__ */ bn.createElement(FlowView, { + plugin: props2.plugin, + path: f4.path, + load: true + })))); +}; + +// node_modules/@tanstack/table-core/build/lib/index.mjs +function functionalUpdate(updater, input) { + return typeof updater === "function" ? updater(input) : updater; +} +function makeStateUpdater(key2, instance) { + return (updater) => { + instance.setState((old) => { return { - path: "" + ...old, + [key2]: functionalUpdate(updater, old[key2]) }; - const isInFolder = !props.isFolder || f4.includes(props.folder); - const fileExists2 = getAbstractFileAtPath(app, f4); - const cleanPath = (path) => path.replace(props.folder + "/", "").replace(".md", ""); - return isInFolder ? fileExists2 ? { path: f4, file: fileExists2 } : { path: cleanPath(f4) } : { path: f4 }; - }; - const initialValue = (props.multi ? (_a2 = props.initialValue.match(/(\\.|[^,])+/g)) != null ? _a2 : [] : [props.initialValue]).map((f4) => fileOrCleanPath(f4)); - const [value, setValue] = p2(initialValue); - const ref = _2(null); - const onKeyDown = (e4) => { - e4.key == "Enter" && e4.target.blur(); + }); }; - const fileExists = (name) => { - if (!name) - return false; - return getAbstractFileAtPath(app, `${props.folder}/${name}.md`) ? true : false; +} +function isFunction(d5) { + return d5 instanceof Function; +} +function flattenBy(arr, getChildren) { + const flat = []; + const recurse = (subArr) => { + subArr.forEach((item) => { + flat.push(item); + const children = getChildren(item); + if (children == null ? void 0 : children.length) { + recurse(children); + } + }); }; - const onBlur = () => { - if (fileExists(ref.current.value)) { - new import_obsidian12.Notice("File Already Exists"); - } else { - props.saveValue(ref.current.value); + recurse(arr); + return flat; +} +function memo(getDeps, fn2, opts) { + let deps = []; + let result; + return () => { + var _a2; + let depTime; + if (opts.key && opts.debug) + depTime = Date.now(); + const newDeps = getDeps(); + const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep); + if (!depsChanged) { + return result; + } + deps = newDeps; + let resultTime; + if (opts.key && opts.debug) + resultTime = Date.now(); + result = fn2(...newDeps); + (_a2 = opts == null ? void 0 : opts.onChange) == null ? void 0 : _a2.call(opts, result); + if (opts.key && opts.debug) { + if (opts == null ? void 0 : opts.debug()) { + const depEndTime = Math.round((Date.now() - depTime) * 100) / 100; + const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100; + const resultFpsPercentage = resultEndTime / 16; + const pad = (str, num) => { + str = String(str); + while (str.length < num) { + str = " " + str; + } + return str; + }; + console.info(`%c\u23F1 ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, ` + font-size: .6rem; + font-weight: bold; + color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key); + } } + return result; }; - const newFile = async () => { - const filePath = ref.current.value.replace("/", "").replace(".", ""); - const path = `${props.folder}/${filePath}.md`; - if (filePath.length == 0) - return; - if (fileExists(path)) { - new import_obsidian12.Notice("File Already Exists"); +} +function createColumn(table, columnDef, depth, parent) { + var _ref, _resolvedColumnDef$id; + const defaultColumn = table._getDefaultColumnDef(); + const resolvedColumnDef = { + ...defaultColumn, + ...columnDef + }; + const accessorKey = resolvedColumnDef.accessorKey; + let id2 = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? accessorKey.replace(".", "_") : void 0) != null ? _ref : typeof resolvedColumnDef.header === "string" ? resolvedColumnDef.header : void 0; + let accessorFn; + if (resolvedColumnDef.accessorFn) { + accessorFn = resolvedColumnDef.accessorFn; + } else if (accessorKey) { + if (accessorKey.includes(".")) { + accessorFn = (originalRow) => { + let result = originalRow; + for (const key2 of accessorKey.split(".")) { + result = result[key2]; + if (result === void 0) { + throw new Error(`"${key2}" in deeply nested key "${accessorKey}" returned undefined.`); + } + } + return result; + }; } else { - await createNewMarkdownFile2(app, getAbstractFileAtPath(app, props.folder), filePath); - props.saveValue(path); + accessorFn = (originalRow) => originalRow[resolvedColumnDef.accessorKey]; + } + } + if (!id2) { + if (true) { + throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`); } + throw new Error(); + } + let column = { + id: `${String(id2)}`, + accessorFn, + parent, + depth, + columnDef: resolvedColumnDef, + columns: [], + getFlatColumns: memo(() => [true], () => { + var _a2; + return [column, ...(_a2 = column.columns) == null ? void 0 : _a2.flatMap((d5) => d5.getFlatColumns())]; + }, { + key: false, + debug: () => { + var _table$options$debugA; + return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugColumns; + } + }), + getLeafColumns: memo(() => [table._getOrderColumnsFn()], (orderColumns2) => { + var _a2; + if ((_a2 = column.columns) == null ? void 0 : _a2.length) { + let leafColumns = column.columns.flatMap((column2) => column2.getLeafColumns()); + return orderColumns2(leafColumns); + } + return [column]; + }, { + key: false, + debug: () => { + var _table$options$debugA2; + return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugColumns; + } + }) }; - const deleteRow = () => { - props.deleteRow(); + column = table._features.reduce((obj, feature) => { + var _a2; + return Object.assign(obj, (_a2 = feature.createColumn) == null ? void 0 : _a2.call(feature, column, table)); + }, column); + return column; +} +function createHeader(table, column, options) { + var _options$id; + const id2 = (_options$id = options.id) != null ? _options$id : column.id; + let header = { + id: id2, + column, + index: options.index, + isPlaceholder: !!options.isPlaceholder, + placeholderId: options.placeholderId, + depth: options.depth, + subHeaders: [], + colSpan: 0, + rowSpan: 0, + headerGroup: null, + getLeafHeaders: () => { + const leafHeaders = []; + const recurseHeader = (h5) => { + if (h5.subHeaders && h5.subHeaders.length) { + h5.subHeaders.map(recurseHeader); + } + leafHeaders.push(h5); + }; + recurseHeader(header); + return leafHeaders; + }, + getContext: () => ({ + table, + header, + column + }) }; - const showMenu = (e4) => { - const menu = new import_obsidian12.Menu(); - menu.addItem((item) => { - item.setTitle("Create Note"); - }); - menu.addItem((item) => { - item.setTitle("Delete Row"); - item.onClick(() => { - deleteRow(); - }); - }); - if (isMouseEvent(e4)) { - menu.showAtPosition({ x: e4.pageX, y: e4.pageY }); - } else { - menu.showAtPosition({ x: e4.nativeEvent.locationX, y: e4.nativeEvent.locationY }); - } + table._features.forEach((feature) => { + var _a2; + Object.assign(header, (_a2 = feature.createHeader) == null ? void 0 : _a2.call(feature, header, table)); + }); + return header; +} +var Headers = { + createTable: (table) => { + return { + getHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => { + var _left$map$filter, _right$map$filter; + const leftColumns = (_left$map$filter = left == null ? void 0 : left.map((columnId) => leafColumns.find((d5) => d5.id === columnId)).filter(Boolean)) != null ? _left$map$filter : []; + const rightColumns = (_right$map$filter = right == null ? void 0 : right.map((columnId) => leafColumns.find((d5) => d5.id === columnId)).filter(Boolean)) != null ? _right$map$filter : []; + const centerColumns = leafColumns.filter((column) => !(left == null ? void 0 : left.includes(column.id)) && !(right == null ? void 0 : right.includes(column.id))); + const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table); + return headerGroups; + }, { + key: "getHeaderGroups", + debug: () => { + var _table$options$debugA; + return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugHeaders; + } + }), + getCenterHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => { + leafColumns = leafColumns.filter((column) => !(left == null ? void 0 : left.includes(column.id)) && !(right == null ? void 0 : right.includes(column.id))); + return buildHeaderGroups(allColumns, leafColumns, table, "center"); + }, { + key: "getCenterHeaderGroups", + debug: () => { + var _table$options$debugA2; + return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugHeaders; + } + }), + getLeftHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => { + var _left$map$filter2; + const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map((columnId) => leafColumns.find((d5) => d5.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : []; + return buildHeaderGroups(allColumns, orderedLeafColumns, table, "left"); + }, { + key: "getLeftHeaderGroups", + debug: () => { + var _table$options$debugA3; + return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugHeaders; + } + }), + getRightHeaderGroups: memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => { + var _right$map$filter2; + const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map((columnId) => leafColumns.find((d5) => d5.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : []; + return buildHeaderGroups(allColumns, orderedLeafColumns, table, "right"); + }, { + key: "getRightHeaderGroups", + debug: () => { + var _table$options$debugA4; + return (_table$options$debugA4 = table.options.debugAll) != null ? _table$options$debugA4 : table.options.debugHeaders; + } + }), + getFooterGroups: memo(() => [table.getHeaderGroups()], (headerGroups) => { + return [...headerGroups].reverse(); + }, { + key: "getFooterGroups", + debug: () => { + var _table$options$debugA5; + return (_table$options$debugA5 = table.options.debugAll) != null ? _table$options$debugA5 : table.options.debugHeaders; + } + }), + getLeftFooterGroups: memo(() => [table.getLeftHeaderGroups()], (headerGroups) => { + return [...headerGroups].reverse(); + }, { + key: "getLeftFooterGroups", + debug: () => { + var _table$options$debugA6; + return (_table$options$debugA6 = table.options.debugAll) != null ? _table$options$debugA6 : table.options.debugHeaders; + } + }), + getCenterFooterGroups: memo(() => [table.getCenterHeaderGroups()], (headerGroups) => { + return [...headerGroups].reverse(); + }, { + key: "getCenterFooterGroups", + debug: () => { + var _table$options$debugA7; + return (_table$options$debugA7 = table.options.debugAll) != null ? _table$options$debugA7 : table.options.debugHeaders; + } + }), + getRightFooterGroups: memo(() => [table.getRightHeaderGroups()], (headerGroups) => { + return [...headerGroups].reverse(); + }, { + key: "getRightFooterGroups", + debug: () => { + var _table$options$debugA8; + return (_table$options$debugA8 = table.options.debugAll) != null ? _table$options$debugA8 : table.options.debugHeaders; + } + }), + getFlatHeaders: memo(() => [table.getHeaderGroups()], (headerGroups) => { + return headerGroups.map((headerGroup) => { + return headerGroup.headers; + }).flat(); + }, { + key: "getFlatHeaders", + debug: () => { + var _table$options$debugA9; + return (_table$options$debugA9 = table.options.debugAll) != null ? _table$options$debugA9 : table.options.debugHeaders; + } + }), + getLeftFlatHeaders: memo(() => [table.getLeftHeaderGroups()], (left) => { + return left.map((headerGroup) => { + return headerGroup.headers; + }).flat(); + }, { + key: "getLeftFlatHeaders", + debug: () => { + var _table$options$debugA10; + return (_table$options$debugA10 = table.options.debugAll) != null ? _table$options$debugA10 : table.options.debugHeaders; + } + }), + getCenterFlatHeaders: memo(() => [table.getCenterHeaderGroups()], (left) => { + return left.map((headerGroup) => { + return headerGroup.headers; + }).flat(); + }, { + key: "getCenterFlatHeaders", + debug: () => { + var _table$options$debugA11; + return (_table$options$debugA11 = table.options.debugAll) != null ? _table$options$debugA11 : table.options.debugHeaders; + } + }), + getRightFlatHeaders: memo(() => [table.getRightHeaderGroups()], (left) => { + return left.map((headerGroup) => { + return headerGroup.headers; + }).flat(); + }, { + key: "getRightFlatHeaders", + debug: () => { + var _table$options$debugA12; + return (_table$options$debugA12 = table.options.debugAll) != null ? _table$options$debugA12 : table.options.debugHeaders; + } + }), + getCenterLeafHeaders: memo(() => [table.getCenterFlatHeaders()], (flatHeaders) => { + return flatHeaders.filter((header) => { + var _a2; + return !((_a2 = header.subHeaders) == null ? void 0 : _a2.length); + }); + }, { + key: "getCenterLeafHeaders", + debug: () => { + var _table$options$debugA13; + return (_table$options$debugA13 = table.options.debugAll) != null ? _table$options$debugA13 : table.options.debugHeaders; + } + }), + getLeftLeafHeaders: memo(() => [table.getLeftFlatHeaders()], (flatHeaders) => { + return flatHeaders.filter((header) => { + var _a2; + return !((_a2 = header.subHeaders) == null ? void 0 : _a2.length); + }); + }, { + key: "getLeftLeafHeaders", + debug: () => { + var _table$options$debugA14; + return (_table$options$debugA14 = table.options.debugAll) != null ? _table$options$debugA14 : table.options.debugHeaders; + } + }), + getRightLeafHeaders: memo(() => [table.getRightFlatHeaders()], (flatHeaders) => { + return flatHeaders.filter((header) => { + var _a2; + return !((_a2 = header.subHeaders) == null ? void 0 : _a2.length); + }); + }, { + key: "getRightLeafHeaders", + debug: () => { + var _table$options$debugA15; + return (_table$options$debugA15 = table.options.debugAll) != null ? _table$options$debugA15 : table.options.debugHeaders; + } + }), + getLeafHeaders: memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => { + var _a2, _b2, _c2; + var _left$0$headers, _center$0$headers, _right$0$headers; + return [...(_left$0$headers = (_a2 = left[0]) == null ? void 0 : _a2.headers) != null ? _left$0$headers : [], ...(_center$0$headers = (_b2 = center[0]) == null ? void 0 : _b2.headers) != null ? _center$0$headers : [], ...(_right$0$headers = (_c2 = right[0]) == null ? void 0 : _c2.headers) != null ? _right$0$headers : []].map((header) => { + return header.getLeafHeaders(); + }).flat(); + }, { + key: "getLeafHeaders", + debug: () => { + var _table$options$debugA16; + return (_table$options$debugA16 = table.options.debugAll) != null ? _table$options$debugA16 : table.options.debugHeaders; + } + }) + }; + } +}; +function buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) { + var _a2; + var _headerGroups$0$heade; + let maxDepth = 0; + const findMaxDepth = function(columns, depth) { + if (depth === void 0) { + depth = 1; + } + maxDepth = Math.max(maxDepth, depth); + columns.filter((column) => column.getIsVisible()).forEach((column) => { + var _a3; + if ((_a3 = column.columns) == null ? void 0 : _a3.length) { + findMaxDepth(column.columns, depth + 1); + } + }, 0); }; - return /* @__PURE__ */ bn.createElement("div", { - className: "mk-cell-file" - }, value.map((v3, i4) => { - if (!props.editable) { - if (v3.file) { - return /* @__PURE__ */ bn.createElement("div", { - className: "mk-cell-file-title" - }, v3 ? v3.file instanceof import_obsidian12.TFile ? fileNameToString(v3.file.name) : v3.file.name : ""); + findMaxDepth(allColumns); + let headerGroups = []; + const createHeaderGroup = (headersToGroup, depth) => { + const headerGroup = { + depth, + id: [headerFamily, `${depth}`].filter(Boolean).join("_"), + headers: [] + }; + const pendingParentHeaders = []; + headersToGroup.forEach((headerToGroup) => { + const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0]; + const isLeafHeader = headerToGroup.column.depth === headerGroup.depth; + let column; + let isPlaceholder = false; + if (isLeafHeader && headerToGroup.column.parent) { + column = headerToGroup.column.parent; } else { - return /* @__PURE__ */ bn.createElement("div", { - className: "mk-cell-file-title" - }, v3.path); + column = headerToGroup.column; + isPlaceholder = true; } + if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) { + latestPendingParentHeader.subHeaders.push(headerToGroup); + } else { + const header = createHeader(table, column, { + id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join("_"), + isPlaceholder, + placeholderId: isPlaceholder ? `${pendingParentHeaders.filter((d5) => d5.column === column).length}` : void 0, + depth, + index: pendingParentHeaders.length + }); + header.subHeaders.push(headerToGroup); + pendingParentHeaders.push(header); + } + headerGroup.headers.push(headerToGroup); + headerToGroup.headerGroup = headerGroup; + }); + headerGroups.push(headerGroup); + if (depth > 0) { + createHeaderGroup(pendingParentHeaders, depth - 1); } - if (v3.file) { - return /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", { - className: "mk-cell-file-item", - onContextMenu: (e4) => triggerFileMenu(window.make, v3.file, v3.file instanceof import_obsidian12.TFolder, e4) - }, /* @__PURE__ */ bn.createElement(FileSticker, { - filePath: v3.file.path - }), /* @__PURE__ */ bn.createElement("div", { - className: "mk-cell-file-name", - onClick: (e4) => openFile({ ...v3.file, isFolder: v3.file instanceof import_obsidian12.TFolder }, app, e4.ctrlKey || e4.metaKey) - }, v3 ? v3.file instanceof import_obsidian12.TFile ? fileNameToString(v3.file.name) : v3.file.name : "")), v3 && v3.file instanceof import_obsidian12.TFile && v3.file.extension == "md" && /* @__PURE__ */ bn.createElement("div", { - className: "mk-cell-file-flow", - onClick: () => props.openFlow(), - dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-flow-hover"] } - })); - } - return /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", { - className: "mk-cell-file-new", - onContextMenu: (e4) => showMenu(e4) - }, /* @__PURE__ */ bn.createElement("div", { - onClick: (e4) => newFile(), - className: "mk-cell-file-icon", - dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-new-file"] } - }), /* @__PURE__ */ bn.createElement("input", { - className: "mk-cell-file-name", - type: "text", - ref, - value: v3.path, - onKeyDown, - onBlur - }))); + }; + const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, { + depth: maxDepth, + index })); + createHeaderGroup(bottomHeaders, maxDepth - 1); + headerGroups.reverse(); + const recurseHeadersForSpans = (headers) => { + const filteredHeaders = headers.filter((header) => header.column.getIsVisible()); + return filteredHeaders.map((header) => { + let colSpan = 0; + let rowSpan = 0; + let childRowSpans = [0]; + if (header.subHeaders && header.subHeaders.length) { + childRowSpans = []; + recurseHeadersForSpans(header.subHeaders).forEach((_ref) => { + let { + colSpan: childColSpan, + rowSpan: childRowSpan + } = _ref; + colSpan += childColSpan; + childRowSpans.push(childRowSpan); + }); + } else { + colSpan = 1; + } + const minChildRowSpan = Math.min(...childRowSpans); + rowSpan = rowSpan + minChildRowSpan; + header.colSpan = colSpan; + header.rowSpan = rowSpan; + return { + colSpan, + rowSpan + }; + }); + }; + recurseHeadersForSpans((_headerGroups$0$heade = (_a2 = headerGroups[0]) == null ? void 0 : _a2.headers) != null ? _headerGroups$0$heade : []); + return headerGroups; +} +var defaultColumnSizing = { + size: 150, + minSize: 20, + maxSize: Number.MAX_SAFE_INTEGER +}; +var getDefaultColumnSizingInfoState = () => ({ + startOffset: null, + startSize: null, + deltaOffset: null, + deltaPercentage: null, + isResizingColumn: false, + columnSizingStart: [] +}); +var ColumnSizing = { + getDefaultColumnDef: () => { + return defaultColumnSizing; + }, + getInitialState: (state) => { + return { + columnSizing: {}, + columnSizingInfo: getDefaultColumnSizingInfoState(), + ...state + }; + }, + getDefaultOptions: (table) => { + return { + columnResizeMode: "onEnd", + onColumnSizingChange: makeStateUpdater("columnSizing", table), + onColumnSizingInfoChange: makeStateUpdater("columnSizingInfo", table) + }; + }, + createColumn: (column, table) => { + return { + getSize: () => { + var _column$columnDef$min, _ref, _column$columnDef$max; + const columnSize = table.getState().columnSizing[column.id]; + return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize); + }, + getStart: (position) => { + const columns = !position ? table.getVisibleLeafColumns() : position === "left" ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns(); + const index = columns.findIndex((d5) => d5.id === column.id); + if (index > 0) { + const prevSiblingColumn = columns[index - 1]; + return prevSiblingColumn.getStart(position) + prevSiblingColumn.getSize(); + } + return 0; + }, + resetSize: () => { + table.setColumnSizing((_ref2) => { + let { + [column.id]: _4, + ...rest + } = _ref2; + return rest; + }); + }, + getCanResize: () => { + var _column$columnDef$ena, _table$options$enable; + return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true); + }, + getIsResizing: () => { + return table.getState().columnSizingInfo.isResizingColumn === column.id; + } + }; + }, + createHeader: (header, table) => { + return { + getSize: () => { + let sum2 = 0; + const recurse = (header2) => { + if (header2.subHeaders.length) { + header2.subHeaders.forEach(recurse); + } else { + var _header$column$getSiz; + sum2 += (_header$column$getSiz = header2.column.getSize()) != null ? _header$column$getSiz : 0; + } + }; + recurse(header); + return sum2; + }, + getStart: () => { + if (header.index > 0) { + const prevSiblingHeader = header.headerGroup.headers[header.index - 1]; + return prevSiblingHeader.getStart() + prevSiblingHeader.getSize(); + } + return 0; + }, + getResizeHandler: () => { + const column = table.getColumn(header.column.id); + const canResize = column.getCanResize(); + return (e4) => { + var _a2; + if (!canResize) { + return; + } + (_a2 = e4.persist) == null ? void 0 : _a2.call(e4); + if (isTouchStartEvent(e4)) { + if (e4.touches && e4.touches.length > 1) { + return; + } + } + const startSize = header.getSize(); + const columnSizingStart = header ? header.getLeafHeaders().map((d5) => [d5.column.id, d5.column.getSize()]) : [[column.id, column.getSize()]]; + const clientX = isTouchStartEvent(e4) ? Math.round(e4.touches[0].clientX) : e4.clientX; + const newColumnSizing = {}; + const updateOffset = (eventType, clientXPos) => { + if (typeof clientXPos !== "number") { + return; + } + table.setColumnSizingInfo((old) => { + var _old$startOffset, _old$startSize; + const deltaOffset = clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0); + const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999); + old.columnSizingStart.forEach((_ref3) => { + let [columnId, headerSize] = _ref3; + newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100; + }); + return { + ...old, + deltaOffset, + deltaPercentage + }; + }); + if (table.options.columnResizeMode === "onChange" || eventType === "end") { + table.setColumnSizing((old) => ({ + ...old, + ...newColumnSizing + })); + } + }; + const onMove = (clientXPos) => updateOffset("move", clientXPos); + const onEnd = (clientXPos) => { + updateOffset("end", clientXPos); + table.setColumnSizingInfo((old) => ({ + ...old, + isResizingColumn: false, + startOffset: null, + startSize: null, + deltaOffset: null, + deltaPercentage: null, + columnSizingStart: [] + })); + }; + const mouseEvents = { + moveHandler: (e5) => onMove(e5.clientX), + upHandler: (e5) => { + document.removeEventListener("mousemove", mouseEvents.moveHandler); + document.removeEventListener("mouseup", mouseEvents.upHandler); + onEnd(e5.clientX); + } + }; + const touchEvents = { + moveHandler: (e5) => { + if (e5.cancelable) { + e5.preventDefault(); + e5.stopPropagation(); + } + onMove(e5.touches[0].clientX); + return false; + }, + upHandler: (e5) => { + var _a3; + document.removeEventListener("touchmove", touchEvents.moveHandler); + document.removeEventListener("touchend", touchEvents.upHandler); + if (e5.cancelable) { + e5.preventDefault(); + e5.stopPropagation(); + } + onEnd((_a3 = e5.touches[0]) == null ? void 0 : _a3.clientX); + } + }; + const passiveIfSupported = passiveEventSupported() ? { + passive: false + } : false; + if (isTouchStartEvent(e4)) { + document.addEventListener("touchmove", touchEvents.moveHandler, passiveIfSupported); + document.addEventListener("touchend", touchEvents.upHandler, passiveIfSupported); + } else { + document.addEventListener("mousemove", mouseEvents.moveHandler, passiveIfSupported); + document.addEventListener("mouseup", mouseEvents.upHandler, passiveIfSupported); + } + table.setColumnSizingInfo((old) => ({ + ...old, + startOffset: clientX, + startSize, + deltaOffset: 0, + deltaPercentage: 0, + columnSizingStart, + isResizingColumn: column.id + })); + }; + } + }; + }, + createTable: (table) => { + return { + setColumnSizing: (updater) => { + var _a2, _b2; + return (_b2 = (_a2 = table.options).onColumnSizingChange) == null ? void 0 : _b2.call(_a2, updater); + }, + setColumnSizingInfo: (updater) => { + var _a2, _b2; + return (_b2 = (_a2 = table.options).onColumnSizingInfoChange) == null ? void 0 : _b2.call(_a2, updater); + }, + resetColumnSizing: (defaultState) => { + var _table$initialState$c; + table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {}); + }, + resetHeaderSizeInfo: (defaultState) => { + var _table$initialState$c2; + table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState()); + }, + getTotalSize: () => { + var _a2; + var _table$getHeaderGroup; + return (_table$getHeaderGroup = (_a2 = table.getHeaderGroups()[0]) == null ? void 0 : _a2.headers.reduce((sum2, header) => { + return sum2 + header.getSize(); + }, 0)) != null ? _table$getHeaderGroup : 0; + }, + getLeftTotalSize: () => { + var _a2; + var _table$getLeftHeaderG; + return (_table$getLeftHeaderG = (_a2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _a2.headers.reduce((sum2, header) => { + return sum2 + header.getSize(); + }, 0)) != null ? _table$getLeftHeaderG : 0; + }, + getCenterTotalSize: () => { + var _a2; + var _table$getCenterHeade; + return (_table$getCenterHeade = (_a2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _a2.headers.reduce((sum2, header) => { + return sum2 + header.getSize(); + }, 0)) != null ? _table$getCenterHeade : 0; + }, + getRightTotalSize: () => { + var _a2; + var _table$getRightHeader; + return (_table$getRightHeader = (_a2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _a2.headers.reduce((sum2, header) => { + return sum2 + header.getSize(); + }, 0)) != null ? _table$getRightHeader : 0; + } + }; + } }; - -// src/components/ContextView/DataTypeView/LinkCell.tsx -init_compat_module(); -var LinkCell = (props) => { - var _a2, _b2; - const initialValue = (props.multi ? (_b2 = (_a2 = props.initialValue) == null ? void 0 : _a2.match(/(\\.|[^,])+/g)) != null ? _b2 : [] : [props.initialValue]).filter((f4) => f4); - const stringValueToLink = (strings) => strings.map((f4) => { - const match2 = /\[\[(.*?)\]\]/g.exec(f4); - const stringValue = (match2 == null ? void 0 : match2.length) > 1 ? match2[1].substring(0, match2[1].indexOf("|")) : f4; +var passiveSupported = null; +function passiveEventSupported() { + if (typeof passiveSupported === "boolean") + return passiveSupported; + let supported = false; + try { + const options = { + get passive() { + supported = true; + return false; + } + }; + const noop2 = () => { + }; + window.addEventListener("test", noop2, options); + window.removeEventListener("test", noop2); + } catch (err) { + supported = false; + } + passiveSupported = supported; + return passiveSupported; +} +function isTouchStartEvent(e4) { + return e4.type === "touchstart"; +} +var Expanding = { + getInitialState: (state) => { return { - label: filePathToString(stringValue), - value: stringValue + expanded: {}, + ...state + }; + }, + getDefaultOptions: (table) => { + return { + onExpandedChange: makeStateUpdater("expanded", table), + paginateExpandedRows: true + }; + }, + createTable: (table) => { + let registered = false; + let queued = false; + return { + _autoResetExpanded: () => { + var _ref, _table$options$autoRe; + if (!registered) { + table._queue(() => { + registered = true; + }); + return; + } + if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) { + if (queued) + return; + queued = true; + table._queue(() => { + table.resetExpanded(); + queued = false; + }); + } + }, + setExpanded: (updater) => { + var _a2, _b2; + return (_b2 = (_a2 = table.options).onExpandedChange) == null ? void 0 : _b2.call(_a2, updater); + }, + toggleAllRowsExpanded: (expanded) => { + if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) { + table.setExpanded(true); + } else { + table.setExpanded({}); + } + }, + resetExpanded: (defaultState) => { + var _a2; + var _table$initialState$e; + table.setExpanded(defaultState ? {} : (_table$initialState$e = (_a2 = table.initialState) == null ? void 0 : _a2.expanded) != null ? _table$initialState$e : {}); + }, + getCanSomeRowsExpand: () => { + return table.getRowModel().flatRows.some((row) => row.getCanExpand()); + }, + getToggleAllRowsExpandedHandler: () => { + return (e4) => { + var _a2; + (_a2 = e4.persist) == null ? void 0 : _a2.call(e4); + table.toggleAllRowsExpanded(); + }; + }, + getIsSomeRowsExpanded: () => { + const expanded = table.getState().expanded; + return expanded === true || Object.values(expanded).some(Boolean); + }, + getIsAllRowsExpanded: () => { + const expanded = table.getState().expanded; + if (typeof expanded === "boolean") { + return expanded === true; + } + if (!Object.keys(expanded).length) { + return false; + } + if (table.getRowModel().flatRows.some((row) => !row.getIsExpanded())) { + return false; + } + return true; + }, + getExpandedDepth: () => { + let maxDepth = 0; + const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded); + rowIds.forEach((id2) => { + const splitId = id2.split("."); + maxDepth = Math.max(maxDepth, splitId.length); + }); + return maxDepth; + }, + getPreExpandedRowModel: () => table.getSortedRowModel(), + getExpandedRowModel: () => { + if (!table._getExpandedRowModel && table.options.getExpandedRowModel) { + table._getExpandedRowModel = table.options.getExpandedRowModel(table); + } + if (table.options.manualExpanding || !table._getExpandedRowModel) { + return table.getPreExpandedRowModel(); + } + return table._getExpandedRowModel(); + } + }; + }, + createRow: (row, table) => { + return { + toggleExpanded: (expanded) => { + table.setExpanded((old) => { + var _expanded; + const exists = old === true ? true : !!(old == null ? void 0 : old[row.id]); + let oldExpanded = {}; + if (old === true) { + Object.keys(table.getRowModel().rowsById).forEach((rowId) => { + oldExpanded[rowId] = true; + }); + } else { + oldExpanded = old; + } + expanded = (_expanded = expanded) != null ? _expanded : !exists; + if (!exists && expanded) { + return { + ...oldExpanded, + [row.id]: true + }; + } + if (exists && !expanded) { + const { + [row.id]: _4, + ...rest + } = oldExpanded; + return rest; + } + return old; + }); + }, + getIsExpanded: () => { + var _a2, _b2; + var _table$options$getIsR; + const expanded = table.getState().expanded; + return !!((_table$options$getIsR = (_b2 = (_a2 = table.options).getIsRowExpanded) == null ? void 0 : _b2.call(_a2, row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id])); + }, + getCanExpand: () => { + var _a2, _b2, _c2; + var _table$options$getRow, _table$options$enable; + return (_table$options$getRow = (_b2 = (_a2 = table.options).getRowCanExpand) == null ? void 0 : _b2.call(_a2, row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_c2 = row.subRows) == null ? void 0 : _c2.length); + }, + getToggleExpandedHandler: () => { + const canExpand = row.getCanExpand(); + return () => { + if (!canExpand) + return; + row.toggleExpanded(); + }; + } }; + } +}; +var includesString = (row, columnId, filterValue) => { + var _a2; + const search = filterValue.toLowerCase(); + return Boolean((_a2 = row.getValue(columnId)) == null ? void 0 : _a2.toLowerCase().includes(search)); +}; +includesString.autoRemove = (val) => testFalsey(val); +var includesStringSensitive = (row, columnId, filterValue) => { + var _a2; + return Boolean((_a2 = row.getValue(columnId)) == null ? void 0 : _a2.includes(filterValue)); +}; +includesStringSensitive.autoRemove = (val) => testFalsey(val); +var equalsString = (row, columnId, filterValue) => { + var _a2; + return ((_a2 = row.getValue(columnId)) == null ? void 0 : _a2.toLowerCase()) === filterValue.toLowerCase(); +}; +equalsString.autoRemove = (val) => testFalsey(val); +var arrIncludes = (row, columnId, filterValue) => { + var _a2; + return (_a2 = row.getValue(columnId)) == null ? void 0 : _a2.includes(filterValue); +}; +arrIncludes.autoRemove = (val) => testFalsey(val) || !(val == null ? void 0 : val.length); +var arrIncludesAll = (row, columnId, filterValue) => { + return !filterValue.some((val) => { + var _a2; + return !((_a2 = row.getValue(columnId)) == null ? void 0 : _a2.includes(val)); }); - const resolveLinks = (links) => links.map((f4) => ({ - value: f4.value, - label: filePathToString(f4.value), - file: getFileFromString(f4.value, getFolderPathFromString(props.file)) - })); - const ref = _2(null); - const [value, setValue] = p2(resolveLinks(stringValueToLink(initialValue))); - const removeValue = (v3) => { - const newValues = value.filter((f4) => f4.value != v3.value); - setValue(newValues); - props.saveValue(newValues.map((f4) => f4.value).join(",")); - }; - const saveOptions = (_4, _value) => { - if (!props.multi) { - setValue(resolveLinks(stringValueToLink(_value))); - props.saveValue(_value.join(",")); - } else { - const newValue = _value[0]; - if (newValue) { - const newValues = uniq([...value.map((f4) => f4.value), newValue]); - setValue(resolveLinks(stringValueToLink(newValues))); - props.saveValue(newValues.join(",")); +}; +arrIncludesAll.autoRemove = (val) => testFalsey(val) || !(val == null ? void 0 : val.length); +var arrIncludesSome = (row, columnId, filterValue) => { + return filterValue.some((val) => { + var _a2; + return (_a2 = row.getValue(columnId)) == null ? void 0 : _a2.includes(val); + }); +}; +arrIncludesSome.autoRemove = (val) => testFalsey(val) || !(val == null ? void 0 : val.length); +var equals = (row, columnId, filterValue) => { + return row.getValue(columnId) === filterValue; +}; +equals.autoRemove = (val) => testFalsey(val); +var weakEquals = (row, columnId, filterValue) => { + return row.getValue(columnId) == filterValue; +}; +weakEquals.autoRemove = (val) => testFalsey(val); +var inNumberRange = (row, columnId, filterValue) => { + let [min3, max3] = filterValue; + const rowValue = row.getValue(columnId); + return rowValue >= min3 && rowValue <= max3; +}; +inNumberRange.resolveFilterValue = (val) => { + let [unsafeMin, unsafeMax] = val; + let parsedMin = typeof unsafeMin !== "number" ? parseFloat(unsafeMin) : unsafeMin; + let parsedMax = typeof unsafeMax !== "number" ? parseFloat(unsafeMax) : unsafeMax; + let min3 = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin; + let max3 = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax; + if (min3 > max3) { + const temp = min3; + min3 = max3; + max3 = temp; + } + return [min3, max3]; +}; +inNumberRange.autoRemove = (val) => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]); +var filterFns = { + includesString, + includesStringSensitive, + equalsString, + arrIncludes, + arrIncludesAll, + arrIncludesSome, + equals, + weakEquals, + inNumberRange +}; +function testFalsey(val) { + return val === void 0 || val === null || val === ""; +} +var Filters = { + getDefaultColumnDef: () => { + return { + filterFn: "auto" + }; + }, + getInitialState: (state) => { + return { + columnFilters: [], + globalFilter: void 0, + ...state + }; + }, + getDefaultOptions: (table) => { + return { + onColumnFiltersChange: makeStateUpdater("columnFilters", table), + onGlobalFilterChange: makeStateUpdater("globalFilter", table), + filterFromLeafRows: false, + maxLeafRowFilterDepth: 100, + globalFilterFn: "auto", + getColumnCanGlobalFilter: (column) => { + var _a2, _b2; + const value = (_b2 = (_a2 = table.getCoreRowModel().flatRows[0]) == null ? void 0 : _a2._getAllCellsByColumnId()[column.id]) == null ? void 0 : _b2.getValue(); + return typeof value === "string" || typeof value === "number"; + } + }; + }, + createColumn: (column, table) => { + return { + getAutoFilterFn: () => { + const firstRow = table.getCoreRowModel().flatRows[0]; + const value = firstRow == null ? void 0 : firstRow.getValue(column.id); + if (typeof value === "string") { + return filterFns.includesString; + } + if (typeof value === "number") { + return filterFns.inNumberRange; + } + if (typeof value === "boolean") { + return filterFns.equals; + } + if (value !== null && typeof value === "object") { + return filterFns.equals; + } + if (Array.isArray(value)) { + return filterFns.arrIncludes; + } + return filterFns.weakEquals; + }, + getFilterFn: () => { + var _a2; + var _table$options$filter; + return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === "auto" ? column.getAutoFilterFn() : (_table$options$filter = (_a2 = table.options.filterFns) == null ? void 0 : _a2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn]; + }, + getCanFilter: () => { + var _column$columnDef$ena, _table$options$enable, _table$options$enable2; + return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn; + }, + getCanGlobalFilter: () => { + var _a2, _b2; + var _column$columnDef$ena2, _table$options$enable3, _table$options$enable4, _table$options$getCol; + return ((_column$columnDef$ena2 = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena2 : true) && ((_table$options$enable3 = table.options.enableGlobalFilter) != null ? _table$options$enable3 : true) && ((_table$options$enable4 = table.options.enableFilters) != null ? _table$options$enable4 : true) && ((_table$options$getCol = (_b2 = (_a2 = table.options).getColumnCanGlobalFilter) == null ? void 0 : _b2.call(_a2, column)) != null ? _table$options$getCol : true) && !!column.accessorFn; + }, + getIsFiltered: () => column.getFilterIndex() > -1, + getFilterValue: () => { + var _a2, _b2; + return (_b2 = (_a2 = table.getState().columnFilters) == null ? void 0 : _a2.find((d5) => d5.id === column.id)) == null ? void 0 : _b2.value; + }, + getFilterIndex: () => { + var _a2; + var _table$getState$colum; + return (_table$getState$colum = (_a2 = table.getState().columnFilters) == null ? void 0 : _a2.findIndex((d5) => d5.id === column.id)) != null ? _table$getState$colum : -1; + }, + setFilterValue: (value) => { + table.setColumnFilters((old) => { + const filterFn = column.getFilterFn(); + const previousfilter = old == null ? void 0 : old.find((d5) => d5.id === column.id); + const newFilter = functionalUpdate(value, previousfilter ? previousfilter.value : void 0); + if (shouldAutoRemoveFilter(filterFn, newFilter, column)) { + var _old$filter; + return (_old$filter = old == null ? void 0 : old.filter((d5) => d5.id !== column.id)) != null ? _old$filter : []; + } + const newFilterObj = { + id: column.id, + value: newFilter + }; + if (previousfilter) { + var _old$map; + return (_old$map = old == null ? void 0 : old.map((d5) => { + if (d5.id === column.id) { + return newFilterObj; + } + return d5; + })) != null ? _old$map : []; + } + if (old == null ? void 0 : old.length) { + return [...old, newFilterObj]; + } + return [newFilterObj]; + }); + }, + _getFacetedRowModel: table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id), + getFacetedRowModel: () => { + if (!column._getFacetedRowModel) { + return table.getPreFilteredRowModel(); + } + return column._getFacetedRowModel(); + }, + _getFacetedUniqueValues: table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id), + getFacetedUniqueValues: () => { + if (!column._getFacetedUniqueValues) { + return /* @__PURE__ */ new Map(); + } + return column._getFacetedUniqueValues(); + }, + _getFacetedMinMaxValues: table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id), + getFacetedMinMaxValues: () => { + if (!column._getFacetedMinMaxValues) { + return void 0; + } + return column._getFacetedMinMaxValues(); + } + }; + }, + createRow: (row, table) => { + return { + columnFilters: {}, + columnFiltersMeta: {} + }; + }, + createTable: (table) => { + return { + getGlobalAutoFilterFn: () => { + return filterFns.includesString; + }, + getGlobalFilterFn: () => { + var _a2; + var _table$options$filter2; + const { + globalFilterFn + } = table.options; + return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === "auto" ? table.getGlobalAutoFilterFn() : (_table$options$filter2 = (_a2 = table.options.filterFns) == null ? void 0 : _a2[globalFilterFn]) != null ? _table$options$filter2 : filterFns[globalFilterFn]; + }, + setColumnFilters: (updater) => { + var _a2, _b2; + const leafColumns = table.getAllLeafColumns(); + const updateFn = (old) => { + var _a3; + return (_a3 = functionalUpdate(updater, old)) == null ? void 0 : _a3.filter((filter) => { + const column = leafColumns.find((d5) => d5.id === filter.id); + if (column) { + const filterFn = column.getFilterFn(); + if (shouldAutoRemoveFilter(filterFn, filter.value, column)) { + return false; + } + } + return true; + }); + }; + (_b2 = (_a2 = table.options).onColumnFiltersChange) == null ? void 0 : _b2.call(_a2, updateFn); + }, + setGlobalFilter: (updater) => { + var _a2, _b2; + (_b2 = (_a2 = table.options).onGlobalFilterChange) == null ? void 0 : _b2.call(_a2, updater); + }, + resetGlobalFilter: (defaultState) => { + table.setGlobalFilter(defaultState ? void 0 : table.initialState.globalFilter); + }, + resetColumnFilters: (defaultState) => { + var _a2; + var _table$initialState$c; + table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_a2 = table.initialState) == null ? void 0 : _a2.columnFilters) != null ? _table$initialState$c : []); + }, + getPreFilteredRowModel: () => table.getCoreRowModel(), + getFilteredRowModel: () => { + if (!table._getFilteredRowModel && table.options.getFilteredRowModel) { + table._getFilteredRowModel = table.options.getFilteredRowModel(table); + } + if (table.options.manualFiltering || !table._getFilteredRowModel) { + return table.getPreFilteredRowModel(); + } + return table._getFilteredRowModel(); + }, + _getGlobalFacetedRowModel: table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, "__global__"), + getGlobalFacetedRowModel: () => { + if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) { + return table.getPreFilteredRowModel(); + } + return table._getGlobalFacetedRowModel(); + }, + _getGlobalFacetedUniqueValues: table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, "__global__"), + getGlobalFacetedUniqueValues: () => { + if (!table._getGlobalFacetedUniqueValues) { + return /* @__PURE__ */ new Map(); + } + return table._getGlobalFacetedUniqueValues(); + }, + _getGlobalFacetedMinMaxValues: table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, "__global__"), + getGlobalFacetedMinMaxValues: () => { + if (!table._getGlobalFacetedMinMaxValues) { + return; + } + return table._getGlobalFacetedMinMaxValues(); } + }; + } +}; +function shouldAutoRemoveFilter(filterFn, value, column) { + return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === "undefined" || typeof value === "string" && !value; +} +var sum = (columnId, _leafRows, childRows) => { + return childRows.reduce((sum2, next) => { + const nextValue = next.getValue(columnId); + return sum2 + (typeof nextValue === "number" ? nextValue : 0); + }, 0); +}; +var min2 = (columnId, _leafRows, childRows) => { + let min3; + childRows.forEach((row) => { + const value = row.getValue(columnId); + if (value != null && (min3 > value || min3 === void 0 && value >= value)) { + min3 = value; } - }; - const showMenu = () => { - const offset = ref.current.getBoundingClientRect(); - const options = getAllAbstractFilesInVault(app).map((f4) => ({ name: fileNameToString(f4.name), value: f4.path })); - const _options = !props.multi ? [{ name: "None", value: "" }, ...options] : options; - showSelectMenu({ x: offset.left, y: offset.top + 30 }, false, false, value.map((f4) => f4.value), _options, saveOptions, "Find Note", true); - }; - const openLink = async (o3) => { - if (o3.file) { - openTFile(o3.file, app, false); - } else { - const file = await app.fileManager.createNewMarkdownFile(app.vault.getRoot(), o3.value); - openTFile(file, app, false); - setValue(resolveLinks(value)); + }); + return min3; +}; +var max2 = (columnId, _leafRows, childRows) => { + let max3; + childRows.forEach((row) => { + const value = row.getValue(columnId); + if (value != null && (max3 < value || max3 === void 0 && value >= value)) { + max3 = value; } - }; - return /* @__PURE__ */ bn.createElement("div", { - className: "mk-cell-option", - ref - }, value.length > 0 ? value.map((o3) => /* @__PURE__ */ bn.createElement("div", { - className: "mk-cell-option-item" - }, o3.label.length > 0 ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", { - className: o3.file ? "mk-cell-link-item" : "mk-cell-link-unresolved", - onClick: () => openLink(o3) - }, o3.label), props.multi ? /* @__PURE__ */ bn.createElement("div", { - className: "mk-icon-xsmall", - onClick: () => removeValue(o3), - dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-close"] } - }) : /* @__PURE__ */ bn.createElement(bn.Fragment, null)) : /* @__PURE__ */ bn.createElement("div", null, "Select"), props.editable && !props.multi && value.length > 0 ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("span", null), /* @__PURE__ */ bn.createElement("div", { - onClick: () => props.editable && !props.multi && showMenu(), - className: "mk-cell-option-select mk-icon-xxsmall mk-icon-rotated", - dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-collapse-sm"] } - })) : /* @__PURE__ */ bn.createElement(bn.Fragment, null))) : !props.multi ? /* @__PURE__ */ bn.createElement("div", { - className: "mk-cell-option-item" - }, /* @__PURE__ */ bn.createElement("div", { - onClick: () => props.editable && !props.multi && showMenu() - }, "Select")) : /* @__PURE__ */ bn.createElement(bn.Fragment, null), props.editable && props.multi ? /* @__PURE__ */ bn.createElement("div", { - onClick: () => props.editable && showMenu(), - className: "mk-cell-option-new mk-icon-small", - dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-plus"] } - }) : /* @__PURE__ */ bn.createElement(bn.Fragment, null)); - return /* @__PURE__ */ bn.createElement("div", { - className: "mk-cell-option", - ref, - onClick: () => props.editable && !props.multi && showMenu() - }, value.length > 0 ? value.map((o3) => /* @__PURE__ */ bn.createElement("div", { - className: o3.file ? "mk-cell-link-item" : "mk-cell-link-unresolved", - onClick: () => openLink(o3) - }, o3.value.length > 0 ? o3.value : "Select")) : "", props.editable && props.multi && /* @__PURE__ */ bn.createElement("div", { - onClick: () => props.editable && showMenu(), - className: "mk-cell-option-new mk-icon-small", - dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-plus"] } - })); + }); + return max3; +}; +var extent = (columnId, _leafRows, childRows) => { + let min3; + let max3; + childRows.forEach((row) => { + const value = row.getValue(columnId); + if (value != null) { + if (min3 === void 0) { + if (value >= value) + min3 = max3 = value; + } else { + if (min3 > value) + min3 = value; + if (max3 < value) + max3 = value; + } + } + }); + return [min3, max3]; +}; +var mean = (columnId, leafRows) => { + let count2 = 0; + let sum2 = 0; + leafRows.forEach((row) => { + let value = row.getValue(columnId); + if (value != null && (value = +value) >= value) { + ++count2, sum2 += value; + } + }); + if (count2) + return sum2 / count2; + return; }; - -// src/components/ContextView/DataTypeView/DataTypeView.tsx -var fieldTypes = [ - { - type: "unknown", - label: "", - restricted: true - }, - { - type: "text", - label: "Text" - }, - { - type: "number", - label: "Number" - }, - { - type: "boolean", - label: "Yes/No" +var median = (columnId, leafRows) => { + if (!leafRows.length) { + return; + } + let min3 = 0; + let max3 = 0; + leafRows.forEach((row) => { + let value = row.getValue(columnId); + if (typeof value === "number") { + min3 = Math.min(min3, value); + max3 = Math.max(max3, value); + } + }); + return (min3 + max3) / 2; +}; +var unique = (columnId, leafRows) => { + return Array.from(new Set(leafRows.map((d5) => d5.getValue(columnId))).values()); +}; +var uniqueCount = (columnId, leafRows) => { + return new Set(leafRows.map((d5) => d5.getValue(columnId))).size; +}; +var count = (_columnId, leafRows) => { + return leafRows.length; +}; +var aggregationFns = { + sum, + min: min2, + max: max2, + extent, + mean, + median, + unique, + uniqueCount, + count +}; +var Grouping = { + getDefaultColumnDef: () => { + return { + aggregatedCell: (props2) => { + var _a2, _b2; + var _toString; + return (_toString = (_b2 = (_a2 = props2.getValue()) == null ? void 0 : _a2.toString) == null ? void 0 : _b2.call(_a2)) != null ? _toString : null; + }, + aggregationFn: "auto" + }; }, - { - type: "date", - label: "Date" + getInitialState: (state) => { + return { + grouping: [], + ...state + }; }, - { - type: "option", - label: "Option", - multi: true, - multiType: "option-multi" + getDefaultOptions: (table) => { + return { + onGroupingChange: makeStateUpdater("grouping", table), + groupedColumnMode: "reorder" + }; }, - { - type: "file", - label: "File", - restricted: true + createColumn: (column, table) => { + return { + toggleGrouping: () => { + table.setGrouping((old) => { + if (old == null ? void 0 : old.includes(column.id)) { + return old.filter((d5) => d5 !== column.id); + } + return [...old != null ? old : [], column.id]; + }); + }, + getCanGroup: () => { + var _ref, _ref2, _ref3, _column$columnDef$ena; + return (_ref = (_ref2 = (_ref3 = (_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) != null ? _ref3 : table.options.enableGrouping) != null ? _ref2 : true) != null ? _ref : !!column.accessorFn; + }, + getIsGrouped: () => { + var _a2; + return (_a2 = table.getState().grouping) == null ? void 0 : _a2.includes(column.id); + }, + getGroupedIndex: () => { + var _a2; + return (_a2 = table.getState().grouping) == null ? void 0 : _a2.indexOf(column.id); + }, + getToggleGroupingHandler: () => { + const canGroup = column.getCanGroup(); + return () => { + if (!canGroup) + return; + column.toggleGrouping(); + }; + }, + getAutoAggregationFn: () => { + const firstRow = table.getCoreRowModel().flatRows[0]; + const value = firstRow == null ? void 0 : firstRow.getValue(column.id); + if (typeof value === "number") { + return aggregationFns.sum; + } + if (Object.prototype.toString.call(value) === "[object Date]") { + return aggregationFns.extent; + } + }, + getAggregationFn: () => { + var _a2; + var _table$options$aggreg; + if (!column) { + throw new Error(); + } + return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === "auto" ? column.getAutoAggregationFn() : (_table$options$aggreg = (_a2 = table.options.aggregationFns) == null ? void 0 : _a2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn]; + } + }; }, - { - type: "fileprop", - label: "File Property" + createTable: (table) => { + return { + setGrouping: (updater) => { + var _a2, _b2; + return (_b2 = (_a2 = table.options).onGroupingChange) == null ? void 0 : _b2.call(_a2, updater); + }, + resetGrouping: (defaultState) => { + var _a2; + var _table$initialState$g; + table.setGrouping(defaultState ? [] : (_table$initialState$g = (_a2 = table.initialState) == null ? void 0 : _a2.grouping) != null ? _table$initialState$g : []); + }, + getPreGroupedRowModel: () => table.getFilteredRowModel(), + getGroupedRowModel: () => { + if (!table._getGroupedRowModel && table.options.getGroupedRowModel) { + table._getGroupedRowModel = table.options.getGroupedRowModel(table); + } + if (table.options.manualGrouping || !table._getGroupedRowModel) { + return table.getPreGroupedRowModel(); + } + return table._getGroupedRowModel(); + } + }; }, - { - type: "link", - label: "Link", - multi: true, - multiType: "link-multi" + createRow: (row) => { + return { + getIsGrouped: () => !!row.groupingColumnId, + _groupingValuesCache: {} + }; }, - { - type: "context", - label: "Context", - multi: true, - multiType: "context-multi" + createCell: (cell, column, row, table) => { + return { + getIsGrouped: () => column.getIsGrouped() && column.id === row.groupingColumnId, + getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(), + getIsAggregated: () => { + var _a2; + return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_a2 = row.subRows) == null ? void 0 : _a2.length); + } + }; } -]; -var DataTypeView = (props) => { - const { table, initialValue, index, field, file } = props; - const { tableData, saveDB: saveDB2, saveContextDB, contextTable } = q2(MDBContext); - const updateData = (column, value) => { - if (table == "") { - saveDB2({ - ...tableData, - rows: tableData.rows.map((r3, i4) => i4 == index ? { - ...r3, - [column]: value - } : r3) - }); - } else if (contextTable[table]) { - saveContextDB({ - ...contextTable[table], - rows: contextTable[table].rows.map((r3, i4) => i4 == index ? { - ...r3, - [column]: value - } : r3) - }, table); - } - }; - const updateFieldValue = (column, fieldValue, value) => { - if (table == "") { - const newTable = { - ...tableData, - cols: tableData.cols.map((m5) => m5.name == column ? { - ...m5, - value: fieldValue - } : m5), - rows: tableData.rows.map((r3, i4) => i4 == index ? { - ...r3, - [column]: value - } : r3) - }; - saveDB2(newTable); - } else if (contextTable[table]) { - saveContextDB({ - ...contextTable[table], - cols: contextTable[table].cols.map((m5) => m5.name == column ? { - ...m5, - value: fieldValue - } : m5), - rows: contextTable[table].rows.map((r3, i4) => i4 == index ? { - ...r3, - [column]: value - } : r3) - }, table); - } - }; - const saveValue = (value) => { - updateData(field.name, value); - }; - const saveFieldValue = (fieldValue, value) => { - updateFieldValue(field.name, fieldValue, value); - }; - const viewProps = { - initialValue, - saveValue, - editable: props.editable - }; - const fieldType = fieldTypes.find((t4) => field.type == t4.type) || fieldTypes.find((t4) => field.type == t4.multiType); - if (!fieldType) { - return /* @__PURE__ */ bn.createElement(bn.Fragment, null); +}; +function orderColumns(leafColumns, grouping, groupedColumnMode) { + if (!(grouping == null ? void 0 : grouping.length) || !groupedColumnMode) { + return leafColumns; } - if (fieldType.type == "file") { - return /* @__PURE__ */ bn.createElement(FileCell, { - isFolder: false, - ...viewProps, - multi: fieldType.multiType == field.type - }); - } else if (fieldType.type == "boolean") { - return /* @__PURE__ */ bn.createElement(BooleanCell, { - ...viewProps - }); - } else if (fieldType.type == "option") { - return /* @__PURE__ */ bn.createElement(OptionCell, { - ...viewProps, - options: field.value, - multi: fieldType.multiType == field.type, - saveOptions: saveFieldValue - }); - } else if (fieldType.type == "date") { - return /* @__PURE__ */ bn.createElement(DateCell, { - ...viewProps - }); - } else if (fieldType.type == "context") { - return /* @__PURE__ */ bn.createElement(ContextCell, { - ...viewProps, - multi: fieldType.multiType == field.type, - contextTable: contextTable[field.value] - }); - } else if (fieldType.type == "fileprop") { - return /* @__PURE__ */ bn.createElement(FilePropertyCell, { - ...viewProps, - property: field.value, - file - }); - } else if (fieldType.type == "number") { - return /* @__PURE__ */ bn.createElement(NumberCell, { - ...viewProps - }); - } else if (fieldType.type == "link") { - return /* @__PURE__ */ bn.createElement(LinkCell, { - ...viewProps, - multi: fieldType.multiType == field.type, - file - }); + const nonGroupingColumns = leafColumns.filter((col) => !grouping.includes(col.id)); + if (groupedColumnMode === "remove") { + return nonGroupingColumns; } - return /* @__PURE__ */ bn.createElement(TextCell, { - ...viewProps - }); -}; - -// src/components/ContextView/CardsView/KanbanColumn.tsx -var KanbanColumn = k3( - ({ - id: id2, - children, - columns = 1, - handleProps, - horizontal, - hover, - onClick, - onRemove, - field, - label, - file, - placeholder: placeholder2, - style, - scrollable, - shadow, - unstyled, - ...props - }, ref) => { - const Component2 = "div"; - return /* @__PURE__ */ bn.createElement(Component2, { - ...props, - ref, - style: { - ...style, - "--columns": columns + const groupingColumns = grouping.map((g4) => leafColumns.find((col) => col.id === g4)).filter(Boolean); + return [...groupingColumns, ...nonGroupingColumns]; +} +var Ordering = { + getInitialState: (state) => { + return { + columnOrder: [], + ...state + }; + }, + getDefaultOptions: (table) => { + return { + onColumnOrderChange: makeStateUpdater("columnOrder", table) + }; + }, + createTable: (table) => { + return { + setColumnOrder: (updater) => { + var _a2, _b2; + return (_b2 = (_a2 = table.options).onColumnOrderChange) == null ? void 0 : _b2.call(_a2, updater); }, - className: (0, import_classnames.default)( - "mk-cards-col", - unstyled && "unstyled", - horizontal && "horizontal", - hover && "hover", - placeholder2 && "placeholder", - scrollable && "scrollable", - shadow && "shadow" - ), - onClick, - tabIndex: onClick ? 0 : void 0 - }, label != null && field ? /* @__PURE__ */ bn.createElement("div", { - className: "Header" - }, /* @__PURE__ */ bn.createElement(DataTypeView, { - initialValue: label, - index: parseInt(id2) * -1, - table: field == null ? void 0 : field.table, - file, - field, - editable: false - }), /* @__PURE__ */ bn.createElement("div", { - className: "Actions", - ...handleProps - })) : null, placeholder2 ? children : /* @__PURE__ */ bn.createElement("ul", null, children)); + resetColumnOrder: (defaultState) => { + var _table$initialState$c; + table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []); + }, + _getOrderColumnsFn: memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => (columns) => { + let orderedColumns = []; + if (!(columnOrder == null ? void 0 : columnOrder.length)) { + orderedColumns = columns; + } else { + const columnOrderCopy = [...columnOrder]; + const columnsCopy = [...columns]; + while (columnsCopy.length && columnOrderCopy.length) { + const targetColumnId = columnOrderCopy.shift(); + const foundIndex = columnsCopy.findIndex((d5) => d5.id === targetColumnId); + if (foundIndex > -1) { + orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]); + } + } + orderedColumns = [...orderedColumns, ...columnsCopy]; + } + return orderColumns(orderedColumns, grouping, groupedColumnMode); + }, { + key: "getOrderColumnsFn" + }) + }; } -); - -// src/components/ContextView/CardsView/KanbanCard.tsx -init_compat_module(); -var import_classnames2 = __toESM(require_classnames()); -var KanbanCard = bn.memo( - bn.forwardRef( - ({ - color, - dragOverlay, - dragging, - disabled, - fadeIn, - handle, - height, - index, - listeners, - onRemove, - renderItem, - id: id2, - sorting, - style, - transition, - transform, - value, - cols, - wrapperStyle, - ...props - }, ref) => { - h2(() => { - if (!dragOverlay) { +}; +var defaultPageIndex = 0; +var defaultPageSize = 10; +var getDefaultPaginationState = () => ({ + pageIndex: defaultPageIndex, + pageSize: defaultPageSize +}); +var Pagination = { + getInitialState: (state) => { + return { + ...state, + pagination: { + ...getDefaultPaginationState(), + ...state == null ? void 0 : state.pagination + } + }; + }, + getDefaultOptions: (table) => { + return { + onPaginationChange: makeStateUpdater("pagination", table) + }; + }, + createTable: (table) => { + let registered = false; + let queued = false; + return { + _autoResetPageIndex: () => { + var _ref, _table$options$autoRe; + if (!registered) { + table._queue(() => { + registered = true; + }); return; } - document.body.style.cursor = "grabbing"; - return () => { - document.body.style.cursor = ""; + if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) { + if (queued) + return; + queued = true; + table._queue(() => { + table.resetPageIndex(); + queued = false; + }); + } + }, + setPagination: (updater) => { + var _a2, _b2; + const safeUpdater = (old) => { + let newState = functionalUpdate(updater, old); + return newState; }; - }, [dragOverlay]); - return renderItem ? renderItem({ - dragOverlay: Boolean(dragOverlay), - dragging: Boolean(dragging), - sorting: Boolean(sorting), - index, - fadeIn: Boolean(fadeIn), - listeners, - ref, - style, - transform, - transition, - value - }) : /* @__PURE__ */ bn.createElement("li", { - className: (0, import_classnames2.default)( - "mk-card", - fadeIn && "fadeIn", - sorting && "sorting", - dragOverlay && "dragOverlay" - ), - style: { - ...wrapperStyle, - transition, - "--translate-x": transform ? `${Math.round(transform.x)}px` : void 0, - "--translate-y": transform ? `${Math.round(transform.y)}px` : void 0, - "--scale-x": (transform == null ? void 0 : transform.scaleX) ? `${transform.scaleX}` : void 0, - "--scale-y": (transform == null ? void 0 : transform.scaleY) ? `${transform.scaleY}` : void 0, - "--index": index, - "--color": color - }, - ref - }, /* @__PURE__ */ bn.createElement("div", { - className: (0, import_classnames2.default)( - dragging && "dragging", - handle && "withHandle", - dragOverlay && "dragOverlay", - disabled && "disabled", - color && "color" - ), - style, - "data-cypress": "draggable-item", - ...listeners, - ...props, - tabIndex: !handle ? 0 : void 0 - }, cols.map((f4) => { - return /* @__PURE__ */ bn.createElement(DataTypeView, { - initialValue: value[f4.name + f4.table], - table: f4.table, - index: parseInt(id2), - file: value["File"], - field: f4, - editable: false + return (_b2 = (_a2 = table.options).onPaginationChange) == null ? void 0 : _b2.call(_a2, safeUpdater); + }, + resetPagination: (defaultState) => { + var _table$initialState$p; + table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState()); + }, + setPageIndex: (updater) => { + table.setPagination((old) => { + let pageIndex = functionalUpdate(updater, old.pageIndex); + const maxPageIndex = typeof table.options.pageCount === "undefined" || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1; + pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex)); + return { + ...old, + pageIndex + }; }); - }), /* @__PURE__ */ bn.createElement("span", { - className: "Actions" - }))); - } - ) -); - -// src/components/ContextView/CardsView/CardsView.tsx -var animateLayoutChanges = (args) => args.isSorting || args.wasDragging ? defaultAnimateLayoutChanges(args) : true; -function DroppableContainer({ - children, - columns = 1, - disabled, - id: id2, - items, - style, - ...props -}) { - var _a2; - const { - active, - attributes, - isDragging, - listeners, - over, - setNodeRef, - transition, - transform - } = useSortable({ - id: id2, - data: { - type: "container" - }, - animateLayoutChanges - }); - const isOverContainer = over ? id2 === over.id && ((_a2 = active == null ? void 0 : active.data.current) == null ? void 0 : _a2.type) !== "container" || items.includes(over.id) : false; - return /* @__PURE__ */ bn.createElement(KanbanColumn, { - id: id2, - ref: disabled ? void 0 : setNodeRef, - style: { - ...style, - transition, - transform: CSS.Translate.toString(transform), - opacity: isDragging ? 0.5 : void 0 - }, - hover: isOverContainer, - handleProps: { - ...attributes, - ...listeners - }, - columns, - ...props - }, children); -} -var PLACEHOLDER_ID = "placeholder"; -function CardsView({ - adjustScale: adjustScale2 = false, - itemCount = 3, - cancelDrop, - columns, - handle = false, - items: initialItems, - containerStyle, - getItemStyles = () => ({}), - wrapperStyle = () => ({}), - minimal = false, - modifiers, - renderItem, - strategy = verticalListSortingStrategy, - vertical = false, - scrollable -}) { - var _a2; - const { tableData, data, cols, predicate, tagContexts, contextTable, schema, saveDB: saveDB2, saveContextDB } = q2(MDBContext); - const groupBy = cols.find((f4) => f4.name + f4.table == predicate.groupBy); - const displayCols = (_a2 = cols == null ? void 0 : cols.filter((f4) => !(f4.name == (groupBy == null ? void 0 : groupBy.name) && f4.table == groupBy.table))) != null ? _a2 : []; - const items = F(() => { - var _a3, _b2, _c2; - if (groupBy) { - const options = uniq([ - "", - ...(_b2 = (_a3 = groupBy.value) == null ? void 0 : _a3.match(/(\\.|[^,])+/g)) != null ? _b2 : [], - ...data.reduce((p3, c4) => { - var _a4; - return [...p3, (_a4 = c4[groupBy.name + groupBy.table]) != null ? _a4 : ""]; - }, []) - ]); - return options.reduce((p3, c4) => { - return { ...p3, [c4]: data.map((r3, index) => [r3, index]).filter(([r3]) => r3[groupBy.name + groupBy.table] == c4).map(([, index]) => index.toString()) }; - }, { "": [] }); - } + }, + resetPageIndex: (defaultState) => { + var _a2, _b2; + var _table$initialState$p2; + table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_b2 = (_a2 = table.initialState) == null ? void 0 : _a2.pagination) == null ? void 0 : _b2.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex); + }, + resetPageSize: (defaultState) => { + var _a2, _b2; + var _table$initialState$p3; + table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_b2 = (_a2 = table.initialState) == null ? void 0 : _a2.pagination) == null ? void 0 : _b2.pageSize) != null ? _table$initialState$p3 : defaultPageSize); + }, + setPageSize: (updater) => { + table.setPagination((old) => { + const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize)); + const topRowIndex = old.pageSize * old.pageIndex; + const pageIndex = Math.floor(topRowIndex / pageSize); + return { + ...old, + pageIndex, + pageSize + }; + }); + }, + setPageCount: (updater) => table.setPagination((old) => { + var _table$options$pageCo; + let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1); + if (typeof newPageCount === "number") { + newPageCount = Math.max(-1, newPageCount); + } + return { + ...old, + pageCount: newPageCount + }; + }), + getPageOptions: memo(() => [table.getPageCount()], (pageCount) => { + let pageOptions = []; + if (pageCount && pageCount > 0) { + pageOptions = [...new Array(pageCount)].fill(null).map((_4, i4) => i4); + } + return pageOptions; + }, { + key: "getPageOptions", + debug: () => { + var _table$options$debugA; + return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable; + } + }), + getCanPreviousPage: () => table.getState().pagination.pageIndex > 0, + getCanNextPage: () => { + const { + pageIndex + } = table.getState().pagination; + const pageCount = table.getPageCount(); + if (pageCount === -1) { + return true; + } + if (pageCount === 0) { + return false; + } + return pageIndex < pageCount - 1; + }, + previousPage: () => { + return table.setPageIndex((old) => old - 1); + }, + nextPage: () => { + return table.setPageIndex((old) => { + return old + 1; + }); + }, + getPrePaginationRowModel: () => table.getExpandedRowModel(), + getPaginationRowModel: () => { + if (!table._getPaginationRowModel && table.options.getPaginationRowModel) { + table._getPaginationRowModel = table.options.getPaginationRowModel(table); + } + if (table.options.manualPagination || !table._getPaginationRowModel) { + return table.getPrePaginationRowModel(); + } + return table._getPaginationRowModel(); + }, + getPageCount: () => { + var _table$options$pageCo2; + return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getPrePaginationRowModel().rows.length / table.getState().pagination.pageSize); + } + }; + } +}; +var getDefaultPinningState = () => ({ + left: [], + right: [] +}); +var Pinning = { + getInitialState: (state) => { + return { + columnPinning: getDefaultPinningState(), + ...state + }; + }, + getDefaultOptions: (table) => { + return { + onColumnPinningChange: makeStateUpdater("columnPinning", table) + }; + }, + createColumn: (column, table) => { + return { + pin: (position) => { + const columnIds = column.getLeafColumns().map((d5) => d5.id).filter(Boolean); + table.setColumnPinning((old) => { + var _old$left3, _old$right3; + if (position === "right") { + var _old$left, _old$right; + return { + left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter((d5) => !(columnIds == null ? void 0 : columnIds.includes(d5))), + right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter((d5) => !(columnIds == null ? void 0 : columnIds.includes(d5))), ...columnIds] + }; + } + if (position === "left") { + var _old$left2, _old$right2; + return { + left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter((d5) => !(columnIds == null ? void 0 : columnIds.includes(d5))), ...columnIds], + right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter((d5) => !(columnIds == null ? void 0 : columnIds.includes(d5))) + }; + } + return { + left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter((d5) => !(columnIds == null ? void 0 : columnIds.includes(d5))), + right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter((d5) => !(columnIds == null ? void 0 : columnIds.includes(d5))) + }; + }); + }, + getCanPin: () => { + const leafColumns = column.getLeafColumns(); + return leafColumns.some((d5) => { + var _d$columnDef$enablePi, _table$options$enable; + return ((_d$columnDef$enablePi = d5.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_table$options$enable = table.options.enablePinning) != null ? _table$options$enable : true); + }); + }, + getIsPinned: () => { + const leafColumnIds = column.getLeafColumns().map((d5) => d5.id); + const { + left, + right + } = table.getState().columnPinning; + const isLeft = leafColumnIds.some((d5) => left == null ? void 0 : left.includes(d5)); + const isRight = leafColumnIds.some((d5) => right == null ? void 0 : right.includes(d5)); + return isLeft ? "left" : isRight ? "right" : false; + }, + getPinnedIndex: () => { + var _a2, _b2; + var _table$getState$colum; + const position = column.getIsPinned(); + return position ? (_table$getState$colum = (_b2 = (_a2 = table.getState().columnPinning) == null ? void 0 : _a2[position]) == null ? void 0 : _b2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0; + } + }; + }, + createRow: (row, table) => { + return { + getCenterVisibleCells: memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => { + const leftAndRight = [...left != null ? left : [], ...right != null ? right : []]; + return allCells.filter((d5) => !leftAndRight.includes(d5.column.id)); + }, { + key: false, + debug: () => { + var _table$options$debugA; + return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugRows; + } + }), + getLeftVisibleCells: memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, ,], (allCells, left) => { + const cells = (left != null ? left : []).map((columnId) => allCells.find((cell) => cell.column.id === columnId)).filter(Boolean).map((d5) => ({ + ...d5, + position: "left" + })); + return cells; + }, { + key: false, + debug: () => { + var _table$options$debugA2; + return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugRows; + } + }), + getRightVisibleCells: memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => { + const cells = (right != null ? right : []).map((columnId) => allCells.find((cell) => cell.column.id === columnId)).filter(Boolean).map((d5) => ({ + ...d5, + position: "right" + })); + return cells; + }, { + key: false, + debug: () => { + var _table$options$debugA3; + return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugRows; + } + }) + }; + }, + createTable: (table) => { + return { + setColumnPinning: (updater) => { + var _a2, _b2; + return (_b2 = (_a2 = table.options).onColumnPinningChange) == null ? void 0 : _b2.call(_a2, updater); + }, + resetColumnPinning: (defaultState) => { + var _a2; + var _table$initialState$c; + return table.setColumnPinning(defaultState ? getDefaultPinningState() : (_table$initialState$c = (_a2 = table.initialState) == null ? void 0 : _a2.columnPinning) != null ? _table$initialState$c : getDefaultPinningState()); + }, + getIsSomeColumnsPinned: (position) => { + var _a2, _b2, _c2; + const pinningState = table.getState().columnPinning; + if (!position) { + return Boolean(((_a2 = pinningState.left) == null ? void 0 : _a2.length) || ((_b2 = pinningState.right) == null ? void 0 : _b2.length)); + } + return Boolean((_c2 = pinningState[position]) == null ? void 0 : _c2.length); + }, + getLeftLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => { + return (left != null ? left : []).map((columnId) => allColumns.find((column) => column.id === columnId)).filter(Boolean); + }, { + key: "getLeftLeafColumns", + debug: () => { + var _table$options$debugA4; + return (_table$options$debugA4 = table.options.debugAll) != null ? _table$options$debugA4 : table.options.debugColumns; + } + }), + getRightLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => { + return (right != null ? right : []).map((columnId) => allColumns.find((column) => column.id === columnId)).filter(Boolean); + }, { + key: "getRightLeafColumns", + debug: () => { + var _table$options$debugA5; + return (_table$options$debugA5 = table.options.debugAll) != null ? _table$options$debugA5 : table.options.debugColumns; + } + }), + getCenterLeafColumns: memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => { + const leftAndRight = [...left != null ? left : [], ...right != null ? right : []]; + return allColumns.filter((d5) => !leftAndRight.includes(d5.id)); + }, { + key: "getCenterLeafColumns", + debug: () => { + var _table$options$debugA6; + return (_table$options$debugA6 = table.options.debugAll) != null ? _table$options$debugA6 : table.options.debugColumns; + } + }) + }; + } +}; +var RowSelection = { + getInitialState: (state) => { return { - "": (_c2 = data == null ? void 0 : data.map((r3, index) => index.toString())) != null ? _c2 : [] + rowSelection: {}, + ...state }; - }, [data, predicate]); - const containers = F(() => Object.keys(items).map((f4, i4) => "-" + i4.toString()), [items]); - const [activeId, setActiveId] = p2(null); - const [overId, setOverId] = p2(null); - const recentlyMovedToNewContainer = _2(false); - const isSortingContainer = activeId ? containers.includes(activeId) : false; - const sensors = useSensors( - useSensor(MouseSensor), - useSensor(TouchSensor), - useSensor(KeyboardSensor, { - coordinateGetter: sortableKeyboardCoordinates - }) - ); - const findContainer = (id2) => { - if (id2.charAt(0) == "-") { - return id2; + }, + getDefaultOptions: (table) => { + return { + onRowSelectionChange: makeStateUpdater("rowSelection", table), + enableRowSelection: true, + enableMultiRowSelection: true, + enableSubRowSelection: true + }; + }, + createTable: (table) => { + return { + setRowSelection: (updater) => { + var _a2, _b2; + return (_b2 = (_a2 = table.options).onRowSelectionChange) == null ? void 0 : _b2.call(_a2, updater); + }, + resetRowSelection: (defaultState) => { + var _table$initialState$r; + return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {}); + }, + toggleAllRowsSelected: (value) => { + table.setRowSelection((old) => { + value = typeof value !== "undefined" ? value : !table.getIsAllRowsSelected(); + const rowSelection = { + ...old + }; + const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows; + if (value) { + preGroupedFlatRows.forEach((row) => { + if (!row.getCanSelect()) { + return; + } + rowSelection[row.id] = true; + }); + } else { + preGroupedFlatRows.forEach((row) => { + delete rowSelection[row.id]; + }); + } + return rowSelection; + }); + }, + toggleAllPageRowsSelected: (value) => table.setRowSelection((old) => { + const resolvedValue = typeof value !== "undefined" ? value : !table.getIsAllPageRowsSelected(); + const rowSelection = { + ...old + }; + table.getRowModel().rows.forEach((row) => { + mutateRowIsSelected(rowSelection, row.id, resolvedValue, table); + }); + return rowSelection; + }), + getPreSelectedRowModel: () => table.getCoreRowModel(), + getSelectedRowModel: memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => { + if (!Object.keys(rowSelection).length) { + return { + rows: [], + flatRows: [], + rowsById: {} + }; + } + return selectRowsFn(table, rowModel); + }, { + key: "getSelectedRowModel", + debug: () => { + var _table$options$debugA; + return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable; + } + }), + getFilteredSelectedRowModel: memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => { + if (!Object.keys(rowSelection).length) { + return { + rows: [], + flatRows: [], + rowsById: {} + }; + } + return selectRowsFn(table, rowModel); + }, { + key: false, + debug: () => { + var _table$options$debugA2; + return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugTable; + } + }), + getGroupedSelectedRowModel: memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => { + if (!Object.keys(rowSelection).length) { + return { + rows: [], + flatRows: [], + rowsById: {} + }; + } + return selectRowsFn(table, rowModel); + }, { + key: false, + debug: () => { + var _table$options$debugA3; + return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugTable; + } + }), + getIsAllRowsSelected: () => { + const preGroupedFlatRows = table.getFilteredRowModel().flatRows; + const { + rowSelection + } = table.getState(); + let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length); + if (isAllRowsSelected) { + if (preGroupedFlatRows.some((row) => row.getCanSelect() && !rowSelection[row.id])) { + isAllRowsSelected = false; + } + } + return isAllRowsSelected; + }, + getIsAllPageRowsSelected: () => { + const paginationFlatRows = table.getPaginationRowModel().flatRows; + const { + rowSelection + } = table.getState(); + let isAllPageRowsSelected = !!paginationFlatRows.length; + if (isAllPageRowsSelected && paginationFlatRows.some((row) => !rowSelection[row.id])) { + isAllPageRowsSelected = false; + } + return isAllPageRowsSelected; + }, + getIsSomeRowsSelected: () => { + var _table$getState$rowSe; + const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length; + return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length; + }, + getIsSomePageRowsSelected: () => { + const paginationFlatRows = table.getPaginationRowModel().flatRows; + return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.some((d5) => d5.getIsSelected() || d5.getIsSomeSelected()); + }, + getToggleAllRowsSelectedHandler: () => { + return (e4) => { + table.toggleAllRowsSelected(e4.target.checked); + }; + }, + getToggleAllPageRowsSelectedHandler: () => { + return (e4) => { + table.toggleAllPageRowsSelected(e4.target.checked); + }; + } + }; + }, + createRow: (row, table) => { + return { + toggleSelected: (value) => { + const isSelected = row.getIsSelected(); + table.setRowSelection((old) => { + value = typeof value !== "undefined" ? value : !isSelected; + if (isSelected === value) { + return old; + } + const selectedRowIds = { + ...old + }; + mutateRowIsSelected(selectedRowIds, row.id, value, table); + return selectedRowIds; + }); + }, + getIsSelected: () => { + const { + rowSelection + } = table.getState(); + return isRowSelected(row, rowSelection); + }, + getIsSomeSelected: () => { + const { + rowSelection + } = table.getState(); + return isSubRowSelected(row, rowSelection) === "some"; + }, + getIsAllSubRowsSelected: () => { + const { + rowSelection + } = table.getState(); + return isSubRowSelected(row, rowSelection) === "all"; + }, + getCanSelect: () => { + var _table$options$enable; + if (typeof table.options.enableRowSelection === "function") { + return table.options.enableRowSelection(row); + } + return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true; + }, + getCanSelectSubRows: () => { + var _table$options$enable2; + if (typeof table.options.enableSubRowSelection === "function") { + return table.options.enableSubRowSelection(row); + } + return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true; + }, + getCanMultiSelect: () => { + var _table$options$enable3; + if (typeof table.options.enableMultiRowSelection === "function") { + return table.options.enableMultiRowSelection(row); + } + return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true; + }, + getToggleSelectedHandler: () => { + const canSelect = row.getCanSelect(); + return (e4) => { + var _a2; + if (!canSelect) + return; + row.toggleSelected((_a2 = e4.target) == null ? void 0 : _a2.checked); + }; + } + }; + } +}; +var mutateRowIsSelected = (selectedRowIds, id2, value, table) => { + var _a2; + const row = table.getRow(id2); + if (value) { + if (!row.getCanMultiSelect()) { + Object.keys(selectedRowIds).forEach((key2) => delete selectedRowIds[key2]); } - return "-" + Object.keys(items).findIndex((key2) => items[key2].includes(id2)).toString(); - }; - const getIndex = (id2) => { - const container = findContainer(id2); - if (!container) { - return -1; + if (row.getCanSelect()) { + selectedRowIds[id2] = true; } - const index = items[Object.keys(items)[parseInt(container) * -1]].indexOf(id2); - return index; - }; - const resetState = () => { - setActiveId(null); - setOverId(null); + } else { + delete selectedRowIds[id2]; + } + if (((_a2 = row.subRows) == null ? void 0 : _a2.length) && row.getCanSelectSubRows()) { + row.subRows.forEach((row2) => mutateRowIsSelected(selectedRowIds, row2.id, value, table)); + } +}; +function selectRowsFn(table, rowModel) { + const rowSelection = table.getState().rowSelection; + const newSelectedFlatRows = []; + const newSelectedRowsById = {}; + const recurseRows = function(rows, depth) { + return rows.map((row) => { + var _a2; + const isSelected = isRowSelected(row, rowSelection); + if (isSelected) { + newSelectedFlatRows.push(row); + newSelectedRowsById[row.id] = row; + } + if ((_a2 = row.subRows) == null ? void 0 : _a2.length) { + row = { + ...row, + subRows: recurseRows(row.subRows) + }; + } + if (isSelected) { + return row; + } + }).filter(Boolean); }; - const onDragCancel = () => { - resetState(); + return { + rows: recurseRows(rowModel.rows), + flatRows: newSelectedFlatRows, + rowsById: newSelectedRowsById }; - h2(() => { - requestAnimationFrame(() => { - recentlyMovedToNewContainer.current = false; +} +function isRowSelected(row, selection) { + var _selection$row$id; + return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false; +} +function isSubRowSelected(row, selection, table) { + if (row.subRows && row.subRows.length) { + let allChildrenSelected = true; + let someSelected = false; + row.subRows.forEach((subRow) => { + if (someSelected && !allChildrenSelected) { + return; + } + if (isRowSelected(subRow, selection)) { + someSelected = true; + } else { + allChildrenSelected = false; + } }); - }, [items]); - const saveFieldValue = (table, fieldValue, column) => { - if (table == "") { - const newTable = { - ...tableData, - cols: tableData.cols.map((m5) => m5.name == column ? { - ...m5, - value: fieldValue - } : m5) - }; - saveDB2(newTable); - } else if (contextTable[table]) { - saveContextDB({ - ...contextTable[table], - cols: contextTable[table].cols.map((m5) => m5.name == column ? { - ...m5, - value: fieldValue - } : m5) - }, table); + return allChildrenSelected ? "all" : someSelected ? "some" : false; + } + return false; +} +var reSplitAlphaNumeric = /([0-9]+)/gm; +var alphanumeric = (rowA, rowB, columnId) => { + return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase()); +}; +var alphanumericCaseSensitive = (rowA, rowB, columnId) => { + return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId))); +}; +var text = (rowA, rowB, columnId) => { + return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase()); +}; +var textCaseSensitive = (rowA, rowB, columnId) => { + return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId))); +}; +var datetime = (rowA, rowB, columnId) => { + const a5 = rowA.getValue(columnId); + const b4 = rowB.getValue(columnId); + return a5 > b4 ? 1 : a5 < b4 ? -1 : 0; +}; +var basic = (rowA, rowB, columnId) => { + return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId)); +}; +function compareBasic(a5, b4) { + return a5 === b4 ? 0 : a5 > b4 ? 1 : -1; +} +function toString(a5) { + if (typeof a5 === "number") { + if (isNaN(a5) || a5 === Infinity || a5 === -Infinity) { + return ""; + } + return String(a5); + } + if (typeof a5 === "string") { + return a5; + } + return ""; +} +function compareAlphanumeric(aStr, bStr) { + const a5 = aStr.split(reSplitAlphaNumeric).filter(Boolean); + const b4 = bStr.split(reSplitAlphaNumeric).filter(Boolean); + while (a5.length && b4.length) { + const aa = a5.shift(); + const bb = b4.shift(); + const an2 = parseInt(aa, 10); + const bn2 = parseInt(bb, 10); + const combo = [an2, bn2].sort(); + if (isNaN(combo[0])) { + if (aa > bb) { + return 1; + } + if (bb > aa) { + return -1; + } + continue; + } + if (isNaN(combo[1])) { + return isNaN(an2) ? -1 : 1; + } + if (an2 > bn2) { + return 1; + } + if (bn2 > an2) { + return -1; } + } + return a5.length - b4.length; +} +var sortingFns = { + alphanumeric, + alphanumericCaseSensitive, + text, + textCaseSensitive, + datetime, + basic +}; +var Sorting = { + getInitialState: (state) => { + return { + sorting: [], + ...state + }; + }, + getDefaultColumnDef: () => { + return { + sortingFn: "auto" + }; + }, + getDefaultOptions: (table) => { + return { + onSortingChange: makeStateUpdater("sorting", table), + isMultiSortEvent: (e4) => { + return e4.shiftKey; + } + }; + }, + createColumn: (column, table) => { + return { + getAutoSortingFn: () => { + const firstRows = table.getFilteredRowModel().flatRows.slice(10); + let isString = false; + for (const row of firstRows) { + const value = row == null ? void 0 : row.getValue(column.id); + if (Object.prototype.toString.call(value) === "[object Date]") { + return sortingFns.datetime; + } + if (typeof value === "string") { + isString = true; + if (value.split(reSplitAlphaNumeric).length > 1) { + return sortingFns.alphanumeric; + } + } + } + if (isString) { + return sortingFns.text; + } + return sortingFns.basic; + }, + getAutoSortDir: () => { + const firstRow = table.getFilteredRowModel().flatRows[0]; + const value = firstRow == null ? void 0 : firstRow.getValue(column.id); + if (typeof value === "string") { + return "asc"; + } + return "desc"; + }, + getSortingFn: () => { + var _a2; + var _table$options$sortin; + if (!column) { + throw new Error(); + } + return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === "auto" ? column.getAutoSortingFn() : (_table$options$sortin = (_a2 = table.options.sortingFns) == null ? void 0 : _a2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn]; + }, + toggleSorting: (desc, multi) => { + const nextSortingOrder = column.getNextSortingOrder(); + const hasManualValue = typeof desc !== "undefined" && desc !== null; + table.setSorting((old) => { + const existingSorting = old == null ? void 0 : old.find((d5) => d5.id === column.id); + const existingIndex = old == null ? void 0 : old.findIndex((d5) => d5.id === column.id); + let newSorting = []; + let sortAction; + let nextDesc = hasManualValue ? desc : nextSortingOrder === "desc"; + if ((old == null ? void 0 : old.length) && column.getCanMultiSort() && multi) { + if (existingSorting) { + sortAction = "toggle"; + } else { + sortAction = "add"; + } + } else { + if ((old == null ? void 0 : old.length) && existingIndex !== old.length - 1) { + sortAction = "replace"; + } else if (existingSorting) { + sortAction = "toggle"; + } else { + sortAction = "replace"; + } + } + if (sortAction === "toggle") { + if (!hasManualValue) { + if (!nextSortingOrder) { + sortAction = "remove"; + } + } + } + if (sortAction === "add") { + var _table$options$maxMul; + newSorting = [...old, { + id: column.id, + desc: nextDesc + }]; + newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER)); + } else if (sortAction === "toggle") { + newSorting = old.map((d5) => { + if (d5.id === column.id) { + return { + ...d5, + desc: nextDesc + }; + } + return d5; + }); + } else if (sortAction === "remove") { + newSorting = old.filter((d5) => d5.id !== column.id); + } else { + newSorting = [{ + id: column.id, + desc: nextDesc + }]; + } + return newSorting; + }); + }, + getFirstSortDir: () => { + var _ref, _column$columnDef$sor; + const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === "desc"; + return sortDescFirst ? "desc" : "asc"; + }, + getNextSortingOrder: (multi) => { + var _table$options$enable, _table$options$enable2; + const firstSortDirection = column.getFirstSortDir(); + const isSorted = column.getIsSorted(); + if (!isSorted) { + return firstSortDirection; + } + if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true)) { + return false; + } + return isSorted === "desc" ? "asc" : "desc"; + }, + getCanSort: () => { + var _column$columnDef$ena, _table$options$enable3; + return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn; + }, + getCanMultiSort: () => { + var _ref2, _column$columnDef$ena2; + return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn; + }, + getIsSorted: () => { + var _a2; + const columnSort = (_a2 = table.getState().sorting) == null ? void 0 : _a2.find((d5) => d5.id === column.id); + return !columnSort ? false : columnSort.desc ? "desc" : "asc"; + }, + getSortIndex: () => { + var _a2; + var _table$getState$sorti; + return (_table$getState$sorti = (_a2 = table.getState().sorting) == null ? void 0 : _a2.findIndex((d5) => d5.id === column.id)) != null ? _table$getState$sorti : -1; + }, + clearSorting: () => { + table.setSorting((old) => (old == null ? void 0 : old.length) ? old.filter((d5) => d5.id !== column.id) : []); + }, + getToggleSortingHandler: () => { + const canSort = column.getCanSort(); + return (e4) => { + var _a2, _b2, _c2, _d2; + if (!canSort) + return; + (_a2 = e4.persist) == null ? void 0 : _a2.call(e4); + (_d2 = column.toggleSorting) == null ? void 0 : _d2.call(column, void 0, column.getCanMultiSort() ? (_c2 = (_b2 = table.options).isMultiSortEvent) == null ? void 0 : _c2.call(_b2, e4) : false); + }; + } + }; + }, + createTable: (table) => { + return { + setSorting: (updater) => { + var _a2, _b2; + return (_b2 = (_a2 = table.options).onSortingChange) == null ? void 0 : _b2.call(_a2, updater); + }, + resetSorting: (defaultState) => { + var _a2; + var _table$initialState$s; + table.setSorting(defaultState ? [] : (_table$initialState$s = (_a2 = table.initialState) == null ? void 0 : _a2.sorting) != null ? _table$initialState$s : []); + }, + getPreSortedRowModel: () => table.getGroupedRowModel(), + getSortedRowModel: () => { + if (!table._getSortedRowModel && table.options.getSortedRowModel) { + table._getSortedRowModel = table.options.getSortedRowModel(table); + } + if (table.options.manualSorting || !table._getSortedRowModel) { + return table.getPreSortedRowModel(); + } + return table._getSortedRowModel(); + } + }; + } +}; +var Visibility = { + getInitialState: (state) => { + return { + columnVisibility: {}, + ...state + }; + }, + getDefaultOptions: (table) => { + return { + onColumnVisibilityChange: makeStateUpdater("columnVisibility", table) + }; + }, + createColumn: (column, table) => { + return { + toggleVisibility: (value) => { + if (column.getCanHide()) { + table.setColumnVisibility((old) => ({ + ...old, + [column.id]: value != null ? value : !column.getIsVisible() + })); + } + }, + getIsVisible: () => { + var _a2; + var _table$getState$colum; + return (_table$getState$colum = (_a2 = table.getState().columnVisibility) == null ? void 0 : _a2[column.id]) != null ? _table$getState$colum : true; + }, + getCanHide: () => { + var _column$columnDef$ena, _table$options$enable; + return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true); + }, + getToggleVisibilityHandler: () => { + return (e4) => { + var _a2; + (_a2 = column.toggleVisibility) == null ? void 0 : _a2.call(column, e4.target.checked); + }; + } + }; + }, + createRow: (row, table) => { + return { + _getAllVisibleCells: memo(() => [row.getAllCells(), table.getState().columnVisibility], (cells) => { + return cells.filter((cell) => cell.column.getIsVisible()); + }, { + key: false, + debug: () => { + var _table$options$debugA; + return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugRows; + } + }), + getVisibleCells: memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], { + key: "row.getVisibleCells", + debug: () => { + var _table$options$debugA2; + return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugRows; + } + }) + }; + }, + createTable: (table) => { + const makeVisibleColumnsMethod = (key2, getColumns) => { + return memo(() => [getColumns(), getColumns().filter((d5) => d5.getIsVisible()).map((d5) => d5.id).join("_")], (columns) => { + return columns.filter((d5) => { + var _a2; + return (_a2 = d5.getIsVisible) == null ? void 0 : _a2.call(d5); + }); + }, { + key: key2, + debug: () => { + var _table$options$debugA3; + return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugColumns; + } + }); + }; + return { + getVisibleFlatColumns: makeVisibleColumnsMethod("getVisibleFlatColumns", () => table.getAllFlatColumns()), + getVisibleLeafColumns: makeVisibleColumnsMethod("getVisibleLeafColumns", () => table.getAllLeafColumns()), + getLeftVisibleLeafColumns: makeVisibleColumnsMethod("getLeftVisibleLeafColumns", () => table.getLeftLeafColumns()), + getRightVisibleLeafColumns: makeVisibleColumnsMethod("getRightVisibleLeafColumns", () => table.getRightLeafColumns()), + getCenterVisibleLeafColumns: makeVisibleColumnsMethod("getCenterVisibleLeafColumns", () => table.getCenterLeafColumns()), + setColumnVisibility: (updater) => { + var _a2, _b2; + return (_b2 = (_a2 = table.options).onColumnVisibilityChange) == null ? void 0 : _b2.call(_a2, updater); + }, + resetColumnVisibility: (defaultState) => { + var _table$initialState$c; + table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {}); + }, + toggleAllColumnsVisible: (value) => { + var _value; + value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible(); + table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => { + var _a2; + return { + ...obj, + [column.id]: !value ? !((_a2 = column.getCanHide) == null ? void 0 : _a2.call(column)) : value + }; + }, {})); + }, + getIsAllColumnsVisible: () => !table.getAllLeafColumns().some((column) => { + var _a2; + return !((_a2 = column.getIsVisible) == null ? void 0 : _a2.call(column)); + }), + getIsSomeColumnsVisible: () => table.getAllLeafColumns().some((column) => { + var _a2; + return (_a2 = column.getIsVisible) == null ? void 0 : _a2.call(column); + }), + getToggleAllColumnsVisibilityHandler: () => { + return (e4) => { + var _a2; + table.toggleAllColumnsVisible((_a2 = e4.target) == null ? void 0 : _a2.checked); + }; + } + }; + } +}; +var features = [Headers, Visibility, Ordering, Pinning, Filters, Sorting, Grouping, Expanding, Pagination, RowSelection, ColumnSizing]; +function createTable(options) { + var _options$initialState; + if (options.debugAll || options.debugTable) { + console.info("Creating Table Instance..."); + } + let table = { + _features: features }; - const saveValue = (table, value, index, column) => { - if (table == "") { - const newTable = { - ...tableData, - rows: tableData.rows.map((r3, i4) => i4 == index ? { - ...r3, - [column]: value - } : r3) - }; - saveDB2(newTable); - } else if (contextTable[table]) { - saveContextDB({ - ...contextTable[table], - rows: contextTable[table].rows.map((r3, i4) => i4 == index ? { - ...r3, - [column]: value - } : r3) - }, table); + const defaultOptions3 = table._features.reduce((obj, feature) => { + var _a2; + return Object.assign(obj, (_a2 = feature.getDefaultOptions) == null ? void 0 : _a2.call(feature, table)); + }, {}); + const mergeOptions = (options2) => { + if (table.options.mergeOptions) { + return table.options.mergeOptions(defaultOptions3, options2); } + return { + ...defaultOptions3, + ...options2 + }; }; - return /* @__PURE__ */ bn.createElement(DndContext, { - sensors, - collisionDetection: closestCenter, - measuring: { - droppable: { - strategy: MeasuringStrategy.Always + const coreInitialState = {}; + let initialState = { + ...coreInitialState, + ...(_options$initialState = options.initialState) != null ? _options$initialState : {} + }; + table._features.forEach((feature) => { + var _a2; + var _feature$getInitialSt; + initialState = (_feature$getInitialSt = (_a2 = feature.getInitialState) == null ? void 0 : _a2.call(feature, initialState)) != null ? _feature$getInitialSt : initialState; + }); + const queued = []; + let queuedTimeout = false; + const coreInstance = { + _features: features, + options: { + ...defaultOptions3, + ...options + }, + initialState, + _queue: (cb) => { + queued.push(cb); + if (!queuedTimeout) { + queuedTimeout = true; + Promise.resolve().then(() => { + while (queued.length) { + queued.shift()(); + } + queuedTimeout = false; + }).catch((error) => setTimeout(() => { + throw error; + })); } }, - onDragStart: ({ active }) => { - setActiveId(active.id); + reset: () => { + table.setState(table.initialState); }, - onDragOver: ({ active, over }) => { - const overId2 = over == null ? void 0 : over.id; - if (overId2) - setOverId(overId2); + setOptions: (updater) => { + const newOptions = functionalUpdate(updater, table.options); + table.options = mergeOptions(newOptions); }, - onDragEnd: ({ active, over }) => { - if (active.id in items && (over == null ? void 0 : over.id)) { - return; - } - const activeContainer = findContainer(active.id); - if (!activeContainer) { - resetState(); - return; - } - const overId2 = over == null ? void 0 : over.id; - if (!overId2) { - resetState(); - return; - } - if (overId2 === PLACEHOLDER_ID) { - return; + getState: () => { + return table.options.state; + }, + setState: (updater) => { + var _a2, _b2; + (_b2 = (_a2 = table.options).onStateChange) == null ? void 0 : _b2.call(_a2, updater); + }, + _getRowId: (row, index, parent) => { + var _a2, _b2; + var _table$options$getRow; + return (_table$options$getRow = (_b2 = (_a2 = table.options).getRowId) == null ? void 0 : _b2.call(_a2, row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join(".") : index}`; + }, + getCoreRowModel: () => { + if (!table._getCoreRowModel) { + table._getCoreRowModel = table.options.getCoreRowModel(table); } - const overContainer = findContainer(overId2); - if (overContainer) { - const activeIndex = items[Object.keys(items)[parseInt(activeContainer) * -1]].indexOf(active.id); - const overIndex = items[Object.keys(items)[parseInt(overContainer) * -1]].indexOf(overId2); - if (activeContainer != overContainer) { - saveValue( - groupBy.table, - Object.keys(items)[parseInt(overContainer) * -1], - groupBy.table == "" ? parseInt(activeId) : parseInt(data[parseInt(activeId)]["_index" + groupBy.table]), - groupBy.name - ); + return table._getCoreRowModel(); + }, + getRowModel: () => { + return table.getPaginationRowModel(); + }, + getRow: (id2) => { + const row = table.getRowModel().rowsById[id2]; + if (!row) { + if (true) { + throw new Error(`getRow expected an ID, but got ${id2}`); } + throw new Error(); } - resetState(); + return row; }, - cancelDrop, - onDragCancel, - modifiers - }, /* @__PURE__ */ bn.createElement("div", { - className: "mk-cards-container" - }, /* @__PURE__ */ bn.createElement("div", { - className: "mk-cards-view" - }, /* @__PURE__ */ bn.createElement(SortableContext, { - items: [...containers, PLACEHOLDER_ID], - strategy: vertical ? verticalListSortingStrategy : horizontalListSortingStrategy - }, containers.map((containerId) => /* @__PURE__ */ bn.createElement(DroppableContainer, { - key: containerId, - id: containerId, - label: minimal ? void 0 : `${Object.keys(items)[parseInt(containerId) * -1]}`, - field: groupBy, - columns, - items: items[Object.keys(items)[parseInt(containerId) * -1]], - scrollable, - style: containerStyle, - unstyled: minimal - }, /* @__PURE__ */ bn.createElement(SortableContext, { - items: items[Object.keys(items)[parseInt(containerId) * -1]], - strategy - }, items[Object.keys(items)[parseInt(containerId) * -1]].map((value, index) => { - return /* @__PURE__ */ bn.createElement(SortableItem, { - disabled: isSortingContainer, - key: value, - id: value, - value: data[parseInt(value)], - cols: displayCols, - index, - handle, - style: getItemStyles, - wrapperStyle, - renderItem, - containerId, - getIndex - }); - }))))))), j3( - /* @__PURE__ */ bn.createElement(DragOverlay, { - adjustScale: adjustScale2 - }, activeId ? containers.includes(activeId) ? renderContainerDragOverlay(activeId) : renderSortableItemDragOverlay(activeId) : null), - document.body - )); - function renderSortableItemDragOverlay(id2) { - return /* @__PURE__ */ bn.createElement(KanbanCard, { - value: data[parseInt(id2)], - handle, - id: id2, - cols: displayCols, - style: getItemStyles({ - containerId: findContainer(id2), - overIndex: -1, - index: getIndex(id2), - value: id2, - isSorting: true, - isDragging: true, - isDragOverlay: true - }), - color: getColor(id2), - wrapperStyle: wrapperStyle({ index: 0 }), - renderItem, - dragOverlay: true - }); - } - function renderContainerDragOverlay(containerId) { - return /* @__PURE__ */ bn.createElement(KanbanColumn, { - id: containerId, - label: `Column ${containerId}`, - field: groupBy, - columns, - style: { - height: "100%" + _getDefaultColumnDef: memo(() => [table.options.defaultColumn], (defaultColumn) => { + var _defaultColumn; + defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {}; + return { + header: (props2) => { + const resolvedColumnDef = props2.header.column.columnDef; + if (resolvedColumnDef.accessorKey) { + return resolvedColumnDef.accessorKey; + } + if (resolvedColumnDef.accessorFn) { + return resolvedColumnDef.id; + } + return null; + }, + cell: (props2) => { + var _a2, _b2; + var _props$renderValue$to; + return (_props$renderValue$to = (_b2 = (_a2 = props2.renderValue()) == null ? void 0 : _a2.toString) == null ? void 0 : _b2.call(_a2)) != null ? _props$renderValue$to : null; + }, + ...table._features.reduce((obj, feature) => { + var _a2; + return Object.assign(obj, (_a2 = feature.getDefaultColumnDef) == null ? void 0 : _a2.call(feature)); + }, {}), + ...defaultColumn + }; + }, { + debug: () => { + var _table$options$debugA; + return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugColumns; }, - shadow: true, - unstyled: false - }, items[Object.keys(items)[parseInt(containerId) * -1]].map((item, index) => /* @__PURE__ */ bn.createElement(KanbanCard, { - key: item, - id: item, - value: data[parseInt(item)], - cols: displayCols, - handle, - style: getItemStyles({ - containerId, - overIndex: -1, - index: getIndex(item), - value: item, - isDragging: false, - isSorting: false, - isDragOverlay: false - }), - color: getColor(item), - wrapperStyle: wrapperStyle({ index }), - renderItem - }))); - } - function getNextContainerId() { - const containeIds = Object.keys(items); - const lastContaineId = containeIds[containeIds.length - 1]; - return String.fromCharCode(lastContaineId.charCodeAt(0) + 1); - } -} -function getColor(id2) { - switch (id2[0]) { - case "A": - return "#7193f1"; - case "B": - return "#ffda6c"; - case "C": - return "#00bcd4"; - case "D": - return "#ef769f"; - } - return void 0; -} -function SortableItem({ - disabled, - id: id2, - index, - handle, - renderItem, - style, - containerId, - getIndex, - cols, - value, - wrapperStyle -}) { - const { - setNodeRef, - listeners, - isDragging, - isSorting, - over, - overIndex, - transform, - transition - } = useSortable({ - id: id2 + key: "getDefaultColumnDef" + }), + _getColumnDefs: () => table.options.columns, + getAllColumns: memo(() => [table._getColumnDefs()], (columnDefs) => { + const recurseColumns = function(columnDefs2, parent, depth) { + if (depth === void 0) { + depth = 0; + } + return columnDefs2.map((columnDef) => { + const column = createColumn(table, columnDef, depth, parent); + const groupingColumnDef = columnDef; + column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : []; + return column; + }); + }; + return recurseColumns(columnDefs); + }, { + key: "getAllColumns", + debug: () => { + var _table$options$debugA2; + return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugColumns; + } + }), + getAllFlatColumns: memo(() => [table.getAllColumns()], (allColumns) => { + return allColumns.flatMap((column) => { + return column.getFlatColumns(); + }); + }, { + key: "getAllFlatColumns", + debug: () => { + var _table$options$debugA3; + return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugColumns; + } + }), + _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], (flatColumns) => { + return flatColumns.reduce((acc, column) => { + acc[column.id] = column; + return acc; + }, {}); + }, { + key: "getAllFlatColumnsById", + debug: () => { + var _table$options$debugA4; + return (_table$options$debugA4 = table.options.debugAll) != null ? _table$options$debugA4 : table.options.debugColumns; + } + }), + getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns2) => { + let leafColumns = allColumns.flatMap((column) => column.getLeafColumns()); + return orderColumns2(leafColumns); + }, { + key: "getAllLeafColumns", + debug: () => { + var _table$options$debugA5; + return (_table$options$debugA5 = table.options.debugAll) != null ? _table$options$debugA5 : table.options.debugColumns; + } + }), + getColumn: (columnId) => { + const column = table._getAllFlatColumnsById()[columnId]; + if (!column) { + if (true) { + console.warn(`[Table] Column with id ${columnId} does not exist.`); + } + throw new Error(); + } + return column; + } + }; + Object.assign(table, coreInstance); + table._features.forEach((feature) => { + var _a2; + return Object.assign(table, (_a2 = feature.createTable) == null ? void 0 : _a2.call(feature, table)); }); - const mounted = useMountStatus(); - const mountedWhileDragging = isDragging && !mounted; - return /* @__PURE__ */ bn.createElement(KanbanCard, { - ref: disabled ? void 0 : setNodeRef, - value, + return table; +} +function createCell(table, row, column, columnId) { + const getRenderValue = () => { + var _cell$getValue; + return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue; + }; + const cell = { + id: `${row.id}_${column.id}`, + row, + column, + getValue: () => row.getValue(columnId), + renderValue: getRenderValue, + getContext: memo(() => [table, column, row, cell], (table2, column2, row2, cell2) => ({ + table: table2, + column: column2, + row: row2, + cell: cell2, + getValue: cell2.getValue, + renderValue: cell2.renderValue + }), { + key: "cell.getContext", + debug: () => table.options.debugAll + }) + }; + table._features.forEach((feature) => { + var _a2; + Object.assign(cell, (_a2 = feature.createCell) == null ? void 0 : _a2.call(feature, cell, column, row, table)); + }, {}); + return cell; +} +var createRow = (table, id2, original, rowIndex, depth, subRows) => { + var _a2; + let row = { id: id2, - cols, - dragging: isDragging, - sorting: isSorting, - handle, - index, - wrapperStyle: wrapperStyle({ index }), - style: style({ - index, - value: id2, - isDragging, - isSorting, - overIndex: over ? getIndex(over.id) : overIndex, - containerId + index: rowIndex, + original, + depth, + _valuesCache: {}, + _uniqueValuesCache: {}, + getValue: (columnId) => { + if (row._valuesCache.hasOwnProperty(columnId)) { + return row._valuesCache[columnId]; + } + const column = table.getColumn(columnId); + if (!column.accessorFn) { + return void 0; + } + row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex); + return row._valuesCache[columnId]; + }, + getUniqueValues: (columnId) => { + if (row._uniqueValuesCache.hasOwnProperty(columnId)) { + return row._uniqueValuesCache[columnId]; + } + const column = table.getColumn(columnId); + if (!column.accessorFn) { + return void 0; + } + if (!column.columnDef.getUniqueValues) { + row._uniqueValuesCache[columnId] = [row.getValue(columnId)]; + return row._uniqueValuesCache[columnId]; + } + row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex); + return row._uniqueValuesCache[columnId]; + }, + renderValue: (columnId) => { + var _row$getValue; + return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue; + }, + subRows: subRows != null ? subRows : [], + getLeafRows: () => flattenBy(row.subRows, (d5) => d5.subRows), + getAllCells: memo(() => [table.getAllLeafColumns()], (leafColumns) => { + return leafColumns.map((column) => { + return createCell(table, row, column, column.id); + }); + }, { + key: "row.getAllCells", + debug: () => { + var _table$options$debugA; + return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugRows; + } }), - color: getColor(id2), - transition, - transform, - fadeIn: mountedWhileDragging, - listeners, - renderItem + _getAllCellsByColumnId: memo(() => [row.getAllCells()], (allCells) => { + return allCells.reduce((acc, cell) => { + acc[cell.column.id] = cell; + return acc; + }, {}); + }, { + key: false, + debug: () => { + var _table$options$debugA2; + return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugRows; + } + }) + }; + for (let i4 = 0; i4 < table._features.length; i4++) { + const feature = table._features[i4]; + Object.assign(row, (_a2 = feature == null ? void 0 : feature.createRow) == null ? void 0 : _a2.call(feature, row, table)); + } + return row; +}; +function getCoreRowModel() { + return (table) => memo(() => [table.options.data], (data) => { + const rowModel = { + rows: [], + flatRows: [], + rowsById: {} + }; + const accessRows = function(originalRows, depth, parent) { + var _a2; + if (depth === void 0) { + depth = 0; + } + const rows = []; + for (let i4 = 0; i4 < originalRows.length; i4++) { + const row = createRow(table, table._getRowId(originalRows[i4], i4, parent), originalRows[i4], i4, depth); + rowModel.flatRows.push(row); + rowModel.rowsById[row.id] = row; + rows.push(row); + if (table.options.getSubRows) { + row.originalSubRows = table.options.getSubRows(originalRows[i4], i4); + if ((_a2 = row.originalSubRows) == null ? void 0 : _a2.length) { + row.subRows = accessRows(row.originalSubRows, depth + 1, row); + } + } + } + return rows; + }; + rowModel.rows = accessRows(data); + return rowModel; + }, { + key: "getRowModel", + debug: () => { + var _table$options$debugA; + return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable; + }, + onChange: () => { + table._autoResetPageIndex(); + } }); } -function useMountStatus() { - const [isMounted, setIsMounted] = p2(false); - h2(() => { - const timeout = setTimeout(() => setIsMounted(true), 500); - return () => clearTimeout(timeout); - }, []); - return isMounted; +function getGroupedRowModel() { + return (table) => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => { + if (!rowModel.rows.length || !grouping.length) { + return rowModel; + } + const existingGrouping = grouping.filter((columnId) => table.getColumn(columnId)); + const groupedFlatRows = []; + const groupedRowsById = {}; + const groupUpRecursively = function(rows, depth, parentId) { + if (depth === void 0) { + depth = 0; + } + if (depth >= existingGrouping.length) { + return rows.map((row) => { + row.depth = depth; + groupedFlatRows.push(row); + groupedRowsById[row.id] = row; + if (row.subRows) { + row.subRows = groupUpRecursively(row.subRows, depth + 1); + } + return row; + }); + } + const columnId = existingGrouping[depth]; + const rowGroupsMap = groupBy(rows, columnId); + const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => { + let [groupingValue, groupedRows2] = _ref; + let id2 = `${columnId}:${groupingValue}`; + id2 = parentId ? `${parentId}>${id2}` : id2; + const subRows = groupUpRecursively(groupedRows2, depth + 1, id2); + const leafRows = depth ? flattenBy(groupedRows2, (row2) => row2.subRows) : groupedRows2; + const row = createRow(table, id2, leafRows[0].original, index, depth); + Object.assign(row, { + groupingColumnId: columnId, + groupingValue, + subRows, + leafRows, + getValue: (columnId2) => { + if (existingGrouping.includes(columnId2)) { + if (row._valuesCache.hasOwnProperty(columnId2)) { + return row._valuesCache[columnId2]; + } + if (groupedRows2[0]) { + var _groupedRows$0$getVal; + row._valuesCache[columnId2] = (_groupedRows$0$getVal = groupedRows2[0].getValue(columnId2)) != null ? _groupedRows$0$getVal : void 0; + } + return row._valuesCache[columnId2]; + } + if (row._groupingValuesCache.hasOwnProperty(columnId2)) { + return row._groupingValuesCache[columnId2]; + } + const column = table.getColumn(columnId2); + const aggregateFn = column.getAggregationFn(); + if (aggregateFn) { + row._groupingValuesCache[columnId2] = aggregateFn(columnId2, leafRows, groupedRows2); + return row._groupingValuesCache[columnId2]; + } + } + }); + subRows.forEach((subRow) => { + groupedFlatRows.push(subRow); + groupedRowsById[subRow.id] = subRow; + }); + return row; + }); + return aggregatedGroupedRows; + }; + const groupedRows = groupUpRecursively(rowModel.rows, 0, ""); + groupedRows.forEach((subRow) => { + groupedFlatRows.push(subRow); + groupedRowsById[subRow.id] = subRow; + }); + return { + rows: groupedRows, + flatRows: groupedFlatRows, + rowsById: groupedRowsById + }; + }, { + key: "getGroupedRowModel", + debug: () => { + var _table$options$debugA; + return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable; + }, + onChange: () => { + table._queue(() => { + table._autoResetExpanded(); + table._autoResetPageIndex(); + }); + } + }); +} +function groupBy(rows, columnId) { + const groupMap = /* @__PURE__ */ new Map(); + return rows.reduce((map, row) => { + const resKey = `${row.getValue(columnId)}`; + const previous = map.get(resKey); + if (!previous) { + map.set(resKey, [row]); + } else { + previous.push(row); + } + return map; + }, groupMap); +} +function getExpandedRowModel() { + return (table) => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => { + if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) { + return rowModel; + } + if (!paginateExpandedRows) { + return rowModel; + } + return expandRows(rowModel); + }, { + key: "getExpandedRowModel", + debug: () => { + var _table$options$debugA; + return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable; + } + }); +} +function expandRows(rowModel) { + const expandedRows = []; + const handleRow = (row) => { + var _a2; + expandedRows.push(row); + if (((_a2 = row.subRows) == null ? void 0 : _a2.length) && row.getIsExpanded()) { + row.subRows.forEach(handleRow); + } + }; + rowModel.rows.forEach(handleRow); + return { + rows: expandedRows, + flatRows: rowModel.flatRows, + rowsById: rowModel.rowsById + }; } -// src/components/ContextView/TableView/TableView.tsx -init_compat_module(); -var import_react_table = __toESM(require_index_production()); +// node_modules/@tanstack/react-table/build/lib/index.mjs +function flexRender(Comp, props2) { + return !Comp ? null : isReactComponent(Comp) ? /* @__PURE__ */ h(Comp, props2) : Comp; +} +function isReactComponent(component) { + return isClassComponent(component) || typeof component === "function" || isExoticComponent(component); +} +function isClassComponent(component) { + return typeof component === "function" && (() => { + const proto = Object.getPrototypeOf(component); + return proto.prototype && proto.prototype.isReactComponent; + })(); +} +function isExoticComponent(component) { + return typeof component === "object" && typeof component.$$typeof === "symbol" && ["react.memo", "react.forward_ref"].includes(component.$$typeof.description); +} +function useReactTable(options) { + const resolvedOptions = { + state: {}, + onStateChange: () => { + }, + renderFallbackValue: null, + ...options + }; + const [tableRef] = p2(() => ({ + current: createTable(resolvedOptions) + })); + const [state, setState] = p2(() => tableRef.current.initialState); + tableRef.current.setOptions((prev) => ({ + ...prev, + ...options, + state: { + ...state, + ...options.state + }, + onStateChange: (updater) => { + var _a2; + setState(updater); + (_a2 = options.onStateChange) == null ? void 0 : _a2.call(options, updater); + } + })); + return tableRef.current; +} // src/hooks/useCombinedRef.tsx -init_compat_module(); function useCombinedRefs2(...refs) { return F( () => (node) => { @@ -42150,8 +44393,7 @@ function useCombinedRefs2(...refs) { } // src/components/ContextView/TableView/ColumnHeader.tsx -var import_obsidian13 = require("obsidian"); -init_compat_module(); +var import_obsidian16 = require("obsidian"); var filePropTypes = [ { name: "Created", @@ -42169,34 +44411,39 @@ var filePropTypes = [ name: "Size", value: "size" }, + { + name: "Note Preview", + value: "preview" + }, { name: "Folder", value: "folder" } ]; -var ColumnHeader = (props) => { - const [field, setField] = p2(props.field); +var ColumnHeader = (props2) => { + const [field, setField] = p2(props2.column); const [saveHook, setSaveHook] = p2(false); const menuRef = _2(null); + const { loadContextFields, tableData, contextTable } = q2(MDBContext); h2(() => { - setField(props.field); - }, [props.field]); + setField(props2.column); + }, [props2.column]); const { attributes, listeners, setNodeRef: setDraggableNodeRef, transform } = useDraggable({ - id: field.name + props.table, + id: field.name + field.table, data: { name: field.name } }); const { setNodeRef: setDroppableNodeRef } = useDroppable({ - id: field.name + props.table, + id: field.name + field.table, data: { name: field.name } }); h2(() => { if (saveHook) { if (field.name.length > 0) { - if (field.name != props.field.name || field.type != props.field.type || field.value != props.field.value || field.attrs != props.field.attrs) { - const saveResult = props.saveField(field, props.table, props.field); + if (field.name != props2.column.name || field.type != props2.column.type || field.value != props2.column.value || field.attrs != props2.column.attrs) { + const saveResult = props2.saveColumn(field, props2.column); if (saveResult) { - if (props.isNew) { - setField(props.field); + if (props2.isNew) { + setField(props2.column); menuRef.current.hide(); } } @@ -42207,7 +44454,7 @@ var ColumnHeader = (props) => { }, [saveHook]); h2(() => { if (menuRef.current) - showMenu(props.editable); + showMenu(props2.editable); }, [field]); const saveMenu = (menu) => { setTimeout(() => { @@ -42216,6 +44463,20 @@ var ColumnHeader = (props) => { }, 100); setSaveHook(true); }; + const saveContext = (options, value) => { + const newContext = tagFromString(value[0]); + initiateContextIfNotExists(props2.plugin, newContext).then((f4) => { + if (f4) { + return insertContextItems(props2.plugin, optionValuesForColumn(field.name, field.table == "" ? tableData : contextTable[field.table]), newContext); + } + }).then((f4) => loadContextFields(newContext)); + const newField = { + ...field, + value: newContext != null ? newContext : "" + }; + setField(newField); + props2.saveColumn(newField, props2.column); + }; const saveField = (options, value) => { var _a2; const newField = { @@ -42223,7 +44484,7 @@ var ColumnHeader = (props) => { value: (_a2 = value[0]) != null ? _a2 : "" }; setField(newField); - props.saveField(newField, props.table, props.field); + props2.saveColumn(newField, props2.column); }; const showMenu = (editable) => { var _a2; @@ -42232,7 +44493,7 @@ var ColumnHeader = (props) => { } setSaveHook(false); const fieldType = (_a2 = fieldTypes.find((f4) => f4.type == field.type || f4.multiType == field.type)) != null ? _a2 : fieldTypes[0]; - const menu = new import_obsidian13.Menu(); + const menu = new import_obsidian16.Menu(); menu.setUseNativeMenu(false); menuRef.current = menu; if (editable) { @@ -42241,14 +44502,19 @@ var ColumnHeader = (props) => { inputMenuItem(menuItem, (_a3 = field == null ? void 0 : field.name) != null ? _a3 : "", (value) => setField((f4) => ({ ...f4, name: value }))); menuItem.setIcon("type"); }); - const clearConstraintValueIfNewType = (f4, value) => value[0] == fieldType.type || value[0] == fieldType.multiType ? f4.value : null; + const getNewValueForType = (f4, value) => { + if (value[0].startsWith("option")) { + return optionValuesForColumn(f4.name, f4.table == "" ? tableData : contextTable[f4.table]).join(","); + } + return value[0] == fieldType.type || value[0] == fieldType.multiType ? f4.value : null; + }; const selectOption = (options, value) => { setField((f4) => { var _a3; return { ...f4, type: (_a3 = value[0]) != null ? _a3 : "", - value: clearConstraintValueIfNewType(f4, value) + value: getNewValueForType(f4, value) }; }); }; @@ -42266,10 +44532,9 @@ var ColumnHeader = (props) => { }); if (fieldType.type == "context") { menu.addItem((menuItem) => { - loadTags().then((f4) => { - var _a3; - return disclosureMenuItem(menuItem, false, false, "Context", (_a3 = field.value) != null ? _a3 : "", f4.map((m5) => ({ name: m5, value: m5 })), saveField); - }); + var _a3; + const f4 = loadTags(props2.plugin); + disclosureMenuItem(menuItem, false, true, "Context", (_a3 = field.value) != null ? _a3 : "", f4.map((m5) => ({ name: m5, value: m5 })), saveContext); }); } if (fieldType.type == "fileprop") { @@ -42283,7 +44548,7 @@ var ColumnHeader = (props) => { const titleDiv = docFrag.createDiv("title"); titleDiv.textContent = "Multiple"; const div = docFrag.createDiv("toggle"); - const toggle = new import_obsidian13.ToggleComponent(div); + const toggle = new import_obsidian16.ToggleComponent(div); toggle.setValue(field.type == fieldType.multiType); menu.addItem((menuItem) => { menuItem.setTitle(docFrag); @@ -42296,46 +44561,26 @@ var ColumnHeader = (props) => { }); }); } - if (!props.isNew) { + if (!props2.isNew) { menu.addSeparator(); menu.addItem((menuItem) => { menuItem.setTitle("Hide Field"); menuItem.onClick(() => { - props.hide(props.field.name + props.table); + props2.hide(props2.column.name + props2.column.table); }); menuItem.setIcon("eye-off"); }); menu.addItem((menuItem) => { menuItem.setTitle("Delete Field"); menuItem.onClick(() => { - props.deleteField(props.field, props.table); + props2.deleteColumn(props2.column); }); menuItem.setIcon("trash-2"); }); menu.addSeparator(); } } - if (!props.isNew) { - menu.addItem((menuItem) => { - menuItem.setTitle("Sort Ascending"); - menuItem.setIcon("sort-asc"); - menuItem.onClick(() => { - props.sort({ - field: props.field.name + props.table, - direction: "asc" - }); - }); - }); - menu.addItem((menuItem) => { - menuItem.setTitle("Sort Descending"); - menuItem.setIcon("sort-desc"); - menuItem.onClick(() => { - props.sort({ - field: props.field.name + props.table, - direction: "dsc" - }); - }); - }); + if (!props2.isNew) { } else { menu.addSeparator(); menu.addItem((menuItem) => { @@ -42356,7 +44601,7 @@ var ColumnHeader = (props) => { menuRef.current.hide(); return; } - showMenu(props.editable); + showMenu(props2.editable); }; const ref = _2(null); const setNodeRef = useCombinedRefs2(setDroppableNodeRef, setDraggableNodeRef); @@ -42370,52 +44615,37 @@ var ColumnHeader = (props) => { } }, /* @__PURE__ */ bn.createElement("div", { ref - }, props.field.name.length > 0 ? field.name : "+", /* @__PURE__ */ bn.createElement("span", { + }, props2.column.name.length > 0 ? field.name : "+", /* @__PURE__ */ bn.createElement("span", { className: "mk-col-header-context", - "aria-label": props.table.length > 0 ? props.table : "" - }, props.table.length > 0 ? "#" : ""))); + "aria-label": props2.column.table.length > 0 ? props2.column.table : "" + }, props2.column.table.length > 0 ? "#" : ""))); }; // src/components/ContextView/TableView/TableView.tsx -init_compat_module(); - -// src/components/FlowEditor/FlowView.tsx -init_compat_module(); -var FlowView = (props) => { - const ref = _2(null); - const loadFile = () => { - const file = getAbstractFileAtPath(app, props.path); - const div = ref.current; - const newLeaf = spawnPortal(window.make, div); - newLeaf.openFile(file); - }; - const toggleFlow = () => { - if (props.load) { - loadFile(); - } else { - ref.current.empty(); - } - }; - h2(() => { - toggleFlow(); - }, [props.load]); - return /* @__PURE__ */ bn.createElement("div", { - className: "mk-flowspace-editor", - ref - }); -}; - -// src/components/ContextView/TableView/TableView.tsx -var TableView = (props) => { - const { tableData, cols, data, tagContexts, folderPath, saveSchema, searchString, dbSchema, contextTable, setContextTable, predicate, setPredicate, saveDB: saveDB2, saveContextDB, schema, dbPath, saveField, delField, newField, isFolderContext } = q2(MDBContext); +var import_lodash3 = __toESM(require_lodash()); +var import_obsidian17 = require("obsidian"); +var TableView = (props2) => { + const { tableData, sortedColumns: cols, filteredData: data, tagContexts, folderPath, saveSchema, searchString, dbSchema, contextTable, setContextTable, predicate, savePredicate, saveDB: saveDB2, saveContextDB, schema, dbPath, saveColumn, delColumn, newColumn, isFolderContext } = q2(MDBContext); const [activeId, setActiveId] = p2(null); const [overId, setOverId] = p2(null); const [openFlows, setOpenFlows] = p2([]); + const [colsSize, setColsSize] = p2({}); + h2(() => { + setColsSize({ ...predicate.colsSize, "+": 30 }); + }, [predicate]); + const saveColsSize = (colSize) => { + setColsSize(colSize); + debouncedSavePredicate(colSize({})); + }; + const debouncedSavePredicate = T2( + (0, import_lodash3.debounce)((nextValue) => savePredicate({ + ...predicate, + colsSize: nextValue + }), 1e3), + [] + ); const newRow = () => { - saveDB2({ - ...tableData, - rows: [...tableData.rows, {}] - }); + saveDB2(createNewRow(tableData, { File: "" })); }; const deleteRow = (rowIndex) => { saveDB2({ @@ -42426,9 +44656,6 @@ var TableView = (props) => { const toggleFlow = (path) => { setOpenFlows((f4) => f4.find((p3) => p3 == path) ? f4.filter((p3) => p3 != path) : uniq([...f4, path])); }; - h2(() => { - setPredicate((p3) => ({ ...p3, colsOrder: uniq([...p3.colsOrder, ...cols.map((c4) => c4.name + c4.table)]) })); - }, [cols]); const columns = F(() => { var _a2; return [...(_a2 = cols == null ? void 0 : cols.map((f4) => { @@ -42440,8 +44667,6 @@ var TableView = (props) => { editable: f4.primary != "true", schemaId: dbSchema == null ? void 0 : dbSchema.id }, - filterFn: "includesString", - sortingFn: "alphanumeric", cell: ({ getValue, row: { index }, column: { id: id2 }, cell, table: table2 }) => { const initialValue = getValue(); const rowIndex = f4.table == "" ? index : parseInt(data[index]["_index" + f4.table]); @@ -42454,18 +44679,19 @@ var TableView = (props) => { var _a3; (_a3 = table2.options.meta) == null ? void 0 : _a3.updateFieldValue(rowIndex, f4.name, f4.table, fieldValue, value); }; - const props2 = { + const cellProps = { initialValue, saveValue, - editable: !cell.getIsGrouped() + editable: !cell.getIsGrouped(), + plugin: props2.plugin }; const fieldType = fieldTypes.find((t4) => f4.type == t4.type) || fieldTypes.find((t4) => f4.type == t4.multiType); if (!fieldType) { - return /* @__PURE__ */ bn.createElement(bn.Fragment, null); + return /* @__PURE__ */ bn.createElement(bn.Fragment, null, initialValue); } if (fieldType.type == "file") { return /* @__PURE__ */ bn.createElement(FileCell, { - ...props2, + ...cellProps, multi: fieldType.multiType == f4.type, folder: folderPath, isFolder: isFolderContext, @@ -42474,77 +44700,77 @@ var TableView = (props) => { }); } else if (fieldType.type == "boolean") { return /* @__PURE__ */ bn.createElement(BooleanCell, { - ...props2 + ...cellProps, + column: f4 }); } else if (fieldType.type == "option") { return /* @__PURE__ */ bn.createElement(OptionCell, { - ...props2, + ...cellProps, options: f4.value, multi: fieldType.multiType == f4.type, saveOptions: saveFieldValue }); } else if (fieldType.type == "date") { return /* @__PURE__ */ bn.createElement(DateCell, { - ...props2 + ...cellProps }); } else if (fieldType.type == "context") { return /* @__PURE__ */ bn.createElement(ContextCell, { - ...props2, + ...cellProps, multi: fieldType.multiType == f4.type, - contextTable: contextTable[f4.value] + contextTable: contextTable[f4.value], + contextTag: f4.value }); } else if (fieldType.type == "fileprop") { return /* @__PURE__ */ bn.createElement(FilePropertyCell, { - ...props2, + ...cellProps, property: f4.value, file: data[index]["File"] }); } else if (fieldType.type == "number") { return /* @__PURE__ */ bn.createElement(NumberCell, { - ...props2 + ...cellProps }); } else if (fieldType.type == "link") { return /* @__PURE__ */ bn.createElement(LinkCell, { - ...props2, + ...cellProps, multi: fieldType.multiType == f4.type, file: data[index]["File"] }); } else { return /* @__PURE__ */ bn.createElement(TextCell, { - ...props2 + ...cellProps }); } } }; })) != null ? _a2 : [], { header: "+", meta: { schemaId: dbSchema == null ? void 0 : dbSchema.id }, accessorKey: "+", size: 20, cell: () => /* @__PURE__ */ bn.createElement(bn.Fragment, null) }]; - }, [cols, contextTable, toggleFlow, openFlows]); - const changeColSize = (size2) => { + }, [cols, predicate, contextTable, toggleFlow, openFlows]); + const changeColSize = (size) => { savePredicate({ ...predicate, - colsSize: size2 + colsSize: size }); }; - const groupBy = F(() => { + const groupBy2 = F(() => { var _a2; - return ((_a2 = predicate.groupBy) == null ? void 0 : _a2.length) > 0 && cols.find((f4) => f4.name + f4.table == predicate.groupBy) ? [predicate.groupBy] : []; - }, [predicate]); - const table = (0, import_react_table.useReactTable)({ + return ((_a2 = predicate.groupBy) == null ? void 0 : _a2.length) > 0 && cols.find((f4) => f4.name + f4.table == predicate.groupBy[0]) ? predicate.groupBy : []; + }, [predicate, cols]); + const table = useReactTable({ data, columns, columnResizeMode: "onChange", state: { columnVisibility: predicate.colsHidden.reduce((p3, c4) => ({ ...p3, [c4]: false }), {}), columnOrder: predicate.colsOrder, - globalFilter: searchString, - grouping: groupBy, + columnSizing: { ...columns.reduce((p3, c4) => ({ ...p3, [c4.accessorKey]: 0 }), {}), ...colsSize }, + grouping: groupBy2, expanded: true }, - globalFilterFn: "includesString", - getCoreRowModel: (0, import_react_table.getCoreRowModel)(), - getExpandedRowModel: (0, import_react_table.getExpandedRowModel)(), - getGroupedRowModel: (0, import_react_table.getGroupedRowModel)(), - getFilteredRowModel: (0, import_react_table.getFilteredRowModel)(), - getSortedRowModel: (0, import_react_table.getSortedRowModel)(), + onColumnSizingChange: saveColsSize, + getCoreRowModel: getCoreRowModel(), + getExpandedRowModel: getExpandedRowModel(), + getGroupedRowModel: getGroupedRowModel(), meta: { updateData: (index, column, table2, value, file) => { if (table2 == "") { @@ -42595,12 +44821,6 @@ var TableView = (props) => { } } }); - h2(() => { - Object.values(table.getAllColumns()).forEach((t4) => { - predicate.filters.filter((f4) => f4.field == t4.columnDef.header).length > 0 ? t4.setFilterValue(predicate.filters.filter((f4) => f4.field == t4.columnDef.header)[0].value) : t4.setFilterValue(null); - predicate.sort.filter((f4) => f4.field == t4.columnDef.header).length > 0 ? t4.toggleSorting(predicate.sort.filter((f4) => f4.field == t4.columnDef.header)[0].direction == "asc") : t4.clearSorting(); - }); - }, [predicate]); const sensors = useSensors( useSensor(MouseSensor, { activationConstraint: { @@ -42650,12 +44870,22 @@ var TableView = (props) => { colsHidden: [...predicate.colsHidden.filter((s5) => s5 != col), col] }); }; - const savePredicate = (newPredicate) => { - saveSchema({ - ...schema, - predicate: JSON.stringify(newPredicate) + const showContextMenu = (e4, index) => { + const menu = new import_obsidian17.Menu(); + menu.addItem((item) => { + item.setTitle("Create Note"); + }); + menu.addItem((item) => { + item.setTitle("Delete Row"); + item.onClick(() => { + deleteRow(index); + }); }); - setPredicate(newPredicate); + if (isMouseEvent(e4)) { + menu.showAtPosition({ x: e4.pageX, y: e4.pageY }); + } else { + menu.showAtPosition({ x: e4.nativeEvent.locationX, y: e4.nativeEvent.locationY }); + } }; function handleDragEnd({ active, over }) { resetState(); @@ -42694,47 +44924,51 @@ var TableView = (props) => { width: header.column.getIsGrouped() ? "0px" : header.getSize() } }, header.isPlaceholder ? null : header.column.columnDef.header != "+" ? header.column.getIsGrouped() ? /* @__PURE__ */ bn.createElement(bn.Fragment, null) : /* @__PURE__ */ bn.createElement(ColumnHeader, { + plugin: props2.plugin, editable: header.column.columnDef.meta.editable, - field: cols.find((f4) => f4.name == header.column.columnDef.header && f4.table == header.column.columnDef.meta.table), - table: header.column.columnDef.meta.table, - saveField, - deleteField: delField, + column: cols.find((f4) => f4.name == header.column.columnDef.header && f4.table == header.column.columnDef.meta.table), + saveColumn, + deleteColumn: delColumn, hide: hideCol, filter: saveFilter, sort: saveSort }) : /* @__PURE__ */ bn.createElement(ColumnHeader, { + plugin: props2.plugin, isNew: true, editable: true, - field: { name: "", schemaId: header.column.columnDef.meta.schemaId, type: "text" }, - table: "", - saveField: newField, - deleteField: delField + column: { name: "", schemaId: header.column.columnDef.meta.schemaId, type: "text", table: "" }, + saveColumn: newColumn, + deleteColumn: delColumn }), /* @__PURE__ */ bn.createElement("div", { ...{ onMouseDown: header.getResizeHandler(), onTouchStart: header.getResizeHandler(), className: `mk-resizer ${header.column.getIsResizing() ? "isResizing" : ""}` } - })))))), /* @__PURE__ */ bn.createElement("tbody", null, table.getRowModel().rows.map((row2) => /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("tr", { - key: row2.id - }, row2.getVisibleCells().map((cell) => { + })))))), /* @__PURE__ */ bn.createElement("tbody", null, table.getRowModel().rows.map((row) => /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("tr", { + onContextMenu: (e4) => { + const rowIndex = parseInt(data[row.index]["_index"]); + showContextMenu(e4, rowIndex); + }, + key: row.id + }, row.getVisibleCells().map((cell) => { var _a2; return cell.getIsGrouped() ? /* @__PURE__ */ bn.createElement("td", { className: "mk-td-group", colSpan: cols.length + 1 }, /* @__PURE__ */ bn.createElement("div", { ...{ - onClick: row2.getToggleExpandedHandler(), + onClick: row.getToggleExpandedHandler(), style: { display: "flex", alignItems: "center", - cursor: row2.getCanExpand() ? "pointer" : "normal" + cursor: row.getCanExpand() ? "pointer" : "normal" } } - }, (0, import_react_table.flexRender)( + }, flexRender( cell.column.columnDef.cell, cell.getContext() - ), " ", "(", row2.subRows.length, ")")) : cell.getIsAggregated() ? (0, import_react_table.flexRender)( + ), " ", "(", row.subRows.length, ")")) : cell.getIsAggregated() ? flexRender( (_a2 = cell.column.columnDef.aggregatedCell) != null ? _a2 : cell.column.columnDef.cell, cell.getContext() ) : /* @__PURE__ */ bn.createElement("td", { @@ -42743,12 +44977,13 @@ var TableView = (props) => { style: { width: cell.getIsPlaceholder() ? "0px" : cell.column.getSize() } - }, cell.getIsPlaceholder() ? null : (0, import_react_table.flexRender)(cell.column.columnDef.cell, cell.getContext())); + }, cell.getIsPlaceholder() ? null : flexRender(cell.column.columnDef.cell, cell.getContext())); })), /* @__PURE__ */ bn.createElement("tr", null, /* @__PURE__ */ bn.createElement("td", { colSpan: cols.length + 1 }, /* @__PURE__ */ bn.createElement(FlowView, { - path: row2.getValue("File"), - load: openFlows.find((f4) => f4 == row2.getValue("File")) ? true : false + plugin: props2.plugin, + path: row.getValue("File"), + load: openFlows.find((f4) => f4 == row.getValue("File")) ? true : false })))))), /* @__PURE__ */ bn.createElement("tfoot", null, isFolderContext ? /* @__PURE__ */ bn.createElement("tr", null, /* @__PURE__ */ bn.createElement("th", { className: "mk-row-new", colSpan: cols.length + 1, @@ -42759,7 +44994,7 @@ var TableView = (props) => { key: footerGroup.id }, footerGroup.headers.map((header) => /* @__PURE__ */ bn.createElement("th", { key: header.id - }, header.isPlaceholder ? null : (0, import_react_table.flexRender)( + }, header.isPlaceholder ? null : flexRender( header.column.columnDef.footer, header.getContext() ))))))), j3( @@ -42767,46 +45002,424 @@ var TableView = (props) => { dropAnimation: null, zIndex: 1600 }, activeId ? /* @__PURE__ */ bn.createElement(ColumnHeader, { + plugin: props2.plugin, editable: false, - field: { name: activeId, schemaId: tableData.schema.id, type: "text" }, - table: "", - saveField: newField, - deleteField: delField + column: { name: activeId, schemaId: tableData.schema.id, type: "text", table: "" }, + saveColumn: newColumn, + deleteColumn: delColumn }) : null), document.body ))); }; // src/components/ContextView/ContextListView.tsx -var ContextListView = () => { +var ContextListView = (props2) => { const { schema } = q2(MDBContext); - return schema ? schema.type == "card" ? /* @__PURE__ */ bn.createElement(CardsView, null) : /* @__PURE__ */ bn.createElement(TableView, { - plugin: window.make + return schema ? schema.type == "flow" ? /* @__PURE__ */ bn.createElement(FlowListView, { + plugin: props2.plugin + }) : schema.type == "table" ? /* @__PURE__ */ bn.createElement(TableView, { + plugin: props2.plugin + }) : /* @__PURE__ */ bn.createElement(CardsView, { + plugin: props2.plugin }) : /* @__PURE__ */ bn.createElement(bn.Fragment, null); }; +// src/components/ContextView/InlineContextViewComponent.tsx +var InlineContextViewComponent = (props2) => { + const type = viewTypeByString(props2.path); + const path = type == "tag" ? tagContextFromTag(props2.plugin, props2.path) : folderContextFromFolder(props2.plugin, props2.path); + const folder = type == "tag" ? null : props2.path; + const tag = type == "tag" ? props2.path : null; + return /* @__PURE__ */ bn.createElement(MDBProvider, { + plugin: props2.plugin, + dbPath: path, + folder, + tag + }, path && /* @__PURE__ */ bn.createElement(ContextListView, { + plugin: props2.plugin + })); +}; + +// src/components/ContextView/InlineContextView.tsx +var INLINE_CONTEXT_VIEW_TYPE = "make-inline-context"; +var InlineContextView = class extends import_obsidian18.ItemView { + constructor(leaf, plugin) { + super(leaf); + this.navigation = true; + this.plugin = plugin; + } + getViewType() { + return INLINE_CONTEXT_VIEW_TYPE; + } + getDisplayText() { + return this.file; + } + async onClose() { + this.destroy(); + } + destroy() { + if (this.root) + this.root.unmount(); + } + async onOpen() { + this.destroy(); + } + async setState(state, result) { + var _a2, _b2; + this.file = state.file; + this.constructInlineContext(this.file); + await super.setState(state, result); + const type = viewTypeByString(this.file); + const title = type == "tag" ? this.file : (_b2 = (_a2 = getAbstractFileAtPath(app, this.file)) == null ? void 0 : _a2.name) != null ? _b2 : this.file; + this.leaf.tabHeaderInnerTitleEl.innerText = title; + this.leaf.view.titleEl = title; + const headerEl = this.leaf.view.headerEl; + if (headerEl) { + headerEl.querySelector(".view-header-title").innerText = title; + } + return; + } + getState() { + let state = super.getState(); + state.file = this.file; + return state; + } + constructInlineContext(file) { + this.destroy(); + this.root = createRoot(this.contentEl); + this.root.render( + /* @__PURE__ */ bn.createElement("div", null, /* @__PURE__ */ bn.createElement(InlineContextViewComponent, { + plugin: this.plugin, + path: this.file + })) + ); + } +}; + +// src/utils/flow/flowEditor.ts +var parseOutReferences = (ostr) => { + const str = ostr.split("|")[0]; + const refIndex = str.lastIndexOf("#"); + return refIndex != -1 ? [str.substring(0, refIndex), str.substring(refIndex + 1)] : [str, void 0]; +}; +var getFileFromString = (url, source) => { + return app.metadataCache.getFirstLinkpathDest(url, source != null ? source : ""); +}; +var getLineRangeFromRef = (file, ref, plugin) => { + var _a2; + if (!ref) { + return [void 0, void 0]; + } + const cache = app.metadataCache.getFileCache(file); + const headings = cache.headings; + const blocks = cache.blocks; + const sections = cache.sections; + if (blocks && ref.charAt(0) == "^" && blocks[ref.substring(1)]) { + return [ + blocks[ref.substring(1)].position.start.line + 1, + blocks[ref.substring(1)].position.end.line + 1 + ]; + } + const heading = headings == null ? void 0 : headings.find((f4) => f4.heading.replace("#", " ") == ref); + if (heading) { + const index = headings.findIndex((f4) => f4.heading == heading.heading); + const level = (_a2 = headings[index]) == null ? void 0 : _a2.level; + const nextIndex2 = headings.findIndex( + (f4, i4) => i4 > index && f4.level <= level + ); + const start = plugin.settings.editorFlowStyle == "classic" ? heading.position.start.line + 1 : heading.position.start.line + 2; + if (index < headings.length - 1 && nextIndex2 != -1) { + return [start, headings[nextIndex2].position.end.line]; + } + return [start, sections[sections.length - 1].position.end.line + 1]; + } + return [void 0, void 0]; +}; +var loadFlowEditorByDOM2 = (make, el, view, id2) => { + setTimeout(async () => { + let counter = 0; + while (!el.parentElement && counter++ <= 50) + await sleep(50); + if (!el.parentElement) + return; + let dom = el; + while (!dom.hasClass("mk-floweditor") && !dom.hasClass("workspace") && dom.parentElement) { + dom = dom.parentElement; + } + if (!dom.hasClass("mk-floweditor") && !dom.hasClass("workspace") && !(dom.nodeName == "HTML")) { + return; + } + setTimeout(async () => { + var _a2; + let leafFound = false; + if (app.workspace.activeEditor) { + if (app.workspace.activeEditor.editMode.cm.dom == view.dom) { + leafFound = true; + loadFlowEditorsForLeafForID(app.workspace.activeEditor.editMode.cm, (_a2 = app.workspace.activeEditor.file) == null ? void 0 : _a2.path, make, id2); + } + } + if (!leafFound) { + app.workspace.iterateLeaves((leaf) => { + var _a3, _b2; + const cm = (_a3 = leaf.view.editor) == null ? void 0 : _a3.cm; + if (cm && view.dom == cm.dom) { + leafFound = true; + loadFlowEditorsForLeafForID(cm, (_b2 = leaf.view.file) == null ? void 0 : _b2.path, make, id2); + } + }, app.workspace["rootSplit"]); + } + }); + }); +}; +var loadFlowEditorsForLeafForID = (cm, source, make, id2) => { + const stateField = cm.state.field(flowEditorInfo, false); + if (!stateField) + return; + const flowInfo = stateField.find((f4) => f4.id == id2); + if (flowInfo && flowInfo.expandedState == 2) { + loadFlowEditor(cm, flowInfo, source, make); + } +}; +var loadFlowEditor = (cm, flowEditorInfo2, source, make) => { + const dom = cm.dom.querySelector( + "#mk-flow-" + flowEditorInfo2.id + ); + const [link, ref] = parseOutReferences(flowEditorInfo2.link); + if (dom) { + if (link.charAt(0) == "#") { + if (!dom.hasAttribute("ready")) { + dom.setAttribute("ready", ""); + createFlowEditorInElement( + flowEditorInfo2.id, + dom, + ref ? "block" : "flow", + link + ); + } + return; + } + const file = getFileFromString(link, source); + const aFile = getAbstractFileAtPath(app, link); + if (file) { + const selectiveRange = getLineRangeFromRef(file, ref, make); + if (!dom.hasAttribute("ready")) { + dom.setAttribute("ready", ""); + createFlowEditorInElement( + flowEditorInfo2.id, + dom, + ref ? "block" : "flow", + file.path, + selectiveRange[0], + selectiveRange[1] + ); + } + } else { + if (aFile instanceof import_obsidian19.TFolder) { + if (!dom.hasAttribute("ready")) { + dom.setAttribute("ready", ""); + createFlowEditorInElement( + flowEditorInfo2.id, + dom, + ref ? "block" : "flow", + link + ); + } + return; + } + dom.empty(); + const createDiv = dom.createDiv("file-embed"); + createDiv.toggleClass("mod-empty", true); + const createFile = async (e4) => { + e4.stopPropagation(); + e4.stopImmediatePropagation(); + await app.fileManager.createNewMarkdownFile(app.vault.getRoot(), link); + loadFlowEditor(cm, flowEditorInfo2, source, make); + }; + createDiv.setText(`"${link}" ` + i18n_default.labels.noFile); + createDiv.addEventListener("click", createFile); + } + } +}; +var focusPortal = async (plugin, evt) => { + const { id: id2, parent, top } = evt.detail; + if (parent) { + app.workspace.iterateLeaves((leaf) => { + var _a2; + const cm = (_a2 = leaf.view.editor) == null ? void 0 : _a2.cm; + if (cm) { + const stateField = cm.state.field(flowEditorInfo, false); + if (stateField) { + const foundInfo = stateField.find((f4) => f4.id == id2); + if (foundInfo) { + cm.focus(); + if (top) { + cm.dispatch({ + selection: import_state6.EditorSelection.single(foundInfo.from - 4), + annotations: arrowKeyAnnotation.of(1) + }); + } else { + if (foundInfo.to + 2 == cm.state.doc.length) { + cm.dispatch({ + changes: [ + { + from: foundInfo.to + 2, + to: foundInfo.to + 2, + insert: cm.state.lineBreak + } + ], + selection: import_state6.EditorSelection.single(foundInfo.to + 3), + annotations: arrowKeyAnnotation.of(2) + }); + } else { + cm.dispatch({ + selection: import_state6.EditorSelection.single(foundInfo.to + 3), + annotations: arrowKeyAnnotation.of(2) + }); + } + } + } + } + } + }, app.workspace["rootSplit"]); + } else { + app.workspace.iterateLeaves((leaf) => { + var _a2; + const cm = (_a2 = leaf.view.editor) == null ? void 0 : _a2.cm; + if (cm) { + const stateField = cm.state.field(flowIDStateField, false); + if (stateField && stateField == id2) { + cm.focus(); + const lineRange = cm.state.field(selectiveLinesFacet, false); + const posRange = lineRange && lineRange[0] != void 0 ? lineRangeToPosRange(cm.state, lineRange) : { from: 0, to: cm.state.doc.length }; + if (top) { + cm.dispatch({ + selection: import_state6.EditorSelection.single(posRange.from) + }); + } else { + cm.dispatch({ + selection: import_state6.EditorSelection.single(posRange.to) + }); + } + } + } + }, app.workspace["rootSplit"]); + } +}; +var openFileFromPortal = (plugin, evt) => { + const { file: fullLink, source } = evt.detail; + const [link, ref] = parseOutReferences(fullLink); + const file = getFileFromString(link, source); + openFile2({ ...file, isFolder: false }, plugin.app, false); +}; +var spawnLeafFromFile = async (plugin, file, el) => { + const type = viewTypeByString(file); + if (type == "tag") { + const newLeaf2 = spawnPortal2(plugin, el); + newLeaf2.setViewState({ type: INLINE_CONTEXT_VIEW_TYPE, state: { file } }); + return newLeaf2; + } + let portalFile = plugin.app.vault.getAbstractFileByPath(file); + if (type == "folder") { + const newLeaf2 = spawnPortal2(plugin, el); + newLeaf2.setViewState({ type: INLINE_CONTEXT_VIEW_TYPE, state: { file } }); + return newLeaf2; + } + const newLeaf = spawnPortal2(plugin, el, portalFile.name); + await newLeaf.openFile(portalFile); +}; +var spawnNewPortal = async (plugin, evt) => { + var _a2, _b2, _c2; + const { file, el, from, to } = evt.detail; + const newLeaf = await spawnLeafFromFile(plugin, file, el); + if (!((_a2 = newLeaf == null ? void 0 : newLeaf.view) == null ? void 0 : _a2.editor)) { + return; + } + const view = (_b2 = newLeaf.view.editor) == null ? void 0 : _b2.cm; + view.dispatch({ + annotations: [ + portalTypeAnnotation.of(evt.detail.type), + flowIDAnnotation.of(evt.detail.id) + ] + }); + view.dom.addEventListener("keydown", (e4) => { + if (e4.key == "ArrowUp") { + if (e4.metaKey == true) { + view.dispatch({ + annotations: arrowKeyAnnotation.of(3) + }); + } else { + view.dispatch({ + annotations: arrowKeyAnnotation.of(1) + }); + } + } + if (e4.key == "ArrowDown") { + if (e4.metaKey == true) { + view.dispatch({ + annotations: arrowKeyAnnotation.of(4) + }); + } else { + view.dispatch({ + annotations: arrowKeyAnnotation.of(2) + }); + } + } + }); + if (from && to) { + (_c2 = newLeaf.view.editor) == null ? void 0 : _c2.cm.dispatch({ + annotations: [editableRange.of([from, to])] + }); + } +}; +var spawnPortal2 = (plugin, initiatingEl, fileName, onShowCallback) => { + const parent = plugin.app.workspace.activeLeaf; + if (!initiatingEl) + initiatingEl = parent.containerEl; + const hoverPopover = new FlowEditor( + parent, + initiatingEl, + plugin, + void 0, + onShowCallback + ); + if (fileName) + hoverPopover.titleEl.textContent = fileName.substring( + 0, + fileName.lastIndexOf(".") + ); + return hoverPopover.attachLeaf(); +}; + // src/components/ContextView/FolderContextViewComponent.tsx -var FolderContextViewComponent = (props) => { - const folder = props.folder.path; - const fileName = `${window.make.settings.folderContextFile}.mdb`; - const path = `${folder}/${fileName}`; +var FolderContextViewComponent = (props2) => { + var _a2; + const folder = (_a2 = props2.folder) == null ? void 0 : _a2.path; + const path = folderContextFromFolder(props2.plugin, folder); const ref = _2(null); const [flowOpen, setFlowOpen] = p2(false); - const folderNote = getAbstractFileAtPath(app, `${folder}/${props.folder.name}.md`); - const loadFile = () => { + const folderNotePath = `${folder}/${props2.folder.name}.md`; + const loadFile = async () => { + const folderNote = getAbstractFileAtPath(app, folderNotePath); if (folderNote) { const div = ref.current; - const newLeaf = spawnPortal(props.plugin, div); + const newLeaf = spawnPortal2(props2.plugin, div); newLeaf.openFile(folderNote); + } else { + const div = ref.current; + const newFile = await app.fileManager.createNewMarkdownFile(app.vault.getRoot(), folderNotePath); + const newLeaf = spawnPortal2(props2.plugin, div); + newLeaf.openFile(newFile); } }; - const viewFolderNote = (open) => { - if (open) { + h2(() => { + if (flowOpen) { loadFile(); } else { if (ref.current) ref.current.empty(); } + }, [flowOpen]); + const viewFolderNote = (open) => { setFlowOpen(open); }; return /* @__PURE__ */ bn.createElement("div", { @@ -42815,48 +45428,54 @@ var FolderContextViewComponent = (props) => { className: "mk-folder-header" }, /* @__PURE__ */ bn.createElement("div", { className: "inline-title" - }, props.folder.name)), /* @__PURE__ */ bn.createElement(MDBProvider, { + }, props2.folder.name)), /* @__PURE__ */ bn.createElement(MDBProvider, { + plugin: props2.plugin, dbPath: path, folder }, /* @__PURE__ */ bn.createElement(FilterBar, { - plugin: props.plugin, - folderNoteName: props.folder.name, + plugin: props2.plugin, + folderNoteName: props2.folder.name, folderNoteOpen: flowOpen, - viewFolderNote: folderNote ? viewFolderNote : void 0 - }), path && !flowOpen && /* @__PURE__ */ bn.createElement(ContextListView, null), /* @__PURE__ */ bn.createElement("div", { + viewFolderNote + }), path && !flowOpen && /* @__PURE__ */ bn.createElement(ContextListView, { + plugin: props2.plugin + }), flowOpen && /* @__PURE__ */ bn.createElement("div", { className: "mk-flowspace-editor mk-foldernote", ref }))); }; // src/components/ContextView/TagContextViewComponent.tsx -init_compat_module(); -var TagContextViewComponent = (props) => { - const path = tagFileFromTag(props.tag); +var TagContextViewComponent = (props2) => { + const path = tagContextFromTag(props2.plugin, props2.tag); return /* @__PURE__ */ bn.createElement("div", { className: "mk-folder-scroller" }, /* @__PURE__ */ bn.createElement("div", { className: "mk-folder-header" }, /* @__PURE__ */ bn.createElement("div", { className: "inline-title" - }, props.tag)), /* @__PURE__ */ bn.createElement(MDBProvider, { + }, props2.tag)), /* @__PURE__ */ bn.createElement(MDBProvider, { + plugin: props2.plugin, dbPath: path, - tag: props.tag + tag: props2.tag }, /* @__PURE__ */ bn.createElement(FilterBar, { - plugin: props.plugin - }), /* @__PURE__ */ bn.createElement(ContextListView, null))); + plugin: props2.plugin + }), /* @__PURE__ */ bn.createElement(ContextListView, { + plugin: props2.plugin + }))); }; // src/components/ContextView/ContextView.tsx var CONTEXT_VIEW_TYPE = "make-folder-view"; -var ContextView = class extends import_obsidian14.ItemView { - constructor(leaf, plugin) { +var ContextView = class extends import_obsidian20.ItemView { + constructor(leaf, plugin, viewType) { super(leaf); this.navigation = true; this.plugin = plugin; + this.viewType = viewType; } getViewType() { - return CONTEXT_VIEW_TYPE; + return this.viewType; } getDisplayText() { var _a2; @@ -42879,6 +45498,9 @@ var ContextView = class extends import_obsidian14.ItemView { this.type = state.type; if (state.type == "folder") { const folder = getAbstractFileAtPath(this.plugin.app, state.folder); + if (!folder) { + return; + } this.folder = folder; this.constructFolderContext(folder); await super.setState(state, result); @@ -42899,6 +45521,7 @@ var ContextView = class extends import_obsidian14.ItemView { headerEl.querySelector(".view-header-title").innerText = this.tag; } } + result.history = true; return; } getState() { @@ -42931,7 +45554,7 @@ var ContextView = class extends import_obsidian14.ItemView { this.root.render( /* @__PURE__ */ bn.createElement("div", { className: "mk-folder-view" - }, /* @__PURE__ */ bn.createElement(FolderContextViewComponent, { + }, folder && /* @__PURE__ */ bn.createElement(FolderContextViewComponent, { type: "folder", folder, plugin: this.plugin @@ -42941,13 +45564,59 @@ var ContextView = class extends import_obsidian14.ItemView { }; // src/utils/file.ts -function getAllAbstractFilesInVault(app2) { +var defaultNoteFolder = (plugin, activeFile2) => plugin.settings.newFileLocation == "folder" ? getFolderFromPath(app, plugin.settings.newFileFolderPath) : plugin.settings.newFileLocation == "current" && activeFile2 ? getFolderFromPath(app, getFileFromSpaceItem2(plugin.app, activeFile2)) : plugin.app.vault.getRoot(); +var defaultConfigFile = async (app2) => { + return await app2.vault.adapter.read((0, import_obsidian21.normalizePath)(app2.vault.configDir + "/app.json")); +}; +var fileExtensionForFile = (path) => path.split(".").pop(); +var appendFileMetadataForRow = (row, fields) => { + const file = getAbstractFileAtPath(app, row.File); + if (!file) { + return row; + } + return { ...row, ...fields.filter((f4) => f4.type == "fileprop").reduce((p3, c4) => ({ ...p3, [c4.name]: appendFileMetaData(c4.value, file) }), {}) }; +}; +var appendFileMetaData = (propType, file) => { + let value = ""; + if (file) { + if (propType == "folder") { + value = file.parent.path; + } + if (file instanceof import_obsidian21.TFile) { + if (propType == "ctime") { + value = file.stat.ctime.toString(); + } else if (propType == "mtime") { + value = file.stat.mtime.toString(); + } else if (propType == "extension") { + value = file.extension; + } else if (propType == "size") { + value = file.stat.size.toString(); + } + } else if (propType == "extension") { + value = "Folder"; + } + } + return value; +}; +var viewTypeByString = (file) => { + if (file.charAt(0) == "#") { + return "tag"; + } + const portalFile = app.vault.getAbstractFileByPath(file); + if (portalFile instanceof import_obsidian21.TFolder) { + return "folder"; + } + if (portalFile instanceof import_obsidian21.TFile) { + return "file"; + } + return null; +}; +function getAllAbstractFilesInVault(plugin, app2) { let files = []; let rootFolder = app2.vault.getRoot(); - files.push(rootFolder); function recursiveFx(folder) { - for (let child of folderChildren(folder)) { - if (child instanceof import_obsidian15.TFolder) { + for (let child of folderChildren(plugin, folder)) { + if (child instanceof import_obsidian21.TFolder) { let childFolder = child; if (childFolder.children) recursiveFx(childFolder); @@ -42958,14 +45627,48 @@ function getAllAbstractFilesInVault(app2) { recursiveFx(rootFolder); return files; } -var getFolderPathFromString = (file) => { +var getPosition = (string, subString, index) => { + return string.split(subString, index).join(subString).length; +}; +var getFileFromSpaceItem2 = (app2, nodeId) => { + if (!nodeId) + return null; + const file = nodeId.slice(getPosition(nodeId, "/", 1) + 1); + return file; +}; +var getFolderFromPath = (app2, file) => { + const afile = getAbstractFileAtPath(app2, file); + if (!afile) + return null; + return afile instanceof import_obsidian21.TFolder ? afile : afile.parent; +}; +var getFolderPathFromString2 = (file) => { return file.substring(0, file.lastIndexOf("/")); }; -var openFile = async (file, app2, newLeaf) => { - if (file.isFolder) { - openTFolder(getAbstractFileAtPath(app2, file.path), app2, newLeaf); - } else { - openTFile(getAbstractFileAtPath(app2, file.path), app2, newLeaf); +var deleteFiles = (plugin, files) => { + files.forEach((f4) => { + const file = getAbstractFileAtPath(app, f4); + deleteFile(plugin, file); + }); +}; +var deleteFile = (plugin, file) => { + let deleteOption = plugin.settings.deleteFileOption; + if (deleteOption === "permanent") { + plugin.app.vault.delete(file, true); + } else if (deleteOption === "system-trash") { + plugin.app.vault.trash(file, true); + } else if (deleteOption === "trash") { + plugin.app.vault.trash(file, false); + } +}; +var openFile2 = async (file, app2, newLeaf) => { + openAFile(getAbstractFileAtPath(app2, file.path), app2, newLeaf); +}; +var openAFile = async (file, app2, newLeaf) => { + if (file instanceof import_obsidian21.TFolder) { + openTFolder(file, app2, newLeaf); + } else if (file instanceof import_obsidian21.TFile) { + openTFile(file, app2, newLeaf); } }; var openTFile = async (file, app2, newLeaf) => { @@ -42975,21 +45678,35 @@ var openTFile = async (file, app2, newLeaf) => { }; var openTFolder = async (file, app2, newLeaf) => { let leaf = app2.workspace.getLeaf(newLeaf); + const viewType = CONTEXT_VIEW_TYPE; + app2.workspace.setActiveLeaf(leaf, { focus: true }); + await leaf.setViewState({ type: viewType, state: { type: "folder", folder: file.path } }); + await app2.workspace.requestSaveLayout(); + if (platformIsMobile()) { + app2.workspace.leftSplit.collapse(); + } +}; +var openTag = async (tag, app2, newLeaf) => { + let leaf = app2.workspace.getLeaf(newLeaf); + const viewType = CONTEXT_VIEW_TYPE; app2.workspace.setActiveLeaf(leaf, { focus: true }); - await leaf.setViewState({ type: CONTEXT_VIEW_TYPE, state: { type: "folder", folder: file.path } }); + await leaf.setViewState({ type: viewType, state: { type: "tag", tag } }); await app2.workspace.requestSaveLayout(); + if (platformIsMobile()) { + app2.workspace.leftSplit.collapse(); + } }; var getAbstractFileAtPath = (app2, path) => { return app2.vault.getAbstractFileByPath(path); }; var openFileInNewPane = (plugin, file) => { - openFile(file, plugin.app, true); + openFile2(file, plugin.app, true); }; -var createNewMarkdownFile2 = async (app2, folder, newFileName, content) => { +var createNewMarkdownFile = async (app2, folder, newFileName, content) => { const newFile = await app2.fileManager.createNewMarkdownFile(folder, newFileName); if (content && content !== "") await app2.vault.modify(newFile, content); - await openFile(newFile, app2, false); + await openFile2(newFile, app2, false); const titleEl = app2.workspace.activeLeaf.view.containerEl.querySelector(".inline-title"); if (titleEl) { titleEl.focus(); @@ -43000,10 +45717,10 @@ var createNewMarkdownFile2 = async (app2, folder, newFileName, content) => { return newFile; }; var platformIsMobile = () => { - return import_obsidian15.Platform.isMobile; + return import_obsidian21.Platform.isMobile; }; var newFileInFolder = async (plugin, data) => { - await createNewMarkdownFile2( + await createNewMarkdownFile( plugin.app, data.parent.children.find((f4) => f4.name == data.name), "", @@ -43012,7 +45729,7 @@ var newFileInFolder = async (plugin, data) => { }; // src/components/ui/modals/modals.ts -var SaveViewModal = class extends import_obsidian16.Modal { +var SaveViewModal = class extends import_obsidian22.Modal { constructor(schema, saveSchema) { super(app); this.schema = schema; @@ -43050,7 +45767,7 @@ var SaveViewModal = class extends import_obsidian16.Modal { contentEl.empty(); } }; -var MergeColumnModal = class extends import_obsidian16.Modal { +var MergeColumnModal = class extends import_obsidian22.Modal { constructor(columns, mergeColumn) { super(app); this.columns = columns; @@ -43096,13 +45813,13 @@ var MergeColumnModal = class extends import_obsidian16.Modal { contentEl.empty(); } }; -var VaultChangeModal = class extends import_obsidian16.Modal { - constructor(plugin, file, action, section) { +var VaultChangeModal = class extends import_obsidian22.Modal { + constructor(plugin, file, action, space) { super(plugin.app); this.file = file; this.action = action; this.plugin = plugin; - this.section = section; + this.space = space; } onOpen() { let { contentEl } = this; @@ -43148,10 +45865,6 @@ var VaultChangeModal = class extends import_obsidian16.Modal { cancelButton.addEventListener("click", () => { myModal.close(); }); - const updateSections = (sections2) => { - this.plugin.settings.spaces = sections2; - this.plugin.saveSettings(); - }; const onClickAction = async () => { let newName = inputEl.value; if (this.action === "rename") { @@ -43164,22 +45877,8 @@ var VaultChangeModal = class extends import_obsidian16.Modal { } else if (this.action === "create folder") { const path = this.file.path + "/" + newName; this.app.vault.createFolder(path); - if (this.section >= 0) - updateSections( - this.plugin.settings.spaces.map((s5, k5) => { - return k5 == this.section ? { - ...s5, - children: [newName, ...s5.children] - } : s5; - }) - ); - } else if (this.action === "create note") { - await createNewMarkdownFile2( - this.plugin.app, - this.file, - newName, - "" - ); + if (this.space != "/") + addPathsToSpace(this.plugin, this.space, [path]); } myModal.close(); }; @@ -43194,10 +45893,10 @@ var VaultChangeModal = class extends import_obsidian16.Modal { contentEl.empty(); } }; -var MoveSuggestionModal = class extends import_obsidian16.FuzzySuggestModal { - constructor(app2, fileOrFolderToMove) { +var MoveSuggestionModal = class extends import_obsidian22.FuzzySuggestModal { + constructor(app2, files) { super(app2); - this.fileOrFolderToMove = fileOrFolderToMove; + this.files = files; } getItemText(item) { return item.path; @@ -43206,10 +45905,15 @@ var MoveSuggestionModal = class extends import_obsidian16.FuzzySuggestModal { return getAllFoldersInVault(this.app); } onChooseItem(item, evt) { - this.app.vault.rename( - this.fileOrFolderToMove, - item.path + "/" + this.fileOrFolderToMove.name - ); + this.files.forEach((f4) => { + const file = getAbstractFileAtPath(app, f4); + if (file) { + this.app.vault.rename( + file, + item.path + "/" + file.name + ); + } + }); } }; function getAllFoldersInVault(app2) { @@ -43218,7 +45922,7 @@ function getAllFoldersInVault(app2) { folders.push(rootFolder); function recursiveFx(folder) { for (let child of folder.children) { - if (child instanceof import_obsidian16.TFolder) { + if (child instanceof import_obsidian22.TFolder) { let childFolder = child; folders.push(childFolder); if (childFolder.children) @@ -43229,11 +45933,10 @@ function getAllFoldersInVault(app2) { recursiveFx(rootFolder); return folders; } -var SectionChangeModal = class extends import_obsidian16.Modal { - constructor(plugin, section, sectionIndex, action) { +var SectionChangeModal = class extends import_obsidian22.Modal { + constructor(plugin, space, action) { super(plugin.app); - this.section = section; - this.sectionIndex = sectionIndex; + this.space = space; this.action = action; this.plugin = plugin; } @@ -43251,7 +45954,7 @@ var SectionChangeModal = class extends import_obsidian16.Modal { const inputEl = contentEl.createEl("input"); inputEl.style.cssText = "width: 100%; height: 2.5em; margin-bottom: 15px;"; if (this.action === "rename") { - inputEl.value = this.section; + inputEl.value = this.space; } inputEl.focus(); let changeButtonText; @@ -43270,26 +45973,20 @@ var SectionChangeModal = class extends import_obsidian16.Modal { cancelButton.addEventListener("click", () => { myModal.close(); }); - const updateSections = (sections2) => { - this.plugin.settings.spaces = sections2; - this.plugin.saveSettings(); - }; const onClickAction = async () => { - let newName = inputEl.value; + let newName = inputEl.value.replace("/", ""); + if (newName.length == 0) { + new import_obsidian22.Notice("Enter a name for your space"); + return; + } + if (retrieveSpaces(this.plugin).find((f4) => f4.name == newName)) { + new import_obsidian22.Notice("Space name already exists"); + return; + } if (this.action === "rename") { - updateSections( - this.plugin.settings.spaces.map((s5, i4) => { - return i4 == this.sectionIndex ? { - ...s5, - section: newName - } : s5; - }) - ); + renameSpace(this.plugin, this.space, newName); } else if (this.action === "create") { - updateSections([ - { section: newName, children: [], collapsed: false }, - ...this.plugin.settings.spaces - ]); + insertSpaceAtIndex(this.plugin, newName, false, 0); } myModal.close(); }; @@ -43306,12 +46003,11 @@ var SectionChangeModal = class extends import_obsidian16.Modal { }; // src/components/Spaces/MainMenu.tsx -var import_obsidian18 = require("obsidian"); +var import_obsidian24 = require("obsidian"); // src/components/ui/modals/hiddenFiles.tsx -var import_obsidian17 = require("obsidian"); -init_compat_module(); -var HiddenItemsModal = class extends import_obsidian17.Modal { +var import_obsidian23 = require("obsidian"); +var HiddenItemsModal = class extends import_obsidian23.Modal { constructor(plugin) { super(plugin.app); this.plugin = plugin; @@ -43346,8 +46042,8 @@ var HiddenItemsModal = class extends import_obsidian17.Modal { contentEl.empty(); } }; -var HiddenFiles = (props) => { - const { plugin } = props; +var HiddenFiles = (props2) => { + const { plugin } = props2; const ref = _2(null); const [hiddenFiles, setHiddenFiles] = p2(plugin.settings.hiddenFiles); const [hiddenExtensions, setHiddenExtensions] = p2(plugin.settings.hiddenExtensions); @@ -43385,8 +46081,17 @@ var HiddenFiles = (props) => { }, []); const addMenu = (e4) => { const offset = e4.target.getBoundingClientRect(); - const options = getAllAbstractFilesInVault(app).map((f4) => ({ name: fileNameToString(f4.name), value: f4.path })); - showSelectMenu({ x: offset.left, y: offset.top + 30 }, false, false, [], options, saveFile, "Find Note", true); + const options = getAllAbstractFilesInVault(props2.plugin, app).map((f4) => ({ name: fileNameToString(f4.name), value: f4.path })); + showSelectMenu({ x: offset.left, y: offset.top + 30 }, { + multi: false, + editable: false, + value: [], + options, + saveOptions: saveFile, + placeholder: "Find Note", + detail: true, + searchable: true + }); }; return /* @__PURE__ */ bn.createElement("div", { className: "modal-content" @@ -43439,8 +46144,8 @@ var replaceMobileMainMenu = (plugin) => { })); } }; -var MainMenu = (props) => { - const { plugin } = props; +var MainMenu = (props2) => { + const { plugin } = props2; const ref = _2(); const toggleSections = (collapse) => { const newSections = plugin.settings.spaces.map((s5) => { @@ -43450,7 +46155,7 @@ var MainMenu = (props) => { plugin.saveSettings(); }; const newSection = () => { - let vaultChangeModal = new SectionChangeModal(plugin, "", 0, "create"); + let vaultChangeModal = new SectionChangeModal(plugin, "", "create"); vaultChangeModal.open(); }; h2(() => { @@ -43472,7 +46177,7 @@ var MainMenu = (props) => { }; const showMenu = (e4) => { const { spaceActive, leafs } = refreshLeafs(); - const menu = new import_obsidian18.Menu(); + const menu = new import_obsidian24.Menu(); !spaceActive && menu.addItem((menuItem) => { menuItem.setIcon("lucide-arrow-left"); menuItem.setTitle(i18n_default.menu.backToSpace); @@ -43559,21 +46264,14 @@ var MainMenu = (props) => { }))); }; -// src/components/Spaces/MainList.tsx -init_compat_module(); - -// src/components/Spaces/TreeView/FileExplorerVirtualized.tsx -init_compat_module(); - // src/hooks/ForceUpdate.tsx -init_compat_module(); function useForceUpdate() { const [value, setValue] = p2(0); return () => setValue((value2) => value2 + 1); } // src/components/Spaces/TreeView/FileExplorerVirtualized.tsx -var import_obsidian20 = require("obsidian"); +var import_obsidian27 = require("obsidian"); // src/recoil/pluginState.ts var activeFile = Recoil_index_4({ @@ -43581,43 +46279,38 @@ var activeFile = Recoil_index_4({ default: null, dangerouslyAllowMutability: true }); +var selectedFiles = Recoil_index_4({ + key: "spacesSelectedFiles", + default: [], + dangerouslyAllowMutability: true +}); var activeView = Recoil_index_4({ key: "spacesActiveView", - default: 0, + default: "root", dangerouslyAllowMutability: true }); -var folderTree = Recoil_index_4({ - key: "spacesFolderTree", - default: null, +var activeViewSpace = Recoil_index_4({ + key: "spacesActiveSpace", + default: "", dangerouslyAllowMutability: true }); -var sections = Recoil_index_4({ - key: "spacesSections", +var spaces = Recoil_index_4({ + key: "spaces", default: [], dangerouslyAllowMutability: true }); -var fileIcons = Recoil_index_4({ - key: "spacesIcons", - default: [] -}); -var openFolders = Recoil_index_4({ - key: "spacesOpenFolders", - default: [] -}); -var focusedFolder = Recoil_index_4({ - key: "spacesFocusedFolder", - default: null, - dangerouslyAllowMutability: true +var expandedFolders = Recoil_index_4({ + key: "expandedFolders", + default: {} }); // src/components/Spaces/TreeView/FolderTreeView.tsx -init_compat_module(); -var import_classnames4 = __toESM(require_classnames()); +var import_obsidian26 = require("obsidian"); +var import_classnames5 = __toESM(require_classnames()); // src/components/Spaces/TreeView/SectionView.tsx -var import_obsidian19 = require("obsidian"); -init_compat_module(); -var import_classnames3 = __toESM(require_classnames()); +var import_obsidian25 = require("obsidian"); +var import_classnames4 = __toESM(require_classnames()); var SectionItem = k3( ({ childCount, @@ -43637,69 +46330,93 @@ var SectionItem = k3( plugin, disabled }, ref) => { - const [sections2, setSections] = Recoil_index_14(sections); - const [focusedFolder2, setFocusedFolder] = Recoil_index_14( - focusedFolder - ); - const section = sections2.find((s5, i4) => { - return i4 == data.section; - }); + var _a2, _b2; + const [activeFile2, setActiveFile] = Recoil_index_14(activeFile); + const [spaces2, setSpaces] = Recoil_index_14(spaces); const newFolderInSection = () => { let vaultChangeModal = new VaultChangeModal( plugin, - focusedFolder2, + defaultNoteFolder(plugin, activeFile2), "create folder", - data.section + data.space ); vaultChangeModal.open(); }; const newFileInSection = async () => { - const newFile = await createNewMarkdownFile2( + const newFile = await createNewMarkdownFile( plugin.app, - focusedFolder2, + defaultNoteFolder(plugin, activeFile2), "" ); - if (data.section != -1) - updateSections( - sections2.map((f4, i4) => { - return i4 == data.section ? { - ...f4, - children: [newFile.path, ...f4.children] - } : f4; - }) - ); - }; - const updateSections = (sections3) => { - plugin.settings.spaces = sections3; - plugin.saveSettings(); + if (data.space != "/") + addPathsToSpace(plugin, data.space, [newFile.path]); }; const triggerMenu = (e4) => { - data.section == -1 ? triggerVaultMenu(e4) : triggerSectionMenu(data.name, data.index, e4); + data.space == "/" ? triggerVaultMenu(e4) : triggerSectionMenu(plugin, data.space, spaces2, e4); }; - const triggerSectionMenu = (section2, index, e4) => { - const fileMenu = new import_obsidian19.Menu(); + const triggerVaultMenu = (e4) => { + const refreshFileList = () => { + let event = new CustomEvent(eventTypes.vaultChange); + window.dispatchEvent(event); + }; + const fileMenu = new import_obsidian25.Menu(); fileMenu.addItem((menuItem) => { - menuItem.setTitle(i18n_default.menu.edit); - menuItem.setIcon("pencil"); + menuItem.setTitle("Collapse All"); + menuItem.setIcon("lucide-chevrons-down-up"); menuItem.onClick((ev) => { - let vaultChangeModal = new SectionChangeModal( - plugin, - section2, - index, - "rename" - ); - vaultChangeModal.open(); + plugin.settings.expandedFolders = { + ...plugin.settings.expandedFolders, + "/": [] + }; + plugin.saveSettings(); }); }); + fileMenu.addSeparator(); fileMenu.addItem((menuItem) => { - menuItem.setTitle(i18n_default.menu.delete); - menuItem.setIcon("trash"); + menuItem.setTitle("Custom Sort"); + menuItem.setChecked(plugin.settings.vaultSort[0] == "rank"); menuItem.onClick((ev) => { - updateSections( - sections2.filter((s5, i4) => { - return i4 != index; - }) - ); + plugin.settings.vaultSort = ["rank", true]; + plugin.saveSettings(); + refreshFileList(); + }); + }); + fileMenu.addSeparator(); + fileMenu.addItem((menuItem) => { + menuItem.setTitle("File Name (A to Z)"); + menuItem.setChecked(plugin.settings.vaultSort[0] == "path" && plugin.settings.vaultSort[1] == true); + menuItem.onClick((ev) => { + plugin.settings.vaultSort = ["path", true]; + plugin.saveSettings(); + refreshFileList(); + }); + }); + fileMenu.addItem((menuItem) => { + menuItem.setTitle("File Name (Z to A)"); + menuItem.setChecked(plugin.settings.vaultSort[0] == "path" && plugin.settings.vaultSort[1] == false); + menuItem.onClick((ev) => { + plugin.settings.vaultSort = ["path", false]; + plugin.saveSettings(); + refreshFileList(); + }); + }); + fileMenu.addSeparator(); + fileMenu.addItem((menuItem) => { + menuItem.setTitle("Created Time (new to old)"); + menuItem.setChecked(plugin.settings.vaultSort[0] == "created" && plugin.settings.vaultSort[1] == true); + menuItem.onClick((ev) => { + plugin.settings.vaultSort = ["created", true]; + plugin.saveSettings(); + refreshFileList(); + }); + }); + fileMenu.addItem((menuItem) => { + menuItem.setTitle("Created Time (old to new)"); + menuItem.setChecked(plugin.settings.vaultSort[0] == "created" && plugin.settings.vaultSort[1] == false); + menuItem.onClick((ev) => { + plugin.settings.vaultSort = ["created", false]; + plugin.saveSettings(); + refreshFileList(); }); }); if (isMouseEvent(e4)) { @@ -43712,114 +46429,8 @@ var SectionItem = k3( } return false; }; - const triggerVaultMenu = (e4) => { - const refreshFileList = () => { - let event = new CustomEvent(eventTypes.vaultChange); - window.dispatchEvent(event); - }; - const fileMenu = new import_obsidian19.Menu(); - fileMenu.addItem((menuItem) => { - menuItem.setTitle(i18n_default.menu.newSpace); - menuItem.setIcon("plus"); - menuItem.onClick((ev) => { - let vaultChangeModal = new SectionChangeModal( - plugin, - "", - 0, - "create" - ); - vaultChangeModal.open(); - }); - fileMenu.addSeparator(); - fileMenu.addItem((menuItem2) => { - menuItem2.setTitle("Collapse All"); - menuItem2.setIcon("lucide-chevrons-down-up"); - menuItem2.onClick((ev) => { - const newOpenFolders = plugin.settings.openFolders.filter((f4) => f4.charAt(0) != "/"); - plugin.settings.openFolders = newOpenFolders; - plugin.saveSettings(); - }); - }); - fileMenu.addSeparator(); - fileMenu.addItem((menuItem2) => { - menuItem2.setTitle("Custom Sort"); - menuItem2.setChecked(plugin.settings.vaultSort.length == 0); - menuItem2.onClick((ev) => { - plugin.settings.vaultSort = []; - plugin.saveSettings(); - refreshFileList(); - }); - }); - fileMenu.addSeparator(); - fileMenu.addItem((menuItem2) => { - menuItem2.setTitle("File Name (A to Z)"); - menuItem2.setChecked(plugin.settings.vaultSort[0] == "name" && plugin.settings.vaultSort[1] == true); - menuItem2.onClick((ev) => { - plugin.settings.vaultSort = ["name", true]; - plugin.saveSettings(); - refreshFileList(); - }); - }); - fileMenu.addItem((menuItem2) => { - menuItem2.setTitle("File Name (Z to A)"); - menuItem2.setChecked(plugin.settings.vaultSort[0] == "name" && plugin.settings.vaultSort[1] == false); - menuItem2.onClick((ev) => { - plugin.settings.vaultSort = ["name", false]; - plugin.saveSettings(); - refreshFileList(); - }); - }); - fileMenu.addSeparator(); - fileMenu.addItem((menuItem2) => { - menuItem2.setTitle("Modified Time (new to old)"); - menuItem2.setChecked(plugin.settings.vaultSort[0] == "mtime" && plugin.settings.vaultSort[1] == true); - menuItem2.onClick((ev) => { - plugin.settings.vaultSort = ["mtime", true]; - plugin.saveSettings(); - refreshFileList(); - }); - }); - fileMenu.addItem((menuItem2) => { - menuItem2.setTitle("Modified Time (old to new)"); - menuItem2.setChecked(plugin.settings.vaultSort[0] == "mtime" && plugin.settings.vaultSort[1] == false); - menuItem2.onClick((ev) => { - plugin.settings.vaultSort = ["mtime", false]; - plugin.saveSettings(); - refreshFileList(); - }); - }); - fileMenu.addSeparator(); - fileMenu.addItem((menuItem2) => { - menuItem2.setTitle("Created Time (new to old)"); - menuItem2.setChecked(plugin.settings.vaultSort[0] == "ctime" && plugin.settings.vaultSort[1] == true); - menuItem2.onClick((ev) => { - plugin.settings.vaultSort = ["ctime", true]; - plugin.saveSettings(); - refreshFileList(); - }); - }); - fileMenu.addItem((menuItem2) => { - menuItem2.setTitle("Created Time (old to new)"); - menuItem2.setChecked(plugin.settings.vaultSort[0] == "ctime" && plugin.settings.vaultSort[1] == false); - menuItem2.onClick((ev) => { - plugin.settings.vaultSort = ["ctime", false]; - plugin.saveSettings(); - refreshFileList(); - }); - }); - if (isMouseEvent(e4)) { - fileMenu.showAtPosition({ x: e4.pageX, y: e4.pageY }); - } else { - fileMenu.showAtPosition({ - x: e4.nativeEvent.locationX, - y: e4.nativeEvent.locationY - }); - } - return false; - }); - }; return /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", { - className: (0, import_classnames3.default)( + className: (0, import_classnames4.default)( "mk-tree-wrapper", "mk-section-wrapper", clone && "mk-clone", @@ -43833,7 +46444,7 @@ var SectionItem = k3( ...indicator ? { "--spacing": `${indentationWidth * depth}px` } : {} } }, /* @__PURE__ */ bn.createElement("div", { - className: (0, import_classnames3.default)( + className: (0, import_classnames4.default)( "mk-section", indicator ? indicator.state == 2 /* Bottom */ ? "mk-indicator-bottom" : indicator.state == 1 /* Top */ ? "mk-indicator-top" : indicator.state == 3 /* Row */ ? "mk-indicator-row" : "" : "" ) @@ -43843,9 +46454,11 @@ var SectionItem = k3( onClick: (e4) => onCollapse(data), ref, ...handleProps - }, /* @__PURE__ */ bn.createElement("div", { + }, ((_a2 = data.spaceItem) == null ? void 0 : _a2.sticker) ? /* @__PURE__ */ bn.createElement("div", { + dangerouslySetInnerHTML: { __html: unifiedToNative((_b2 = data.spaceItem) == null ? void 0 : _b2.sticker) } + }) : /* @__PURE__ */ bn.createElement(bn.Fragment, null), /* @__PURE__ */ bn.createElement("div", { className: "mk-tree-text" - }, data.id == "/" ? plugin.app.vault.getName() : data.name), /* @__PURE__ */ bn.createElement("div", { + }, data.id == "/" ? plugin.app.vault.getName() : data.space), /* @__PURE__ */ bn.createElement("div", { className: `mk-collapse ${collapsed ? "mk-collapsed" : ""}`, dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-collapse-sm"] @@ -43856,1191 +46469,231 @@ var SectionItem = k3( "aria-label": i18n_default.buttons.createFolder, onClick: () => { newFolderInSection(); - }, - dangerouslySetInnerHTML: { - __html: uiIconSet["mk-ui-new-folder"] - } - }), /* @__PURE__ */ bn.createElement("button", { - "aria-label": i18n_default.buttons.newNote, - onClick: () => { - newFileInSection(); - }, - dangerouslySetInnerHTML: { - __html: uiIconSet["mk-ui-new-note"] - } - }))))); - } -); -SectionItem.displayName = "SectionItem"; - -// src/components/Spaces/TreeView/FolderTreeView.tsx -var animateLayoutChanges2 = ({ - isSorting, - wasDragging -}) => isSorting || wasDragging ? false : true; -var SortableTreeItem = ({ - id: id2, - data, - depth, - disabled, - style, - ...props -}) => { - const { - attributes, - isDragging, - isSorting, - listeners, - setDraggableNodeRef, - setDroppableNodeRef, - transform, - transition - } = useSortable({ - id: id2, - animateLayoutChanges: animateLayoutChanges2, - disabled, - data - }); - const memoListeners = F(() => { - return { - ...attributes, - ...listeners - }; - }, [isSorting]); - if (data.parentId == null) { - return /* @__PURE__ */ bn.createElement(SectionItem, { - ref: setDraggableNodeRef, - wrapperRef: setDroppableNodeRef, - data, - depth, - ghost: isDragging, - disableInteraction: isSorting, - disabled, - style, - handleProps: memoListeners, - ...props - }); - } else { - return /* @__PURE__ */ bn.createElement(TreeItem, { - ref: setDraggableNodeRef, - wrapperRef: setDroppableNodeRef, - data, - depth, - ghost: isDragging, - disableInteraction: isSorting, - disabled, - style, - handleProps: memoListeners, - ...props - }); - } -}; -var TreeItem = k3( - ({ - childCount, - clone, - data, - depth, - disableSelection, - disableInteraction, - ghost, - handleProps, - indentationWidth, - indicator, - collapsed, - onCollapse, - wrapperRef, - style, - plugin, - disabled - }, ref) => { - const [activeFile2, setActiveFile] = Recoil_index_14(activeFile); - const [fileIcons2, setFileIcons] = Recoil_index_14(fileIcons); - const openFileAtTarget = (file, e4) => { - openFile(file, plugin.app, e4.ctrlKey || e4.metaKey); - setActiveFile(file.path); - }; - return /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", { - className: (0, import_classnames4.default)( - "mk-tree-wrapper", - clone && "mk-clone", - ghost && "mk-ghost", - disableSelection && "mk-disable-selection", - disableInteraction && "mk-disable-interaction", - activeFile2 === data.path && " mk-is-active" - ), - ref: wrapperRef, - style - }, /* @__PURE__ */ bn.createElement("div", { - className: indicator && (0, import_classnames4.default)( - indicator.state == 2 /* Bottom */ ? "mk-indicator-bottom" : indicator.state == 1 /* Top */ ? "mk-indicator-top" : indicator.state == 3 /* Row */ ? "mk-indicator-row" : "" - ), - style: indicator ? { - "--spacing": `${indentationWidth * indicator.depth - 12}px` - } : {}, - ...handleProps - }, /* @__PURE__ */ bn.createElement("div", { - className: (0, import_classnames4.default)( - `mk-tree-item` - ), - ref, - style: { - "--spacing": `${indentationWidth * depth - 12}px` - }, - onClick: (e4) => openFileAtTarget(data, e4), - onContextMenu: (e4) => triggerFileMenu(plugin, getAbstractFileAtPath(plugin.app, data.path), data.isFolder, e4) - }, data.isFolder && /* @__PURE__ */ bn.createElement("button", { - "aria-label": `${collapsed ? i18n_default.labels.expand : i18n_default.labels.collapse}`, - className: `mk-collapse ${collapsed ? "mk-collapsed" : ""}`, - onClick: (e4) => { - onCollapse(data); - e4.stopPropagation(); - }, - dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-collapse"] } - }), plugin.settings.spacesStickers && /* @__PURE__ */ bn.createElement(FileSticker, { - filePath: data.path - }), /* @__PURE__ */ bn.createElement("div", { - className: `mk-tree-text ` - }, data.isFolder ? data.name : fileNameToString(data.name), !data.isFolder && (data == null ? void 0 : data.extension) != "md" && /* @__PURE__ */ bn.createElement("span", { - className: "nav-file-tag" - }, data.extension))), !clone ? /* @__PURE__ */ bn.createElement("div", { - className: "mk-folder-buttons" - }, /* @__PURE__ */ bn.createElement("button", { - "aria-label": i18n_default.buttons.moreOptions, - onClick: (e4) => { - triggerFileMenu(plugin, getAbstractFileAtPath(plugin.app, data.path), data.isFolder, e4); - e4.stopPropagation(); - }, - dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-options"] } - }), data.isFolder && /* @__PURE__ */ bn.createElement("button", { - "aria-label": i18n_default.buttons.newNote, - onClick: (e4) => { - newFileInFolder(plugin, data); - e4.stopPropagation(); - }, - dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-plus"] } - })) : /* @__PURE__ */ bn.createElement(bn.Fragment, null)))); - } -); -TreeItem.displayName = "TreeItem"; - -// src/components/Spaces/TreeView/FileExplorerVirtualized.tsx -init_compat_module(); - -// node_modules/@babel/runtime/helpers/esm/extends.js -function _extends() { - _extends = Object.assign ? Object.assign.bind() : function(target) { - for (var i4 = 1; i4 < arguments.length; i4++) { - var source = arguments[i4]; - for (var key2 in source) { - if (Object.prototype.hasOwnProperty.call(source, key2)) { - target[key2] = source[key2]; - } - } - } - return target; - }; - return _extends.apply(this, arguments); -} - -// node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js -function _assertThisInitialized(self2) { - if (self2 === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self2; -} - -// node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js -function _setPrototypeOf(o3, p3) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o4, p4) { - o4.__proto__ = p4; - return o4; - }; - return _setPrototypeOf(o3, p3); -} - -// node_modules/@babel/runtime/helpers/esm/inheritsLoose.js -function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - _setPrototypeOf(subClass, superClass); -} - -// node_modules/memoize-one/dist/memoize-one.esm.js -var safeIsNaN = Number.isNaN || function ponyfill(value) { - return typeof value === "number" && value !== value; -}; -function isEqual(first, second) { - if (first === second) { - return true; - } - if (safeIsNaN(first) && safeIsNaN(second)) { - return true; - } - return false; -} -function areInputsEqual(newInputs, lastInputs) { - if (newInputs.length !== lastInputs.length) { - return false; - } - for (var i4 = 0; i4 < newInputs.length; i4++) { - if (!isEqual(newInputs[i4], lastInputs[i4])) { - return false; - } - } - return true; -} -function memoizeOne(resultFn, isEqual2) { - if (isEqual2 === void 0) { - isEqual2 = areInputsEqual; - } - var lastThis; - var lastArgs = []; - var lastResult; - var calledOnce = false; - function memoized() { - var newArgs = []; - for (var _i = 0; _i < arguments.length; _i++) { - newArgs[_i] = arguments[_i]; - } - if (calledOnce && lastThis === this && isEqual2(newArgs, lastArgs)) { - return lastResult; - } - lastResult = resultFn.apply(this, newArgs); - calledOnce = true; - lastThis = this; - lastArgs = newArgs; - return lastResult; - } - return memoized; -} -var memoize_one_esm_default = memoizeOne; - -// node_modules/react-window/dist/index.esm.js -init_compat_module(); - -// node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js -function _objectWithoutPropertiesLoose(source, excluded) { - if (source == null) - return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key2, i4; - for (i4 = 0; i4 < sourceKeys.length; i4++) { - key2 = sourceKeys[i4]; - if (excluded.indexOf(key2) >= 0) - continue; - target[key2] = source[key2]; - } - return target; -} - -// node_modules/react-window/dist/index.esm.js -var hasNativePerformanceNow = typeof performance === "object" && typeof performance.now === "function"; -var now = hasNativePerformanceNow ? function() { - return performance.now(); -} : function() { - return Date.now(); -}; -function cancelTimeout(timeoutID) { - cancelAnimationFrame(timeoutID.id); -} -function requestTimeout(callback, delay) { - var start = now(); - function tick() { - if (now() - start >= delay) { - callback.call(null); - } else { - timeoutID.id = requestAnimationFrame(tick); - } - } - var timeoutID = { - id: requestAnimationFrame(tick) - }; - return timeoutID; -} -var size = -1; -function getScrollbarSize(recalculate) { - if (recalculate === void 0) { - recalculate = false; - } - if (size === -1 || recalculate) { - var div = document.createElement("div"); - var style = div.style; - style.width = "50px"; - style.height = "50px"; - style.overflow = "scroll"; - document.body.appendChild(div); - size = div.offsetWidth - div.clientWidth; - document.body.removeChild(div); - } - return size; -} -var cachedRTLResult = null; -function getRTLOffsetType(recalculate) { - if (recalculate === void 0) { - recalculate = false; - } - if (cachedRTLResult === null || recalculate) { - var outerDiv = document.createElement("div"); - var outerStyle = outerDiv.style; - outerStyle.width = "50px"; - outerStyle.height = "50px"; - outerStyle.overflow = "scroll"; - outerStyle.direction = "rtl"; - var innerDiv = document.createElement("div"); - var innerStyle = innerDiv.style; - innerStyle.width = "100px"; - innerStyle.height = "100px"; - outerDiv.appendChild(innerDiv); - document.body.appendChild(outerDiv); - if (outerDiv.scrollLeft > 0) { - cachedRTLResult = "positive-descending"; - } else { - outerDiv.scrollLeft = 1; - if (outerDiv.scrollLeft === 0) { - cachedRTLResult = "negative"; - } else { - cachedRTLResult = "positive-ascending"; - } - } - document.body.removeChild(outerDiv); - return cachedRTLResult; - } - return cachedRTLResult; -} -var devWarningsOverscanCount = null; -var devWarningsOverscanRowsColumnsCount = null; -var devWarningsTagName = null; -if (true) { - if (typeof window !== "undefined" && typeof window.WeakSet !== "undefined") { - devWarningsOverscanCount = /* @__PURE__ */ new WeakSet(); - devWarningsOverscanRowsColumnsCount = /* @__PURE__ */ new WeakSet(); - devWarningsTagName = /* @__PURE__ */ new WeakSet(); - } -} -var IS_SCROLLING_DEBOUNCE_INTERVAL$1 = 150; -var defaultItemKey$1 = function defaultItemKey(index, data) { - return index; -}; -var devWarningsDirection = null; -var devWarningsTagName$1 = null; -if (true) { - if (typeof window !== "undefined" && typeof window.WeakSet !== "undefined") { - devWarningsDirection = /* @__PURE__ */ new WeakSet(); - devWarningsTagName$1 = /* @__PURE__ */ new WeakSet(); - } -} -function createListComponent(_ref) { - var _class; - var getItemOffset2 = _ref.getItemOffset, getEstimatedTotalSize3 = _ref.getEstimatedTotalSize, getItemSize2 = _ref.getItemSize, getOffsetForIndexAndAlignment2 = _ref.getOffsetForIndexAndAlignment, getStartIndexForOffset2 = _ref.getStartIndexForOffset, getStopIndexForStartIndex2 = _ref.getStopIndexForStartIndex, initInstanceProps2 = _ref.initInstanceProps, shouldResetStyleCacheOnItemSizeChange = _ref.shouldResetStyleCacheOnItemSizeChange, validateProps2 = _ref.validateProps; - return _class = /* @__PURE__ */ function(_PureComponent) { - _inheritsLoose(List, _PureComponent); - function List(props) { - var _this; - _this = _PureComponent.call(this, props) || this; - _this._instanceProps = initInstanceProps2(_this.props, _assertThisInitialized(_this)); - _this._outerRef = void 0; - _this._resetIsScrollingTimeoutId = null; - _this.state = { - instance: _assertThisInitialized(_this), - isScrolling: false, - scrollDirection: "forward", - scrollOffset: typeof _this.props.initialScrollOffset === "number" ? _this.props.initialScrollOffset : 0, - scrollUpdateWasRequested: false - }; - _this._callOnItemsRendered = void 0; - _this._callOnItemsRendered = memoize_one_esm_default(function(overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex) { - return _this.props.onItemsRendered({ - overscanStartIndex, - overscanStopIndex, - visibleStartIndex, - visibleStopIndex - }); - }); - _this._callOnScroll = void 0; - _this._callOnScroll = memoize_one_esm_default(function(scrollDirection, scrollOffset, scrollUpdateWasRequested) { - return _this.props.onScroll({ - scrollDirection, - scrollOffset, - scrollUpdateWasRequested - }); - }); - _this._getItemStyle = void 0; - _this._getItemStyle = function(index) { - var _this$props = _this.props, direction = _this$props.direction, itemSize = _this$props.itemSize, layout = _this$props.layout; - var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && itemSize, shouldResetStyleCacheOnItemSizeChange && layout, shouldResetStyleCacheOnItemSizeChange && direction); - var style; - if (itemStyleCache.hasOwnProperty(index)) { - style = itemStyleCache[index]; - } else { - var _offset = getItemOffset2(_this.props, index, _this._instanceProps); - var size2 = getItemSize2(_this.props, index, _this._instanceProps); - var isHorizontal = direction === "horizontal" || layout === "horizontal"; - var isRtl = direction === "rtl"; - var offsetHorizontal = isHorizontal ? _offset : 0; - itemStyleCache[index] = style = { - position: "absolute", - left: isRtl ? void 0 : offsetHorizontal, - right: isRtl ? offsetHorizontal : void 0, - top: !isHorizontal ? _offset : 0, - height: !isHorizontal ? size2 : "100%", - width: isHorizontal ? size2 : "100%" - }; - } - return style; - }; - _this._getItemStyleCache = void 0; - _this._getItemStyleCache = memoize_one_esm_default(function(_4, __, ___) { - return {}; - }); - _this._onScrollHorizontal = function(event) { - var _event$currentTarget = event.currentTarget, clientWidth = _event$currentTarget.clientWidth, scrollLeft = _event$currentTarget.scrollLeft, scrollWidth = _event$currentTarget.scrollWidth; - _this.setState(function(prevState) { - if (prevState.scrollOffset === scrollLeft) { - return null; - } - var direction = _this.props.direction; - var scrollOffset = scrollLeft; - if (direction === "rtl") { - switch (getRTLOffsetType()) { - case "negative": - scrollOffset = -scrollLeft; - break; - case "positive-descending": - scrollOffset = scrollWidth - clientWidth - scrollLeft; - break; - } - } - scrollOffset = Math.max(0, Math.min(scrollOffset, scrollWidth - clientWidth)); - return { - isScrolling: true, - scrollDirection: prevState.scrollOffset < scrollLeft ? "forward" : "backward", - scrollOffset, - scrollUpdateWasRequested: false - }; - }, _this._resetIsScrollingDebounced); - }; - _this._onScrollVertical = function(event) { - var _event$currentTarget2 = event.currentTarget, clientHeight = _event$currentTarget2.clientHeight, scrollHeight = _event$currentTarget2.scrollHeight, scrollTop = _event$currentTarget2.scrollTop; - _this.setState(function(prevState) { - if (prevState.scrollOffset === scrollTop) { - return null; - } - var scrollOffset = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight)); - return { - isScrolling: true, - scrollDirection: prevState.scrollOffset < scrollOffset ? "forward" : "backward", - scrollOffset, - scrollUpdateWasRequested: false - }; - }, _this._resetIsScrollingDebounced); - }; - _this._outerRefSetter = function(ref) { - var outerRef = _this.props.outerRef; - _this._outerRef = ref; - if (typeof outerRef === "function") { - outerRef(ref); - } else if (outerRef != null && typeof outerRef === "object" && outerRef.hasOwnProperty("current")) { - outerRef.current = ref; - } - }; - _this._resetIsScrollingDebounced = function() { - if (_this._resetIsScrollingTimeoutId !== null) { - cancelTimeout(_this._resetIsScrollingTimeoutId); - } - _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL$1); - }; - _this._resetIsScrolling = function() { - _this._resetIsScrollingTimeoutId = null; - _this.setState({ - isScrolling: false - }, function() { - _this._getItemStyleCache(-1, null); - }); - }; - return _this; - } - List.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) { - validateSharedProps$1(nextProps, prevState); - validateProps2(nextProps); - return null; - }; - var _proto = List.prototype; - _proto.scrollTo = function scrollTo(scrollOffset) { - scrollOffset = Math.max(0, scrollOffset); - this.setState(function(prevState) { - if (prevState.scrollOffset === scrollOffset) { - return null; - } - return { - scrollDirection: prevState.scrollOffset < scrollOffset ? "forward" : "backward", - scrollOffset, - scrollUpdateWasRequested: true - }; - }, this._resetIsScrollingDebounced); - }; - _proto.scrollToItem = function scrollToItem(index, align) { - if (align === void 0) { - align = "auto"; - } - var _this$props2 = this.props, itemCount = _this$props2.itemCount, layout = _this$props2.layout; - var scrollOffset = this.state.scrollOffset; - index = Math.max(0, Math.min(index, itemCount - 1)); - var scrollbarSize = 0; - if (this._outerRef) { - var outerRef = this._outerRef; - if (layout === "vertical") { - scrollbarSize = outerRef.scrollWidth > outerRef.clientWidth ? getScrollbarSize() : 0; - } else { - scrollbarSize = outerRef.scrollHeight > outerRef.clientHeight ? getScrollbarSize() : 0; - } - } - this.scrollTo(getOffsetForIndexAndAlignment2(this.props, index, align, scrollOffset, this._instanceProps, scrollbarSize)); - }; - _proto.componentDidMount = function componentDidMount() { - var _this$props3 = this.props, direction = _this$props3.direction, initialScrollOffset = _this$props3.initialScrollOffset, layout = _this$props3.layout; - if (typeof initialScrollOffset === "number" && this._outerRef != null) { - var outerRef = this._outerRef; - if (direction === "horizontal" || layout === "horizontal") { - outerRef.scrollLeft = initialScrollOffset; - } else { - outerRef.scrollTop = initialScrollOffset; - } - } - this._callPropsCallbacks(); - }; - _proto.componentDidUpdate = function componentDidUpdate() { - var _this$props4 = this.props, direction = _this$props4.direction, layout = _this$props4.layout; - var _this$state = this.state, scrollOffset = _this$state.scrollOffset, scrollUpdateWasRequested = _this$state.scrollUpdateWasRequested; - if (scrollUpdateWasRequested && this._outerRef != null) { - var outerRef = this._outerRef; - if (direction === "horizontal" || layout === "horizontal") { - if (direction === "rtl") { - switch (getRTLOffsetType()) { - case "negative": - outerRef.scrollLeft = -scrollOffset; - break; - case "positive-ascending": - outerRef.scrollLeft = scrollOffset; - break; - default: - var clientWidth = outerRef.clientWidth, scrollWidth = outerRef.scrollWidth; - outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset; - break; - } - } else { - outerRef.scrollLeft = scrollOffset; - } - } else { - outerRef.scrollTop = scrollOffset; - } - } - this._callPropsCallbacks(); - }; - _proto.componentWillUnmount = function componentWillUnmount() { - if (this._resetIsScrollingTimeoutId !== null) { - cancelTimeout(this._resetIsScrollingTimeoutId); - } - }; - _proto.render = function render() { - var _this$props5 = this.props, children = _this$props5.children, className = _this$props5.className, direction = _this$props5.direction, height = _this$props5.height, innerRef = _this$props5.innerRef, innerElementType = _this$props5.innerElementType, innerTagName = _this$props5.innerTagName, itemCount = _this$props5.itemCount, itemData = _this$props5.itemData, _this$props5$itemKey = _this$props5.itemKey, itemKey = _this$props5$itemKey === void 0 ? defaultItemKey$1 : _this$props5$itemKey, layout = _this$props5.layout, outerElementType = _this$props5.outerElementType, outerTagName = _this$props5.outerTagName, style = _this$props5.style, useIsScrolling = _this$props5.useIsScrolling, width = _this$props5.width; - var isScrolling = this.state.isScrolling; - var isHorizontal = direction === "horizontal" || layout === "horizontal"; - var onScroll = isHorizontal ? this._onScrollHorizontal : this._onScrollVertical; - var _this$_getRangeToRend = this._getRangeToRender(), startIndex = _this$_getRangeToRend[0], stopIndex = _this$_getRangeToRend[1]; - var items = []; - if (itemCount > 0) { - for (var _index = startIndex; _index <= stopIndex; _index++) { - items.push(h(children, { - data: itemData, - key: itemKey(_index, itemData), - index: _index, - isScrolling: useIsScrolling ? isScrolling : void 0, - style: this._getItemStyle(_index) - })); - } - } - var estimatedTotalSize = getEstimatedTotalSize3(this.props, this._instanceProps); - return h(outerElementType || outerTagName || "div", { - className, - onScroll, - ref: this._outerRefSetter, - style: _extends({ - position: "relative", - height, - width, - overflow: "auto", - WebkitOverflowScrolling: "touch", - willChange: "transform", - direction - }, style) - }, h(innerElementType || innerTagName || "div", { - children: items, - ref: innerRef, - style: { - height: isHorizontal ? "100%" : estimatedTotalSize, - pointerEvents: isScrolling ? "none" : void 0, - width: isHorizontal ? estimatedTotalSize : "100%" - } - })); - }; - _proto._callPropsCallbacks = function _callPropsCallbacks() { - if (typeof this.props.onItemsRendered === "function") { - var itemCount = this.props.itemCount; - if (itemCount > 0) { - var _this$_getRangeToRend2 = this._getRangeToRender(), _overscanStartIndex = _this$_getRangeToRend2[0], _overscanStopIndex = _this$_getRangeToRend2[1], _visibleStartIndex = _this$_getRangeToRend2[2], _visibleStopIndex = _this$_getRangeToRend2[3]; - this._callOnItemsRendered(_overscanStartIndex, _overscanStopIndex, _visibleStartIndex, _visibleStopIndex); - } - } - if (typeof this.props.onScroll === "function") { - var _this$state2 = this.state, _scrollDirection = _this$state2.scrollDirection, _scrollOffset = _this$state2.scrollOffset, _scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested; - this._callOnScroll(_scrollDirection, _scrollOffset, _scrollUpdateWasRequested); - } - }; - _proto._getRangeToRender = function _getRangeToRender() { - var _this$props6 = this.props, itemCount = _this$props6.itemCount, overscanCount = _this$props6.overscanCount; - var _this$state3 = this.state, isScrolling = _this$state3.isScrolling, scrollDirection = _this$state3.scrollDirection, scrollOffset = _this$state3.scrollOffset; - if (itemCount === 0) { - return [0, 0, 0, 0]; - } - var startIndex = getStartIndexForOffset2(this.props, scrollOffset, this._instanceProps); - var stopIndex = getStopIndexForStartIndex2(this.props, startIndex, scrollOffset, this._instanceProps); - var overscanBackward = !isScrolling || scrollDirection === "backward" ? Math.max(1, overscanCount) : 1; - var overscanForward = !isScrolling || scrollDirection === "forward" ? Math.max(1, overscanCount) : 1; - return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)), startIndex, stopIndex]; - }; - return List; - }(w3), _class.defaultProps = { - direction: "ltr", - itemData: void 0, - layout: "vertical", - overscanCount: 2, - useIsScrolling: false - }, _class; -} -var validateSharedProps$1 = function validateSharedProps(_ref2, _ref3) { - var children = _ref2.children, direction = _ref2.direction, height = _ref2.height, layout = _ref2.layout, innerTagName = _ref2.innerTagName, outerTagName = _ref2.outerTagName, width = _ref2.width; - var instance = _ref3.instance; - if (true) { - if (innerTagName != null || outerTagName != null) { - if (devWarningsTagName$1 && !devWarningsTagName$1.has(instance)) { - devWarningsTagName$1.add(instance); - console.warn("The innerTagName and outerTagName props have been deprecated. Please use the innerElementType and outerElementType props instead."); - } - } - var isHorizontal = direction === "horizontal" || layout === "horizontal"; - switch (direction) { - case "horizontal": - case "vertical": - if (devWarningsDirection && !devWarningsDirection.has(instance)) { - devWarningsDirection.add(instance); - console.warn('The direction prop should be either "ltr" (default) or "rtl". Please use the layout prop to specify "vertical" (default) or "horizontal" orientation.'); - } - break; - case "ltr": - case "rtl": - break; - default: - throw Error('An invalid "direction" prop has been specified. Value should be either "ltr" or "rtl". ' + ('"' + direction + '" was specified.')); - } - switch (layout) { - case "horizontal": - case "vertical": - break; - default: - throw Error('An invalid "layout" prop has been specified. Value should be either "horizontal" or "vertical". ' + ('"' + layout + '" was specified.')); - } - if (children == null) { - throw Error('An invalid "children" prop has been specified. Value should be a React component. ' + ('"' + (children === null ? "null" : typeof children) + '" was specified.')); - } - if (isHorizontal && typeof width !== "number") { - throw Error('An invalid "width" prop has been specified. Horizontal lists must specify a number for width. ' + ('"' + (width === null ? "null" : typeof width) + '" was specified.')); - } else if (!isHorizontal && typeof height !== "number") { - throw Error('An invalid "height" prop has been specified. Vertical lists must specify a number for height. ' + ('"' + (height === null ? "null" : typeof height) + '" was specified.')); - } - } -}; -var DEFAULT_ESTIMATED_ITEM_SIZE$1 = 50; -var getItemMetadata$1 = function getItemMetadata(props, index, instanceProps) { - var _ref = props, itemSize = _ref.itemSize; - var itemMetadataMap = instanceProps.itemMetadataMap, lastMeasuredIndex = instanceProps.lastMeasuredIndex; - if (index > lastMeasuredIndex) { - var offset = 0; - if (lastMeasuredIndex >= 0) { - var itemMetadata = itemMetadataMap[lastMeasuredIndex]; - offset = itemMetadata.offset + itemMetadata.size; - } - for (var i4 = lastMeasuredIndex + 1; i4 <= index; i4++) { - var size2 = itemSize(i4); - itemMetadataMap[i4] = { - offset, - size: size2 - }; - offset += size2; - } - instanceProps.lastMeasuredIndex = index; - } - return itemMetadataMap[index]; -}; -var findNearestItem$1 = function findNearestItem(props, instanceProps, offset) { - var itemMetadataMap = instanceProps.itemMetadataMap, lastMeasuredIndex = instanceProps.lastMeasuredIndex; - var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0; - if (lastMeasuredItemOffset >= offset) { - return findNearestItemBinarySearch$1(props, instanceProps, lastMeasuredIndex, 0, offset); - } else { - return findNearestItemExponentialSearch$1(props, instanceProps, Math.max(0, lastMeasuredIndex), offset); - } -}; -var findNearestItemBinarySearch$1 = function findNearestItemBinarySearch(props, instanceProps, high, low, offset) { - while (low <= high) { - var middle = low + Math.floor((high - low) / 2); - var currentOffset = getItemMetadata$1(props, middle, instanceProps).offset; - if (currentOffset === offset) { - return middle; - } else if (currentOffset < offset) { - low = middle + 1; - } else if (currentOffset > offset) { - high = middle - 1; - } - } - if (low > 0) { - return low - 1; - } else { - return 0; - } -}; -var findNearestItemExponentialSearch$1 = function findNearestItemExponentialSearch(props, instanceProps, index, offset) { - var itemCount = props.itemCount; - var interval = 1; - while (index < itemCount && getItemMetadata$1(props, index, instanceProps).offset < offset) { - index += interval; - interval *= 2; - } - return findNearestItemBinarySearch$1(props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset); -}; -var getEstimatedTotalSize = function getEstimatedTotalSize2(_ref2, _ref3) { - var itemCount = _ref2.itemCount; - var itemMetadataMap = _ref3.itemMetadataMap, estimatedItemSize = _ref3.estimatedItemSize, lastMeasuredIndex = _ref3.lastMeasuredIndex; - var totalSizeOfMeasuredItems = 0; - if (lastMeasuredIndex >= itemCount) { - lastMeasuredIndex = itemCount - 1; - } - if (lastMeasuredIndex >= 0) { - var itemMetadata = itemMetadataMap[lastMeasuredIndex]; - totalSizeOfMeasuredItems = itemMetadata.offset + itemMetadata.size; - } - var numUnmeasuredItems = itemCount - lastMeasuredIndex - 1; - var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize; - return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems; -}; -var VariableSizeList = /* @__PURE__ */ createListComponent({ - getItemOffset: function getItemOffset(props, index, instanceProps) { - return getItemMetadata$1(props, index, instanceProps).offset; - }, - getItemSize: function getItemSize(props, index, instanceProps) { - return instanceProps.itemMetadataMap[index].size; - }, - getEstimatedTotalSize, - getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) { - var direction = props.direction, height = props.height, layout = props.layout, width = props.width; - var isHorizontal = direction === "horizontal" || layout === "horizontal"; - var size2 = isHorizontal ? width : height; - var itemMetadata = getItemMetadata$1(props, index, instanceProps); - var estimatedTotalSize = getEstimatedTotalSize(props, instanceProps); - var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size2, itemMetadata.offset)); - var minOffset = Math.max(0, itemMetadata.offset - size2 + itemMetadata.size + scrollbarSize); - if (align === "smart") { - if (scrollOffset >= minOffset - size2 && scrollOffset <= maxOffset + size2) { - align = "auto"; - } else { - align = "center"; - } - } - switch (align) { - case "start": - return maxOffset; - case "end": - return minOffset; - case "center": - return Math.round(minOffset + (maxOffset - minOffset) / 2); - case "auto": - default: - if (scrollOffset >= minOffset && scrollOffset <= maxOffset) { - return scrollOffset; - } else if (scrollOffset < minOffset) { - return minOffset; - } else { - return maxOffset; - } - } - }, - getStartIndexForOffset: function getStartIndexForOffset(props, offset, instanceProps) { - return findNearestItem$1(props, instanceProps, offset); - }, - getStopIndexForStartIndex: function getStopIndexForStartIndex(props, startIndex, scrollOffset, instanceProps) { - var direction = props.direction, height = props.height, itemCount = props.itemCount, layout = props.layout, width = props.width; - var isHorizontal = direction === "horizontal" || layout === "horizontal"; - var size2 = isHorizontal ? width : height; - var itemMetadata = getItemMetadata$1(props, startIndex, instanceProps); - var maxOffset = scrollOffset + size2; - var offset = itemMetadata.offset + itemMetadata.size; - var stopIndex = startIndex; - while (stopIndex < itemCount - 1 && offset < maxOffset) { - stopIndex++; - offset += getItemMetadata$1(props, stopIndex, instanceProps).size; - } - return stopIndex; - }, - initInstanceProps: function initInstanceProps(props, instance) { - var _ref4 = props, estimatedItemSize = _ref4.estimatedItemSize; - var instanceProps = { - itemMetadataMap: {}, - estimatedItemSize: estimatedItemSize || DEFAULT_ESTIMATED_ITEM_SIZE$1, - lastMeasuredIndex: -1 - }; - instance.resetAfterIndex = function(index, shouldForceUpdate) { - if (shouldForceUpdate === void 0) { - shouldForceUpdate = true; - } - instanceProps.lastMeasuredIndex = Math.min(instanceProps.lastMeasuredIndex, index - 1); - instance._getItemStyleCache(-1); - if (shouldForceUpdate) { - instance.forceUpdate(); + }, + dangerouslySetInnerHTML: { + __html: uiIconSet["mk-ui-new-folder"] } - }; - return instanceProps; - }, - shouldResetStyleCacheOnItemSizeChange: false, - validateProps: function validateProps(_ref5) { - var itemSize = _ref5.itemSize; - if (true) { - if (typeof itemSize !== "function") { - throw Error('An invalid "itemSize" prop has been specified. Value should be a function. ' + ('"' + (itemSize === null ? "null" : typeof itemSize) + '" was specified.')); + }), /* @__PURE__ */ bn.createElement("button", { + "aria-label": i18n_default.buttons.newNote, + onClick: () => { + newFileInSection(); + }, + dangerouslySetInnerHTML: { + __html: uiIconSet["mk-ui-new-note"] } - } - } -}); -function shallowDiffers(prev, next) { - for (var attribute in prev) { - if (!(attribute in next)) { - return true; - } - } - for (var _attribute in next) { - if (prev[_attribute] !== next[_attribute]) { - return true; - } + }))))); } - return false; -} -var _excluded = ["style"]; -var _excluded2 = ["style"]; -function areEqual(prevProps, nextProps) { - var prevStyle = prevProps.style, prevRest = _objectWithoutPropertiesLoose(prevProps, _excluded); - var nextStyle = nextProps.style, nextRest = _objectWithoutPropertiesLoose(nextProps, _excluded2); - return !shallowDiffers(prevStyle, nextStyle) && !shallowDiffers(prevRest, nextRest); -} - -// src/utils/libs/autosizer.tsx -init_compat_module(); +); +SectionItem.displayName = "SectionItem"; -// src/utils/libs/detectElementResize.js -var windowObject; -if (typeof window !== "undefined") { - windowObject = window; -} else if (typeof self !== "undefined") { - windowObject = self; -} else { - windowObject = global; -} -var cancelFrame = null; -var requestFrame = null; -var TIMEOUT_DURATION = 20; -var clearTimeoutFn = windowObject.clearTimeout; -var setTimeoutFn = windowObject.setTimeout; -var cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame; -var requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame; -if (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) { - cancelFrame = clearTimeoutFn; - requestFrame = function requestAnimationFrameViaSetTimeout(callback) { - return setTimeoutFn(callback, TIMEOUT_DURATION); - }; -} else { - cancelFrame = function cancelFrame2([animationFrameID, timeoutID]) { - cancelAnimationFrameFn(animationFrameID); - clearTimeoutFn(timeoutID); - }; - requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) { - const animationFrameID = requestAnimationFrameFn( - function animationFrameCallback() { - clearTimeoutFn(timeoutID); - callback(); - } - ); - const timeoutID = setTimeoutFn(function timeoutCallback() { - cancelAnimationFrameFn(animationFrameID); - callback(); - }, TIMEOUT_DURATION); - return [animationFrameID, timeoutID]; - }; -} -function createDetectElementResize(nonce) { - let animationKeyframes; - let animationName; - let animationStartEvent; - let animationStyle; - let checkTriggers; - let resetTriggers; - let scrollListener; - const attachEvent = typeof document !== "undefined" && document.attachEvent; - if (!attachEvent) { - resetTriggers = function(element) { - const triggers = element.__resizeTriggers__, expand = triggers.firstElementChild, contract = triggers.lastElementChild, expandChild = expand.firstElementChild; - contract.scrollLeft = contract.scrollWidth; - contract.scrollTop = contract.scrollHeight; - expandChild.style.width = expand.offsetWidth + 1 + "px"; - expandChild.style.height = expand.offsetHeight + 1 + "px"; - expand.scrollLeft = expand.scrollWidth; - expand.scrollTop = expand.scrollHeight; - }; - checkTriggers = function(element) { - return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height; +// src/components/Spaces/TreeView/FolderTreeView.tsx +var animateLayoutChanges2 = ({ + isSorting, + wasDragging +}) => isSorting || wasDragging ? false : true; +var SortableTreeItem = ({ + id: id2, + data, + depth, + disabled, + style, + ...props2 +}) => { + const { + attributes, + isDragging, + isSorting, + listeners, + setDraggableNodeRef, + setDroppableNodeRef, + transform, + transition + } = useSortable({ + id: id2, + animateLayoutChanges: animateLayoutChanges2, + disabled, + data + }); + const memoListeners = F(() => { + return { + ...attributes, + ...listeners }; - scrollListener = function(e4) { - if (e4.target.className && typeof e4.target.className.indexOf === "function" && e4.target.className.indexOf("contract-trigger") < 0 && e4.target.className.indexOf("expand-trigger") < 0) { + }, [isSorting]); + if (data.parentId == null) { + return /* @__PURE__ */ bn.createElement(SectionItem, { + ref: setDraggableNodeRef, + wrapperRef: setDroppableNodeRef, + data, + depth, + ghost: isDragging, + disableInteraction: isSorting, + disabled, + style, + handleProps: memoListeners, + ...props2 + }); + } else { + return /* @__PURE__ */ bn.createElement(TreeItem, { + ref: setDraggableNodeRef, + wrapperRef: setDroppableNodeRef, + data, + depth, + ghost: isDragging, + disableInteraction: isSorting, + disabled, + style, + handleProps: memoListeners, + ...props2 + }); + } +}; +var TreeItem = k3( + ({ + childCount, + clone, + data, + depth, + disableSelection, + disableInteraction, + ghost, + handleProps, + active, + indentationWidth, + indicator, + collapsed, + selected, + onCollapse, + onSelectRange, + wrapperRef, + style, + plugin, + disabled + }, ref) => { + var _a2; + const [activeFile2, setActiveFile] = Recoil_index_14(activeFile); + const [selectedFiles2, setSelectedFiles] = Recoil_index_14(selectedFiles); + const openFileAtTarget = (file, e4) => { + if (e4.shiftKey) { + onSelectRange(file.id); return; } - const element = this; - resetTriggers(this); - if (this.__resizeRAF__) { - cancelFrame(this.__resizeRAF__); - } - this.__resizeRAF__ = requestFrame(function animationFrame() { - if (checkTriggers(element)) { - element.__resizeLast__.width = element.offsetWidth; - element.__resizeLast__.height = element.offsetHeight; - element.__resizeListeners__.forEach(function forEachResizeListener(fn2) { - fn2.call(element, e4); - }); - } - }); + openAFile(getAbstractFileAtPath(app, file.item.path), plugin.app, e4.ctrlKey || e4.metaKey); + setActiveFile(file.item.path); + setSelectedFiles([file]); }; - let animation = false; - let keyframeprefix = ""; - animationStartEvent = "animationstart"; - const domPrefixes = "Webkit Moz O ms".split(" "); - let startEvents = "webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split( - " " - ); - let pfx = ""; - { - const elm = document.createElement("fakeelement"); - if (elm.style.animationName !== void 0) { - animation = true; - } - if (animation === false) { - for (let i4 = 0; i4 < domPrefixes.length; i4++) { - if (elm.style[domPrefixes[i4] + "AnimationName"] !== void 0) { - pfx = domPrefixes[i4]; - keyframeprefix = "-" + pfx.toLowerCase() + "-"; - animationStartEvent = startEvents[i4]; - animation = true; - break; - } - } - } - } - animationName = "resizeanim"; - animationKeyframes = "@" + keyframeprefix + "keyframes " + animationName + " { from { opacity: 0; } to { opacity: 0; } } "; - animationStyle = keyframeprefix + "animation: 1ms " + animationName + "; "; - } - const createStyles = function(doc) { - if (!doc.getElementById("detectElementResize")) { - const css = (animationKeyframes ? animationKeyframes : "") + ".resize-triggers { " + (animationStyle ? animationStyle : "") + 'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }', head = doc.head || doc.getElementsByTagName("head")[0], style = doc.createElement("style"); - style.id = "detectElementResize"; - style.type = "text/css"; - if (nonce != null) { - style.setAttribute("nonce", nonce); - } - if (style.styleSheet) { - style.styleSheet.cssText = css; - } else { - style.appendChild(doc.createTextNode(css)); - } - head.appendChild(style); - } - }; - const addResizeListener = function(element, fn2) { - if (attachEvent) { - element.attachEvent("onresize", fn2); - } else { - if (!element.__resizeTriggers__) { - const doc = element.ownerDocument; - const elementStyle = windowObject.getComputedStyle(element); - if (elementStyle && elementStyle.position === "static") { - element.style.position = "relative"; - } - createStyles(doc); - element.__resizeLast__ = {}; - element.__resizeListeners__ = []; - (element.__resizeTriggers__ = doc.createElement("div")).className = "resize-triggers"; - const expandTrigger = doc.createElement("div"); - expandTrigger.className = "expand-trigger"; - expandTrigger.appendChild(doc.createElement("div")); - const contractTrigger = doc.createElement("div"); - contractTrigger.className = "contract-trigger"; - element.__resizeTriggers__.appendChild(expandTrigger); - element.__resizeTriggers__.appendChild(contractTrigger); - element.appendChild(element.__resizeTriggers__); - resetTriggers(element); - element.addEventListener("scroll", scrollListener, true); - if (animationStartEvent) { - element.__resizeTriggers__.__animationListener__ = function animationListener(e4) { - if (e4.animationName === animationName) { - resetTriggers(element); - } - }; - element.__resizeTriggers__.addEventListener( - animationStartEvent, - element.__resizeTriggers__.__animationListener__ - ); - } - } - element.__resizeListeners__.push(fn2); - } - }; - const removeResizeListener = function(element, fn2) { - if (attachEvent) { - element.detachEvent("onresize", fn2); - } else { - element.__resizeListeners__.splice( - element.__resizeListeners__.indexOf(fn2), - 1 - ); - if (!element.__resizeListeners__.length) { - element.removeEventListener("scroll", scrollListener, true); - if (element.__resizeTriggers__.__animationListener__) { - element.__resizeTriggers__.removeEventListener( - animationStartEvent, - element.__resizeTriggers__.__animationListener__ - ); - element.__resizeTriggers__.__animationListener__ = null; - } - try { - element.__resizeTriggers__ = !element.removeChild( - element.__resizeTriggers__ - ); - } catch (e4) { - } + const dragStarted = (e4) => { + if (selectedFiles2.length > 1) { + const files = selectedFiles2.map((f4) => f4.file).filter((f4) => f4); + app.dragManager.onDragStart(e4, { + icon: "lucide-files", + source: void 0, + title: files.length + " Files", + type: "files", + files + }); + app.dragManager.dragFiles(e4, files, true); + return; } - } - }; - return { - addResizeListener, - removeResizeListener - }; -} - -// src/utils/libs/autosizer.tsx -var AutoSizer = class extends w3 { - constructor() { - super(...arguments); - this.state = { - height: this.props.defaultHeight || 0, - width: this.props.defaultWidth || 0 - }; - this._onResize = () => { - const { disableHeight, disableWidth, onResize } = this.props; - if (this._parentNode) { - const height = this._parentNode.offsetHeight || 0; - const width = this._parentNode.offsetWidth || 0; - const style = window.getComputedStyle(this._parentNode) || {}; - const paddingLeft = parseInt(style.paddingLeft, 10) || 0; - const paddingRight = parseInt(style.paddingRight, 10) || 0; - const paddingTop = parseInt(style.paddingTop, 10) || 0; - const paddingBottom = parseInt(style.paddingBottom, 10) || 0; - const newHeight = height - paddingTop - paddingBottom; - const newWidth = width - paddingLeft - paddingRight; - if (height == 0 || width == 0) { - return; - } - if (!disableHeight && this.state.height !== newHeight || !disableWidth && this.state.width !== newWidth) { - this.setState({ - height: height - paddingTop - paddingBottom, - width: width - paddingLeft - paddingRight - }); - onResize({ height, width }); - } + const file = getAbstractFileAtPath(app, data.item.path); + if (file instanceof import_obsidian26.TFolder) { + app.dragManager.onDragStart(e4, { + icon: "lucide-folder", + source: void 0, + title: file.name, + type: "folder", + file + }); + app.dragManager.dragFolder(e4, file, true); + return; } + app.dragManager.onDragStart(e4, { + icon: "lucide-file", + source: void 0, + title: file.name, + type: "file", + file + }); + app.dragManager.dragFile(e4, file, true); }; - this._setRef = (autoSizer) => { - this._autoSizer = autoSizer; - }; - } - componentDidMount() { - const { nonce } = this.props; - if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) { - this._parentNode = this._autoSizer.parentNode; - this._detectElementResize = createDetectElementResize(nonce); - this._detectElementResize.addResizeListener( - this._parentNode, - this._onResize - ); - this._onResize(); - } - } - componentWillUnmount() { - if (this._detectElementResize && this._parentNode) { - this._detectElementResize.removeResizeListener( - this._parentNode, - this._onResize - ); - } - } - render() { - const { children, className, disableHeight, disableWidth, style } = this.props; - const { height, width } = this.state; - const outerStyle = { overflow: "visible" }; - const childParams = {}; - let bailoutOnChildren = false; - if (!disableHeight) { - if (height === 0) { - bailoutOnChildren = true; - } - outerStyle.height = 0; - childParams.height = height; - } - if (!disableWidth) { - if (width === 0) { - bailoutOnChildren = true; - } - outerStyle.width = 0; - childParams.width = width; - } - return /* @__PURE__ */ h("div", { - className, - ref: this._setRef, + const innerProps = !platformIsMobile() ? { + draggable: true, + onDragStart: dragStarted + } : handleProps; + return /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", { + className: (0, import_classnames5.default)( + "mk-tree-wrapper", + clone && "mk-clone", + ghost && "mk-ghost", + disableSelection && "mk-disable-selection", + disableInteraction && "mk-disable-interaction" + ), + ref: wrapperRef, + style + }, /* @__PURE__ */ bn.createElement("div", { + className: indicator && (0, import_classnames5.default)( + "nav-file", + indicator.state == 2 /* Bottom */ ? "mk-indicator-bottom" : indicator.state == 1 /* Top */ ? "mk-indicator-top" : indicator.state == 3 /* Row */ ? "mk-indicator-row" : "" + ), + style: indicator ? { + "--spacing": `${indentationWidth * indicator.depth}px` + } : {} + }, !platformIsMobile() && /* @__PURE__ */ bn.createElement("div", { + className: "mk-drag-handle", + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-handle"] }, + ...handleProps + }), /* @__PURE__ */ bn.createElement("div", { + className: (0, import_classnames5.default)( + `mk-tree-item nav-file-title ${active && "is-active"} ${selected && "is-selected"}` + ), + ref, style: { - ...outerStyle, - ...style - } - }, !bailoutOnChildren && children(childParams)); + "--spacing": `${indentationWidth * depth - 28}px` + }, + onClick: (e4) => openFileAtTarget(data, e4), + onContextMenu: (e4) => selectedFiles2.length > 1 && selectedFiles2.some((f4) => f4.id == data.id) ? triggerMultiFileMenu(plugin, selectedFiles2, e4) : triggerFileMenu(plugin, data.file, data.item.folder == "true", e4), + ...innerProps + }, data.item.folder == "true" && /* @__PURE__ */ bn.createElement("button", { + "aria-label": `${collapsed ? i18n_default.labels.expand : i18n_default.labels.collapse}`, + className: `mk-collapse ${collapsed ? "mk-collapsed" : ""}`, + onClick: (e4) => { + onCollapse(data); + e4.stopPropagation(); + }, + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-collapse"] } + }), plugin.settings.spacesStickers && /* @__PURE__ */ bn.createElement(FileSticker, { + plugin, + filePath: data.item.path + }), /* @__PURE__ */ bn.createElement("div", { + className: `mk-tree-text nav-file-title-content` + }, data.file ? data.item.folder == "true" ? data.file.name : fileNameToString(data.file.name) : "", data.item.folder == "false" && data.file && data.file.extension != "md" && /* @__PURE__ */ bn.createElement("span", { + className: "nav-file-tag" + }, (_a2 = data.file) == null ? void 0 : _a2.extension)), !clone ? /* @__PURE__ */ bn.createElement("div", { + className: "mk-folder-buttons" + }, /* @__PURE__ */ bn.createElement("button", { + "aria-label": i18n_default.buttons.moreOptions, + onClick: (e4) => { + triggerFileMenu(plugin, data.file, data.item.folder == "true", e4); + e4.stopPropagation(); + }, + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-options"] } + }), data.item.folder == "true" && /* @__PURE__ */ bn.createElement("button", { + "aria-label": i18n_default.buttons.newNote, + onClick: (e4) => { + newFileInFolder(plugin, data.file); + e4.stopPropagation(); + }, + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-plus"] } + })) : /* @__PURE__ */ bn.createElement(bn.Fragment, null))))); } -}; -AutoSizer.defaultProps = { - onResize: () => { - }, - disableHeight: false, - disableWidth: false, - style: {} -}; +); +TreeItem.displayName = "TreeItem"; // src/utils/dnd.ts function getMaxDepth({ previousItem }) { + var _a2; if (previousItem) { - if (previousItem.isFolder) + if (((_a2 = previousItem.item) == null ? void 0 : _a2.folder) == "true") return previousItem.depth + 1; return previousItem.depth; } @@ -45058,17 +46711,17 @@ function getDragDepth(offset, indentationWidth) { function getProjection(items, activeItem, overItemIndex, previousItem, nextItem, dragDepth) { const activeIsSection = activeItem.parentId == null; const overIsSection = previousItem.parentId == null; - if (nodeIsAncestorOfTarget(activeItem, previousItem)) { - return null; - } if (activeIsSection) { if (overIsSection) { return { depth: 0, maxDepth: 0, minDepth: 0, overId: previousItem.id, parentId: null }; } return null; } - if (activeItem.section != previousItem.section) { - if (previousItem.section == -1) { + if (nodeIsAncestorOfTarget(activeItem, previousItem)) { + return null; + } + if (activeItem.space != previousItem.space) { + if (previousItem.space == "/") { return null; } } @@ -45083,250 +46736,658 @@ function getProjection(items, activeItem, overItemIndex, previousItem, nextItem, } else if (projectedDepth < minDepth) { depth = minDepth; } - if (previousItem.section != -1 && depth > 1) { + if (previousItem.space != "/" && depth > 1) { return null; } + if (depth <= activeItem.depth && activeItem.space == previousItem.space) { + if (!activeItem.sortable || !previousItem.sortable) { + return null; + } + } return { depth, maxDepth, minDepth, overId: previousItem.id, parentId: getParentId() }; function getParentId() { - var _a2; - if (depth === 0 || !previousItem) { + var _a2, _b2; + if (depth === 0) { + return previousItem.space == "/" ? "/" : previousItem.space + "//"; + } + if (!previousItem) { return "/"; } - if (depth === previousItem.depth || depth > previousItem.depth && !previousItem.isFolder) { + if (depth === previousItem.depth || depth > previousItem.depth && ((_a2 = previousItem.item) == null ? void 0 : _a2.folder) != "true") { return previousItem.parentId; } if (depth > previousItem.depth) { return previousItem.id; } - const newParent = (_a2 = items.slice(0, overItemIndex).reverse().find((item) => item.depth === depth)) == null ? void 0 : _a2.parentId; + const newParent = (_b2 = items.slice(0, overItemIndex).reverse().find((item) => item.depth === depth)) == null ? void 0 : _b2.parentId; return newParent != null ? newParent : null; } } +// node_modules/@tanstack/react-virtual/build/esm/index.js +function _extends() { + _extends = Object.assign || function(target) { + for (var i4 = 1; i4 < arguments.length; i4++) { + var source = arguments[i4]; + for (var key2 in source) { + if (Object.prototype.hasOwnProperty.call(source, key2)) { + target[key2] = source[key2]; + } + } + } + return target; + }; + return _extends.apply(this, arguments); +} +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) + return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key2, i4; + for (i4 = 0; i4 < sourceKeys.length; i4++) { + key2 = sourceKeys[i4]; + if (excluded.indexOf(key2) >= 0) + continue; + target[key2] = source[key2]; + } + return target; +} +var props = ["bottom", "height", "left", "right", "top", "width"]; +var rectChanged = function rectChanged2(a5, b4) { + if (a5 === void 0) { + a5 = {}; + } + if (b4 === void 0) { + b4 = {}; + } + return props.some(function(prop) { + return a5[prop] !== b4[prop]; + }); +}; +var observedNodes = /* @__PURE__ */ new Map(); +var rafId; +var run = function run2() { + var changedStates = []; + observedNodes.forEach(function(state, node) { + var newRect = node.getBoundingClientRect(); + if (rectChanged(newRect, state.rect)) { + state.rect = newRect; + changedStates.push(state); + } + }); + changedStates.forEach(function(state) { + state.callbacks.forEach(function(cb) { + return cb(state.rect); + }); + }); + rafId = window.requestAnimationFrame(run2); +}; +function observeRect(node, cb) { + return { + observe: function observe() { + var wasEmpty = observedNodes.size === 0; + if (observedNodes.has(node)) { + observedNodes.get(node).callbacks.push(cb); + } else { + observedNodes.set(node, { + rect: void 0, + hasRectChanged: false, + callbacks: [cb] + }); + } + if (wasEmpty) + run(); + }, + unobserve: function unobserve() { + var state = observedNodes.get(node); + if (state) { + var index = state.callbacks.indexOf(cb); + if (index >= 0) + state.callbacks.splice(index, 1); + if (!state.callbacks.length) + observedNodes["delete"](node); + if (!observedNodes.size) + cancelAnimationFrame(rafId); + } + } + }; +} +var useIsomorphicLayoutEffect3 = typeof window !== "undefined" ? s2 : h2; +function rectReducer(state, action) { + var rect = action.rect; + if (state.height !== rect.height || state.width !== rect.width) { + return rect; + } + return state; +} +var useRect2 = function useRect3(nodeRef, initialRect) { + if (initialRect === void 0) { + initialRect = { + width: 0, + height: 0 + }; + } + var _React$useState = bn.useState(nodeRef.current), element = _React$useState[0], setElement = _React$useState[1]; + var _React$useReducer = bn.useReducer(rectReducer, initialRect), rect = _React$useReducer[0], dispatch = _React$useReducer[1]; + var initialRectSet = bn.useRef(false); + useIsomorphicLayoutEffect3(function() { + if (nodeRef.current !== element) { + setElement(nodeRef.current); + } + }); + useIsomorphicLayoutEffect3(function() { + if (element && !initialRectSet.current) { + initialRectSet.current = true; + var _rect = element.getBoundingClientRect(); + dispatch({ + rect: _rect + }); + } + }, [element]); + bn.useEffect(function() { + if (!element) { + return; + } + var observer = observeRect(element, function(rect2) { + dispatch({ + rect: rect2 + }); + }); + observer.observe(); + return function() { + observer.unobserve(); + }; + }, [element]); + return rect; +}; +var _excluded = ["align"]; +var defaultEstimateSize = function defaultEstimateSize2() { + return 50; +}; +var defaultKeyExtractor = function defaultKeyExtractor2(index) { + return index; +}; +var defaultMeasureSize = function defaultMeasureSize2(el, horizontal) { + var key2 = horizontal ? "offsetWidth" : "offsetHeight"; + return el[key2]; +}; +var defaultRangeExtractor = function defaultRangeExtractor2(range) { + var start = Math.max(range.start - range.overscan, 0); + var end = Math.min(range.end + range.overscan, range.size - 1); + var arr = []; + for (var _i = start; _i <= end; _i++) { + arr.push(_i); + } + return arr; +}; +var useVirtual = function useVirtual2(_ref) { + var _measurements; + var _ref$size = _ref.size, size = _ref$size === void 0 ? 0 : _ref$size, _ref$estimateSize = _ref.estimateSize, estimateSize = _ref$estimateSize === void 0 ? defaultEstimateSize : _ref$estimateSize, _ref$overscan = _ref.overscan, overscan = _ref$overscan === void 0 ? 1 : _ref$overscan, _ref$paddingStart = _ref.paddingStart, paddingStart = _ref$paddingStart === void 0 ? 0 : _ref$paddingStart, _ref$paddingEnd = _ref.paddingEnd, paddingEnd = _ref$paddingEnd === void 0 ? 0 : _ref$paddingEnd, parentRef = _ref.parentRef, _ref$horizontal = _ref.horizontal, horizontal = _ref$horizontal === void 0 ? false : _ref$horizontal, scrollToFn = _ref.scrollToFn, useObserver = _ref.useObserver, initialRect = _ref.initialRect, onScrollElement = _ref.onScrollElement, scrollOffsetFn = _ref.scrollOffsetFn, _ref$keyExtractor = _ref.keyExtractor, keyExtractor = _ref$keyExtractor === void 0 ? defaultKeyExtractor : _ref$keyExtractor, _ref$measureSize = _ref.measureSize, measureSize = _ref$measureSize === void 0 ? defaultMeasureSize : _ref$measureSize, _ref$rangeExtractor = _ref.rangeExtractor, rangeExtractor = _ref$rangeExtractor === void 0 ? defaultRangeExtractor : _ref$rangeExtractor; + var sizeKey = horizontal ? "width" : "height"; + var scrollKey = horizontal ? "scrollLeft" : "scrollTop"; + var latestRef = _2({ + outerSize: 0, + scrollOffset: 0, + measurements: [], + totalSize: 0 + }); + var _React$useState = p2(0), scrollOffset = _React$useState[0], setScrollOffset = _React$useState[1]; + latestRef.current.scrollOffset = scrollOffset; + var useMeasureParent = useObserver || useRect2; + var _useMeasureParent = useMeasureParent(parentRef, initialRect), outerSize = _useMeasureParent[sizeKey]; + latestRef.current.outerSize = outerSize; + var defaultScrollToFn = T2(function(offset) { + if (parentRef.current) { + parentRef.current[scrollKey] = offset; + } + }, [parentRef, scrollKey]); + var resolvedScrollToFn = scrollToFn || defaultScrollToFn; + var scrollTo = T2(function(offset) { + resolvedScrollToFn(offset, defaultScrollToFn); + }, [defaultScrollToFn, resolvedScrollToFn]); + var _React$useState2 = p2({}), measuredCache = _React$useState2[0], setMeasuredCache = _React$useState2[1]; + var measure = T2(function() { + return setMeasuredCache({}); + }, []); + var pendingMeasuredCacheIndexesRef = _2([]); + var measurements = F(function() { + var min3 = pendingMeasuredCacheIndexesRef.current.length > 0 ? Math.min.apply(Math, pendingMeasuredCacheIndexesRef.current) : 0; + pendingMeasuredCacheIndexesRef.current = []; + var measurements2 = latestRef.current.measurements.slice(0, min3); + for (var _i2 = min3; _i2 < size; _i2++) { + var key2 = keyExtractor(_i2); + var measuredSize = measuredCache[key2]; + var _start = measurements2[_i2 - 1] ? measurements2[_i2 - 1].end : paddingStart; + var _size = typeof measuredSize === "number" ? measuredSize : estimateSize(_i2); + var _end = _start + _size; + measurements2[_i2] = { + index: _i2, + start: _start, + size: _size, + end: _end, + key: key2 + }; + } + return measurements2; + }, [estimateSize, measuredCache, paddingStart, size, keyExtractor]); + var totalSize = (((_measurements = measurements[size - 1]) == null ? void 0 : _measurements.end) || paddingStart) + paddingEnd; + latestRef.current.measurements = measurements; + latestRef.current.totalSize = totalSize; + var element = onScrollElement ? onScrollElement.current : parentRef.current; + var scrollOffsetFnRef = _2(scrollOffsetFn); + scrollOffsetFnRef.current = scrollOffsetFn; + useIsomorphicLayoutEffect3(function() { + if (!element) { + setScrollOffset(0); + return; + } + var onScroll = function onScroll2(event) { + var offset = scrollOffsetFnRef.current ? scrollOffsetFnRef.current(event) : element[scrollKey]; + setScrollOffset(offset); + }; + onScroll(); + element.addEventListener("scroll", onScroll, { + capture: false, + passive: true + }); + return function() { + element.removeEventListener("scroll", onScroll); + }; + }, [element, scrollKey]); + var _calculateRange = calculateRange(latestRef.current), start = _calculateRange.start, end = _calculateRange.end; + var indexes = F(function() { + return rangeExtractor({ + start, + end, + overscan, + size: measurements.length + }); + }, [start, end, overscan, measurements.length, rangeExtractor]); + var measureSizeRef = _2(measureSize); + measureSizeRef.current = measureSize; + var virtualItems = F(function() { + var virtualItems2 = []; + var _loop = function _loop2(k6, len2) { + var i4 = indexes[k6]; + var measurement = measurements[i4]; + var item = _extends({}, measurement, { + measureRef: function measureRef(el) { + if (el) { + var measuredSize = measureSizeRef.current(el, horizontal); + if (measuredSize !== item.size) { + var _scrollOffset = latestRef.current.scrollOffset; + if (item.start < _scrollOffset) { + defaultScrollToFn(_scrollOffset + (measuredSize - item.size)); + } + pendingMeasuredCacheIndexesRef.current.push(i4); + setMeasuredCache(function(old) { + var _extends2; + return _extends({}, old, (_extends2 = {}, _extends2[item.key] = measuredSize, _extends2)); + }); + } + } + } + }); + virtualItems2.push(item); + }; + for (var k5 = 0, len = indexes.length; k5 < len; k5++) { + _loop(k5); + } + return virtualItems2; + }, [indexes, defaultScrollToFn, horizontal, measurements]); + var mountedRef = _2(false); + useIsomorphicLayoutEffect3(function() { + if (mountedRef.current) { + setMeasuredCache({}); + } + mountedRef.current = true; + }, [estimateSize]); + var scrollToOffset = T2(function(toOffset, _temp) { + var _ref2 = _temp === void 0 ? { + align: "start" + } : _temp, align = _ref2.align; + var _latestRef$current = latestRef.current, scrollOffset2 = _latestRef$current.scrollOffset, outerSize2 = _latestRef$current.outerSize; + if (align === "auto") { + if (toOffset <= scrollOffset2) { + align = "start"; + } else if (toOffset >= scrollOffset2 + outerSize2) { + align = "end"; + } else { + align = "start"; + } + } + if (align === "start") { + scrollTo(toOffset); + } else if (align === "end") { + scrollTo(toOffset - outerSize2); + } else if (align === "center") { + scrollTo(toOffset - outerSize2 / 2); + } + }, [scrollTo]); + var tryScrollToIndex = T2(function(index, _temp2) { + var _ref3 = _temp2 === void 0 ? { + align: "auto" + } : _temp2, align = _ref3.align, rest = _objectWithoutPropertiesLoose(_ref3, _excluded); + var _latestRef$current2 = latestRef.current, measurements2 = _latestRef$current2.measurements, scrollOffset2 = _latestRef$current2.scrollOffset, outerSize2 = _latestRef$current2.outerSize; + var measurement = measurements2[Math.max(0, Math.min(index, size - 1))]; + if (!measurement) { + return; + } + if (align === "auto") { + if (measurement.end >= scrollOffset2 + outerSize2) { + align = "end"; + } else if (measurement.start <= scrollOffset2) { + align = "start"; + } else { + return; + } + } + var toOffset = align === "center" ? measurement.start + measurement.size / 2 : align === "end" ? measurement.end : measurement.start; + scrollToOffset(toOffset, _extends({ + align + }, rest)); + }, [scrollToOffset, size]); + var scrollToIndex = T2(function(index, options) { + tryScrollToIndex(index, options); + requestAnimationFrame(function() { + tryScrollToIndex(index, options); + }); + }, [tryScrollToIndex]); + return { + virtualItems, + totalSize, + scrollToOffset, + scrollToIndex, + measure + }; +}; +var findNearestBinarySearch = function findNearestBinarySearch2(low, high, getCurrentValue, value) { + while (low <= high) { + var middle = (low + high) / 2 | 0; + var currentValue = getCurrentValue(middle); + if (currentValue < value) { + low = middle + 1; + } else if (currentValue > value) { + high = middle - 1; + } else { + return middle; + } + } + if (low > 0) { + return low - 1; + } else { + return 0; + } +}; +function calculateRange(_ref4) { + var measurements = _ref4.measurements, outerSize = _ref4.outerSize, scrollOffset = _ref4.scrollOffset; + var size = measurements.length - 1; + var getOffset = function getOffset2(index) { + return measurements[index].start; + }; + var start = findNearestBinarySearch(0, size, getOffset, scrollOffset); + var end = start; + while (end < size && measurements[end].end < scrollOffset + outerSize) { + end++; + } + return { + start, + end + }; +} + // src/components/Spaces/TreeView/FileExplorerVirtualized.tsx -var row = R( - ({ data, index, style }) => { - const { - flattenedItems, - projected, - handleCollapse, - plugin, - sections: sections2, - openFolders: openFolders2, - indentationWidth - } = data; - const f4 = flattenedItems[index]; - return /* @__PURE__ */ bn.createElement(SortableTreeItem, { - key: f4.id, - id: f4.id, - data: f4, - disabled: false, - depth: f4.depth, - childCount: 0, - indentationWidth, - indicator: (projected == null ? void 0 : projected.overId) == f4.id ? f4.parentId == null && projected.parentId == null ? { state: 1 /* Top */, depth: projected.depth } : { state: 2 /* Bottom */, depth: projected.depth } : null, - plugin, - style, - collapsed: f4.parentId == null ? f4.id == "/" ? plugin.settings.vaultCollapsed : sections2[f4.index].collapsed : !openFolders2.find((i4) => i4 == f4.id), - onCollapse: handleCollapse +var import_lodash4 = __toESM(require_lodash()); +var VirtualizedList = bn.memo( + (props2) => { + const { flattenedTree, projected, vRef, selectedFiles: selectedFiles2, activeFile: activeFile2, selectRange, handleCollapse, plugin, indentationWidth } = props2; + const parentRef = bn.useRef(null); + const rowHeight = (index) => platformIsMobile() ? flattenedTree[index].parentId == null ? 60 : 40 : flattenedTree[index].parentId == null ? 44 : 29; + const rowVirtualizer = useVirtual({ + size: flattenedTree.length, + paddingEnd: 24, + parentRef, + estimateSize: bn.useCallback((index) => rowHeight(index), [flattenedTree]), + overscan: plugin.settings.spacesPerformance ? 0 : 20 }); - }, - areEqual + vRef.current = rowVirtualizer; + rowVirtualizer.scrollToIndex; + return /* @__PURE__ */ bn.createElement("div", { + ref: parentRef, + style: { + width: `100%`, + height: `100%`, + overflow: "auto" + } + }, /* @__PURE__ */ bn.createElement("div", { + style: { + height: `${rowVirtualizer.totalSize}px`, + width: "100%", + position: "relative" + } + }, rowVirtualizer.virtualItems.map((virtualRow) => { + var _a2; + return /* @__PURE__ */ bn.createElement("div", { + key: virtualRow.index, + ref: virtualRow.measureRef, + style: { + position: "absolute", + top: 0, + left: 0, + width: "100%", + height: `${rowHeight(virtualRow.index)}px`, + transform: `translateY(${virtualRow.start}px)` + } + }, /* @__PURE__ */ bn.createElement(SortableTreeItem, { + key: flattenedTree[virtualRow.index].id, + id: flattenedTree[virtualRow.index].id, + data: flattenedTree[virtualRow.index], + disabled: false, + depth: flattenedTree[virtualRow.index].depth, + childCount: 0, + indentationWidth, + indicator: (projected == null ? void 0 : projected.overId) == flattenedTree[virtualRow.index].id ? flattenedTree[virtualRow.index].parentId == null && projected.parentId == null ? { state: 1 /* Top */, depth: projected.depth } : { state: 2 /* Bottom */, depth: projected.depth } : null, + plugin, + style: {}, + onSelectRange: selectRange, + active: activeFile2 == ((_a2 = flattenedTree[virtualRow.index].item) == null ? void 0 : _a2.path), + selected: selectedFiles2.some((g4) => g4.id == flattenedTree[virtualRow.index].id), + collapsed: flattenedTree[virtualRow.index].collapsed, + onCollapse: handleCollapse + })); + }))); + } ); -var FileExplorerComponent = (props) => { - const { plugin } = props; +var FileExplorerComponent = (props2) => { + const { plugin } = props2; const indentationWidth = 24; const isMobile = platformIsMobile(); - const [vaultCollapsed, setVaultCollapsed] = p2( - plugin.settings.vaultCollapsed - ); - const [openFolders2, setOpenFolders] = Recoil_index_14(openFolders); - const [fileIcons2, setFileIcons] = Recoil_index_14(fileIcons); - const [focusedFolder2, setFocusedFolder] = Recoil_index_14( - focusedFolder - ); + const [vaultItems, setVaultItems] = p2({}); + const [expandedFolders2, setExpandedFolders] = p2(plugin.settings.expandedFolders); + const [expandedSpaces, setExpandedSpaces] = p2(plugin.settings.expandedSpaces); const [activeFile2, setActiveFile] = Recoil_index_14(activeFile); - const [sections2, setSections] = Recoil_index_14(sections); - const [_folderTree, setFolderTree] = Recoil_index_14(folderTree); - const [selectedFiles, setSelectedFiles] = p2([]); + const [spaces2, setSpaces] = Recoil_index_14(spaces); + const [vaultSort, setVaultSort] = p2(plugin.settings.vaultSort.length == 2 ? plugin.settings.vaultSort : ["rank", true]); + const [selectedFiles2, setSelectedFiles] = Recoil_index_14(selectedFiles); + const nextTreeScrollPath = _2(null); + const activeSpaces = F(() => props2.activeSpace ? spaces2.filter((f4) => f4.name == props2.activeSpace) : spaces2.filter((f4) => f4.pinned != "true"), [spaces2, props2.activeSpace]); const [offsetLeft, setOffsetLeft] = p2(0); - const listRef = _2(); + const listRef = _2(null); const forceUpdate = useForceUpdate(); - const loadFolderTree = async (folder) => { - setFolderTree(await sortFolderTree(folder, plugin)); + const treeForSpace = (space) => { + var _a2, _b2; + let tree = []; + const spaceCollapsed = !expandedSpaces.includes(space.name); + const spaceSort = (_a2 = safelyParseJSON(space.sort)) != null ? _a2 : ["rank", true]; + tree.push(spaceItemToTreeNode(space, spaceCollapsed, spaceSort)); + if (!spaceCollapsed) + ((_b2 = vaultItems[space.name + "/"]) != null ? _b2 : []).sort(folderSortFn(spaceSort[0], spaceSort[1])).forEach((item) => { + var _a3, _b3; + const itemCollapsed = !((_a3 = expandedFolders2[space.name]) == null ? void 0 : _a3.includes(item.path)); + tree.push(vaulItemToTreeNode(item, space.name, "", 1, 0, itemCollapsed, spaceSort[0] == "rank" || spaceSort[0] == "")); + if (!itemCollapsed) + tree.push(...flattenedTreeFromVaultItems(item.path, space.name, vaultItems, (_b3 = expandedFolders2[space.name]) != null ? _b3 : [], 2, spaceSort[0], spaceSort[1])); + }); + return tree; }; + const flattenedTree = F(() => { + var _a2; + console.time("flatten tree"); + let tree = []; + activeSpaces.forEach((space) => { + tree.push(...treeForSpace(space)); + }); + if (!props2.activeSpace) { + const vaultCollapsed = !expandedSpaces.includes("/"); + tree.push({ id: "/", parentId: null, depth: 0, index: 0, space: "/", item: null, collapsed: vaultCollapsed, sortable: vaultSort[0] == "rank" }); + if (!vaultCollapsed) + tree.push(...flattenedTreeFromVaultItems("/", "/", vaultItems, (_a2 = expandedFolders2["/"]) != null ? _a2 : [], 1, vaultSort[0], vaultSort[1])); + } + if (nextTreeScrollPath.current) { + const index = tree.findIndex((f4) => { + var _a3; + return ((_a3 = f4.item) == null ? void 0 : _a3.path) == nextTreeScrollPath.current; + }); + if (index != -1) { + listRef.current.scrollToIndex(index); + nextTreeScrollPath.current = null; + } + } + console.timeEnd("flatten tree"); + return tree; + ; + }, [vaultItems, activeSpaces, expandedSpaces, expandedFolders2, vaultSort, props2.activeSpace]); h2(() => { - window.addEventListener(eventTypes.vaultChange, vaultChangeEvent); window.addEventListener(eventTypes.activeFileChange, changeActiveFile); + return () => { + window.removeEventListener(eventTypes.activeFileChange, changeActiveFile); + }; + }, [activeFile2]); + h2(() => { + window.addEventListener(eventTypes.spacesChange, spaceChangeEvent); window.addEventListener(eventTypes.refreshView, forceUpdate); window.addEventListener(eventTypes.settingsChanged, settingsChanged); window.addEventListener(eventTypes.revealFile, handleRevealFileEvent); return () => { - window.removeEventListener(eventTypes.vaultChange, vaultChangeEvent); - window.removeEventListener(eventTypes.activeFileChange, changeActiveFile); + window.removeEventListener(eventTypes.spacesChange, spaceChangeEvent); window.removeEventListener(eventTypes.refreshView, forceUpdate); window.removeEventListener(eventTypes.settingsChanged, settingsChanged); window.removeEventListener(eventTypes.revealFile, handleRevealFileEvent); }; }, []); const handleRevealFileEvent = (evt) => { + var _a2; if (evt.detail) { - setSelectedFiles([evt.detail.file]); const folders = evt.detail.file.path.split("/"); - const openPaths = folders.reduce((p3, c4) => [...p3, `${p3}/${c4}`], ["/"]).slice(0, -1); + const openPaths = folders.reduce((p3, c4, index) => [...p3, index == 0 ? c4 : `${p3[index]}/${c4}`], ["/"]).slice(0, -1); const newOpenFolders = [ - ...openFolders2.filter((f4) => !openPaths.find((g4) => g4 == f4)), + ...(_a2 = expandedFolders2["/"]) == null ? void 0 : _a2.filter((f4) => !openPaths.find((g4) => g4 == f4)), ...openPaths ]; - plugin.settings.openFolders = newOpenFolders; + plugin.settings.expandedFolders = { + ...expandedFolders2, + "/": newOpenFolders + }; + nextTreeScrollPath.current = evt.detail.file.path; plugin.saveSettings(); } }; - const vaultChangeEvent = (evt) => { - if (evt.detail) { - handleVaultChanges( - evt.detail.file, - evt.detail.changeType, - evt.detail.oldPath - ); - } - const loadFolderTree2 = async () => { - setFolderTree( - await sortFolderTree(plugin.app.vault.getRoot(), plugin) - ); - }; - cleanData(); - plugin.saveSettings(); - loadFolderTree2(); + h2(() => { + const spaceItems = retrieveSpaceItems(plugin, spaces2); + setVaultItems((g4) => ({ ...g4, ...Object.keys(spaceItems).reduce((p3, c4) => ({ + ...p3, + [c4 + "/"]: spaceItems[c4].map((f4) => { + var _a2; + return { + ...(_a2 = vaultItemForPath(plugin, f4.path)) != null ? _a2 : {}, + ...f4 + }; + }) + }), {}) })); + }, [spaces2]); + const retrieveData = async (folders) => { + setSpaces(retrieveSpaces(plugin)); + retrieveFolders(plugin, folders).then((f4) => setVaultItems((g4) => ({ ...g4, ...f4 }))); + }; + const flatFolders = F(() => { + let allFolders = []; + if (expandedSpaces.includes("/")) + allFolders.push("/"); + expandedSpaces.forEach((space) => { + var _a2; + allFolders.push(...(_a2 = expandedFolders2[space]) != null ? _a2 : []); + }); + return allFolders; + }, [expandedSpaces, expandedFolders2]); + h2(() => { + const newFolders = flatFolders.filter((f4) => !Object.keys(vaultItems).some((g4) => g4 == f4)); + retrieveData(newFolders); + }, [flatFolders]); + const refreshVault = T2((0, import_lodash4.debounce)(() => retrieveData(flatFolders), 100, { leading: true, trailing: true }), []); + const spaceChangeEvent = (evt) => { + if (evt.detail.changeType == "vault" || evt.detail.changeType == "space") + refreshVault(); }; const changeActiveFile = (evt) => { let filePath = evt.detail.filePath; setActiveFile(filePath); }; - function handleVaultChanges(file, changeType, oldPathBeforeRename) { - if (changeType == "rename") { - renamePathInStringTree(oldPathBeforeRename, file, plugin); - } - if (changeType == "delete") { - } - } const settingsChanged = () => { - setSections(plugin.settings.spaces); - setOpenFolders(plugin.settings.openFolders); - setFileIcons(plugin.settings.fileIcons); - setVaultCollapsed(plugin.settings.vaultCollapsed); + setVaultSort(plugin.settings.vaultSort); + setExpandedFolders(plugin.settings.expandedFolders); + setExpandedSpaces(plugin.settings.expandedSpaces); }; h2(() => { - setInitialFocusedFolder(); settingsChanged(); }, []); - const cleanData = () => { - const cleanedSections = plugin.settings.spaces.map((f4) => { - return { - ...f4, - children: f4.children.filter( - (f5) => plugin.app.vault.getAbstractFileByPath(f5) - ) - }; - }); - const cleanedCollapse = plugin.settings.openFolders; - const cleanedFileIcons = plugin.settings.fileIcons.filter( - (f4) => plugin.app.vault.getAbstractFileByPath(f4[0]) - ); - plugin.settings.spaces = cleanedSections; - plugin.settings.openFolders = cleanedCollapse; - plugin.settings.fileIcons = cleanedFileIcons; - }; - const setInitialFocusedFolder = () => { - cleanData(); - loadFolderTree(plugin.app.vault.getRoot()); - setFocusedFolder(plugin.app.vault.getRoot()); - }; - const sensors = useSensors( - useSensor(MouseSensor, { - activationConstraint: { - distance: 10 - } - }), - useSensor(TouchSensor, { - activationConstraint: { - delay: 250, - tolerance: 5 - } - }) - ); - const measuring = { - droppable: { - strategy: MeasuringStrategy.Always - } - }; const [activeId, setActiveId] = p2(null); const [overId, setOverId] = p2(null); const [currentPosition, setCurrentPosition] = p2(null); - const flattenSectionTree = (sectionTrees) => { - const getChildren = (section, paths, sectionIndex) => { - return flattenTrees( - paths.map((f4) => plugin.app.vault.getAbstractFileByPath(f4)).filter((f4) => f4 != null), - "/" + section + "/", - sectionIndex, - section, - 1 - ); - }; - return sectionTrees.reduce((p3, c4, i4) => { - return [ - ...p3, - { - id: c4.section, - parentId: null, - name: c4.section, - depth: 0, - index: i4, - section: i4, - isFolder: true - }, - ...!c4.collapsed ? getChildren(c4.section, c4.children, i4) : [] - ]; - }, []); - }; - const flattenedItems = F(() => { - const flattenedTree = [ - ...flattenSectionTree(sections2), - ..._folderTree ? flattenTree(_folderTree, "/", -1, vaultCollapsed) : [] - ]; - return includeChildrenOf(flattenedTree, openFolders2); - }, [_folderTree, openFolders2, sections2, vaultCollapsed]); + h2(() => { + if (!expandedSpaces.includes(props2.activeSpace)) { + plugin.settings.expandedSpaces = uniq([...plugin.settings.expandedSpaces, props2.activeSpace]); + plugin.saveSettings(); + } + }, [props2.activeSpace]); const sortedIds = F( - () => flattenedItems.map(({ id: id2 }) => id2), - [flattenedItems] + () => flattenedTree.map(({ id: id2 }) => id2), + [flattenedTree] ); - const activeItem = activeId ? flattenedItems.find(({ id: id2 }) => id2 === activeId) : null; - const overIndex = overId ? flattenedItems.findIndex(({ id: id2 }) => id2 === overId) : null; - const overItem = flattenedItems[overIndex]; - const nextItem = flattenedItems[overIndex + 1]; + const selectRange = (fromId) => { + const startIndex = sortedIds.findIndex((f4) => f4 == fromId); + const selectedFilesStartIndex = sortedIds.findIndex((f4) => f4 == selectedFiles2[0].id); + const selectedFilesEndIndex = sortedIds.findIndex((f4) => f4 == selectedFiles2[selectedFiles2.length - 1].id); + if (startIndex < selectedFilesStartIndex) { + setSelectedFiles(flattenedTree.slice(startIndex, selectedFilesEndIndex + 1).filter((f4) => f4.item)); + } else { + setSelectedFiles(flattenedTree.slice(selectedFilesStartIndex, startIndex + 1).filter((f4) => f4.item)); + } + }; + const activeItem = activeId ? flattenedTree.find(({ id: id2 }) => id2 === activeId) : null; + const overIndex = overId ? flattenedTree.findIndex(({ id: id2 }) => id2 === overId) : null; + const overItem = flattenedTree[overIndex]; + const nextItem = flattenedTree[overIndex + 1]; const dragDepth = F(() => { return getDragDepth(offsetLeft, indentationWidth); }, [offsetLeft]); const projected = F(() => { return activeId && overId ? getProjection( - flattenedItems, + flattenedTree, activeItem, overIndex, overItem, nextItem, dragDepth ) : null; - }, [flattenedItems, activeItem, overItem, nextItem, overIndex, dragDepth]); + }, [flattenedTree, activeItem, overItem, nextItem, overIndex, dragDepth]); function handleDragStart(event) { const { active: { id: activeId2 } } = event; - const activeItem2 = flattenedItems.find(({ id: id2 }) => id2 === activeId2); - if (activeItem2.parentId == null && activeItem2.section == -1) + const activeItem2 = flattenedTree.find(({ id: id2 }) => id2 === activeId2); + if (activeItem2.parentId == null && activeItem2.space == "/") return; - if (plugin.settings.vaultSort.length > 0) { - return; - } setActiveId(activeId2); setOverId(activeId2); if (activeItem2) { @@ -45352,91 +47413,49 @@ var FileExplorerComponent = (props) => { moveFile(active, over); } const moveFile = async (active, over) => { + var _a2, _b2; if (projected) { - const clonedItems = [ - ...flattenSectionTree(sections2), - ..._folderTree ? flattenTree(_folderTree, "/", -1, false) : [] - ]; + const clonedItems = flattenedTree; const overIndex2 = clonedItems.findIndex(({ id: id2 }) => id2 === over.id); const overItem2 = clonedItems[overIndex2]; const activeIndex = clonedItems.findIndex(({ id: id2 }) => id2 === active.id); const activeTreeItem = clonedItems[activeIndex]; const activeIsSection = activeTreeItem.parentId == null; const overIsSection = overItem2.parentId == null; + const overSpace = activeSpaces.find((f4) => f4.name == overItem2.space); if (activeIsSection) { if (overIsSection) { - const newSections = overItem2.section == -1 ? arrayMove(sections2, activeTreeItem.index, sections2.length - 1) : overItem2.index > activeIndex ? arrayMove(sections2, activeTreeItem.index, overItem2.index - 1) : arrayMove(sections2, activeTreeItem.index, overItem2.index); - plugin.settings.spaces = newSections; - plugin.saveSettings(); + insertSpaceAtIndex(plugin, activeTreeItem.space, false, overSpace ? parseInt(overSpace.rank) : spaces2.length); return; } } const { depth, overId: overId2, parentId } = projected; const parentItem = clonedItems.find(({ id: id2 }) => id2 === parentId); - if (overItem2.section != activeItem.section || overItem2.section != -1) { - if (overItem2.section == -1) { + if (overItem2.space != activeItem.space || overItem2.space != "/") { + if (overItem2.space == "/") { return; } - if (parentId != sections2[overItem2.section].section && parentId != null) { + if (parentId != overItem2.space + "//" && parentId != null) { return; } - const newSections = sections2.map((s5, k5) => { - if (k5 == overItem2.section) { - const index = sections2[overItem2.section].children.findIndex( - (f4) => f4 == overItem2.path - ) + 1; - const activeIndex2 = s5.children.findIndex( - (g4) => g4 == activeItem.path - ); - const children = s5.children.filter((g4) => g4 != activeItem.path); - const toIndex = activeIndex2 <= index && activeIndex2 != -1 ? index - 1 : index; - if (activeIndex2 == -1) { - new import_obsidian20.Notice(i18n_default.notice.addedToSection); - } - return { - ...s5, - children: [ - ...children.slice(0, toIndex), - activeItem.path, - ...children.slice(toIndex) - ] - }; - } - return s5; - }); - plugin.settings.spaces = newSections; - plugin.saveSettings(); - return; - } - if (plugin.settings.vaultSort.length > 0) { + if (activeItem.space != overItem2.space && ((_a2 = overSpace == null ? void 0 : overSpace.def) == null ? void 0 : _a2.length) > 0) { + moveAFileToNewParentAtIndex(plugin, activeTreeItem.item, overSpace.def, vaultItems, parseInt(overItem2.item.rank)); + } else { + insertSpaceItemAtIndex(plugin, overItem2.space, activeItem.item.path, parseInt((_b2 = overItem2.item) == null ? void 0 : _b2.rank)); + } return; } if (parentId != activeTreeItem.parentId) { - const newPath = `${parentItem.isFolder ? parentItem.path : parentItem.parent.path}/${activeItem.name}`; + const newParent = parentItem ? parentItem.item.folder == "true" ? parentItem.item.path : parentItem.item.parent : "/"; + const newPath = newParent == "/" ? activeItem.file.name : `${newParent}/${activeItem.file.name}`; if (plugin.app.vault.getAbstractFileByPath(newPath)) { - new import_obsidian20.Notice(i18n_default.notice.duplicateFile); + new import_obsidian27.Notice(i18n_default.notice.duplicateFile); return; } - await props.plugin.app.vault.rename(activeTreeItem, newPath); - clonedItems[activeIndex] = { - ...activeTreeItem, - depth, - parentId, - ...plugin.app.vault.getAbstractFileByPath(newPath) - }; + moveAFileToNewParentAtIndex(plugin, activeTreeItem.item, newParent, vaultItems, parseInt(overItem2.item.rank)); } else { - clonedItems[activeIndex] = { - ...activeTreeItem, - depth, - parentId - }; + updateFileRank(plugin, activeTreeItem.item, vaultItems, parseInt(overItem2.item.rank)); } - const sortedItems = overIndex2 > activeIndex ? arrayMove(clonedItems, activeIndex, overIndex2) : overIndex2 < activeIndex ? arrayMove(clonedItems, activeIndex, overIndex2 + 1) : clonedItems; - const newItems = buildTree(sortedItems); - const newFolderRank = folderTreeToStringTree(newItems); - plugin.settings.folderRank = newFolderRank; - await plugin.saveSettings(); - loadFolderTree(plugin.app.vault.getRoot()); } }; const adjustTranslate = ({ transform }) => { @@ -45451,27 +47470,27 @@ var FileExplorerComponent = (props) => { } const handleCollapse = T2( (folder) => { + var _a2; if (folder.parentId == null) { - if (folder.id == "/") { - plugin.settings.vaultCollapsed = !plugin.settings.vaultCollapsed; - plugin.saveSettings(); - return; - } - const newSections = sections2.map((s5, i4) => { - return i4 == folder.index ? { ...s5, collapsed: !s5.collapsed } : s5; - }); - plugin.settings.spaces = newSections; + if (plugin.settings.expandedSpaces.includes(folder.space)) + plugin.settings.expandedSpaces = plugin.settings.expandedSpaces.filter((f4) => f4 != folder.space); + else + plugin.settings.expandedSpaces = [...plugin.settings.expandedSpaces, folder.space]; plugin.saveSettings(); } else { - const folderOpen = openFolders2.find((f4) => f4 == folder.id); - const newOpenFolders = !folderOpen ? [...openFolders2, folder.id] : openFolders2.filter( - (openFolder) => folder.id !== openFolder + const openFolders = (_a2 = expandedFolders2[folder.space]) != null ? _a2 : []; + const folderOpen = openFolders == null ? void 0 : openFolders.includes(folder.item.path); + const newOpenFolders = !folderOpen ? [...openFolders, folder.item.path] : openFolders.filter( + (openFolder) => folder.item.path !== openFolder ); - plugin.settings.openFolders = newOpenFolders; + plugin.settings.expandedFolders = { + ...expandedFolders2, + [folder.space]: newOpenFolders + }; plugin.saveSettings(); } }, - [plugin, openFolders2, sections2] + [plugin, expandedFolders2, expandedSpaces] ); function resetState() { setOverId(null); @@ -45479,83 +47498,60 @@ var FileExplorerComponent = (props) => { setOffsetLeft(0); document.body.style.setProperty("cursor", ""); } - const itemData = F(() => { - if (listRef == null ? void 0 : listRef.current) - listRef.current.resetAfterIndex(0); - return { - flattenedItems, - projected, - handleCollapse, - plugin, - sections: sections2, - openFolders: openFolders2, - indentationWidth - }; - }, [ - flattenedItems, - projected, - handleCollapse, - plugin, - sections2, - openFolders2, - indentationWidth - ]); - const rowHeight = (index) => isMobile ? flattenedItems[index].parentId == null ? 60 : 40 : flattenedItems[index].parentId == null ? 44 : 29; - return /* @__PURE__ */ bn.createElement("div", { - className: "mk-file-tree" - }, /* @__PURE__ */ bn.createElement(DndContext, { - sensors, - collisionDetection: closestCenter, - measuring, + useDndMonitor({ onDragStart: handleDragStart, onDragMove: handleDragMove, onDragOver: handleDragOver, onDragEnd: handleDragEnd, onDragCancel: handleDragCancel + }); + return /* @__PURE__ */ bn.createElement("div", { + className: "mk-file-tree" }, /* @__PURE__ */ bn.createElement(SortableContext, { items: sortedIds, strategy: verticalListSortingStrategy - }, /* @__PURE__ */ bn.createElement(AutoSizer, null, ({ height, width }) => /* @__PURE__ */ bn.createElement(VariableSizeList, { - ref: listRef, - height, - itemSize: rowHeight, - itemCount: itemData.flattenedItems.length, - itemData, - width, - overscanCount: plugin.settings.spacesPerformance ? 0 : 20 - }, row)), j3( + }, /* @__PURE__ */ bn.createElement(VirtualizedList, { + vRef: listRef, + flattenedTree, + projected, + handleCollapse, + activeFile: activeFile2, + plugin, + selectedFiles: selectedFiles2, + selectRange, + indentationWidth + }), j3( /* @__PURE__ */ bn.createElement(DragOverlay, { dropAnimation: null, modifiers: [adjustTranslate], zIndex: 1600 }, activeId ? /* @__PURE__ */ bn.createElement(SortableTreeItem, { id: activeId, - data: flattenedItems.find((f4) => f4.id == activeId), + data: flattenedTree.find((f4) => f4.id == activeId), indicator: null, depth: 0, disabled: false, plugin, + selected: false, + active: false, clone: true, childCount: 0, style: {}, indentationWidth }) : null), document.body - )))); + ))); }; // src/components/Spaces/TagContextList/TagContextList.tsx -init_compat_module(); -var TagContextList = (props) => { +var TagContextList = (props2) => { const [tags, setTags] = p2([]); const openContext = async (tag) => { - let leaf = app.workspace.getLeaf(false); - app.workspace.setActiveLeaf(leaf, { focus: true }); - await leaf.setViewState({ type: CONTEXT_VIEW_TYPE, state: { type: "tag", tag } }); - await app.workspace.requestSaveLayout(); + openTag(tag, app, false); }; h2(() => { - loadTags().then((f4) => setTags(f4)); + const f4 = loadTags(props2.plugin); + setTags(f4); }, []); return /* @__PURE__ */ bn.createElement("div", { className: "tag-container" @@ -45568,14 +47564,14 @@ var TagContextList = (props) => { }; // src/components/Spaces/NewNote.tsx -init_compat_module(); -var NewNotes = (props) => { - const [focusedFolder2, setFocusedFolder] = Recoil_index_14( - focusedFolder +var NewNotes = (props2) => { + const [activeFile2, setActiveFile] = Recoil_index_14( + activeFile ); - const { plugin } = props; + const folder = defaultNoteFolder(props2.plugin, activeFile2); + const { plugin } = props2; const newFile = async () => { - await createNewMarkdownFile2(props.plugin.app, focusedFolder2, "", ""); + await createNewMarkdownFile(props2.plugin.app, folder, "", ""); }; return /* @__PURE__ */ bn.createElement("div", { className: "mk-flow-bar" @@ -45585,40 +47581,129 @@ var NewNotes = (props) => { onClick: () => newFile() }, /* @__PURE__ */ bn.createElement("div", { dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-new-note"] } - }), /* @__PURE__ */ bn.createElement("p", null, i18n_default.buttons.newNote))); + }), /* @__PURE__ */ bn.createElement("p", null, i18n_default.buttons.newNote)), /* @__PURE__ */ bn.createElement("button", { + "aria-label": "Blink", + className: "mk-button-blink", + onClick: () => props2.plugin.quickOpen() + }, /* @__PURE__ */ bn.createElement("div", { + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-blink"] } + }))); }; -// src/components/Spaces/MainList.tsx -var import_classnames5 = __toESM(require_classnames()); -var MainList = (props) => { +// src/components/Spaces/SpaceSwitcher/SpaceSwitcher.tsx +var import_classnames6 = __toESM(require_classnames()); +var SpaceSwitcher = (props2) => { const [activeView2, setActiveView] = Recoil_index_14(activeView); - return /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", { + const [spaces2, setSpaces] = Recoil_index_14(spaces); + const pinnedSpaces = F(() => spaces2.filter((f4) => f4.pinned == "true"), [spaces2]); + const [activeViewSpace2, setActiveViewSpace] = Recoil_index_14(activeViewSpace); + const newSection = () => { + let vaultChangeModal = new SectionChangeModal(props2.plugin, "", "create"); + vaultChangeModal.open(); + }; + return /* @__PURE__ */ bn.createElement("div", { className: "mk-sidebar-switcher" }, /* @__PURE__ */ bn.createElement("div", { - className: (0, import_classnames5.default)("mk-sidebar-item", activeView2 == 0 && "mk-sidebar-item-active"), - onClick: () => setActiveView(0) - }, "Spaces"), /* @__PURE__ */ bn.createElement("div", { - className: (0, import_classnames5.default)("mk-sidebar-item", activeView2 == 1 && "mk-sidebar-item-active"), - onClick: () => setActiveView(1) - }, "Context")), activeView2 == 0 ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement(NewNotes, { - plugin: props.plugin - }), /* @__PURE__ */ bn.createElement(FileExplorerComponent, { - plugin: props.plugin - })) : /* @__PURE__ */ bn.createElement(TagContextList, null)); + className: (0, import_classnames6.default)("mk-sidebar-item", pinnedSpaces.length == 0 && "mk-sidebar-expanded", activeView2 == "root" && "mk-sidebar-item-active"), + onClick: () => setActiveView("root") + }, /* @__PURE__ */ bn.createElement("div", { + className: "mk-icon-small", + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-spaces"] } + }, " "), pinnedSpaces.length == 0 && /* @__PURE__ */ bn.createElement("div", null, "Spaces")), /* @__PURE__ */ bn.createElement("div", { + className: (0, import_classnames6.default)("mk-sidebar-item", pinnedSpaces.length == 0 && "mk-sidebar-expanded", activeView2 == "tags" && "mk-sidebar-item-active"), + onClick: () => setActiveView("tags") + }, /* @__PURE__ */ bn.createElement("div", { + className: "mk-icon-small", + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-tags"] } + }, " "), " ", pinnedSpaces.length == 0 && /* @__PURE__ */ bn.createElement("div", null, "Contexts")), /* @__PURE__ */ bn.createElement("div", { + className: "mk-sidebar-spaces" + }, pinnedSpaces.map((pin) => { + var _a2; + return /* @__PURE__ */ bn.createElement("div", { + onContextMenu: (e4) => triggerSectionMenu(props2.plugin, pin.name, spaces2, e4), + className: (0, import_classnames6.default)("mk-sidebar-item mk-sidebar-space", activeView2 == "space" && activeViewSpace2 == pin.name && "mk-sidebar-item-active"), + onClick: () => (setActiveView("space"), setActiveViewSpace(pin.name)), + dangerouslySetInnerHTML: ((_a2 = pin.sticker) == null ? void 0 : _a2.length) > 0 ? { __html: unifiedToNative(pin.sticker) } : null + }, pin.name.substring(0, 1)); + })), /* @__PURE__ */ bn.createElement("div", { + className: (0, import_classnames6.default)("mk-sidebar-item"), + onClick: () => newSection() + }, /* @__PURE__ */ bn.createElement("div", { + className: "mk-icon-small", + dangerouslySetInnerHTML: { __html: uiIconSet["mk-ui-new-space"] } + }, " "))); +}; + +// src/components/Spaces/MainList.tsx +var MainList = (props2) => { + const [activeView2, setActiveView] = Recoil_index_14(activeView); + const [spaces2, setSpaces] = Recoil_index_14(spaces); + const [activeViewSpace2, setActiveViewSpace] = Recoil_index_14(activeViewSpace); + h2(() => { + if (activeView2 == "space" && !spaces2.some((f4) => f4.name == activeViewSpace2 && f4.pinned == "true")) { + setActiveView("root"); + } + }, [spaces2]); + const sensors = useSensors( + useSensor(MouseSensor, { + activationConstraint: { + distance: 10 + } + }), + useSensor(TouchSensor, { + activationConstraint: { + delay: 0, + tolerance: 5 + } + }) + ); + const measuring = { + droppable: { + strategy: MeasuringStrategy.Always + } + }; + const viewForState = (viewType, space) => { + if (viewType == "root") { + return /* @__PURE__ */ bn.createElement(FileExplorerComponent, { + plugin: props2.plugin + }); + } else if (viewType == "tags") { + return /* @__PURE__ */ bn.createElement(TagContextList, { + plugin: props2.plugin + }); + } else if (viewType == "space") { + return /* @__PURE__ */ bn.createElement(FileExplorerComponent, { + plugin: props2.plugin, + activeSpace: space + }); + } + return /* @__PURE__ */ bn.createElement(FileExplorerComponent, { + plugin: props2.plugin + }); + }; + return /* @__PURE__ */ bn.createElement(DndContext, { + sensors, + collisionDetection: closestCenter, + measuring + }, /* @__PURE__ */ bn.createElement(NewNotes, { + plugin: props2.plugin + }), /* @__PURE__ */ bn.createElement(SpaceSwitcher, { + plugin: props2.plugin + }), viewForState(activeView2, activeViewSpace2)); }; // src/components/Spaces/FileTreeView.tsx var FILE_TREE_VIEW_TYPE = "mk-file-view"; var VIEW_DISPLAY_TEXT = "Spaces"; var ICON = "layout-grid"; -var FileTreeView = class extends import_obsidian21.ItemView { +var FileTreeView = class extends import_obsidian28.ItemView { constructor(leaf, plugin) { super(leaf); this.navigation = false; this.plugin = plugin; } revealInFolder(file) { - if (file instanceof import_obsidian21.TFolder) { + if (file instanceof import_obsidian28.TFolder) { this.plugin.app.workspace.activeLeaf.setViewState({ type: CONTEXT_VIEW_TYPE, state: { type: "folder", folder: file.path } @@ -45672,10 +47757,10 @@ var FileTreeView = class extends import_obsidian21.ItemView { }; // src/settings.ts -var import_obsidian22 = require("obsidian"); +var import_obsidian29 = require("obsidian"); var DEFAULT_SETTINGS = { filePreviewOnHover: false, - markSans: true, + markSans: false, makeMenuPlaceholder: true, mobileMakeBar: true, inlineStyler: true, @@ -45686,8 +47771,11 @@ var DEFAULT_SETTINGS = { spacesPerformance: false, spacesStickers: true, spacesDisablePatch: false, - sidebarTabs: false, + sidebarTabs: true, + showRibbon: true, deleteFileOption: "trash", + expandedFolders: {}, + expandedSpaces: [], folderRank: { node: "root", children: [], @@ -45696,16 +47784,19 @@ var DEFAULT_SETTINGS = { openFolders: [], fileIcons: [], spaces: [], - vaultCollapsed: false, + pinnedSpaces: [], menuTriggerChar: "/", emojiTriggerChar: ":", folderContextFile: "context", tagContextFolder: "Context/", hiddenFiles: [], hiddenExtensions: ["mdb"], - vaultSort: [] + vaultSort: ["rank", true], + newFileLocation: "root", + newFileFolderPath: "", + dbDebug: true }; -var MakeMDPluginSettingsTab = class extends import_obsidian22.PluginSettingTab { +var MakeMDPluginSettingsTab = class extends import_obsidian29.PluginSettingTab { constructor(app2, plugin) { super(app2, plugin); this.plugin = plugin; @@ -45717,8 +47808,23 @@ var MakeMDPluginSettingsTab = class extends import_obsidian22.PluginSettingTab { display() { let { containerEl } = this; containerEl.empty(); + containerEl.createEl("h2", { text: "Appearance" }); + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.sidebarTabs.name).setDesc(i18n_default.settings.sidebarTabs.desc).addToggle( + (toggle) => toggle.setValue(this.plugin.settings.sidebarTabs).onChange((value) => { + this.plugin.settings.sidebarTabs = value; + this.plugin.saveSettings(); + document.body.classList.toggle("mk-hide-tabs", !value); + }) + ); + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.hideRibbon.name).setDesc(i18n_default.settings.hideRibbon.desc).addToggle( + (toggle) => toggle.setValue(this.plugin.settings.showRibbon).onChange((value) => { + this.plugin.settings.showRibbon = value; + this.plugin.saveSettings(); + document.body.classList.toggle("mk-hide-ribbon", !value); + }) + ); containerEl.createEl("h2", { text: i18n_default.settings.sectionSidebar }); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.spaces.name).setDesc(i18n_default.settings.spaces.desc).addToggle( + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.spaces.name).setDesc(i18n_default.settings.spaces.desc).addToggle( (toggle) => toggle.setValue(this.plugin.settings.spacesEnabled).onChange((value) => { this.plugin.settings.spacesEnabled = value; this.plugin.saveSettings(); @@ -45730,7 +47836,7 @@ var MakeMDPluginSettingsTab = class extends import_obsidian22.PluginSettingTab { this.refreshView(); }) ); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.spacesStickers.name).setDesc(i18n_default.settings.spacesStickers.desc).addToggle( + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.spacesStickers.name).setDesc(i18n_default.settings.spacesStickers.desc).addToggle( (toggle) => toggle.setValue(this.plugin.settings.spacesStickers).onChange((value) => { this.plugin.settings.spacesStickers = value; this.plugin.saveSettings(); @@ -45738,14 +47844,14 @@ var MakeMDPluginSettingsTab = class extends import_obsidian22.PluginSettingTab { }) ); containerEl.createEl("h2", { text: i18n_default.settings.sectionFlow }); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.editorFlowReplace.name).setDesc(i18n_default.settings.editorFlowReplace.desc).addToggle( + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.editorFlowReplace.name).setDesc(i18n_default.settings.editorFlowReplace.desc).addToggle( (toggle) => toggle.setValue(this.plugin.settings.editorFlow).onChange((value) => { this.plugin.settings.editorFlow = value; this.plugin.saveSettings(); this.refreshView(); }) ); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.editorFlowStyle.name).setDesc(i18n_default.settings.editorFlowStyle.desc).addDropdown((dropdown) => { + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.editorFlowStyle.name).setDesc(i18n_default.settings.editorFlowStyle.desc).addDropdown((dropdown) => { dropdown.addOption("classic", i18n_default.settings.editorFlowStyle.classic); dropdown.addOption("seamless", i18n_default.settings.editorFlowStyle.seamless); dropdown.setValue(this.plugin.settings.editorFlowStyle).onChange(async (value) => { @@ -45759,36 +47865,36 @@ var MakeMDPluginSettingsTab = class extends import_obsidian22.PluginSettingTab { }); }); containerEl.createEl("h2", { text: i18n_default.settings.sectionEditor }); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.makeChar.name).setDesc(i18n_default.settings.makeChar.desc).addText((text) => { - text.setValue(this.plugin.settings.menuTriggerChar).onChange(async (value) => { + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.makeChar.name).setDesc(i18n_default.settings.makeChar.desc).addText((text2) => { + text2.setValue(this.plugin.settings.menuTriggerChar).onChange(async (value) => { if (value.trim().length < 1) { - text.setValue(this.plugin.settings.menuTriggerChar); + text2.setValue(this.plugin.settings.menuTriggerChar); return; } let char = value[0]; if (value.trim().length === 2) { char = value.replace(this.plugin.settings.menuTriggerChar, ""); } - text.setValue(char); + text2.setValue(char); this.plugin.settings.menuTriggerChar = char; await this.plugin.saveSettings(); }); }); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.editorMakePlacholder.name).setDesc(i18n_default.settings.editorMakePlacholder.desc).addToggle( + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.editorMakePlacholder.name).setDesc(i18n_default.settings.editorMakePlacholder.desc).addToggle( (toggle) => toggle.setValue(this.plugin.settings.makeMenuPlaceholder).onChange((value) => { this.plugin.settings.makeMenuPlaceholder = value; this.plugin.saveSettings(); this.refreshView(); }) ); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.mobileMakeBar.name).setDesc(i18n_default.settings.mobileMakeBar.desc).addToggle( + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.mobileMakeBar.name).setDesc(i18n_default.settings.mobileMakeBar.desc).addToggle( (toggle) => toggle.setValue(this.plugin.settings.mobileMakeBar).onChange((value) => { this.plugin.settings.mobileMakeBar = value; this.plugin.saveSettings(); this.refreshView(); }) ); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.inlineStyler.name).setDesc(i18n_default.settings.inlineStyler.desc).addToggle( + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.inlineStyler.name).setDesc(i18n_default.settings.inlineStyler.desc).addToggle( (toggle) => toggle.setValue(this.plugin.settings.inlineStyler).onChange((value) => { this.plugin.settings.inlineStyler = value; this.plugin.saveSettings(); @@ -45796,26 +47902,19 @@ var MakeMDPluginSettingsTab = class extends import_obsidian22.PluginSettingTab { }) ); containerEl.createEl("h2", { text: i18n_default.settings.sectionAdvanced }); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.sidebarTabs.name).setDesc(i18n_default.settings.sidebarTabs.desc).addToggle( - (toggle) => toggle.setValue(this.plugin.settings.sidebarTabs).onChange((value) => { - this.plugin.settings.sidebarTabs = value; - this.plugin.saveSettings(); - document.body.classList.toggle("mk-hide-tabs", !value); - }) - ); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.spacesFileExplorerDual.name).setDesc(i18n_default.settings.spacesFileExplorerDual.desc).addToggle( + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.spacesFileExplorerDual.name).setDesc(i18n_default.settings.spacesFileExplorerDual.desc).addToggle( (toggle) => toggle.setValue(this.plugin.settings.spacesDisablePatch).onChange((value) => { this.plugin.settings.spacesDisablePatch = value; this.plugin.saveSettings(); }) ); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.spacesPerformance.name).setDesc(i18n_default.settings.spacesPerformance.desc).addToggle( + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.spacesPerformance.name).setDesc(i18n_default.settings.spacesPerformance.desc).addToggle( (toggle) => toggle.setValue(this.plugin.settings.spacesPerformance).onChange((value) => { this.plugin.settings.spacesPerformance = value; this.plugin.saveSettings(); }) ); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.spacesDeleteOption.name).setDesc(i18n_default.settings.spacesDeleteOption.desc).addDropdown((dropdown) => { + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.spacesDeleteOption.name).setDesc(i18n_default.settings.spacesDeleteOption.desc).addDropdown((dropdown) => { dropdown.addOption( "permanent", i18n_default.settings.spacesDeleteOptions.permanant @@ -45831,14 +47930,14 @@ var MakeMDPluginSettingsTab = class extends import_obsidian22.PluginSettingTab { this.plugin.saveSettings(); }); }); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.inlineStylerColor.name).setDesc(i18n_default.settings.inlineStylerColor.desc).addToggle( + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.inlineStylerColor.name).setDesc(i18n_default.settings.inlineStylerColor.desc).addToggle( (toggle) => toggle.setValue(this.plugin.settings.inlineStylerColors).onChange((value) => { this.plugin.settings.inlineStylerColors = value; this.plugin.saveSettings(); this.refreshView(); }) ); - new import_obsidian22.Setting(containerEl).setName(i18n_default.settings.editorMarkSans.name).setDesc(i18n_default.settings.editorMarkSans.desc).addToggle( + new import_obsidian29.Setting(containerEl).setName(i18n_default.settings.editorMarkSans.name).setDesc(i18n_default.settings.editorMarkSans.desc).addToggle( (toggle) => toggle.setValue(this.plugin.settings.markSans).onChange((value) => { this.plugin.settings.markSans = value; this.plugin.saveSettings(); @@ -45849,7 +47948,7 @@ var MakeMDPluginSettingsTab = class extends import_obsidian22.PluginSettingTab { }; // src/components/MakeMenu/MakeMenu.tsx -var import_obsidian23 = require("obsidian"); +var import_obsidian30 = require("obsidian"); // src/components/MakeMenu/commands/default.ts var default_default = [ @@ -45949,7 +48048,7 @@ function resolveCommands(plugin) { } // src/components/MakeMenu/MakeMenu.tsx -var MakeMenu = class extends import_obsidian23.EditorSuggest { +var MakeMenu = class extends import_obsidian30.EditorSuggest { constructor(app2, plugin) { super(app2); this.inCmd = false; @@ -46018,9 +48117,8 @@ var MakeMenu = class extends import_obsidian23.EditorSuggest { }; // src/components/StickerMenu/StickerMenu.tsx -init_compat_module(); -var import_obsidian24 = require("obsidian"); -var StickerMenu = class extends import_obsidian24.EditorSuggest { +var import_obsidian31 = require("obsidian"); +var StickerMenu = class extends import_obsidian31.EditorSuggest { constructor(app2, plugin) { super(app2); this.inCmd = false; @@ -46396,14 +48494,14 @@ var delFromTo = (tr, from, to) => { ) }; }; -var pointDeletion = (tr, from, to, pos) => checkMarkMiddle(from, to, pos) ? deleteMark(tr, from, pos) : {}; +var pointDeletion = (tr, from, to, pos) => checkMarkMiddle(from, to, pos) ? deleteMark(tr, from, pos) : null; var deleteMark = (tr, from, pos) => from == 0 ? delFromTo(tr, from, pos) : delFromTo(tr, from, pos); var changeSelectionToEndPrevLine = (from, head) => selFromTo(from, head - 1); var changeSelectionToAfterMark = (head, to) => selFromTo(head, to); var changeSelectionToMark = (to, head) => selFromTo(to, head); var rangeBeginsInMark = (from, to, pos) => pos >= from && pos < to; var rangeEndsAtMark = (from, to, pos) => pos == from; -var pointSelection = (from, to, pos, left) => checkLineStart(from, pos) ? to - from == 1 && left ? selectPreviousLine(from, pos) : selectLineStart(to) : checkMarkMiddle(from, to, pos) ? left && checkMarkMiddleRightMost(from, to, pos) ? selectPreviousLine(from, pos) : selectLineStart(to) : {}; +var pointSelection = (from, to, pos, left) => checkLineStart(from, pos) ? to - from == 1 && left ? selectPreviousLine(from, pos) : selectLineStart(to) : checkMarkMiddle(from, to, pos) ? left && checkMarkMiddleRightMost(from, to, pos) ? selectPreviousLine(from, pos) : selectLineStart(to) : null; var checkLineStart = (from, pos) => from == pos; var checkMarkMiddle = (from, to, pos) => pos > from && pos < to; var checkMarkMiddleRightMost = (from, to, pos) => pos == to - 1; @@ -46462,7 +48560,7 @@ var rangeSelection = (from, to, anchor, head) => { const newSel = changeSelectionToMark(to, maxTo); return minFrom == head ? newSel : reverseSel(newSel); } - return {}; + return null; }; var hasReset = (state, from, to) => { var _a2; @@ -46485,20 +48583,21 @@ var makerSelect = import_state9.EditorState.transactionFilter.of( enter: ({ type, from, to }) => { const mark = positionMarkOffset(type.name, from, to, tr.state); if (mark) { - if (!hasReset(tr.state, from, to)) - newTrans.push( - selection.from != selection.to ? rangeSelection( - mark.from, - mark.to, - selection.from, - selection.to - ) : pointSelection( - mark.from, - mark.to, - selection.from, - tr.startState.selection.main.from == selection.from + 1 - ) + if (!hasReset(tr.state, from, to)) { + const newSel = selection.from != selection.to ? rangeSelection( + mark.from, + mark.to, + selection.from, + selection.to + ) : pointSelection( + mark.from, + mark.to, + selection.from, + tr.startState.selection.main.from == selection.from + 1 ); + if (newSel) + newTrans.push(newSel); + } } } }); @@ -46508,10 +48607,6 @@ var makerSelect = import_state9.EditorState.transactionFilter.of( // src/cm-extensions/inlineStylerView/inlineStyler.tsx var import_state10 = require("@codemirror/state"); -init_compat_module(); - -// src/cm-extensions/inlineStylerView/InlineMenu.tsx -init_compat_module(); // src/cm-extensions/inlineStylerView/styles/default.ts var default_default2 = [ @@ -46564,9 +48659,8 @@ function resolveStyles() { } // src/cm-extensions/inlineStylerView/Mark.tsx -init_compat_module(); -var Mark = (props) => { - const { i: i4, style, active, toggleMarkAction } = props; +var Mark = (props2) => { + const { i: i4, style, active, toggleMarkAction } = props2; return /* @__PURE__ */ bn.createElement("div", { key: i4, "aria-label": !platformIsMobile() ? i18n_default.styles[style.label] : void 0, @@ -46577,7 +48671,7 @@ var Mark = (props) => { }; // src/cm-extensions/inlineStylerView/InlineMenu.tsx -var import_classnames6 = __toESM(require_classnames()); +var import_classnames7 = __toESM(require_classnames()); var loadStylerIntoContainer = (el, plugin) => { const root = createRoot(el); root.render( @@ -46588,28 +48682,17 @@ var loadStylerIntoContainer = (el, plugin) => { }) ); }; -var InlineMenuComponent = (props) => { - const [mode, setMode] = p2(props.mobile ? 0 : 1); +var InlineMenuComponent = (props2) => { + const [mode, setMode] = p2(props2.mobile ? 0 : 1); const [colorMode, setColorMode] = p2(null); - const colors = [ - "#eb3b5a", - "#fa8231", - "#f7b731", - "#20bf6b", - "#0fb9b1", - "#2d98da", - "#3867d6", - "#8854d0", - "#4b6584" - ]; const makeMenu = (e4) => { var _a2; e4.preventDefault(); - const cm = (_a2 = props.cm) != null ? _a2 : getActiveCM(); + const cm = (_a2 = props2.cm) != null ? _a2 : getActiveCM(); if (!cm) return; const end = cm.state.selection.main.to; - const insertChars = cm.state.sliceDoc(end - 1, end) == cm.state.lineBreak ? props.plugin.settings.menuTriggerChar : cm.state.lineBreak + props.plugin.settings.menuTriggerChar; + const insertChars = cm.state.sliceDoc(end - 1, end) == cm.state.lineBreak ? props2.plugin.settings.menuTriggerChar : cm.state.lineBreak + props2.plugin.settings.menuTriggerChar; cm.dispatch({ changes: { from: end, @@ -46625,7 +48708,7 @@ var InlineMenuComponent = (props) => { const toggleMarkAction = (e4, s5) => { var _a2; e4.preventDefault(); - const cm = (_a2 = props.cm) != null ? _a2 : getActiveCM(); + const cm = (_a2 = props2.cm) != null ? _a2 : getActiveCM(); if (!cm) return; if (s5.mark) { @@ -46669,7 +48752,7 @@ var InlineMenuComponent = (props) => { "aria-label": !platformIsMobile() ? i18n_default.commands.image : void 0, onMouseDown: () => { const view = getActiveMarkdownView(); - props.plugin.app.commands.commands["editor:attach-file"].editorCallback(view.editor, view); + props2.plugin.app.commands.commands["editor:attach-file"].editorCallback(view.editor, view); }, className: "mk-mark", dangerouslySetInnerHTML: { __html: markIconSet["mk-make-attach"] } @@ -46677,7 +48760,7 @@ var InlineMenuComponent = (props) => { "aria-label": !platformIsMobile() ? i18n_default.commands.toggleKeyboard : void 0, onMouseDown: () => { const view = getActiveMarkdownView(); - props.plugin.app.commands.commands["editor:toggle-keyboard"].editorCallback(view.editor, view); + props2.plugin.app.commands.commands["editor:toggle-keyboard"].editorCallback(view.editor, view); }, className: "mk-mark", dangerouslySetInnerHTML: { __html: markIconSet["mk-make-keyboard"] } @@ -46695,7 +48778,7 @@ var InlineMenuComponent = (props) => { var _a2; setMode(1); setColorMode(null); - const cm = (_a2 = props.cm) != null ? _a2 : getActiveCM(); + const cm = (_a2 = props2.cm) != null ? _a2 : getActiveCM(); if (!cm) return; const selection = cm.state.selection.main; @@ -46712,9 +48795,9 @@ var InlineMenuComponent = (props) => { }); }, className: "mk-color", - style: { background: c4 } + style: { background: c4[1] } }))); - const marksMode = () => /* @__PURE__ */ bn.createElement(bn.Fragment, null, props.mobile ? /* @__PURE__ */ bn.createElement("div", { + const marksMode = () => /* @__PURE__ */ bn.createElement(bn.Fragment, null, props2.mobile ? /* @__PURE__ */ bn.createElement("div", { className: "mk-mark", onMouseDown: () => { setMode(0); @@ -46724,10 +48807,10 @@ var InlineMenuComponent = (props) => { return /* @__PURE__ */ bn.createElement(Mark, { i: i4, style: s5, - active: props.activeMarks.find((f4) => f4 == s5.mark) ? true : false, + active: props2.activeMarks.find((f4) => f4 == s5.mark) ? true : false, toggleMarkAction }); - }), props.plugin.settings.inlineStylerColors ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", { + }), props2.plugin.settings.inlineStylerColors ? /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement("div", { className: "mk-divider" }), /* @__PURE__ */ bn.createElement("div", { "aria-label": !platformIsMobile() ? i18n_default.styles.textColor : void 0, @@ -46757,9 +48840,9 @@ var InlineMenuComponent = (props) => { } })) : /* @__PURE__ */ bn.createElement(bn.Fragment, null)); return /* @__PURE__ */ bn.createElement("div", { - className: (0, import_classnames6.default)("mk-style-menu", props.mobile ? "" : "menu"), + className: (0, import_classnames7.default)("mk-style-menu", props2.mobile ? "" : "menu"), onMouseDown: (e4) => e4.preventDefault() - }, mode == 0 && props.mobile ? makeMode() : mode == 2 ? colorsMode() : marksMode()); + }, mode == 0 && props2.mobile ? makeMode() : mode == 2 ? colorsMode() : marksMode()); }; // src/cm-extensions/inlineStylerView/inlineStyler.tsx @@ -46875,7 +48958,12 @@ var cmExtensions = (plugin, mobile) => { } if (plugin.settings.markSans) { if (!mobile) { - extensions.push(hrResetFix, makerSelect, makerDelete, hrField); + extensions.push( + hrResetFix, + makerSelect, + makerDelete, + hrField + ); } } if (plugin.settings.makeMenuPlaceholder) @@ -46896,8 +48984,7 @@ var cmExtensions = (plugin, mobile) => { return extensions; }; -// src/utils/markdownPost.tsx -init_compat_module(); +// src/utils/flow/markdownPost.tsx var getCMFromElement = (el) => { let dom = el; while (!dom.hasClass("cm-editor") && dom.parentElement) { @@ -46942,6 +49029,8 @@ var replaceAllEmbed = (el, ctx) => { toggleFlow: (e4) => { const cm = getCMFromElement(dom); const pos = cm == null ? void 0 : cm.posAtDOM(dom); + if (!cm) + return; iterateTreeInSelection( { from: pos - 3, to: pos + 4 }, cm.state, @@ -47026,11 +49115,11 @@ function around1(obj, method, createWrapper) { } } -// src/utils/patches.ts -var import_obsidian25 = require("obsidian"); +// src/utils/spaces/patches.ts +var import_obsidian32 = require("obsidian"); var patchFileExplorer = (plugin) => { plugin.register( - around(import_obsidian25.Workspace.prototype, { + around(import_obsidian32.Workspace.prototype, { getLeavesOfType(old) { return function(type) { if (type == "file-explorer") { @@ -47044,7 +49133,7 @@ var patchFileExplorer = (plugin) => { }; var patchWorkspace = (plugin) => { let layoutChanging = false; - const uninstaller = around(import_obsidian25.Workspace.prototype, { + const uninstaller = around(import_obsidian32.Workspace.prototype, { changeLayout(old) { return async function(workspace) { layoutChanging = true; @@ -47065,7 +49154,7 @@ var patchWorkspace = (plugin) => { return false; if (layoutChanging) return false; - if (parent === app.workspace.rootSplit || import_obsidian25.WorkspaceContainer && parent instanceof import_obsidian25.WorkspaceContainer) { + if (parent === app.workspace.rootSplit || import_obsidian32.WorkspaceContainer && parent instanceof import_obsidian32.WorkspaceContainer) { for (const popover of FlowEditor.popoversForWindow( parent.win )) { @@ -47097,14 +49186,14 @@ var patchWorkspace = (plugin) => { plugin.register(uninstaller); }; -// wasm-binary:/Users/cen/Documents/GitHub/make-md/src/utils/sqljs/sql-wasm.wasm +// wasm-binary:/Users/cen/Documents/GitHub/make-md/src/utils/db/sqljs/sql-wasm.wasm var sql_wasm_exports = {}; __export(sql_wasm_exports, { default: () => sql_wasm_default }); var sql_wasm_default = __toBinary("AGFzbQEAAAABrQRHYAJ/fwF/YAF/AX9gA39/fwBgAX8AYAN/f38Bf2ACf38AYAR/f39/AX9gBX9/f39/AX9gBH9/f38AYAZ/f39/f38Bf2AFf39/f38AYAJ/fgF/YAR/f39+AX9gBn9/f39/fwBgB39/f39/f38Bf2AAAX9gAXwBfGABfgF/YAJ/fgBgA39/fgF/YAJ/fwF+YAAAYAF/AX5gBH9+f38Bf2AHf39/f39/fwBgCX9/f39/f39/fwF/YAh/f39/f39/fwF/YAN/fn8Bf2ACf3wAYAV/fn5+fgBgCX9/f39/f39/fwBgBX9/f39+AGAFf39+f38Bf2ADf39+AGADf35/AGADf35+AX9gAAF8YAF/AXxgBH9+fn8AYAh/f39/f39/fwBgBH5+fn4Bf2ALf39/f39/f39/f38AYAN8fH8BfGACfHwBfGAEf39+fwBgBn9/f35/fwF/YAF+AX5gBX9+f39/AX9gAn9+AX5gBn9/f39/fgF/YAR/f39/AX5gAn5+AXxgCH9+fn9/f39/AX9gAn58AX9gC39/f39/f39/f39/AX9gAnx/AXxgAXwBf2ACfH8Bf2AHf39/f35/fwF+YAl/fn9+fn5+f38Bf2AEf39/fgBgAnx+AX9gCn9/f39/f39/f38Bf2ADf398AX9gB39/f39/fHwAYAF8AX5gBX9+fn5/AX9gCH9/fn5+f39/AX9gBH9+f38AYA1/f39/f39/f39/f39/AGACf38BfALNASIBYQFhAAgBYQFiAAQBYQFjAAEBYQFkACQBYQFlACQBYQFmAAEBYQFnAAQBYQFoAAABYQFpAAABYQFqAAUBYQFrAAcBYQFsAAQBYQFtAAABYQFuAAIBYQFvAAYBYQFwAAQBYQFxAA8BYQFyAAYBYQFzAAEBYQF0AAYBYQF1AAYBYQF2AAYBYQF3AAkBYQF4AAkBYQF5AAQBYQF6AAABYQFBAAABYQFCAAABYQFDAAEBYQFEAAYBYQFFAAABYQFGAAABYQFHAAABYQFIAAYDkw+RDwYDBwQCBQQBBQEEAQUBAAEBDgUGBAkFBQEEBAECCAULAQECBQEABAMAEQMAAAMlBAYABgALARMDAAAcAQUWAQcDEgIABQMGAQAGAgILCAQEAQAABBEBCAYMAAQAAgEFBQwFAQQAAAIKAwQCCwEAEgUBAgMABAAB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CEUgAXINACAFKAKQAiAFIAUoAhAgA2ooAgAgBCAIEQYAIQELIAJBAWohAgwBCwsgACABNgIkQQFB5QAgARshAgwBCyABIQIgACwAlAFBAE4NACAAEOMGIQILIAUgAjYCQCAAKAIAIAAoAiQQogFBB0cNACAAQQc2AiQgAkEHIAAsAJQBQQBOGyECCyAFKAJIIAJxCyIBQRFHDQEgFUEyRgRAQREPCyAAKAIgIQUjAEEQayIDJAAgABDnCSEBAkAgACgCACICIAFBfyAALQCUASAAIANBDGpBABDJBCIIBEAgCEEHRw0BIAIQTwwBCyADKAIMIQQjAEHwAWsiASQAIAEgBEHwARAlIQkgBCAAQfABECUhAiAAIAlB8AEQJSEBIAIoAgghByACIAEoAgg2AgggASAHNgIIIAIoAgQhByACIAEoAgQ2AgQgASAHNgIEIAIoAsQBIQcgAiABKALEATYCxAEgASAHNgLEASACKALIASEHIAIgASgCyAE2AsgBIAEgBzYCyAEgASACKALgATYC4AEgASACLQCUAToAlAEgAUGgAWogAkGgAWpBJBAlGiABIAEoArQBQQFqNgK0ASAJQfABaiQAQQAhAQNAIAQuARAgAUoEQCABQShsIgIgACgCZGogBCgCZCACahDdCSABQQFqIQEMAQsLIARBADYCJCAEEJgCGgsgA0EQaiQAAkAgCARAIAwoAqACECshASAMIAAoAnwQJyAMLQBXDQEgACAMIAEQWjYCfCAAIAwgCBCiASIANgIkIAAPCyAVQQFqIRUgABA6GiAFQQBIDQEgAEH+AToAkwEMAQsLQQchASAAQQc2AiQgAEEANgJ8CyABC2MBAn8gACgCECIDIAJqIgQgACgCCE8EQCAAIAIQtwYiAkEASgRAIAAoAgQgACgCEGogASACECUaIAAgACgCECACajYCEAsPCyACBEAgACAENgIQIAAoAgQgA2ogASACECUaCwspACAAIAFBCHRBgID8B3EgAUEYdHIgAUEIdkGA/gNxIAFBGHZycjYAAAs9AQF/IAAtABMiAUUEQCAAIAAoAixBAWoiADYCLCAADwsgACABQQFrIgE6ABMgACABQf8BcUECdGooApgBC3EBAX8gACgCCCICLgEQQQBOBEACfyAAKAIIIQIgAUEATARAIAIQYiACQQA2AghBAAwBCyAC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ACgCWCABKAIIQShsaiIALQARQZABcQRAIAAQYiAAQQQ7ARAgAA8LIABBBDsBECAAC3ABA38jAEEQayIEJABB7PUDKAIABEAgBCACNgIMIwBB8AFrIgMkACADQdgBaiIFQQAgA0HSAUEAEJoBIAUgASACELsDQez1AygCACEBQfD1AygCACAAIAUQxQEgARECACADQfABaiQACyAEQRBqJAALCgAgACgCACgCFAsNACAAKAIAIAGsEJABC80BAQN/IAEEQCABQQhqIQIDQCABKAIAIARKBEAgAigCBCIDBEAgACADEF4LIAAgAigCCBAnIAIoAgwiAwRAIAAgAxBeCyACLwAlIgNBAnEEfyAAIAIoAjgQJyACLwAlBSADC0EEcQRAIAAgAigCOBA5CyAAIAIoAhAQ0wEgAigCFCIDBEAgACADEGYLIAIoAiwhAwJAIAItACZBBHEEQCAAIAMQ7QEMAQsgA0UNACAAIAMQLgsgAkFAayECIARBAWohBAwBCwsgACABEF4LCxUAIAAgASACIAMgACgCACgCCBEMAAs/AQF+AkAgACkDECICIAApAwhaBEAgAEEBEMoDDQEgACkDECECCyAAIAJCAXw3AxAgACgCBCACp2ogAToAAAsL4gEBAX8DQAJAIAAoAgRBgMAQcQRAIABBDGohAAwBCwJ/IAAtAAAiAUGwAUYEQCAALQACIQELAkACQAJAAkACQAJAIAFBsQFrDgICAQALIAFBigFHBEACQCABQacBaw4DAAUABAsgACgCLCIBRQ0EIAEgAC4BIBC8BAwGCyAAKAIUKAIcQQhqIQAMBgsgACgCDCgCFCgCHCAALgEgQQR0akEIaiEADAULIAAoAhRBCGohAAwECyABQSRGDQELIAAtAAEMAQsgACgCCEEAENEEC0EYdEEYdQ8LIAAoAgAhAAwACwALZQEBfyABEJ4BIQMCQCAALQAXRSADRXINACADLQAAQbABRg0AIAMQygVFDQAgAkEANgIAIAAgA0F/EMkFDwsgAiAAEEYiASAAIAMgARDvASIDRwR/IAAgARBAQQAFIAELNgIAIAMLNwEBfyABQQBIBEAgACgCbEEBayEBC0HwpwQhAiAAKAIALQBXBH9B8KcEBSAAKAJoIAFBFGxqCwt7AQN/AkAgAUEASA0AIAAoAhxBIHFFDQAgACgCBCEEA0Ag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KAIkIAIQNjYCJCADIAAgASgCKCACEHA2AiggAyAAIAEoAiwgAhA2NgIsIAMgACABKAIwIAIQcDYCMCABLQAAIQUgAyAENgI4IAMgBToAACADQQA2AjQgACABKAI8IAIQNiEEIANCADcCCCADIAQ2AjwgASgCBCEEIANCfzcCFCADIARBX3E2AgQgAyABLwECOwECIAAgASgCQBDnCyEEIANBADYCRCADIAQ2AkAgASgCSCEHIwBBEGsiBSQAIAVBADYCDCAFQQxqIQQDQAJAIAdFDQAgBCAAQQAgBxDlCyIENgIAIARFDQAgBEEkaiEEIAcoAiQhBwwBCwsgBSgCDCEEIAVBEGokACADIAQ2AkgCQCABKAJEBEAgAC0AVwRAIAMgASgCEDYCEAwCCyMAQSBrIgQkACAEQQA2AgwgBEHAADYCCCAEQcEANgIEIAQgAzYCGCAEQQA2AgAgBCADEGoaIARBIGokAAsgAC0AVyEEIAMgASgCEDYCECAERQ0CCyADQQA2AjggACADEGYLIAYoAgwhACAGQRBqJAAgAA8LIAggAzYCACABKAI0IQEgA0E0aiEIIAMhBAwACwALeQEBfyABBH8gAkUEQCABDwsgACgCACEDAkAgASgCBEGBgICAAnFBgICAgAJHBEAgAigCBEGBgICAAnFBgICAgAJHDQELIAAtANABQQFLDQAgACABENcHIAAgAhDXByADQZsBQeK7ARBxDwsgAEEsIAEgAhA1BSACCwu7AwEDfwJAIAFFDQACQCAABEAgACgCkAQNAQsgASABKAIYQQFrIgI2AhggAg0BCyAAIQIgASgCCCEAA0AgAARAIAAoAhQhAwJAIAIEQCACKAKQBA0BCyABLQArQQFGDQAgACgCGEEYaiAAKAIAQQAQqAEaCyACIAAQ2gQgAyEADAELCwJAAkACQAJAIAEtACsOAgABAgsgASgCMCEAA0AgAARAAkAgAgRAIAIoApAEDQELIAAoAgwhAwJAIAAoAhAiBARAIAQgAzYCDAwBCyABKAI8QThqIAMgACADGygCCCADEKgBGgsgACgCDCIDRQ0AIAMgACgCEDYCEAsgAiAAKAIcEPEDIAIgACgCIBDxAyAAKAIEIQMgAiAAECcgAyEADAELCwwCC0EAIQACQCACBEAgAigCkAQNAQtBACABEK8IGgsgASgCMARA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KAKgAiABQQEQxgULIARBEGokAAs7AQF/IAAoAgAiAi0AV0UEQCACIAAoAmggAUEUbGoiACwAASAAKAIQEIwEIABBADYCECAAQbgBOwEACwvCAQEBfwJAIAAoAgAtAFcNACABLQAEQYABcQ0AIwBBIGsiAyQAIANBxwA2AgQgAyAANgIAIAAtABYEQCADQQA2AgwgA0HIADYCCCADIAEQahoLIANBADsBFCADQT82AgwgA0HJADYCCCADIAEQahogA0EgaiQAIAAoAiQNACAAIAEgAhDaCyAAKAIkDQAjAEEgayICJAAgAkHKADYCDCACQTI2AgggAkHHADYCBCACIAA2AgAgAiABEGoaIAJBIGokAAsLRQEBfyAAKAIAQgwQjQEiAwRAIAMgACgCgAE2AgAgACADNgKAASADIAE2AgggAyACNgIEIAIPCyAAKAIAIAIgAREFAEEACw8AQQ4gAEGN6AAQiAVBDgsUAQF/EOwBBH9BAAUgACABEMgBCwtIAQF/IABBASABdCICIAAoApgBcjYCmAECQCABQQFGDQAgACgCACgCECABQQR0aigCBC0ACUUNACAAIAAoApwBIAJyNgKcAQsLHQEBfxDsAQR/QQAFIAAgAUEAIAFBAEobrRDIAQsLZQEDfyACRQRAQQAPCwJAIAAtAAAiA0UNAANAAkAgAS0AACIFRQ0AIAJBAWsiAkUgAyAFR3INACABQQFqIQEgAC0AASEDIABBAWohACADDQEMAgsLIAMhBAsgBEH/AXEgAS0AAGsLcgECfwJAIAAoAgAgACgCDGoiAkEATARAQQEhAiAALQAQQRBxRQ0BC0EHIQEgACACQQEQvwMNAEEAIQEgACgCCCAAKAIMakEAIAAoAgAQKBogACAAKAIMIAAoAgBqNgIMIAAgAC8BEEH/8wNxOwEQCyABC8kKAgV/D34jAEHgAGsiBSQAIARC////////P4MhDCACIASFQoCAgICAgICAgH+DIQogAkL///////8/gyINQiCIIQ4gBEIwiKdB//8BcSEHAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgB0H//wFrQYGAfksNAQsgAVAgAkL///////////8AgyILQoCAgICAgMD//wBUIAtCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhCgwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCEKIAMhAQwCCyABIAtCgICAgICAwP//AIWEUARAIAIgA4RQBEBCgICAgICA4P//ACEKQgAhAQwDCyAKQoCAgICAgMD//wCEIQpCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEAgASALhCECQgAhASACUARAQoCAgICAgOD//wAhCgwDCyAKQoCAgICAgMD//wCEIQoMAgsgASALhFAEQEIAIQEMAgsgAiADhFAEQEIAIQEMAgsgC0L///////8/WARAIAVB0ABqIAEgDSABIA0gDVAiBht5IAZBBnStfKciBkEPaxCpAUEQIAZrIQYgBSkDWCINQiCIIQ4gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAwgAyAMIAxQIggbeSAIQQZ0rXynIghBD2sQqQEgBiAIa0EQaiEGIAUpA0ghDCAFKQNAIQMLIANCD4YiC0KAgP7/D4MiAiABQiCIIgR+IhAgC0IgiCITIAFC/////w+DIgF+fCIPQiCGIhEgASACfnwiCyARVK0gAiANQv////8PgyINfiIVIAQgE358IhEgDEIPhiISIANCMYiEQv////8PgyIDIAF+fCIUIA8gEFStQiCGIA9CIIiEfCIPIAIgDkKAgASEIgx+IhYgDSATfnwiDiASQiCIQoCAgIAIhCICIAF+fCIQIAMgBH58IhJCIIZ8Ihd8IQEgByAJaiAGakH//wBrIQYCQCACIAR+IhggDCATfnwiBCAYVK0gBCAEIAMgDX58IgRWrXwgAiAMfnwgBCAEIBEgFVStIBEgFFatfHwiBFatfCADIAx+IgMgAiANfnwiAiADVK1CIIYgAkIgiIR8IAQgAkIghnwiAiAEVK18IAIgAiAQIBJWrSAOIBZUrSAOIBBWrXx8QiCGIBJCIIiEfCICVq18IAIgAiAPIBRUrSAPIBdWrXx8IgJWrXwiBEKAgICAgIDAAINQRQRAIAZBAWohBgwBCyALQj+IIQMgBEIBhiACQj+IhCEEIAJCAYYgAUI/iIQhAiALQgGGIQsgAyABQgGGhCEBCyAGQf//AU4EQCAKQoCAgICAgMD//wCEIQpCACEBDAELAn4gBkEATARAQQEgBmsiB0GAAU8EQEIAIQEM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IAhBFGxqIgEuARIgAhAkGiABLgEQIgFBAEgNISAAKAIEIAFB//8DcUEMbGotAAVBxQBHDSEgBkHXACACECwaDCELIAEtAARBIHEEQCAAIAEoAgwgAhDvASEDAn8gASgCLCIABEAgACABLgEgELwEDAELIAEtAAELIgBBGHRBGHVBwgBIDSIgBkHgACADQQFBACAAQf8BcUEBdEHc+AJqQX8QMxoMIgsgASgCHCIFQQBIBEAgACgCNCIDQQBIBEAgAS8BICIEQRB0QRB1IghBAEgEQCADQX9zIQMMJAsgASgCLCIFIAgQhwEgA2shAyAFKAIEIARBDGxqIgEvAQoiBEHgAHEEQCAEQYACcQRAIAcgASgCADYCACAAQeDcASAHECZBACEDDCULIAEgBEGAAnIiAjsBCiABIARBgAFxBH8gACAFIAEgAxDQByABLwEKBSACC0H//ANxOwEKDCQLIAEtAAVBxQBHDSMgBkHRACADIAIQIhogBkHXACACECwaDCILIANBAWshBQsgAS0AAiEDIAAoAgggASgCLCAFIAEuASAgAhCJAQJAIANFDQAgACgCCEF/EIYBIgAtAABB3gBHDQAgACADOwECCyACIQMgASgCLA0hIAEtAAFBxQBHDSEgBkHXACADECwaDCELIAAgAUEAIAIQ+QsMHwsgBkHHACABELsEIAIQIhoMHgsgBiABKAIIQQAgAhDPBwwdCyAGIAIgASgCCBCwARoMHAsgBkHNACABKAIIQQJqIgAQMUEBayIBQQJtIAJBACAGKAIAIAAgARCTCEF6EDMaDBsLIAZBzgAgAS4BICACECIaIAEoAggtAAFFDRogACgC4AEiACABLgEgEOAJIQEgAEEANgIAIAYgAUF/EIgBDBoLIAEoAhwhAwwaCyACIAAgASgCDCACEO8BIgBHBEAgBkHRACAAIAIQIhoLIAZB2AAgAiABKAIIQQAQ0QQQIhoMGAtBNUE0IAVBLUYbIQVBASEIQYABDAELQQALIQsgASgCDCIDEP4BBEAjAEEQayIDJAAgASgCECEGIAAoAgghBCABKAIMIg0QkgEhCiAAEDIhCAJAIAAoAiQNACABKAIEIQEgBhCSASAKRwRAIABB6vMAQQAQJgwBCyABQQp2QQFxIREgACANEPULIRIgACAGEPULIRMgBEHHAEEBIAIQIhpBNUE2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IQQDQAJAIAAgBEsEQCAELQAAQTBGDQELQQAhAgNAAkAgAiAEaiIIIABPIgkNACAILQAAIghBMGtB/wFxQQlLDQAgAiAFaiECIApCCn4gCK1C/wGDfEIwfSEKDAELCyABQv///////////wBCgICAgICAgICAfyAHGyAKQgAgCn0gBxsgCkIAUxs3AwACfyACRQRAQX8gAyAERg0BGgsgBiAGDQAaIAYgCQ0AGiACIQMDQEEBIAMgBGotAABBwOoBai0AAEEBcUUNARogBCADIAVqIgNqIABJDQALQQALIQMCQCACIAVBE2wiBkkNAEEBIQAgAiAGTQRAQQAhAEEAIQIDQCACIABBEUtyRQRAIAQgACAFbGosAAAgAEHXuAFqLAAAa0EKbCECIABBAWohAAwBCwsgAgR/IAIFIAQgBUESbGosAABBOGsLIgBBAEgNAQsgAUL///////////8AQoCAgICAgICAgH8gBxs3AwBBAkEDIAMgBxsgABshAwsgAw8LIAQgBWohBAwACwALpwECA38BfgJAIAAtAABBMEcNACAALQABQSByQfgARw0AQQIhAgNAIAIiA0EBaiECIAAgA2otAAAiBEEwRg0ACyADIQIDQCAEQcDqAWotAABBCHEEQCAEQRh0QRh1EIcCrSAFQgSGfCEFIAAgAkEBaiICai0AACEEDAELCyABIAU3AwBBAiACIANrQRBKQQF0IAAgAmotAAAbDwsgACABIAAQMUEBEPUCC40DAQR/AkACQCAABEAgAUEBayECAkADQCAAKAIAQaEfTwRAIAAoAggiAUUNAiACIAIgAW4iAyABbGshAiAAIANBAnRqIgNBDGooAgAiAA0BIAMgARCBBCIANgIMIAANAQwFCwsgACACQQN2aiIAQQxqIAAtAAxBASACQQdxdHI6AABBAA8LIAJBAWohBAJAIABBDGoiAyACQf0AcCIBQQJ0aigCACICBEADQCACIARGBEBBAA8LIANBACABQQFqIgEgAUH8AEsbIgFBAnRqKAIAIgINAAsgACgCBCICQT5JDQEMAwsgACgCBCICQfwATw0CCyAAIAJBAWo2AgQgAyABQQJ0aiAENgIAC0EADwtBACEBQQBC9AMQjQEiAkUNACACIANB9AMQJSEFIANBAEH0AxAoGiAAIAAoAgBB/ABqQf0AbjYCCCAAIAQQ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IAAoAiAQXgsgACAAKAIUIAGsEI0BIgE2AiALIAFFBEAgABBiIABBADYCGCAAQQA2AghBBw8LIAAgACgCFCABEKsCNgIYAkAgAkUNACAAKAIIIgFFDQAgACgCICABIAAoAgwQJRoLIAAgAC8BECIBQYAgcQR/IAAoAgggACgCJBEDACAALwEQBSABC0H/nwJxOwEQIAAgACgCIDYCCEEAC9MDAgJ+An8jAEEgayIEJAACQCABQv///////////wCDIgNCgICAgICAwIA8fSADQoCAgICAgMD/wwB9VARAIAFCBIYgAEI8iIQhAyAAQv//////////D4MiAEKBgICAgICAgAhaBEAgA0KBgICAgICAgMAAfCECDAILIANCgICAgICAgIBAfSECIABCgICAgICAgIAIUg0BIAIgA0IBg3whAgwBCyAAUCADQoCAgICAgMD//wBUIANCgICAgICAwP//AFEbRQRAIAFCBIYgAEI8iIRC/////////wODQoCAgICAgID8/wCEIQIMAQtCgICAgICAgPj/ACECIANC////////v//DAFYNAEIAIQIgA0IwiKciBUGR9wBJDQAgBEEQaiAAIAFC////////P4NCgICAgICAwACEIgIgBUGB9wBrEKkBIAQgACACQYH4ACAFaxD/AiAEKQMIQgSGIAQpAwAiAEI8iIQhAiAEKQMQIAQpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyAAQoCAgICAgICACFINACACQgGDIAJ8IQILIARBIGokACACIAFCgICAgICAgICAf4OEvwvTAQIBfwJ+QX8hBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEAgACACVCABIANTIAEgA1EbDQEgACAChSABIAOFhEIAUg8LIAAgAlYgASADVSABIANRGw0AIAAgAoUgASADhYRCAFIhBAsgBAvMAQEGfxC7ASAAEPcBIAAtABhBAXEEQCAALQCxAUUhBAsgBEUhBgNAIAMgACgCFE5FBEAgACgCECAD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AkAgASgCECICBH8gAgUgASgCDCEDIAFBACABMwE0QgF8EI0BIgI2AhAgAkUNAUEAIQIDQCACIAEvATRPRQRAAn8gASgCBCACQQF0ai8BACIAQRB0QRB1IgRBAE4EQCADKAIEIABBDGxqLQAFDAELQcQAIARBf0YNABogASgCKCACQQR0aigCCBCEAQshACABKAIQIAJqIABBGHRBGHUiAEHBACAAQcEAShsiAEHDACAAQcMASRs6AAAgAkEBaiECDAELCyABKAIQIAJqQQA6AAAgASgCEAsPCyAAEE9BAAsOACAAIAEQhgEgAjYCDAvJAQECfwJAAkAgACgCAC0AIUHAAHFFDQAgAS0AKw0AAkAgAkUEQEEBIQQgARCPAw0DIAEoAjBBAEchBQwBCyABQTBqIQBBASEEA0AgACgCACIABEAgASAAIAIgAxCTCwRAQQEhBSAEQQIgASgCACAAKAIIEFMbIQQLIABBBGohAAwBCwsgARCPAyEAA0AgAEUNAQJAIAEgACACIAMQpgdFDQBBASEFIAAtABpFDQBBAg8LIAAoAgwhAAwACwALIAUNAQtBACEECyAEC6UDAQl/An8CQAJAIAEoAjhFBEAgACgCACgCECgCHCIHBH8gBygCMEEARwVBAAtFDQELIAAtAJcBRQ0BC0EAIARFDQEaIARBADYCAEEADwsgAyEJIwBBEGsiCCQAAkACQCAAIgMgASIHEM8LIgFFDQACQCADKAIALQAiQQRxDQAgBygCOCIGRQ0AIAEgBkYNASABIQADQCAAIgUoAiAiAEEAIAAgBkcbDQALIAVBADYCIAtB35gBQeaYASACQYABRhshCkEAIQUgAkH/AEYhCyACQYEBRyEMIAEhAANAAkACQCAALQAIIgYgAkcNACAAKAIQIAkQpQdFDQAgBSAALQAJciEFDAELIAZBlgFGBEAgACACOgAIQQJBASAHLQArQQFHIg0bIQYgCyANckUEQCAIIAo2AgAgA0GZKSAIECZBASEGCyAAIAY6AAkgBSAGciEFDAELIAAtAApFIAxyIAZB/wBHcg0AIAMoAnQNACAFIAAtAAlyIQULIAAoAiAiAA0ACwwBC0EAIQELIAQEQCAEIAU2AgALIAhBEGokACABQQAgBRsLCyoBAX9BqpYBIQEgAEGHAWsiAEECTQR/IABBAnRB1K4DaigC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AiABQQZqNgIMAn8gF0EXRgRAQaYBIAJBDGoQ0ARBFkYNARoLQTsLIQUgAkEQaiQAIAUMAgsgESAaNgIsIBEgATYCKCARIBFBKGo2AiAgAEHx3wEgEUEgahAmDAMLIwBBEGsiAiQAIAIgAUEGajYCDEE7IQUgAkEMahDQBEE7RgRAQaQBQTsgAkEMahDQBEEYRhshBQsgAkEQaiQAIAULIhc2AuwJCyAAIBo2AsgBIAAgATYCxAEgESAAKQLEATcDGCMAQSBrIhQkACARQTBqIhIoAgQhBCASKAIALwEAIQICQANAIBdB//8DcSEFIAJB//8DcSIGQb8ETQR/IAZBAXRBkJwCai8BACEHAn8CQANAIAcgBSICaiIFQQF0QZClAmovAQAgAkYNASACQQF0QfCVAmovAQAiBQ0ACyACQf//A3FFIAdB5QBqIgJBAXRBkKUCai8BAEHlAEdyRQRAIAJBAXRB8MgCagwCCyAGQQF0QeDpAmoMAQsgBUEBdEHwyAJqCy8BAAUgBgtB//8DcSIFQdsJTwRAAkAgBUGVjwJqLQAADQAgEigCACASKAK4CUkNACASEJIIDAMLIBQgESkCGDcDAEEAIQJBACEGQQAhCkEAIQhBACEHQQAhCyMAQbABayINJAAgEigCACEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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AjYCACACIANBCGsoAgAgAygCBBDwBQybAQsgA0EUayICIARBACACKAIAEDsiAjYCACACIANBCGsoAgAgAygCBBDwBQyaAQsgA0EANgIEDJkBCyADQQE2AgQMmAELIANBfzYCEAyXAQsgA0EIa0EANgIADJYBCyADQQhrQQE2AgAMlQELIANBADYCEAyUAQsgA0EIayADKAIENgIADJMBCyADQQhrIARBlAEgAygCBEEAEDU2AgAMkgELIANBIGsgBEGUASADQRRrKAIAIAMoAgQQNTYCAAyRAQsgA0EgayAEQZQBIAMoAgQgA0EUaygCABA1NgIADJABCyAEIANBFGsiAigCACADQQhrEPIFIAQgAigCACADKAIEEO8FDI8BCyAEIAMoAgQQzQQgA0EIa0EANgIADI4BCyAEIAMoAgQQzQQgA0EgayADQRRrKAIANgIADI0BCyAEIANBOGsiAigCACADQSxrEPIFIAQgA0EUayIGKAIAQaMREIUIAkAgA0EIaygCACIFRQRAIAIoAgAhBQwBCyAFKAIAQQJOBEAgBEEAIAVBAEEAQQBBAEGAEEEAELYBIQUgDUIANwOQASAEQQBBAEEAIA1BkAFqIAVBABCCAiEFCyACIAQgAigCACAFEIQIIgU2AgALIAQgBSAGKAIAIAMoAgQgA0HEAGsoAgBBABDuBQyMAQsgA0EsayICIAQgAigCACADKAIEEDsiAjYCACAEIAIgA0EUa0EBEOYCDIsBCyADQcQAayICIAQgAigCACADQSBrKAIAIAMoAgQQgwg2AgAMigELIAQgBEEAIAMoAgQQOyICIANBFGsiBUEBEOYCIAUgAjYCAAyJAQsgA0EsayAEQQAgA0EgaygCACADKAIEEIMINgIADIgBCyAEIANBIGsoAgAgA0EIaygCACADQRRrKAIAIANBOGsoAgAgAygCBBDtBQyHAQsgBCADQSxrKAIAQQAgA0EgaygCACADQcQAaygCAEEAEO0FDIYBCyADQQA2AhAMhQELIANBCGtBADYCACAEIAMoAgQQzQQMhAELIANBgAFrIAQoAgAgA0HcAGsoAgAgA0HEAGsoAgAgA0EUaygCACADQQhrKAIAIAMoAgQQ6wM2AgAMgwELIANB3ABrIAQoAgAgA0E4aygCACADQSBrKAIAQQBBACADKAIEEOsDNgIADIIBCyADQSxrIAQoAgBBAEEAQQBBAEEAEOsDNgIADIEBCyADQdAAayAEKAIAQQBBACADQRRrKAIAIANBCGsoAgBBABDrAzYCAAyAAQsgBCADKAIEEM0EDH8LIANBADYCEAx+CyADQRRrIANBCGsoAgA2AgAMfQsgA0EUayICIAQgAigCACADQQRqEOwFNgIADHwLIAMgBEEAIANBBGoQ7AU2AgQMewsgA0EUayADQQhrKAIANgIADHoLIA0gAykCBDcDQCADIARBOyANQUBrEIMCNgIEDHkLIA0gA0EUayICKQIANwNQIARBOyANQdAAahCDAiEFIA0gAykCBDcDSCACIARBjQEgBSAEQTsgDUHIAGoQgwIQNTYCAAx4CyANIANBLGsiBSkCADcDaCAEQTsgDUHoAGoQgwIhAiANIANBFGspAgA3A2AgBEE7IA1B4ABqEIMCIQYgDSADKQIENwNYIARBjQEgBiAEQTsgDUHYAGoQgwIQNSEGIAQtANABQQJPBEAgBEEAIAIQowELIAUgBEGNASACIAYQNTYCAAx3CyADLwECIQIgDSADKQIENwNwIAMgBCACIA1B8ABqEIMCNgIEDHYLIAQoAgBBmwEgA0EEakEBEHkiAgRAIAIgAygCBCAEKALoAWs2AiQLIAMgAjYCBAx1CwJAIAMoAgQiAi0AAEEjRgRAIAItAAFBOmtBdUsNAQsgAygCCCEHIA0gAykCBDcDeCADIARBnAEgDUH4AGoQgwIiCTYCBCMAQRBrIgokAAJAIAlFDQAgBCgCACELAkACQCAJKAIIIgIwAAEiJFAEQCAEIAQvAcwBQQFqIgU7AcwBDAELAkACQCACLQAAQT9GBEAgB0ECRgR+ICRCMH0FIAJBAWogCkEIaiAHQQFrQQEQ9QJBAEchBiAKKQMICyIkQgBXIAZyICQgCygCnAEiBaxVcg0EICSnQRB0QRB1IgUgBC4BzAFMDQEgBCAFOwHMASAEKALgASEGDAILIAQoAuABIgYgAiAHEN4JIgVB//8DcQ0CIAQgBC8BzAFBAWoiBTsBzAEMAQsgBCgC4AEiBiAFEOAJDQELIAQCfyACIQggBUEQdEEQdSEQAkAgBiICIAsgAiAHQQRtQQNqIgysIAIEfiACKAIEIg4gDGoiDyACKAIAIgZMBEAgAiEGDAILIAasQgGGBUIKC3wiJEIChhC5ASIGRQ0BGgJ/IAIEQCAGKAIEDAELIAZBAjYCBEECCyEOIAYgJD4CACAMIA5qIQ8LIAYgDkECdGoiAiAQNgIAIAIgDDYCBCAGIA82AgQgAkEIaiAIIAcQJSAHakEAOgAAIAYLNgLgAQsgCSAFOwEgIAsoApwBIAVBEHRBEHVODQEgBEHTKkEAECYgBCgCACAJEPgCDAELIAogBTYCACAEQbf7ACAKECYgBCgCACAJEPgCCyAKQRBqJAAMdQsgDSADKQIEIiQ3A5ABIAQtABJFBEAgDSANQZABajYCgAEgBEGawgAgDUGAAWoQJiADQQA2AgQMdQsgAyAEQbABQQBBABA1IgI2AgQgAkUNdCAkp0EBaiACQRxqENACGgx0CyADQRRrIgIgBCACKAIAIANBBGpBARCCCDYCAAxzCyADQThrIAQoAgBBJCADQQhrQQEQeSICNgIAIAQoAgAgAiADQSBrKAIAQQAQgQgMcgsgA0EsayICIAQgA0EIaygCACACIANBFGsoAgAQngI2AgAMcQsgA0EgayICIARBACACQQAQngI2AgAMcAsgBCAEIANBFGsoAgAgA0E4ayICIANBIGsoAgAQngIiBSADKAIEEIAIIAIgBTYCAAxvCyAEIARBACADQSxrIgJBABCeAiIFIAMoAgQQgAggAiAFNgIADG4LIAMgBEEAIANBBGpBABCeAjYCBAxtCyAEIANBIGsoAgAgA0EIaygCABA7IQIgA0EsayIGIARBsQFBAEEAEDUiBTYCACAFBEAgBSACNgIUIAIoAgBFDW0gBigCACIFIAUoAgQgAigCCCgCBEGIhIACcXI2AgQMbQsgBCgCACACEDkMbAsgA0EUayICIAQgAigCACADKAIEENIBNgIADGsLIANBFGsiAiAEIANBCmsvAQAgAigCACADKAIEEDU2AgAMagsgA0EMayICIAMpAgQiJDcCBCACICRCIIinQYCAgIB4cjYCCAxpCyADQQRrIgIgAigCACIGQf////8HcTYCACADQRRrIgIgBCAEIARBACADKAIEEDsgAigCABA7IANBCGtBABCeAiIFNgIAIAZBAEgEQCACIARBEyAFQQAQNSIFNgIACyAFRQ1oIAUgBSgCBEGAAnI2AgQMaAsgA0EcayICIAIoAgAiBkH/////B3E2AgAgA0EsayICIAQgBCAE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AyAFENQGCyAGQfABaiQAC0gBAn8CfyABQR9NBEAgACgCBCECIAAMAQsgAUEgayEBIABBBGoLKAIAIQMgACACIAF2NgIEIAAgAkEgIAFrdCADIAF2cjYCAAtCAQJ/AkAgAEUNAAJAIAAvARAiA0GCBHFBggRHDQAgAC0AEiABRw0AIAAoAggPCyADQQFxDQAgACABEO4JIQILIAILzAkCBH4EfyMAQfAAayIKJAAgBEL///////////8AgyEFAkACQCABUCIJIAJC////////////AIMiBkKAgICAgIDA//8AfUKAgICAgIDAgIB/VCAGUBtFBEAgA0IAUiAFQoCAgICAgMD//wB9IghCgICAgICAwICAf1YgCEKAgICAgIDAgIB/URsNAQsgCSAGQoCAgICAgMD//wBUIAZCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhBCABIQMMAgsgA1AgBUKAgICAgIDA//8AVCAFQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQQMAgsgASAGQoCAgICAgMD//wCFhFAEQEKAgICAgIDg//8AIAIgASADhSACIASFQoCAgICAgICAgH+FhFAiCRshBEIAIAEgCRshAwwCCyADIAVCgICAgICAwP//AIWEUA0BIAEgBoRQBEAgAyAFhEIAUg0CIAEgA4MhAyACIASDIQQMAgsgAyAFhFBFDQAgASEDIAIhBAwBCyADIAEgASADVCAFIAZWIAUgBlEbIgwbIQUgBCACIAwbIghC////////P4MhBiACIAQgDBsiB0IwiKdB//8BcSELIAhCMIinQf//AXEiCUUEQCAKQeAAaiAFIAYgBSAGIAZQIgkbeSAJQQZ0rXynIglBD2sQqQEgCikDaCEGIAopA2AhBUEQIAlrIQkLIAEgAyAMGyEDIAdC////////P4MhBCALRQRAIApB0ABqIAMgBCADIAQgBFAiCxt5IAtBBnStfKciC0EPaxCpAUEQIAtrIQsgCikDWCEEIAopA1AhAwsgBEIDhiADQj2IhEKAgICAgICABIQhAiAGQgOGIAVCPYiEIQQgA0IDhiEBIAcgCIUhAwJAIAkgC0YNACAJIAtrIgtB/wBLBEBCACECQgEhAQwBCyAKQUBrIAEgAkGAASALaxCpASAKQTBqIAEgAiALEP8CIAopAzAgCikD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KAIAIgE2AgwgASADNgIIIAIgAzYCCCADIgIoAgghAwsgAkEANgIICyAEQQFqIQQMAAsACwNAIAMEQCADKAIIIQEgAxAjIAEhAwwBCwsgCCECCyAJECMMAwUgBCgCDCEEDAELAAsACyAKQQJHDQIgBiACKAIMIgg2AgggBiACKAIQIgM2AgQgAkIANwIMIAhBADYCCCADQQA2AggCQCAGQQhqIAFBAWsiARCbBSIFBH8gAwUgBkEEaiABEJsFIgVFDQEgBigCBAsQjgIgBigCCBCOAgwBCyACIAYoAggiATYCDCABIAI2AgggAiAGKAIEIgE2AhAgASACNgIIQQAhBQsgBQ0AQQAhBQwBCyACEI4CQQAhAgsgACACNgIAIAZBEGokACAFC+ABAQN/IwBBEGsiAyQAAkACQANAIAENASAAKAKAAiACSgRAQQAgACAAKAKYAiACQX8Q9QYiASABQeUARhshASACQQFqIQIMAQsLIAAQpARBACEBIAAtAO0BRQ0BIAAoAjBB/wFHDQEgACgCNEUNAUEAIQIgA0EANgIMIABBFiADQQxqQQAQUiIBDQEgAygCDCIBQQFBAhB1GgJAAkACQCABEENB5ABrDgIAAQILQQggAUEAEL8BIgIgAkEBRhshAgsgACACNgIwCyABEDohAQwBCyAAEKQECyADQRBqJAAgAQuYAQEDfyABLQAHRQRAQQAPCwJAAkAgARDCCiICDQAgASgCACIDIAMoAjhBAWo2AjggASgCDEEBIAEpAyAQWBogAUEAOgAHIAEoAgwQQyECIAMgAygCOEEBazYCOCACQeQARg0BIAEoAgwQOiICDQAgASgCACgCKA0BIAFBAToABkGLAiECCyAABEAgACACENgBCyACIQQLIAQLGQAgACABIAIQ1AoiAEUEQEEADwsgACgCCAuEBAICfwR+IwBBEGsiByQAIAcgAygCACIINgIMAkAgCEUEQEIBIQlCf0IBIAAbIQsgASACaiECQQAhAANAIAEgAkkEQCAHIAEgBxClASABaiIANgIIIAcpAwAhDEEAIAdBCGoQ6gEgCSAMfiAKfCEKIAcoAgghAQNAAkAgASACTw0AIAEtAAANACABQQFqIQEMAQsLIAcgATYCCCALIQkMAQsLIAUgAiAAazYCACADIAA2AgAgBCAKNwMADAELIwBBEGsiCCQA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hUKAgICAgICAgIB/gyENIARCMIinQf//AXEhCAJAAkAgAkIwiKdB//8BcSIJQf//AWtBgoB+TwRAIAhB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiDEKAgICAgIDA//8AVCAMQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQ0MAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhDSADIQEMAgsgASAMQoCAgICAgMD//wCFhFAEQCADIAJCgICAgICAwP//AIWEUARAQgAhAUKAgICAgIDg//8AIQ0MAwsgDUKAgICAgIDA//8AhCENQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAQgAhAQwCCyABIAyEUARAQoCAgICAgOD//wAgDSACIAOEUBshDUIAIQEMAgsgAiADhFAEQCANQoCAgICAgMD//wCEIQ1CACEBDAILIAxC////////P1gEQCAFQcACaiABIAogASAKIApQIgYbeSAGQQZ0rXynIgZBD2sQqQFBECAGayEGIAUpA8gCIQogBSkDwAIhAQsgAkL///////8/Vg0AIAVBsAJqIAMgCyADIAsgC1AiBxt5IAdBBnStfKciB0EPaxCpASAGIAdqQRBrIQYgBSkDuAIhCyAFKQOwAiEDCyAFQaACaiALQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABCkASAFQZACakIAIAUpA6gCfUIAIARCABCkASAFQYACaiAFKQOYAkIBhiAFKQOQAkI/iIQiBEIAIAJCABCkASAFQfABaiAEQgBCACAFKQOIAn1CABCkASAFQeABaiAFKQP4AUIBhiAFKQPwAUI/iIQiBEIAIAJCABCkASAFQdABaiAEQgBCACAFKQPoAX1CABCkASAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABCkASAFQbABaiAEQgBCACAFKQPIAX1CABCkASAFQaABaiACQgAgBSkDuAFCAYYgBSkDsAFCP4iEQgF9IgJCABCkASAFQZABaiADQg+GQgAgAkIAEKQBIAVB8ABqIAJCAEIAIAUpA6gBIAUpA6ABIgwgBSkDmAF8IgQgDFStfCAEQgFWrXx9QgAQpAEgBUGAAWpCASAEfUIAIAJCABCkASAGIAkgCGtqIQYCfyAFKQNwIhNCAYYiDiAFKQOIASIPQgGGIAUpA4ABQj+IhHwiEELn7AB9IhRCIIgiAiAKQoCAgICAgMAAhCIVQgGGIhZCIIgiBH4iESABQgGGIgxCIIgiCyAQIBRWrSAOIBBWrSAFKQN4QgGGIBNCP4iEIA9CP4h8fHxCAX0iE0IgiCIQfnwiDiARVK0gDiAOIBNC/////w+DIhMgAUI/iCIXIApCAYaEQv////8PgyIKfnwiDlatfCAEIBB+fCAEIBN+IhEgCiAQfnwiDyARVK1CIIYgD0IgiIR8IA4gDiAPQiCGfCIOVq18IA4gDiAUQv////8PgyIUIAp+IhEgAiALfnwiDyARVK0gDyAPIBMgDEL+////D4MiEX58Ig9WrXx8Ig5WrXwgDiAEIBR+IhggECARfnwiBCACIAp+fCIKIAsgE358IhBCIIggCiAQVq0gBCAYVK0gBCAKVq18fEIghoR8IgQgDlStfCAEIA8gAiARfiICIAsgFH58IgtCIIggAiALVq1CIIaEfCICIA9UrSACIBBCIIZ8IAJUrXx8IgIgBFStfCIEQv////////8AWARAIBYgF4QhFSAFQdAAaiACIAQgAyASEKQBIAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hCkIAIAF9IQsgBkH+/wBqDAELIAVB4ABqIARCP4YgAkIBiIQiAiAEQgGIIgQgAyASEKQBIAFCMIYgBSkDaH0gBSkDYCIMQgBSrX0hCkIAIAx9IQsgASEMIAZB//8AagsiBkH//wFOBEAgDUKAgICAgIDA//8AhCENQgAhAQwBCwJ+IAZBAEoEQCAKQgGGIAtCP4iEIQogBEL///////8/gyAGrUIwhoQhDCALQgGGDAELIAZBj39MBEBCACEBDAILIAVBQGsgAiAEQQEgBmsQ/wIgBUEwaiAMIBUgBkHwAGoQqQEgBUEgaiADIBIgBSkDQCICIAUpA0giDBCkASAFKQM4IAUpAyhCAYYgBSkDICIBQj+IhH0gBSkDMCIEIAFCAYYiAVStfSEKIAQgAX0LIQQgBUEQaiADIBJCA0IAEKQBIAUgAyASQgVCABCkASAMIAIgAiADIAJCAYMiASAEfCIDVCAKIAEgA1atfCIBIBJWIAEgElEbrXwiAlatfCIEIAIgAiAEQoCAgICAgMD//wBUIAMgBSkDEFYgASAFKQMYIgRWIAEgBFEbca18IgJWrXwiBCACIARCgICAgICAwP//AFQgAyAFKQMAViABIAUpAwgiA1YgASADURtxrXwiASACVK18IA2EIQ0LIAAgATcDACAAIA03AwggBUHQAmokAAvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEBBfyEEIAAgAlQgASADUyABIANRGw0BIAAgAoUgASADhYRCAFIPC0F/IQQgACACViABIANVIAEgA1EbDQAgACAChSABIAOFhEIAUiEECyAECzUAIAAtABFBkAFxBEAgABCHBQsgACgCGARAIAAoAhQgACgCIBBeIABBADYCGAsgAEEANgIIC5gEAwN8An4CfwJ8AkAgAL0iBEI0iKdB/w9xIgZByQdrQT9JBEAgBiEHDAELIAZByAdNBEAgAEQAAAAAAADwP6APCyAGQYkISQ0ARAAAAAAAAAAAIARCgICAgICAgHhRDQEaIAZB/w9GBEAgAEQAAAAAAADwP6APCyAEQgBTBEBEAAAAAAAAABAQ/wkPC0QAAAAAAAAAcBD/CQ8LQYC3AysDACAAokGItwMrAwAiAaAiAiABoSIBQZi3AysDAKIgAUGQtwMrAwCiIACgoCIBIAGiIgAgAKIgAUG4twMrAwCiQbC3AysDAKCiIAAgAUGotwMrAwCiQaC3AysDAKCiIAK9IgWnQQR0QfAPcSIGQfC3A2orAwAgAaCgoCEAIAZB+LcDaikDACAFQi2GfCEEIAdFBEACfCAFQoCAgIAIg1AEQCAEQoCAgICAgICIP32/IgEgAKIgAaBEAAAAAAAAAH+iDAELIwBBEGshByAEQoCAgICAgIDwP3y/IgIgAKIiASACoCIDRAAAAAAAAPA/YwR8IAdCgICAgICAgAg3AwggByAHKwMIRAAAAAAAABAAojkDCEQAAAAAAAAAACADRAAAAAAAAPA/oCIAIAEgAiADoaAgA0QAAAAAAADwPyAAoaCgoEQAAAAA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AEcLC54BAQJ/IAAtABEiAUEGRgRAIAAoAiwaDwsgAUECTwR/AkAgACgC6AEEQCAAQQJBfxCBCSIBIAAgAC0AFEEAEPsDIAEbIQIMAQsgACgCRCgCAEEAIAFBAkcbRQRAIABBAEEAEPsDIQIgAC0ADyABQQNJcg0BIABBBjoAESAAQQQ2AiwgABD1BA8LIABBABCACSECCyAAIAIQ/AMFQQALGguYAQECfyAALQAIBEAgACgCACIBKALcAUUEQCABIAAoAgwiATYC3AEgARA6GiAAQQA2AgwLIABBADoACAsgACgCDBCYARogACICKAIcIQADQCAABEAgACgCCCEBIAAoAgwQIyAAECMgASEADAELCyACQQA2AhwgAigCLBAjIAIoAlwQuQogAigCEBCOAiACQQRqQQBB3AAQKBoLcQEBfyAAKALcARCYARoDQCABQShGRQRAIAAgAUECdGooAjwQmAEaIAFBAWohAQwBCwsgACgC+AEQIyAAKALgARAjIAAoAuQBECMgACgCKBAjIAAoAiwQIyAAKAIkIgEgASgCACgCCBEBABogABAjQQALiwEBAn8jAEEQayIEJAAgACgCBCEDIAAQTAJAIAFFBEBBACECIANBAEEAENkCIgFFDQELIAAgASACEMAKGgsgAC0ACEECRgRAIAMoAgAQgAcgA0EBIARBDGpBABCsAUUEQCADIAQoAgwiARCzCiABEKMECyADQQE6ABQgAxDMCgsgABDJCiAEQRBqJAALKAAgAC0ABUUEQCAAKAIoECMgACgCNBD/BCAAQQA2AjQLIABBADYCKAunBgIKfwJ+IwBBEGsiByQAAn8gAywAACILQQBIBEAgAyAHQQxqEHMaIAcoAgwMAQsgC0H/AXELIQ8gASEOIAIhDSAFIQsgBiEMIwBBEGsiCSQAQYsCIQgCQCADIAlBCGoiARCEAyADaiICIAEQhAMgAmoiCiADIARqIhBLDQBBACECQQAhBEEAIQEDQAJAAkAgCiAQSQRAIAsgDHJFBEBBACEIDAILQQAhCCAJQQA2AgACQAJ/IARBAXEEQAJAIAosAAAiBEEASARAIAogCRBzIQQgCSgCACEIDAELIAkgBEH/AXEiCDYCAEEBIQQLIAEgCEgNAiAEIApqIQoLIAosAAAiAUEASARAIAogCUEEahBzDAELIAkgAUH/AXE2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EWtBFG1BAWo2AiBB5AAhFgyZAQsgDCAFKAIMIgFBKGxqIQsgDCAFKAIEIg5BKGxqIgYvARAiAiAMIAUoAggiCUEobGoiAy8BEHJBAXEEQCALEGIMnQELAkACQCACQRJxRQRAIAYgEkEAEKYDRQ0BDKEBCyACQYAIcUUNASAGEOcBDaABCyAGLwEQQX1xIQILAkACQCADLwEQIg1BEnFFBEAgAyASQQAQpgNFDQEMoQELIA1BgAhxRQ0BIAMQ5wENoAELIAMvARBBfXEhDQsgDCAJQShsaiIPKAIMIAwgDkEobGoiECgCDGoiCiAHKAJ4Sg2NASALIApBAmogASAJRiILEL8DDZ4BIAwgAUEobGoiASABLwEQQcDkA3FBAnI7ARAgC0UEQCABKAIIIAwgCUEobGooAgggDygCDBAlGiADIA07ARALIAEoAgggDygCDGogDCAOQShsaigCCCAQKAIMECUaIAYgAjsBECAKQX5xIAogEkEBSxsiAiABKAIIakEAOgAAIAIgASgCCGpBADoAASABIAEvARBBgARyOwEQIAEgEjoAEiABIAI2AgwMnAELIAwgBSgCBEEobGoiARDcCCEDIAwgBSgCCEEobGoiAhDcCCEKIAwgBSgCDCIJQShsaiEGAkACQCADIApxQQRxBEAgASkDACEqIAggAikDACIrNwOoAgJAAkACQAJAAkACQCAFLQAAQeoAaw4EAAECAwQLIAhBqAJqICoQ4QRFDQQMBgsCfyAIQagCaiEDAn8gKkKAgICAgICAgIB/UQRAQQEgAykDACIqQgBZDQEaIAMgKkKAgICAgICAgIB/hTcDAEEADAILIANCACAqfRDhBAsLRQ0DDAULIAgpA6gCISsCQAJAICpCAFUEQEEBIQMgK0L///////////8AICqAVQ0CICtCAEKAgICAgICAgIB/ICqAfVkNAQwCCyAqQgBZDQAgK0IAVQRAQQEhA0IAQoCAgICAgICAgH8gK4B9ICpYDQEMAgsgK0IAWQ0AQQEhAyAqQoCAgICAgICAgH9RICtCgICAgICAgICAf1FyDQFCACArfUL///////////8AQgAgKn2AVg0BCyAIICogK343A6gCQQAhAwsgA0UNAgwECyAqUA0EICpCf1EgK0KAgICAgICAgIB/UXENAyAIICsgKn83A6gCDAELICpQDQMgCCArQgEgKiAqQn9RG4E3A6gCCyAGIAgpA6gCNwMAIAwgCUEobGoiASABLwEQQcDkA3FBBHI7ARAMngELIAIvARAgAS8BEHJBAXENAQsgARBQITMgAhBQITQCfAJAAkACQAJAAkAgBS0AAEHqAGsOBAABAgMECyAzIDSgDAQLIDQgM6EMAwsgMyA0ogwCCyAzRAAAAAAAAAAAYQ0CIDQgM6MMAQsgARBfISogAhBfISsgKlANASArQgEgKiAqQn9RG4G5CyIzEMIGDQAgBiAzOQMAIAwgCUEobGoiASABLwEQQcDkA3FBCHI7ARAMnAELIAYQYgybAQsgBSgCBCIBRQ2aASAMIAFBKGxqQgAQkAEMmgELIAwgBSgCDCIDQShsaiEBIAwgBSgCCEEobGoiAi8BECAMIAUoAgRBKGxqIgYvARByQQFxBEAgARBiDJoBCyACEF8hKiAGEF8hKwJAAkACQAJAIAUtAAAiAkHmAGsOAgABAgsgKiArgyEqDAILICogK4QhKgwBCyArUA0AQVEgAmsgAiArQgBTIgYbIQJCACArfULAACArQkBVGyArIAYbIixCwABZBEBCACACQf8BcUHoAEcgKkIAU3GtfSEqDAELIAJB/wFxQegARgRAICogLIYhKgwBCyAqICyIISsgKkIAWQRAICshKgwBC0J/QsAAICx9hiArhCEqCyABICo3AwAgDCADQShsaiIBIAEvARBBwOQDcUEEcjsBEAyZAQsgDCAFKAIEQShsaiIBEKUDIAEgASkDACAFNAIIfDcDAAyYAQsCQCAMIAUoAgRBKGxqIgEvARAiA0EEcQ0AIAFBwwAgEhCkAyABLwEQIgNBBHENACAFKAIIDZUBQRQhBAybAQsgASADQcDkA3FBBHI7ARAMlwELIAwgBSgCBEEobGoiAS0AEEEkcUUNlgEgARDaCAyWAQsCQCAMIAUoAgRBKGxqIgEtABFBBHFFDQAgARDnASIERQ0ADJkBC0EAIQQgASAFLQAIIBIQ2QgiAUUNlQEgASEEDJgBCyAMIAUoAgwiC0EobGoiAy8BECICIAwgBSgCBCINQShsaiIGLwEQIglxIg5BBHEEQCADKQMAIiogBikDACIrVQRAIAFBmOkBai0AAA2TAUEBIRcMlgELICogK1MEQCABQYzpAWotAAANkwFBfyEXDJYBCyABQZLpAWotAAANkgEMjwELIAUvAQIhCiACIAlyIg9BAXEEQCAKQYABcQRAQQEhF0EAIA5BAXEgAkGAAnEbDY4BIAJBAXFFDY0BQX8hF0GM6QEMjwELIApBEHENkgFBASEXDJUBCyAKQccAcSIBQcMATwRAIA9BAnFFDYsBIAlBLnFBAkYEQCAGQQAQjgQgAy8BECECCyACQS5xQQJHDYsBIANBABCOBAyLAQsgAUHCAEcNigEgCUEscUUgCUECcXINiAEgBiASQQEQpgMaIAYvARBBwGRxIAlBvxtxciIJQQJyIAIgCyANRhsiAUH//wNxIQIMiQELIBcNkwFBACEXDJABC0EAIQFBACEGIAUtAAJBAXEEQCAFQQRrKAIAQQRqIQYLIAUoAgwiAkEAIAJBAEobIQkgBSgCCCEKIAUoAgQhCyAFKAIQIQMDQCABIAlGDZMBIAEhAiADKAIQIAFqLQAAIQ0gBgRAIAYgAUECdGooAgAhAgsgDCACIAtqIg5BKGxqIAwgAiAKaiIXQShsaiADIAFBAnRqKAIUEKMDIgIEQCANQQFxIQYCQCADKAIQIAFqLQAAQQJxRQ0AIAwgDkEobGotABBBAXFFBEAgDCAXQShsai0AEEEBcUUNAQtBACACayECC0EAIAJrIAIgBhshFwyUAQUgAUEBaiEBQQAhFwwBCwALAAsgF0EASARAIAUoAgRBFGwgEWpBFGshBQySAQsgF0UEQCAFKAIIQRRsIBFqQRRrIQUMjAELIAUoAgxBFGwgEWpBFGshBQyRAQsgDCAFKAIEQShsakECEKIDIQIgDCAFKAIIQShsakECEKIDIQMgBSgCDCEBIAMgAkEDbGpBkIECQZmBAiAFLQAAQSxGG2oxAAAiKkICUQRAIAwgAUEobGoiASABLwEQQcDkA3FBAXI7ARAMkQELIAwgAUEobGoiASAqNwMAIAEgAS8BEEHA5ANxQQRyOwEQDJABCyAMIAUoAghBKGxqIAwgBSgCBEEobGogBSgCDBCiAyAFKAIQc6wQkAEMjwELIAwgBSgCCEEobGohASAMIAUoAgRBKGxqIgItABBBAXFFBEAgASACQQAQogNFrRCQAQyPAQsgARBiDI4BCyAFKAIEIQIgDCAFKAIIQShsaiIBEGIgDCACQShsaiICLQAQQQFxDY0BIAFBBDsBECABIAIQX0J/hTcDAAyNAQsgACgCaCEBAkAgACgC1AEiAgRAQQEgBSABa0EUbSIBQQdxdCIDIAIoAhggAUEDdmoiAS0AACICcQ2LASABIAIgA3I6AAAgACgCaCgCBCEBDAELIAEoAgQiASAFKAIERg2KAQsgBSABNgIEDIwBCyAMIAUoAgRBKGxqIAUoAgwQogMNiAEMiwELIAwgBSgCBEEobGogBSgCDEUQogNFDYcBDIoBCyAMIAUoAgRBKGxqLQAQQQFxDYYBDIkBCyAMIAUoAgRBKGxqIgEtABBBAXENhQEgARAvIAUoAgxGDYUBDIgBCwJAIAwgBSgCBEEobGotABBBAXFFBEAgDCAFKAIMQShsai0AEEEBcUUNAQsgDCAFKAIIQShsahBiDIgBCyAMIAUoAghBKGxqQgAQkAEMhwELIAwgBSgCBEEobGotABBBAXFFDYMBDIYBCyAAKAJgIAUoAgRBAnRqKAIALQACRQ2FASAMIAUoAgxBKGxqEGIMggELIAAoAmAgBSgCBEECdGohASAFKAIIIQ0DQCABKAIAIQsDQCALKAJAIQ4CQCAAKAIcIgIgCygCGEcEQCALLQACBEACQCALLQAAQQNHDQAgCygCHCIBQQBMDQAgCyAMIAFBKGxqIgEoAgwiAzYCSCALIAM2AkwgCyABKAIIIgM2AkQMcwsgDCAFKAIMQShsahBiDIkBCyALKAIkIQEgCy0AAwRAAkAgCygCCCICBEAgDUECdCACaigCBCICDQELQQAhBCALENgIIgMNfQxyCyACQQFrIQ0gC0EgaiEBDAQLIAEQhQVFDXAMAQsgCygCJBCFBQ0AIAsvATYhCgxxC0EAIQQgCxDXCCIDRQ0ACwsMdwsgESAMIAUoAgRBKGxqIgEoAgBBFGxqKAIIIQIgAUEAOwEQIAJBFGwgEWpBFGshBQyDAQsCQCAHLQBeIgFBwQBxRQ0AIAAtAJMBQf4BRg0AIAUoAhAiAkUEQCAAKALEASICRQ0BCyABQcAAcQRAIwBBoAFrIgYkACAGQQA2ApwBIAZBgAFqQQBBAEEAIAAoAgAiCygCeBCaAQJAIAsoAsQBQQJOBEAgAiEBA0AgAi0AACIKRQ0CA0ACQCABQQFqIQEgCkH/AXFBCkYNACABLQAAIgoNAQsLIAZBgAFqIgNB/OQBQQMQRCADIAIgASACaxBEIAEhAgwACwALIAAvARAEQEEBIQEDQCACLQAARQ0CIAZBgAFqIAICfyACIQNBACEJIwBBEGsiCiQAIAZBADYCmAEDQAJAIAMtAAAEQCADIApBDGoQjwQhDSAKKAIMQZwBRw0BIAYgDTYCmAELIApBEGokACAJDAILIAMgDWohAyAJIA1qIQkMAAsACyIDEEQgBigCmAEiCUUNAgJAIAIgA2oiAi0AAEE/RgRAIAlBAk4EQCACQQFqIAZBnAFqENACGiAGKAKcASEDDAILIAYgATYCnAEgASEDDAELIAYgACACIAkQ3wkiAzYCnAELIANBAWoiCiABIAEgCkgbIQEgAiAJaiECIAAoAmQgA0EBa0EobGoiAy8BECIJQQFxBEAgBkGAAWpBgpgBQQQQRAwBCyAJQSRxBEAgBiADKQMANwNQIAZBgAFqQenuACAGQdAAahA+DAELIAlBCHEEQCAGIAMrAwA5A0AgBkGAAWpBnt0AIAZBQGsQPgwBCyAJQQJxBEAgCy0AVCIKQQFHBEAgBkHYAGoiCUEAQSgQKBogBiALNgJsIAkgAygCCCADNAIMIApBABDZARogCUEBEMwBQQdGBEAgBkEANgKIASAGQQc6AJQBCyAGIAYpA2BCIIk3AzAgBkGAAWpBtdQBIAZBMGoQPiAGQdgAahCcAQwCCyAGIAMpAwhCIIk3AyAgBkGAAWpBtdQBIAZBIGoQPgwBCyAJQYAIcQRAIAYgAygCADYCECAGQYABakHQwAEgBkEQahA+BSAGQYABakG10QFBAhBEQQAhCiADKAIMIglBACAJQQBKGyEJA0AgCSAKRwRAIAYgAygCCCAKai0AADYCACAGQYABakGWDCAGED4gCkEBaiEKDAELCyAGQYABakH12gFBARBECwwACwALIAZBgAFqIAIgAhAxEEQLIAYtAJQBBEAgBkGAAWoQpwILIAZBgAFqEMUBIQEgBkGgAWokACAHKALYASABIAcoAtQBEQUAIAEQIwwBCyAHKALEAUECTgRAIAggAjYCYCAHQczAACAIQeAAahA8IQFBASAHKALYASAAIAEgBygC1AERBgAaIAcgARAnDAELQQEgBygC2AEgACACIAcoAtQBEQYAGgsgBSAFKAIEIgFBjPYDKAIATgR/IAUtAABBtQFGDYMBQQEhASAAKAJsIgJBASACQQFKGyECA0AgASACRwRAIAAoAmggAUEUbGoiAy0AAEEORgRAIANBADYCBAsgAUEBaiEBDAELCyAFQQA2AgRBAAUgAQtBAWo2AgQgACAAKAK4AUEBajYCuAEMfwsgBSgCBCEBIAwgBRDWCCEqIAwgAUEobGoiASgCCCAqIAE0AgyCIipCA4inai0AACAqp0EHcXZBAXFFBEAgACAAKALAAUEBajYCwAEMfwsgACAAKAK8AUEBajYCvAEMgQELIAUoAgQhASAMIAUQ1gghKiAMIAFBKGxqIgEoAgggKiABNAIMgiIqQgOIp2oiASABLQAAQQEgKqdBB3F0cjoAAAyAAQsgDCAFKAIEQShsaiIBIAEvARBB/+8DcTsBEAx/CwJAIAwgBSgCDCIGQShsaiIDIAUoAhAiAigCAEYEQCACLQAaIQkMAQsgAiASOgAYIAIgAzYCACACIAA2AgwgAi0AGiIJIQEDQCABQQBMDQEgAiABQQFrIgFBAnRqIAwgBSgCCCABakEobGo2AhwMAAsACyAMIAZBKGxqIgEgAS8BEEHA5ANxQQFyOwEQIAIgCSACQRxqIAIoAgQoAhARAgAgAigCFCIGRQ1+IAQhASAGQQBKBEAgCCADECs2AvABIABB9sAAIAhB8AFqEJMBIAIoAhQhAQsgByAjIAIoAhAgBSgCBBDjBEEAIQQgAkEANgIUIAFFDX4gASEEDIEBCyAAIAUQfSEnIAcoAhAgBSgCBEEEdGooAgQhASAFKAIMIgIEfyABEJADIgMgAiACIANJGwVBAAshAiABEEwgJwJ/IAEoAgQoAgAhASACRQRAIAEoAqABDAELIAEgAjYCoAEgAgutNwMADH0LIAAgBRB9IAcoAhAgBSgCBEEEdGooAgQQkAOtNwMADHwLIAhCADcDqAIgBy0AVw19QQYhAQJAIAUoAhAoAggiAkUNACACKAIAIgNFDQAgAygCNEUNfEEAIQEgBSgCCCIGQQAgBkEAShshCiAMIAUoAgxBKGxqIQQgACgCXCEJIActAFwhCwNAIAEgCkcEQCAJIAFBAnRqIAQ2AgAgAUEBaiEBIARBKGohBAwBCwsgByAFLQACOgBcIAIgBiAJIAhBqAJqIAMoAjQRBgAhASAHIAs6AFwgACACEKECIAFFBEAgBSgCBARAIAcgCCkDqAI3AygLIAAgACkDKEIBfDcDKAxfCwJAIAFB/wFxQRNHDQAgBSgCEC0AEEUNAEECIQJBACEEAkACQCAFLwECIgNBBGsOAn8BAAsgAyECCyAAIAI6AJIBDAELIAAgACkDKEIBfDcDKAsgASEEDH4LIAcgBykDICIqQoCAgCCENwMgIAUoAhAoAgghAiAMIAUoAgRBKGxqIgFBARDMASIEDX0gAiABKAIIIAIoAgAoAkwRAAAhASAqQoCAgCCDUARAIAcgBykDIEL///9fgzcDIAsgACACEKECIAAgAC0AlgFB/AFxOgCWAUEAIQQgAUUNeiABIQQMfQsgACgCYCAFKAIEQQJ0aigCACIBLQACDXkgASgCJCIEIAQoAgAiAigCACIDKAIkEQEAIQQgACACEKECIAQNfEEAIQQgASgCJCADKAIoEQEARQ13DHgLIAwgBSgCDCICQShsaiEBIAAoAmAgBSgCBEECdGooAgAiAy0AAgRAIAEQYgx5CyADKAIkKAIAIgQoAgAhBiAfQQA2AhggH0IANwIQIB9CADcCCCAfQgA3AgAgCCASOgDAAiAIIAE2AqgCAkAgBS0AAkEBcQRAIAEQYiAMIAJBKGxqQYEIOwEQIAFBADYCAAwBCyAMIAJBKGxqIgIgAi8BEEHA5ANxQQFyOwEQCyADKAIkIAhBqAJqIAUoAgggBigCLBEEACECIAAgBBChAiAIKAK8AkEASgRAIAggARArNgLgASAAQfbAACAIQeABahCTASAIKAK8AiECCyABIBIQzAEaQQAhBCACRQ14IAIhBAx7C0EAIQEgDCAFKAIMQShsaiIEKAIoIgJBACACQQBKGyEJIARBKGohCiAEKQMAISogACgCYCAFKAIEQQJ0aigCACILKAIkIgMoAgAiDSgCACEGIAAoAlwhBANAIAEgCUcEQCAEIAFBAnRqIAogAUEBaiIBQShsajYCAAwBCwsgAyAqpyAFKAIQIAIgBCAGKAIgEQcAIQQgACANEKECIAQNekEAIQQgAyAGKAIoEQEAIQEgC0EAOgACIAENdAx3CyAAKAJgIAUoAgRBAnRqKAIAIQJCCBBLIgFFDXggASACKAIkNgIAIAEgDCAFKAIMQShsajYCBCAAIAUQfSICQQE7ARAgAiABQawRQQMQ6QkMdgsgCEEANgKoAkEGIQQgBSgCECgCCCIBRQ14IAEoAgAiAkUNeCABIAhBqAJqIAIoAhgRAAAhBCAAIAEQoQIgBA14IAgoAqgCIAE2AgBBACEEIAAgBSgCBEEAQQIQ6gIiAwRAIAMgCCgCqAI2AiQgASABKAIEQQFqNgIEDHYLIAgoAqgCIAIoAhwRAQAaDHcLIAcgBygCyAFBAWo2AsgBAn9BACEBAkAgByAFKAIQIAcoAhAgBSgCBEEEdGooAgAQfCIERQ0AIAQtACtBAUcNACAEKAI0IgJFDQADQCACBEAgAigCCCgCBEEASgRAQQYMBAUgAigCGCECDAILAAsLIAcgBBCvCCICKAIEKAIAIgMoAhQiAUUEQCADKAIQIQELIAQgBCgCGEEBajYCGCACKAIIIAERAQAiAUUEQCACQQA2AgggBEEANgI0IAIQ7QILIAcgBBDTAQsgAQshASAHIAcoAsgBQQFrNgLIAUEAIQQgAUUNdCABIQQMdwtBACEEIAhBqAJqIgJBAEEoECgaIAggBzYCvAIgAiAMIAUoAghBKGxqEJMEIQEgAhArIgMEQCAFKAIEIQEjAEEQayICJAACQAJAAkAgB0GAA2ogByADIAcoAhAgAUEEdGooAgAQfCIDKAIwKAIAIgYQjwEiAUUNACABKAIAIgkoAgQiCkUNACAJKAIUDQELIAIgBjYCACAUIAdB6DwgAhA8NgIAQQEhAQwBCyAHIAMgASAKIBQQhwYiAQ0AQQAhASAHIAMQtwFFDQAgBxCxCCIBDQAgByAHIAMQtwEQsAhBACEBCyACQRBqJAALIAhBqAJqEJwBIAFFDXMgASEEDHYLAn8gBSgCECICIQFBACEEAkAgBygC/AIiA0EATA0AIAcoApQDDQBBBgwBCwJAIAFFDQAgASgCCCgCACIGKAI4RQ0AIANBACADQQBKGyEDAkADQCADIARGDQEgBEECdCEJIARBAWohBCAJIAcoApQDaigCACABRw0AC0EADAILIAcQsQgiBA0AIAEoAgggBigCOBEBACIEDQAgBygC9AMhAyAHKAL4AyEJIAcgARCwCEEAIQQgAyAJaiIDRQ0AIAYoAlAiBkUNACABIAM2AhQgASgCCCADQQFrIAYRAAAhBAsgBAshASACBEAgACACKAIIEKECC0EAIQQgAUUNciABIQQMdQsgBS0ADCICRQRAIActACFBBHENcgsCfyAFKAIIIQFBACAHKAIQIAUoAgRBBHRqKAIEIgQtAAlFDQAaIAQQTCAEIAEgAkEBakH/AXEiAhCnByIDBH8gAwUCfyAEKAIEIgZBzABqIQMCQANAIAMoAgAiAwRAIAEgAygCBEYEQCADKAIAIARGDQMLIANBDGohAwwBCwtBB0IQEK8BIgNFDQEaIAMgBDYCACADIAE2AgQgAyAGKAJMNgIMIAYgAzYCTAsgAiADLQAISwRAIAMgAjoACAtBAAsLCyIERQ1TIARB/wFxQQZGBEAgCCAFKAIQNgLQASAAQcs/IAhB0AFqEJMBCwx0CyAAKAJgIAUoAgRBAnRqKAIAKAIkIgEgAS0AAUG/AXE6AAEMcAsgACgCYCAFKAIEQQJ0aigCACgCJCIBIAEtAAFBwAByOgABDG8LIAUoAgghASAFKAIERQRAIAcgARDMAgxvCyAAIAFBAWpBA3EgAC0AlgFB/AFxcjoAlgEMbgsCfyAHKAIQIAUoAgRBBHRqKAIEIgEoAgQhBCABEExB5QAhAQJAIAQtABFFDQAgBCAEKAIwIgIgBCgCDCgCOEEkahAtIgMQ8AghBiACIANLIAIgBk9xRQRAQdGpBBApDAILIANFDQAgBEEAQQAQ2QIiAQ0AIAQQnwYgBCAGIAJBABDvCCIBDQAgBCgCDCgCSBBdIQEgBCgCDCgCOEEcaiAEKAIwEEULIAELIgFFBEAgASEEDG4LQQAhBCABQeUARg1qIAEhBAxwC0EAIQQgBSgCBCEDIAwgBSgCCCIBQShsakEAIAEbIRBBACEJIwBB0ABrIg4kAAJAIActAFVFBEAgFCAHQa7OABDAAkEBIQEMAQsgBygCuAFBAk4EQCAUIAdBgCAQwAJBASEBDAELIAcoAjwhCgJAIBBFBEBBreUBIQEMAQsgEBAvQQNHBEAgFCAHQf3mABDAAkEBIQEMAgsgEBArIQEgByAHKAI8QXhxQQZyNgI8CyAHLQBeISAgB0EAOgBeIAcgBygCGCImQQZyNgIYIAcgBykDICIuQv7b/v9ug0KBBIQ3AyAgBygCECADQQR0aiIGKAIAIQIgBykDcCEwIAcpA2ghMSAGKAIEIg8QjgEQlwchDSAHKAIUIQYgDiABNgJAIAcgFEHjhwEgDkFAaxDvAyEBIAcgCjYCPAJAIAENACAHKAIQIAZBBHRqIgkoAgQhCwJAIBAEQCALEI4BKAJAIQEgDkIANwNIIAEoAgAEQCABIA5ByABqELwBDQIgDikDSEIAVQ0CCyAHIAcoAhhBCHI2AhgLIA8QuQkhCiALIAcoAhAgA0EEdGooAgwoAlAQ/QMgCyAPQQAQ2QQQ2QQaIAtBIRCLBiAHIBRBu5YBEIoGIgENASAPIBBFQQF0QQAQtAIiAQ0BIBAgDxCOAS0ABUEFR3JFBEAgB0EANgJkC0EHIQEgCyAPEIQCIApBABCLAw0BIA1FBEAgCyAHKAJkIApBABCLAw0CCyAHLQBXDQEgCwJ/IAcsAFoiAUEATgRAIAFB/wFxDAELIA8QiQYLEIgGGiAHIAY6ALABIA4gAjYCMCAHIBRB+LYBIA5BMGoQ7wMiAQ0BIA4gAjYCICAHIBRBq9ABIA5BIGoQ7wMiAQ0BIAdBADoAsAEgDiACNgIQIAcgFEHhtQEgDkEQahDvAyEBIAcgBygCGEF7cTYCGCABDQEgDiACNgIAIAcgFEHvxwEgDhDvAyIBDQFBACENA0AgDUEJTQRAIA8gDUGYgwJqLQAAIgEgDkHIAGoQnAMgDUEBciECIA1BAmohDSALIAEgDigCSCACQZiDAmotAABqELUEIgFFDQEMAwsLIBBFBEAjAEEwayIYJAAgDxBMIAsQTAJAIA8QjgEoAkAiASgCAARAIBggCxCEAqwgCxCQA61+NwMAQQAgAUELIBgQhgMiASABQQxGGyIGDQELQQAhBiAYQQBBMBAoIQEgCygCACECIAEgCzYCGCABIAI2AhQgAUEBNgIQIAEgDzYCBEEAIRlBACEcIwBBEGsiCiQAIAEoAhgQTCABKAIcENULRQRAIAEoAhgiAhCOASEbIAEoAgQQjgEhEwJAAkACfwJAIAEoAgBFDQAgAigCBC0AFEECRw0AQQEhHEEFDAELIAIQ3wIEQEEBIRxBAAwBCyACQQBBABC0AgsiAyABKAIMIgJyRQRAQQchAyABKAIEIAEoAhgQhAJBAEEAEIsDQQdGDQIgASgCDCECDAELIAMNAQtBACEDIAINACABKAIEQQIgAUEIahC0AiIDDQAgAUEBNgIMQQAhAwsgAyABKAIYIg0QhAIiFSABKAIEIgIQhAIiGkdBA3QgAyACEI4BLQAFIh1BBUYbIAMbIQIgDRCQAyENA0ACQCAZQf////8HRg0AIAEoAhAiAyANSyACcg0AQQAhAiABQZD5AygCACABKAIYKAIEKAIkbkEBaiADRwR/IBsgAyAKQQxqQQIQpwEiAkUEQCABIAMgCigCDCgCBEEAEM0LIQIgCigCDBCmAQsgASgCEAUgAwtBAWo2AhAgGUEBaiEZDAELCwJAAkAgAkHlAEYNACACDQEgASANNgIkIAEgDSABKAIQIgJrQQFqNgIgIAIgDUsNAEEAIQIgASgCKA0BIAEgASgCGBCOARCACyIDKAIANgIsIAMgATYCACABQQE2AigMAQsCQCANDQBBASENIAEoAgQiAhBMIAIoAgQiAkEANgIwIAIQoAciAkHlAEYNACACDQELIAEoAgRBASABKAIIQQFqELUEIgINACABKAIAIgIEQCACELICCyAdQQVGBEAgASgCBEECEMILIgINAQsCQCAVIBpIBEBBkPkDKAIAIQIgASgCBCgCBCgCJCEDIBMoAkAhGSATIApBDGoQtQcgDSAaIBVtIh1qQQFrIB1tIh0gHSACIANuQQFqRmshAyANrCEqIAooAgwhDUEAIQIDQCACIAMgDUtyRQRAQQAhAgJAIANBkPkDKAIAIAEoAgQoAgQoAiRuQQFqRg0AIBMgAyAKQQhqQQAQpwEiAg0AIAooAggQXSECIAooAggQpgELIANBAWohAwwBCwsgKiAVrCIsfiErIAJFBEAgE0EAQQEQsQchAgsgK0GQ+QMoAgAiAyAaaqwiKiAqICtVGyEyIAMgFWqsISoDQCACICogMllyRQRAIApBADYCCCAbICogLH+nQQFqIApBCGpBABCnASICRQRAIBkgCigCCCgCBCAVICoQeiECCyAKKAIIEKYBICogLHwhKgwBCwsgAg0BIwBBEGsiAiQAAkAgGSACQQhqELwBIgMNAEEAIQMgAikDCCArVw0AIBkgKxCSAiEDCyACQRBqJAAgAyICDQEgE0EAEK4HIQIMAQsgEyAVIBptIA1sEKYLIBNBAEEAELEHIQILIAINACABKAIEQQAQrwQiAkHlACACGyECCyAcRQRAIAEoAhhBABCxBRogASgCGEEAEK8EGgsgAUEHIAIgAkGKGEYbNgIcCyAKQRBqJAAgAQR/IAEoAhQhAyABKAIYEEwgASgCAARAIAEoAhgiAiACKAIQQQFrNgIQCyABKAIoBEAgASgCGBCOARCACyEKA0AgCiICKAIAIg1BLGohCiABIA1HDQALIAIgASgCLDYCAAsg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QCAGQQFqIANBIGoQcxogAygCIAwBCyAEQf8BcQsiBEUNAQtB/////wchBQJAIAMoAiQiBy0AAA4CAwACCwJ/IAcsAAEiBUEASARAIAdBAWogA0EcahBzGiADKAIcDAELIAVB/wFxCyIFDQILQYsCIQUMBgtBACEFCyAEIAVHDQIgA0IANwMQIANCADcDCCADQgA3AwAgAyAHIANBLGogBBD5BiIEajYCJCADIAQgBmo2AiggA0EoaiADQRBqEMQDIANBJGogA0EIahDEAyADKQMQIghCAlkEQCADKQMIIglCAVUNAgsgAygCJCEEIAMoAighBgsgAyADKAIsIgdBAWo2AixBACEFIAdBADoAACAAIAMoAiw2AgAgASAGQQFqNgIAIAIgBEEBajYCAAwDCwNAIANBLGogAyAIIAkgCCAJUxsQqgogAyADKQMAQgJ9NwMAAkAgCCAJUQRAIANBKGogA0EQahCYBSADQSRqIANBCGoQmAUMAQsgCCAJUwRAIANBKGogA0EQahCYBQwBCyADQSRqIANBCGoQmAULIAMpAxAiCEL///////////8AUiADKQMIIglC////////////AFJyDQALDAELIAQgBUgEQCADIANBLGoiBSAEEPkGIAZqNgIoIAUgA0EoahCwAgwBCyADIANBLGoiBCAFEPkGIAdqNgIkIAQgA0EkahCwAgsgAygCKCEGDAELCyADQTBqJAAgBQvxAwIDfwJ+IwBBMGsiByQAIAdCADcDKCAHQgA3AyAgB0IANwMYIAcgATYCFCAHIAM2AhAgB0EANgIIIAVBADYCACAGQQA2AgACQCACrCAErHxCEXwQSyIIRQRAQQchAQwBCyAHIAg2AgwgB0EUaiABIAJqIgJBACAHQShqEOkBIAdBEGogAyAEaiIDQQAgB0EgahDpAQJAAkADQCAHKAIUIgEgBygCECIEckUNAQJAQQBBAUF/QQAgBykDKCIKIAcpAyAiC1IbIAogC1UbIglrIAkgABsiCSAERSABRXJyRQRAIAdBDGoiASAAIAdBGGogB0EIaiAKEJkFIAEgB0EUaiAHQRBqEKsKIgENASAHQRRqIAIgACAHQShqEOkBIAdBEGogAyAAIAdBIGoQ6QEMAgtBACAEIAFBAEcgCUEASHEbRQRAIAdBDGoiASAAIAdBGGogB0EIaiAKEJkF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AzYCHEEBIQQLIAEgAzYCACACIARB9sAAQQAgAxsgARDeASACIAEoAhwQJyACIAQQogEhAiABQSBqJAAgAiEBIAYQIyAAIAFFOgDtAUEACyEAIAVBEGokACAAC5oBAQV/AkADQCAARQ0BIAAQTCAAKAIEQQhqIQQDQCAEKAIAIgMEQAJAAkAgAkUNACADLQABQQFxDQACQCADLQAADgMAAgACCyADEO4IIgRFDQEgByAEIAUbIQdBACECIAQhAUEBIQUMBAsgAxDkBCADIAE2AgQgA0EEOgAACyADEKwDIANBGGohBAwBCwsLIAdBACAFGyEGCyAGC7ICAgN/AX4gAC8BBEEBTQRAIAAoAgAiASABKAI4QQFqNgI4An8gACgCDBBDQeQARwRAIABBAToABiAAKAIMEDoMAQsgACAAKAIMQQAQmQE3AyBBAAshACABIAEoAjhBAWs2AjggAA8LIwBBEGsiASQAIAFBADYCDAJAAkAgACgCECICBEADQCAALQAHRQRAIAAoAgwQOhoLIAAgAiABQQxqEKsBIAItACAhAyAAQQE2AlggAEEBOgAHIAAgAzoABiAAIAIpAxg3AyAgA0UEQCAAIAFBDGoQ+AYNAQsLIAEoAgwiAg0CDAELIABBAToABgsgACkDICEEAkAgAC0ANEUEQEEAIQIgBCAAKQNQVQ0BDAILQQAhAiAEIAApA0hZDQELIABBAToABgsgAUEQaiQAIAILpwEBBH8jAEEQayIEJAACQCAAKAIMDQAgAEEMaiEBAkAgACgCACICKALcASIDBEAgASADNgIAIAJBADYC3AEMAQsgBCACKALgATYCAEGdowEgBBBKIgNFBEBBByEBDAILIAIgAigCOEEBajYCOCACKAIMIANBASABEMYGIQEgAiACKAI4QQFrNgI4IAMQIyABDQELIABBAToACEEAIQELIARBEGokACABCxwAAkAgAEUNACAAEPkCQQFHDQAgABBfIQELIAELhyECGX8BfiMAQYABayIIJAAgBCgCAC0AAyEXIAhBADYCbCAIQQA2AmggCEEANgJkIAQoAgQQPSEbIAQoAggQPSEMIAggA0ECdEEIayIJrSIgEEsiCjYCcAJAAkAgCkUNACAKQQAgCRAoIRMgIBBLIhVFDQAgG0EBaiEcIAxBAWohGCAVQQAgCRAoIRkgF0E0RyEa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QCACQf8DQfz6AygCABEAACICQQBIBEBBBSECQYSoBCgCACIBQRRGDQEgARD2BCIDQQVGDQEgACABEJsBIAMPCyAAIAE6ABALIAILGAAgAEEAEKIJGiAAKAIYECMgABC4BkEACwsAIAFBADYCAEEACwkAIAAQuAZBAAuPAQECfwJ/QbzwAy4BACIARQRAQYSoBEEcNgIAQX8MAQsCQAJAIABBfkoNAEHpoAwhAQJAAkACQAJAAkACQAJAIABB/wFxQQFrDgsIAAECAwQEBQUGAwcLQYCACAwIC0GAgAIMBwtBgIAEDAYLQf////8HDAULQQEMBAsQEEEQdgwDC0EADAILIAAhAQsgAQsLrwEBA38jAEGgBGsiAyQAIAMgADYCAEGABCADQRBqQfbAACADEMQBIgIQPSEAAkADQCAAQQBKBEAgACACaiEEIABBAWshACAELQAAQS9HDQEMAgsLIAItAABBL0cEQCACQS46AAALIAJBAWohBAtBACEAIARBADoAACABIAJBAEEAEKcDIgE2AgAgAUEASARAQZiyAhDiAUHZCCACQZiyAhDCASEACyADQaAEaiQAIAALdQEBfyMAQRBrIgMkACADIAI2AgAjAEEQayICJAAgAgJ+IAFBwABxRQRAQgAgAUGAgIQCcUGAgIQCRw0BGgsgAiADQQRqNgIMIAM1AgALNwMAQZx/IAAgAUGAgAJyIAIQFRB3IQAgAkEQaiQAIANBEGokACAACwQAQQALCwAgA0EANgIAQQALBgAgABBQC4YBAQV/AkAgACgCJCICRQ0AIAIoAgAiA0EgaiEEA0AgBCIFKAIAIgZBBGohBCACIAZHDQALIAUgAigCBDYCACACECMgAEEANgIkIAMgAygCHEEBayIENgIcIAQNAAJAIAFFDQAgAygCDEEASA0AIAMoAghB5PoDKAIAEQEAGgsgABClCQtBAAuPBAEIf0GKKCEEAkAgACgCJCIFRQ0AIAUoAgAiBkUNAEEBIAEgAmoiBHRBASABdCIKayEHIAZBJGohBgJAIANBAXEEQCAHIAUvAQoiCCAFLwEMIglycUUNASABIAQgASAEShshCyABIQRBASEDA0AgBCALRkUEQEEAIAMgBiAEQQJ0aigCACAIIAR2QQFxShshAyAEQQFqIQQMAQsLAkAgAwRAIABBAiABQfgAaiACEP8D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AwRAIAAtADQNASAAKAIAKAIIECNB/ZUBQQAQSiEBIAAoAgAgATYCCEEBQQcgARshAgwBCyAALQAVBEACfyAFIAUoAgBBAnStEEsiBjYCECAGRQRAIAVBAToAFEEHDAELIAVBAEEAEOQGQQALDQELAkAgAUEDRgRAQQAhAiADQQA2AgwgBCgCBBArIgFFDQMgACAEKAIEEGAiAqxCAXwQSyIENgIcIARFBEBBByECDAQLIAQgASACQQFqECUaAkACQCABLQAAQSRHBEAgAyABNgIMDAELQQAhAiAFQQAgACgCHEEBakEAIANBDGoQkwchBCADKAIMIgFFDQELIAAoAgAoAggQIyABEPAKIQEgACgCACABNgIIIAAQkQVBAUEHIAAoAgAoAggbIQIMBAsgBEUNAyAAKAIoIQIMAQsgACgCKCICIQQLIAAgBCACa0EMbSICNgIIIAAgAjYCDCAAIAQtAAAiAToAFCABQQZPBEBBACECIARBADYCCCAAIAAoAgwiBUEBaiIBIAQoAgRqNgIQIAAtABUEQCAAIAAoAigiBCAAKAIwIAVBAnRqKAIAQQxsai0AADoAFCAFRQ0DIAQgBUEBayIBQQxsai0AAUHAAHFFDQMgACABNgIMDAMLIAAgATYCDAwCCyAAIAJBAWo2AhBBACECDAELIAAQkQULIANBEGokACACCw0AIAAQkQUgABAjQQALkAIBB38jAEEQayIEQn83AgggASgCACIAQQAgAEEAShshByABKAIEIQADQCADIAdGRQRAAkAgACgCACIGQQhIDQBBASAGQQhrIgh0IQYgAC0ABUUEQCACIAZyIQIMAQsgAC0ABEECRw0AIARBCGogCEECdGogAzYCACAFIAZyIQULIABBDGohACADQQFqIQMMAQsLQRMhACACIAVBf3NxRQRAQQAhACABAn9BACAEKAIIIgJBAEgNABogAUKAgICAgICA+D83AyggASgCECIFIAJBA3RqIgJBAToABCACQQE2AgBBASAEKAIMIgRBAEgNABogBSAEQQN0aiIDQQE6AAQgA0ECNgIAQQMLNgIUCyAAC0AAIABBzMMBEIgEIgIEfyACBSAEQQwQVyIBNgIAIAFFBEBBBw8LIAFCADcCACABQQA2AgggAEECQQAQzQlBAAsLDgAgASAANAIMNwMAQQALYgACQAJAAkAC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ACEQDAILIAUgARCEAyAFaiEFIAEpAwAhECAALQDvAQRAIBIgEH0hEkIAIRAMAgsgECASfCESQgAhEAUgASgCQCABKAJEIAkgAyASIAEoAgggECAVfEICfSIQpxDwBiAUhSEUCwwACwALAAsgAUEYahCIAyAEIAU2AiwgAUHgAGokACATIBSFIRMgA0EBaiEDDAALAAsgAhA6IQMgAQRAIAEhAwwDCyADDQIgACgCJCgCACEKIARBADYCJCAEIAAoAuABNgIAAkBBrDUgBBBKIgFFBEBBByEDIARBBzYCLAwBCyAEIAAoAgwgAUF/IARBJGpBABCXAyIDNgIsIAEQIwsDQAJAIAMNACAEKAIkEENB5ABHDQBBACEDIAQoAiRBABCZASEQIAAgBCgCJBD0BiEJQQAhAQNAIAMNAiABIAAoAhhODQIgACgCICABai0AAARAIAFBAWohAUEAIQMMAQsgBCgCJCABQQFqIgIQiwIhAyAEQQA2AiAgACgCJCAJIANBfyAEQSBqENgCIQUgBCgCICEIA0AgBUUEQCAEQQA2AhggBEEANgIUIARBADYCECAEQQA2AgwgCCAEQRxqIARBGGogBEEUaiAEQRBqIARBDGogCigCFBEJACIFDQEgBCgCHCILIAQoAhgiDCAJQQAgECABIAQoAgwiDhDwBiARhSERQQEhAyAAKAKAAiINQQEgDUEBShshDQNAIAMgDUYNAiAMIAAoAoQCIANBGGxqKAIAIg9OBEAgCyAPIAkgAyAQIAEgDhDwBiARhSERCyADQQFqIQMMAAsACwsgCARAIAggCigCEBEBABoLQQAgBSAFQeUARhshAyACIQEMAAsACwsgBCgCJBCYARoMAgsgBCgCLCEBDAALAAsgBiARIBNRNgIMIARBMGokACADIQEgBigCDCECIAZBEGokACABQYsCIAEgAnIbDAILIAJBzKQBQQYQSEUEQCMAQRBrIgMkACADIAJBBmo2AgggA0EIahDzBiEGQQghAQJAIAMoAggiBC0AACIFQSxGBEBBASECIAQtAAFFDQEgAyAEQQFqNgIIIANBCGoQ8wYhASADKAIILQAAIQULQQEhAiAFIAFBAkhyDQAgA0EANgIMAkAgAC0A7QFFBEAgA0EMaiAAEP0GIAMoAgwiAg0BCyAAIAYgARC9CiECCyAAEJMCCyADQRBqJAAgAgwCC0EBIQEgA0ELSQ0AIAJByKQBQQoQSA0AIwBBEGsiASQAIAEgAkEKajYCDCABQQA2AgggAUEANgIEIABBCEEIIAFBDGoQ8wYiAiACQRBKGyACQQFGGzYCMAJAIAAtAO0BRQRAIAFBCGogABD9BiABKAIIIgINAQsgAEEXIAFBBGpBABBSIgINACABKAIEIgJBAUECEHUaIAJBAiAAKAIwEHUaIAIQQxogAhA6IQILIAFBEGokACACIQELIAELNgIMQQAhBQwCCyAEQQJ0IAJqKAIQEGlBAE4NACAHQRM2AgxBACEFDAELIAA0AhhCA4ZCCHwQSyIFRQRAIAdBBzYCDEEAIQUMAQsgBUEAIAAoAhhBAWoiCkEDdBAoIQlBACEEIwBBEGsiBiQAAkAgACgCjAINACAAQRAgBkEMakEAEFIiBA0AIAYoAgwiBEEBEPoCGiAEEEMaIAQQOiEECyAGQRBqJAAgByAENgIMIAQNAAJAIAFBAkgNACAAKAIoDQAgACgCGEECdCACaigCDCIEEC9BBUYEQCACKAIEIQQLIAQQL0EFRg0AIAIoAgAiBhAvQQVHBEAgBhBfIAQQX1ENAQsgBwJ/IAAoAgwtAFxBv+wBai0AAEEFRgRAIAAgBCAHQQhqIAkQogoMAQtBASEIIAAgAiADEKEKCyIENgIMIAQNAQsgCkECdCAJaiEEIAIoAgAiBhAvQQVHBH8gByAAIAYgB0EIaiAJEKIKIgY2AgwgBkUFQQELRSABQQJIckUEQCAAKAIYQQJ0IAJqKAIQEGkhAQJAAkAgCA0AIAcgACACIAMQoQoiBjYCDCAGRQ0AIAZBE0cNASAAKAIoDQEgB0GLAjYCDAwBCyAHIABBACABIAMpAwAQ9wYiAzYCDCADDQBBAiEDA0ACQCAAKAIYQQJqIANMBEBBACEGDAELIANBAmsiBiAAKAIgai0AAEUEQCAAIAEgAiADQQJ0aiIIKAIAECsgBiAEIAZBAnRqEPYGIgYNASAIKAIAEGAhBiAEIAAoAhhBAnRqIgggBiAIKAIAajYCAAsgA0EBaiEDDAELCyAHIAY2AgwLIAAtAO4BBEAgB0EMaiAAIAQQoAoLIAcgBygCCEEBajYCCAsgAC0A7AFFDQAgB0EMaiAAIAQgCSAHKAIIEJ8KCyAFECMgABCTAiAHKAIMIQAgB0EQaiQAIAALDgAgASAAKQMgNwMAQQALsQEBAn8CQAJAAkACQAJAAkAgAiAAKAIAIgQoAhgiA2sOAwABAgMLIAEoAgAiARCcASABQQE7ARAgASAAQY/CAEEAEOkJQQAPCyABIAApAyAQYwwCCyAAKAIQBEAgASAANAIUEGMMAgsgAyECIAQoAiwNACABQQAQgAFBAA8LQQAgABCdBSIDDQEgACgCDCIAEOQJQQFrIAJMDQAgASAAIAJBAWoQ4wkQywELQQAhAwsgAwscACAALQAGRQRAQQAPCyAAEIEHIABBAToABkEBC80JAg5/AX4jAEEwayIIJABBASEDAkAgACgCACIGKAI4DQAgAUH//wNxIgsEfyAEKAIAIQlBAQVBAAshAyABQYCABHEEQCAEIANBAnRqKAIAIQUgA0EBaiEDCyABQYCACHEEQCAEIANBAnRqKAIAIQwgA0EBaiEDCyABQYCAEHEEQCAEIANBAnRqKAIAIQoLIAAQgQcgACAMQoCAgICAgICAgH8Qwwo3A0ggACAKQv///////////wAQwwo3A1ACfyACBEAgAi0AAEHEAEYMAQsgBi0A7wELIQIgACABOwEEIAAgAjoANCALQQJPBEAgCRArIgJFBEBBByEDIAkQL0EFRw0CC0EAIQMgAEEANgIUIAUEQCAAIAUQaSIDNgIUCyAGKAIkIQ8gBigCHCEQIAYtAOwBIREgBigCGCESIAZBCGohDSMAQSBrIgUkACAAQRBqIQcjAEEwayIEJAAgBEEANgIoIARCADcDICAEIAtBAms2AhwgBCASNgIYIAQgEDYCECAEIAM2AgwgBCAPNgIIIAQgETYCFAJAIAJFBEAgB0EANgIADAELIARBCGogAiACED0gByAEQSxqELQKIgNBASADIAQoAigbIAMbIQ4LIARBMGokAAJAAkAgDiIEDQBBACEDIAcoAgBFDQEgB0EMEJsFIgQNACAHKAIAQQwQuAoiBEUNAQsgBygCABCOAiAHQQA2AgBBASEDIARBAUcEQCAEIgNBEkcNASAFQQw2AgAgDUGKwQEgBRDOAUEBIQMMAQsgBSACNgIQIA1B/IkBIAVBEGoQzgELIAVBIGokACADDQEjAEEgayIFJAAgACgCACECIAVBADYCHCAFQQA2AhggBUEANgIUIAAgACgCECAFQRhqIAVBFGogBUEc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BBCjAkUgA0EBR3JFBEAgACACKAIEEMsBDAELIAAgAxDYAQsgAUFAaxCsBAsgBCAHNgLoAiABQdACaiQAC/ECAQZ/IwBBoAJrIgEkACAAEH8hBCACKAIAEGkhAyACKAIEECshBiACKAIIEGkhBSAEKAIQIANBBHRqKAIAIQIgBCgC6AIhCCAEQQA2AugCAkAgAUEQaiACIAQgBiADQQFGEK0EIgINAAJAAkAgASgC/AEiAkUNACACLgEiIgNBAUYNACADIAVKDQELQafsBhApIQIMAQsgAUEQakEAIAVBDGwiByACKAIEaigCABCWASEDAkAgAi4BIkEBayAFSgRAIAFBEGpBACAHIAIoAgRqKAIMEJYBKAIEIQUgAygCBCECDAELIAYgAigCLGohBSADKAIEIQIDQCACLQAAIgdFIAdBLEZyDQEgAyACQQFrIgI2AgQMAAsACyABIAU2AgggASAGNgIEIAEgAiAGazYCACAAIARB4CwgARA8IgJBf0F/ED8gAhAjQQAhAgsgAUEQahCsBCAEIAg2AugCIAIEQCAAIAIQ2AELIAFBoAJqJAALmQMCB38CfiMAQbACayIBJAAgABB/IQMgAigCABArIQUgAigCBBArIQQgAigCEBBpIQcgAykDICELIAIoAhQQKyEGIAIoAhgQaSEIIAMoAugCIQkgA0EANgLoAiAFRSAERXJFBEAgAykDICEKIAgEQCADIApC/////3mDNwMgCyABQSBqIAUgAyAEIAcQrQQhBCADIAMpAyAgCkKAgICABoOENwMgAkACQCAEDQACQCALQoCAgCCDIgpCAFINACABKAKMAiIERQ0AIAQtACtBAkcNACABQQA2AhwgAUIANwIUIAFCADcCDCABQgA3AgQgASABQSBqIgU2AgAgBSAEKAIsIAEQ4AEgASgCLEEAIAEoAkQbIQQMAQsgASgClAIiBEUNASADIApQBH8gAUEgahCuBSIEDQEgASgClAIFIAQLKAIYEE4gAyAFEOcCRw0BIABBARCAAQwBCyAERSAGRXINACADEKMCDQAgACAGIAIoAgggAigCDCABQSBqEJgHCyABQSBqEKwECyADIAk2AugCIAFBsAJqJAALQAEBfwJAIAEtAABBpwFHDQAgAS0AB0EDcQ0AIAAoAhgiAigCDCABKAIsRw0AIAAoAgAgAiABQSxqEJYBGgtBAAt2AQR/QQEhAiABLwEGQaAIcQR/QQEFIAEoAiAiA0UEQEECDwsgACgCGCEEQQAhAgNAIAMoAgAgAkoEQCADIAJBBnRqIgUoAhggBCgCDEYEQCAAKAIAIAQgBSgCEBCWARoLIAJBAWohAgwBCwsgACABEL8HQQALC7kHAgl/AX4jAEHwAmsiASQAIAAQfyEGIAIoAgAQKyEDIAIoAgwQKyEIIAIoAhAQKyEHIAIoAhQQKyEKIAIoAhgQaSEEIApFIAhFIAdFcnJFBEAgBigC6AIhCyAGQQA2AugCIAYQ9wEgAUEANgJYIAFCADcDUCABQgA3A0ggBiAHIAMQfCEFIAFBADYCPCABQgA3AjQgASAFNgJUIAFB2gA2AjAgAUHbADYCLCABIAFByABqNgJAIAEgAUHgAGoiBTYCKAJAIAUgAyAGIAggBBCtBCIDDQAgBikDICIMp0GAgIAgcSEFAkACQCABKALMAiIEBEAgBC0AKyIDQQJGBEAgBQ0DIAQoAiwhAyABQQA2AiQgAUIANwIcIAFCADcCFCABQgA3AgwgASABQeAAaiIFNgIIIAMgAygCBEH///9+cTYCBCAFIAQoAiwgAUEIahDgASABKAKEAQ0CIAFBKGogBCgCLBBqGgwDCwJAIAxCgIABg1AgBUEAR3EgA0EBRnINACAEQTBqIQMDQCADKAIAIgNFDQEgAygCCCIJIAcQU0UEQCABQeAAaiABQcgAaiAJEJYBGgsgA0EEaiEDDAALAAsgByAEKAIAIgMQUw0CIAEgBDYCVCABQeAAaiABQcgAaiAFBH8gAwUgAUEoaiAEKAIQEGUaIAQoAgALEJYBGgwCCyABKALQAiIDBEAgAUHgAGogAUHIAGogAygCABCWARogBQ0CIAFBKGogASgC0AIoAiQQTRoMAgsCQCABKALUAiIEKAIEIgMgBxBTDQAgASgCVCgCPCAEKAIYRw0AIAFB4ABqIAFByABqIAMQlgEaCyAFDQEgAUHgAGoQrgUiAw0CIAFBKGogBBCaByAEQRxqIQMDQCADKAIAIgRFDQICQCAEKAIMIgNFDQAgAyAHEFMNACABQeAAaiABQcgAaiADEJYBGgtBACEDAkAgBCgCECIFRQ0AA0AgAyAFKAIATg0BIAUgA0EGdGooAhAiCSAHEFNFBEAgAUHgAGogAUHIAGogCRCWARogBCgCECEFCyADQQFqIQMMAAsACyAEQShqIQMMAAsACyABKAJsIgMNAQsgACABQcgAaiAIIApBARCZByEDCwJAAkACQCADDgICAAELIAYQowJFDQAgACACKAIMEMsBDAELIAEoAmQEQCAAQa3lASACKAIEIAIoAgggAUHgAGoQmAcMAQsgACADENgBCyABQeAAahCsBCAGIAEoAkgQrQUgBiALNgLoAgsgAUHwAmokAAsHACAAKAIwC4IBAQJ/IAAoAhghAgJAIAEtAAAiA0GnAUcEQCADQc0ARw0BIAIoAgggAS4BIEcNASAAKAIAIgAoAnggAigCDEcNASAAIAIgARCWARoMAQsgAigCCCABLgEgRw0AIAEtAAdBA3ENACACKAIMIAEoAixHDQAgACgCACACIAEQlgEaC0EACyABAX9BASECIAEvAQZBoAhxBH9BAQUgACABEL8HQQALC6EJAQx/IwBB0AJrIgEkACAAEH8hBiACKAIAECshCyACKAIMECshByACKAIQECshCCACKAIUEGkhBSACKAIYECshDCACKAIcEGkhDSACKAIgEGkhBAJAIAtFIAhFciAMRSAFQQBIcnINACAGKALoAiEOIAYQ9wEgBiAIIAcQfCIDRQ0AIAUgAy4BIk4NACADKAIEIAVBDGxqKAIAIQkgAUEANgLIAiABQgA3A8ACIAFCADcDuAIgAUF/IAUgBSADLgEgRhs2AsACIAZBADYC6AIgAUEoaiIKIAcgBiALIAQQrQQhBCABQQA2AhwgAUIANwIUIAFB2AA2AhAgAUHZADYCDCABIAM2AsQCIAEgAUG4Amo2AiAgASAKNgIIAkAgBA0AAkACQCABKAKUAiIEBEACQAJAIAQtACsOAwEEAAQLIAQoAiwiAyADKAIEQf///35xNgIEIAFBADYCNCABQShqIANBABDgAUEHIAEoAjQgBi0AVxsiBA0EIAFBCGogAxBqGgwDCyAIIAQoAgAQUyEHIAEgBDYCxAIgBw0BIAQuASIgBUoEQCABQShqIAFBuAJqIAQoAgQgBUEMbGooAgAQlgEaCyABKALAAkEASARAIAFBKGogAUG4AmogASgClAJBIGoQlgEaCyABQQhqIAEoApQCKAIQEGUaIAEoApQCQQhqIQMDQCADKAIAIgMEQCABQQhqIAMoAigQZRogA0EU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QAJAIAIgBUYNACADIAogAkECdCIIaigCACIETwRAIAcgBiAIaigCACAEEFFFDQELIAJBAWohAgwBCwsgAiAFTw0BIAQgB2ohByADIARrIgMNAAtBACEDCwJAIAFBAnFFIANFckUEQANAIAMhAUEAIQIDQCACIAVGDQMCQCAKIAJBAnQiCGooAgAiBCABTQRAIAcgASAEayIDaiAGIAhqKAIAIAQQUUUNAQsgAkEBaiECDAELC0EAIQEgAw0ADAILAAsgAyEBCyAJRQ0BIAYQIwwBCyADIQELIAAgByABQX8QPwsLFAAgACACKAIAEGkQsQlBf0EAED8LoQEBBH8gAigCABArIgEEQCAAAn8jAEEQayICJAAgAkEMahCyCSABQQBBByABQauJAUEHEEgbaiIEEDEhASACKAIMIgBBACAAQQBKGyEFQQAhAANAAkAgACAFRwRAIAQgAEECdEGwrQNqKAIAIgYgARBIDQEgASAGai0AABCABQ0BQQEhAwsgAkEQaiQAIAMMAgsgAEEBaiEADAALAAsQgAELCw0AIABBgAhBf0EAED8LzgECAn8CfiMAQTBrIgEkACABQRhqIgRBAEEAQQAgAigCABCNAiICKAIUQeQAbEHkAGoQmgEgASACQQRBCCACLQAYG2o1AgA3AxAgBEGjDiABQRBqED4DQCADIAIoAhRORQRAIAEgAigCICADQQJ0aigCAEEBaq0iBSACKAIIIgStfEIBfSAFgCIGQgJRBH5CAkIBIARBCmytIAVCC35WGwUgBgs3AwAgAUEYakGiDiABED4gA0EBaiEDDAELCyAAIAFBGGoQnQcgAUEwaiQAC44CAQN/IAIoAgAQjQIhASACKAIEEGkhAgJAIAEoAggEQCACQQAgAkEAShshBANAIAMgBEYEQANAIAIgASgCEE4NBCACQQJ0IgMgASgCIGoiBCAEKAIAQQFqNgIAIAEoAhwgA2pBATYCACACQQFqIQIMAAsABSABKAIcIANBAnRqIgUgBSgCAEEBajYCACADQQFqIQMMAQsACwALQQAhAgNAIAIgASgCEE4NASABKAIcIAJBAnRqQQE2AgAgAkEBaiECDAALAAsgASABKAIIQQFqIgI2AggCQCABKAIMIgNFDQAgAiADIAEtABgiA0EBamxNDQAgASADQQFqOgAYIAAgASgCICgCAEEA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QCACQacBaw4GAQECAgIAAgsgAS0AB0EBcUUNASADIQIDQCACKAIAIgBFDQEgAEEkaiECQQEhBCABKAIsIABHDQALDAILQQIhBCAFKAIAIgAtAFcNAQJ/AkACQCADKAIIIgIEf0EAIQADQCACKAIAIABKBEBBACACIABBBHRqKAIIIAFBfxBrRQ0EIABBAWohACADKAIIIQIMAQsLIAUoAgAFIAALIAFBABA2IgBFDQAgAC0AAEGoAUcNACAAQawBOgAACyADIAUgAygCCCAAEDsiAjYCCEF/IQBBAQwBCyADKAIIIQJBAAshBiACBEAgASABKAIEIgJBgICAwAByNgIEIAUoAgAgARAuIAFBAEE0ECgiAUGnAToAACABIAYEfyADKAIIKAIAQQFrBSAACzsBICABIAMoAgAoAjA2AhwgAygCDCEAIAEgAkGABHE2AgQgASAANgIsCyAFKAIALQBXDQELQQAhBAsgBAswAQJ/IAEgACgCGCICKAIQIgNGBEBBAA8LIAIgATYCECAAIAEQahogAiADNgIQQQELqgEBA38CQCABKAIEQYCABXENACABKAIoIgJFDQAgAS4BIiEDIAAoAgAiBCgCACEAAkAgAS0AAEGpAUYEQCACKAIcIANBFGxqKAIEIAFHDQIgACABQQAQNiIBRQ0CIAIoAhwgA0EUbGogATYCBAwBCyACKAIoIANBFGxqKAIAIAFHDQEgACABQQAQNiIBRQ0BIAIoAiggA0EUbGogATYCAAsgBCABENcHC0EAC9wGAQh/IAAoAhgiAygCCCEEIAMoAgAhBQJAAkACQAJAIAEtAABBpwFrDgMAAQADCyADKAIEIgBFDQEgACgCACIDQQAgA0EAShshAyAAQQhqIQBBASEGA0AgAiADRg0DIAEoAhwiByAAKAIoRgRAQQAhACAEKAIgIgJBACACQQBKGyEDIAQoAhwhAgJAA0AgACADRwRAIAcgAigCCEYEQCACLwEQIAEvASBGDQMLIAJBFGohAiAAQQFqIQAMAQsLIAUoAgAhAiMAQRBrIgAkACAEIAIgBCgCHCAEQSBqIABBDGoQlAs2AhwgACgCDCECIABBEGokACACIgBBAEgNACAEKAIcIABBFGxqIgMgASgCLDYCACADIAEoAhwiBzYCCCADIAEvASAiCDsBECAFIAUoAixBAWoiAjYC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QQFGDQILIAAtAABBpwFHDQAgACgCLCIARQ0AIAAtACtBAUYNAQtBACECCyACCzIAAkAgACgCACIAKAKIAkUNACABKAI0DQAgARDIBygCQCIBRQ0AIAAgASgCCDYCiAILCwMAAQsLACAAQQA7ARRBAgsmACAAKAIQKAIcQShqQdzcAEEAEKgBGiAAIAEoAgQQOSAAIAEQJwsLloQExwIAQYAIC+feATMuMzkuMwB7fQAlcy4legBhZmZpbml0eQBSZWFsQWZmaW5pdHkAYnVzeQB0ZW1wX3N0b3JlX2RpcmVjdG9yeQBub3QgYSB3cml0YWJsZSBkaXJlY3RvcnkAb3BlbkRpcmVjdG9yeQBzaHJpbmtfbWVtb3J5AG91dCBvZiBtZW1vcnkAZmFpbGVkIHRvIGFsbG9jYXRlICV1IGJ5dGVzIG9mIG1lbW9yeQBIQVZJTkcgY2xhdXNlIG9uIGEgbm9uLWFnZ3JlZ2F0ZSBxdWVyeQBJbnRDb3B5AFNDb3B5AFZEZXN0cm95AE11bHRpcGx5AHF1ZXJ5X29ubHkAdW5saWtlbHkAdGFibGUgIiVzIiBoYXMgbW9yZSB0aGFuIG9uZSBwcmltYXJ5IGtleQBmb3JlaWduIGtleQBqc29uX2dyb3VwX2FycmF5AGpzb25fYXJyYXkAanVsaWFuZGF5AGZ0czRhdXgAdW5peABzcWxpdGVfcmVuYW1lX3F1b3RlZml4AHByZWZpeABMSUtFIG9yIEdMT0IgcGF0dGVybiB0b28gY29tcGxleABoZXgAY2hhcmluZGV4AE9wZW5BdXRvaW5kZXgAYXV0b21hdGljX2luZGV4AGF1dG8taW5kZXgAb3JwaGFuIGluZGV4AERyb3BJbmRleABpZHgAUmVvcGVuSWR4AHBjeABtYXgATWVtTWF4ACUwMngAMHgAIEZST00gJyVxJy4nJXElcycgQVMgeABDUkVBVEUgVEFCTEUgeABydwBwc293AGltcGxpZXNfbm9ubnVsbF9yb3cAbm93AGludGVnZXIgb3ZlcmZsb3cAcGFyc2VyIHN0YWNrIG92ZXJmbG93AHdpbmRvdwBzaGFkb3cAUmVzdWx0Um93AElmTnVsbFJvdwBuZXcAbm8gc3VjaCB2aWV3AGNhbm5vdCBtb2RpZnkgJXMgYmVjYXVzZSBpdCBpcyBhIHZpZXcAQ2Fubm90IGFkZCBhIGNvbHVtbiB0byBhIHZpZXcAY2Fubm90IFVQU0VSVCBhIHZpZXcAUHJldgBzdGRldgAgJWxsdQAlYyV1ACUuKno6JXUARnJhZ21lbnRhdGlvbiBvZiAlZCBieXRlcyByZXBvcnRlZCBhcyAlZCBvbiBwYWdlICV1AE11bHRpcGxlIHVzZXMgZm9yIGJ5dGUgJXUgb2YgcGFnZSAldQB1bmFibGUgdG8gdXNlIGZ1bmN0aW9uICVzIGluIHRoZSByZXF1ZXN0ZWQgY29udGV4dABTb3J0ZXJOZXh0AFZOZXh0AGluY29tcGxldGUgaW5wdXQAYnVzeV90aW1lb3V0AGxvY2FsaG9zdABjYW5ub3QgZHJvcCBjb2x1bW4gIiVzIjogbm8gb3RoZXIgY29sdW1ucyBleGlzdABwZXJzaXN0AGZvcmVpZ25fa2V5X2xpc3QAaW5kZXhfbGlzdABmdW5jdGlvbl9saXN0AGNvbGxhdGlvbl9saXN0AGRhdGFiYXNlX2xpc3QAbW9kdWxlX2xpc3QAUFJBR01BIHRhYmxlX2xpc3QAcHJhZ21hX2xpc3QAc2V0IGxpc3QAVmFsdWVMaXN0AHNxbGl0ZV9yZW5hbWVfdGVzdABSb3dTZXRUZXN0AFNlcXVlbmNlVGVzdABmYXN0AExhc3QAQ2FzdABzcXJ0AFNvcnRlclNvcnQAanNvbl9pbnNlcnQASWR4SW5zZXJ0AFNvcnRlckluc2VydAByZXN0YXJ0AGNvdABCaXROb3QASWZOb3QAUGFnZWNvdW50AGZyZWVsaXN0X2NvdW50AG1heF9wYWdlX2NvdW50AFJlc2V0Q291bnQAd2FsX2F1dG9jaGVja3BvaW50AHdhbF9jaGVja3BvaW50AENoZWNrcG9pbnQAU2F2ZXBvaW50AGEgQ0hFQ0sgY29uc3RyYWludAAlc09OIENPTkZMSUNUIGNsYXVzZSBkb2VzIG5vdCBtYXRjaCBhbnkgUFJJTUFSWSBLRVkgb3IgVU5JUVVFIGNvbnN0cmFpbnQAQ3Vyc29ySGludABfY29udGVudABwYXJlbnQARElTVElOQ1QgYWdncmVnYXRlcyBtdXN0IGhhdmUgZXhhY3RseSBvbmUgYXJndW1lbnQAY29tbWVudABBUEkgY2FsbGVkIHdpdGggZmluYWxpemVkIHByZXBhcmVkIHN0YXRlbWVudABBUEkgY2FsbGVkIHdpdGggTlVMTCBwcmVwYXJlZCBzdGF0ZW1lbnQATWF4UGdjbnQAZGVmYXVsdCB2YWx1ZSBvZiBjb2x1bW4gWyVzXSBpcyBub3QgY29uc3RhbnQATXVzdEJlSW50AENhbm5vdCBhZGQgYSBjb2x1bW4gd2l0aCBub24tY29uc3RhbnQgZGVmYXVsdABIYWx0AGxhbm9pdABzdGF0X2luaXQASW5pdABBdXRvQ29tbWl0AGFuYWx5c2lzX2xpbWl0AHNvZnRfaGVhcF9saW1pdABoYXJkX2hlYXBfbGltaXQAam91cm5hbF9zaXplX2xpbWl0AE9mZnNldExpbWl0AFNlZWtIaXQAT04gY2xhdXNlIHJlZmVyZW5jZXMgdGFibGVzIHRvIGl0cyByaWdodABTaGlmdFJpZ2h0AGhnaHQAU2hpZnRMZWZ0AE9mZnNldAByZXNldABqc29uX3NldAB0b28gbWFueSBjb2x1bW5zIGluIHJlc3VsdCBzZXQAJXIgT1JERVIgQlkgdGVybSBkb2VzIG5vdCBtYXRjaCBhbnkgY29sdW1uIGluIHRoZSByZXN1bHQgc2V0AHNuaXBwZXQAc3RhdF9nZXQAc3FsaXRlX2NvbXBpbGVvcHRpb25fZ2V0AHN0cmljdABOb0NvbmZsaWN0AGpzb25fZ3JvdXBfb2JqZWN0AGpzb25fb2JqZWN0AGpzb25fZXh0cmFjdABTdWJ0cmFjdABsc3RhdABmc3RhdAAlc19zdGF0AHRibCxpZHgsc3RhdAB1bnN1cHBvcnRlZCBmaWxlIGZvcm1hdABncm91cF9jb25jYXQAQ29uY2F0AEx0AEd0AGRlZmVyX2ZvcmVpZ25fa2V5cwBhbHdheXMAcGFyYW1ldGVycyBhcmUgbm90IGFsbG93ZWQgaW4gdmlld3MAc3RhdHVzAHN5bmNocm9ub3VzAGluZGV4ICVzIGFscmVhZHkgZXhpc3RzAG91dHB1dCBmaWxlIGFscmVhZHkgZXhpc3RzACVzICVUIGFscmVhZHkgZXhpc3RzAHRyaWdnZXIgJVQgYWxyZWFkeSBleGlzdHMATm90RXhpc3RzAGlnbm9yZV9jaGVja19jb25zdHJhaW50cwBDSEVDSyBjb25zdHJhaW50cwBleHByZXNzaW9ucyBwcm9oaWJpdGVkIGluIFBSSU1BUlkgS0VZIGFuZCBVTklRVUUgY29uc3RyYWludHMAanNvbl9vYmplY3QoKSByZXF1aXJlcyBhbiBldmVuIG51bWJlciBvZiBhcmd1bWVudHMAanNvbl8lcygpIG5lZWRzIGFuIG9kZCBudW1iZXIgb2YgYXJndW1lbnRzACVzX3NlZ21lbnRzAHVuYWJsZSB0byBkZWxldGUvbW9kaWZ5IHVzZXItZnVuY3Rpb24gZHVlIHRvIGFjdGl2ZSBzdGF0ZW1lbnRzAHVuYWJsZSB0byBkZWxldGUvbW9kaWZ5IGNvbGxhdGlvbiBzZXF1ZW5jZSBkdWUgdG8gYWN0aXZlIHN0YXRlbWVudHMAb2Zmc2V0cwByZXZlcnNlX3Vub3JkZXJlZF9zZWxlY3RzAGlpc3Nzc3NzAGlzcwBzZXNzAHVuY29tcHJlc3MAY2Fubm90IG9wZW4gc2F2ZXBvaW50IC0gU1FMIHN0YXRlbWVudHMgaW4gcHJvZ3Jlc3MAY2Fubm90IHJlbGVhc2Ugc2F2ZXBvaW50IC0gU1FMIHN0YXRlbWVudHMgaW4gcHJvZ3Jlc3MAY2Fubm90IGNvbW1pdCB0cmFuc2FjdGlvbiAtIFNRTCBzdGF0ZW1lbnRzIGluIHByb2dyZXNzAGNhbm5vdCBWQUNVVU0gLSBTUUwgc3RhdGVtZW50cyBpbiBwcm9ncmVzcwBhY2Nlc3MAcGFyYW1ldGVycwByZWN1cnNpdmVfdHJpZ2dlcnMAdGhlIElOREVYRUQgQlkgY2xhdXNlIGlzIG5vdCBhbGxvd2VkIG9uIFVQREFURSBvciBERUxFVEUgc3RhdGVtZW50cyB3aXRoaW4gdHJpZ2dlcnMAdGhlIE5PVCBJTkRFWEVEIGNsYXVzZSBpcyBub3QgYWxsb3dlZCBvbiBVUERBVEUgb3IgREVMRVRFIHN0YXRlbWVudHMgd2l0aGluIHRyaWdnZXJzAHF1YWxpZmllZCB0YWJsZSBuYW1lcyBhcmUgbm90IGFsbG93ZWQgb24gSU5TRVJULCBVUERBVEUsIGFuZCBERUxFVEUgc3RhdGVtZW50cyB3aXRoaW4gdHJpZ2dlcnMAQ2hpbGQgcGFnZSBkZXB0aCBkaWZmZXJzAHVuYWJsZSB0byBjbG9zZSBkdWUgdG8gdW5maW5hbGl6ZWQgc3RhdGVtZW50cyBvciB1bmZpbmlzaGVkIGJhY2t1cHMAYWNvcwBJZlBvcwBjb21waWxlX29wdGlvbnMARElTVElOQ1QgaXMgbm90IHN1cHBvcnRlZCBmb3Igd2luZG93IGZ1bmN0aW9ucwBGSUxURVIgY2xhdXNlIG1heSBvbmx5IGJlIHVzZWQgd2l0aCBhZ2dyZWdhdGUgd2luZG93IGZ1bmN0aW9ucwBub24tZGV0ZXJtaW5pc3RpYyBmdW5jdGlvbnMAaW5kZXggZXhwcmVzc2lvbnMAU0VMRUNUcyB0byB0aGUgbGVmdCBhbmQgcmlnaHQgb2YgJXMgZG8gbm90IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIHJlc3VsdCBjb2x1bW5zAHZpcnR1YWwgdGFibGVzIGNhbm5vdCB1c2UgY29tcHV0ZWQgY29sdW1ucwBnZW5lcmF0ZWQgY29sdW1ucwB0YWJsZSAlcyBoYXMgJWQgdmFsdWVzIGZvciAlZCBjb2x1bW5zAHJhZGlhbnMAYWxsIFZBTFVFUyBtdXN0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIHRlcm1zAGVtcHR5X3Jlc3VsdF9jYWxsYmFja3MATG9hZEFuYWx5c2lzAGZsZ3MAZmxhZ3MAdmZzACVkIGNvbHVtbnMgYXNzaWduZWQgJWQgdmFsdWVzAEpTT04gY2Fubm90IGhvbGQgQkxPQiB2YWx1ZXMAZmFpbGVkIG1lbW9yeSByZXNpemUgJXUgdG8gJXUgYnl0ZXMAcGFydGlhbCBpbmRleCBXSEVSRSBjbGF1c2VzAHNob3J0X2NvbHVtbl9uYW1lcwBmdWxsX2NvbHVtbl9uYW1lcwB1bmFibGUgdG8gb3BlbiBhIHRlbXBvcmFyeSBkYXRhYmFzZSBmaWxlIGZvciBzdG9yaW5nIHRlbXBvcmFyeSB0YWJsZXMAY2Fubm90IGNyZWF0ZSB0cmlnZ2VycyBvbiB2aXJ0dWFsIHRhYmxlcwAlcyBSRVRVUk5JTkcgaXMgbm90IGF2YWlsYWJsZSBvbiB2aXJ0dWFsIHRhYmxlcwBjYW5ub3Qgam9pbiB1c2luZyBjb2x1bW4gJXMgLSBjb2x1bW4gbm90IHByZXNlbnQgaW4gYm90aCB0YWJsZXMAQVVUT0lOQ1JFTUVOVCBub3QgYWxsb3dlZCBvbiBXSVRIT1VUIFJPV0lEIHRhYmxlcwAlcyBjYW5ub3QgdXNlIHZhcmlhYmxlcwB0b28gbWFueSBTUUwgdmFyaWFibGVzAHN1YnF1ZXJpZXMAY2Fubm90IHVzZSB3aW5kb3cgZnVuY3Rpb25zIGluIHJlY3Vyc2l2ZSBxdWVyaWVzAGNvdW50X2NoYW5nZXMAdG90YWxfY2hhbmdlcwBkZWdyZWVzAFJFVFVSTklORyBtYXkgbm90IHVzZSAiVEFCTEUuKiIgd2lsZGNhcmRzAHRocmVhZHMAYWJzAC4lLipzAENSRUFURSAlcyAlLipzAENSRUFURSVzIElOREVYICUuKnMAaW52YWxpZCB1cmkgYXV0aG9yaXR5OiAlLipzAHVua25vd24gdGFibGUgb3B0aW9uOiAlLipzACUuKnMlcwAsJXMlcyVzAFNDQU4gJXMlcyVzAHNxbGl0ZV9hbHRlcnRhYl8lcwBTQ0FOICVkIENPTlNUQU5UIFJPVyVzACVRJXMAIFZJUlRVQUwgVEFCTEUgSU5ERVggJWQ6JXMAJXM6ICVzLiVzLiVzAG1pc3NpbmcgZGF0YXR5cGUgZm9yICVzLiVzAGNhbm5vdCBzdG9yZSAlcyB2YWx1ZSBpbiAlcyBjb2x1bW4gJXMuJXMAbm9uLSVzIHZhbHVlIGluICVzLiVzAE5VTEwgdmFsdWUgaW4gJXMuJXMAJXM6ICVzLiVzAG5vIHN1Y2ggdGFibGUgY29sdW1uOiAlcy4lcwAuLiVzACUuMThzLSVzACBVU0lORyBJTlRFR0VSIFBSSU1BUlkgS0VZICglcwB1c2UgRFJPUCBWSUVXIHRvIGRlbGV0ZSB2aWV3ICVzAGlsbGVnYWwgZmlyc3QgYXJndW1lbnQgdG8gJXMAbWlzdXNlIG9mIGFsaWFzZWQgd2luZG93IGZ1bmN0aW9uICVzAHRvbyBtYW55IGNvbHVtbnMgb24gJXMAdG9vIG1hbnkgY29sdW1ucyBpbiAlcwAlcyBwcm9oaWJpdGVkIGluICVzAENIRUNLIGNvbnN0cmFpbnQgZmFpbGVkIGluICVzAG5vbi1kZXRlcm1pbmlzdGljIHVzZSBvZiAlcygpIGluICVzAHJlY292ZXJlZCAlZCBwYWdlcyBmcm9tICVzAG1pc3VzZSBvZiBhbGlhc2VkIGFnZ3JlZ2F0ZSAlcwAlcyAlVCBjYW5ub3QgcmVmZXJlbmNlIG9iamVjdHMgaW4gZGF0YWJhc2UgJXMAY2Fubm90IGRldGFjaCBkYXRhYmFzZSAlcwBhIEpPSU4gY2xhdXNlIGlzIHJlcXVpcmVkIGJlZm9yZSAlcwBjYW5ub3Qgb3BlbiB2YWx1ZSBvZiB0eXBlICVzAGNhbm5vdCBmc3RhdCBkYiBmaWxlICVzAHJlY292ZXJlZCAlZCBmcmFtZXMgZnJvbSBXQUwgZmlsZSAlcwBQUklNQVJZIEtFWSBtaXNzaW5nIG9uIHRhYmxlICVzAHVzZSBEUk9QIFRBQkxFIHRvIGRlbGV0ZSB0YWJsZSAlcwBTRUxFQ1QgJXMgT1JERVIgQlkgcm93aWQgJXMAU0VMRUNUICVzIFdIRVJFIHJvd2lkIEJFVFdFRU4gJWxsZCBBTkQgJWxsZCBPUkRFUiBCWSByb3dpZCAlcwB0aGVyZSBpcyBhbHJlYWR5IGFuIGluZGV4IG5hbWVkICVzAHRhYmxlICVTIGhhcyBubyBjb2x1bW4gbmFtZWQgJXMAdGhlcmUgaXMgYWxyZWFkeSBhIHRhYmxlIG5hbWVkICVzAHN0YXRlbWVudCBhYm9ydHMgYXQgJWQ6IFslc10gJXMAQ09WRVJJTkcgSU5ERVggJXMAU0VMRUNUICVzAHVuc3VwcG9ydGVkIHVzZSBvZiBOVUxMUyAlcwBVU0UgVEVNUCBCLVRSRUUgRk9SICVzAC0tIFRSSUdHRVIgJXMAUklHSFQtSk9JTiAlcwA+PyBBTkQgJXMAJXo6ICVzAHJlY3Vyc2l2ZSByZWZlcmVuY2UgaW4gYSBzdWJxdWVyeTogJXMAdnRhYmxlIGNvbnN0cnVjdG9yIGNhbGxlZCByZWN1cnNpdmVseTogJXMAbm8gc3VjaCBpbmRleDogJXMAbm8gc3VjaCB3aW5kb3c6ICVzAGNhbm5vdCBvdmVycmlkZSAlcyBvZiB3aW5kb3c6ICVzAGNhbm5vdCBvcGVuIHZpZXc6ICVzAG5vIHN1Y2ggc2F2ZXBvaW50OiAlcwBubyBzdWNoIHZmczogJXMAbXVsdGlwbGUgcmVjdXJzaXZlIHJlZmVyZW5jZXM6ICVzAGVycm9yIGluICVzICVzJXMlczogJXMAZXJyb3IgaW4gJXMgJXMgYWZ0ZXIgJXM6ICVzAHVua25vd24gdG9rZW5pemVyOiAlcwBlcnJvciBwYXJzaW5nIHByZWZpeCBwYXJhbWV0ZXI6ICVzAHVucmVjb2duaXplZCBwYXJhbWV0ZXI6ICVzAHVucmVjb2duaXplZCBvcmRlcjogJXMAdW5yZWNvZ25pemVkIG1hdGNoaW5mbzogJXMAbm8gc3VjaCBjb2x1bW46ICVzAGZpbGUgcmVuYW1lZCB3aGlsZSBvcGVuOiAlcwBmaWxlIHVubGlua2VkIHdoaWxlIG9wZW46ICVzAHVuc3VwcG9ydGVkIGVuY29kaW5nOiAlcwBjYW5ub3QgbGltaXQgV0FMIHNpemU6ICVzAE1KIGRlbGV0ZTogJXMAdGFyZ2V0IG9iamVjdC9hbGlhcyBtYXkgbm90IGFwcGVhciBpbiBGUk9NIGNsYXVzZTogJXMAb2JqZWN0IG5hbWUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZTogJXMAdW5rbm93biBkYXRhYmFzZTogJXMAdW5hYmxlIHRvIG9wZW4gZGF0YWJhc2U6ICVzAG5vIHN1Y2ggZGF0YWJhc2U6ICVzAHRoZXJlIGlzIGFscmVhZHkgYW5vdGhlciB0YWJsZSBvciBpbmRleCB3aXRoIHRoaXMgbmFtZTogJXMAZHVwbGljYXRlIGNvbHVtbiBuYW1lOiAlcwBkdXBsaWNhdGUgV0lUSCB0YWJsZSBuYW1lOiAlcwBubyBzdWNoIG1vZHVsZTogJXMAbXVsdGlwbGUgbGlua3MgdG8gZmlsZTogJXMAY2Fubm90IG9wZW4gdmlydHVhbCB0YWJsZTogJXMAbm8gc3VjaCB0YWJsZTogJXMAbXVsdGlwbGUgcmVmZXJlbmNlcyB0byByZWN1cnNpdmUgdGFibGU6ICVzAG5vIHN1Y2ggJXMgbW9kZTogJXMATUogY29sbGlkZTogJXMAbm8gc3VjaCBjb2xsYXRpb24gc2VxdWVuY2U6ICVzAGNpcmN1bGFyIHJlZmVyZW5jZTogJXMAY2Fubm90IG9wZW4gdGFibGUgd2l0aG91dCByb3dpZDogJXMAJXMgbW9kZSBub3QgYWxsb3dlZDogJXMAdnRhYmxlIGNvbnN0cnVjdG9yIGZhaWxlZDogJXMAYXV0b21hdGljIGV4dGVuc2lvbiBsb2FkaW5nIGZhaWxlZDogJXMAZGF0YWJhc2UgdGFibGUgaXMgbG9ja2VkOiAlcwBkYXRhYmFzZSBzY2hlbWEgaXMgbG9ja2VkOiAlcwB2dGFibGUgY29uc3RydWN0b3IgZGlkIG5vdCBkZWNsYXJlIHNjaGVtYTogJXMAYWJvcnQgYXQgJWQgaW4gWyVzXTogJXMALS0gJXMAJXogLSAlcwBvc191bml4LmM6JWQ6ICglZCkgJXMoJXMpIC0gJXMAd3IAcmlnaHRzdHIAbGVmdHN0cgBpbnN0cgBzdWJzdHIAZXhwcl9pbXBsaWVzX2V4cHIAaW52YWxpZCBhcmd1bWVudHMgdG8gZnRzNGF1eCBjb25zdHJ1Y3RvcgBtaXNzaW5nICVzIHBhcmFtZXRlciBpbiBmdHM0IGNvbnN0cnVjdG9yAHRoZSAiLiIgb3BlcmF0b3IAZnRzM2N1cnNvcgBuZWFyICIlVCI6IHN5bnRheCBlcnJvcgB1bmtub3duIGVycm9yAGRvbWFpbiBlcnJvcgBub3QgYW4gZXJyb3IAU1FMIGxvZ2ljIGVycm9yAGRpc2sgSS9PIGVycm9yAGZsb29yAHJtZGlyAG1rZGlyAHNlZ2RpcgBmdHMzX3Rva2VuaXplcgB1bmtub3duIHRva2VuaXplcgBwb3dlcgBsb3dlcgBzcWxpdGVfdGVtcF9tYXN0ZXIAc3FsaXRlX21hc3RlcgBwb3J0ZXIAUmVzZXRTb3J0ZXIARmtDb3VudGVyAEFQSSBjYWxsIHdpdGggJXMgZGF0YWJhc2UgY29ubmVjdGlvbiBwb2ludGVyAHN0cmZpbHRlcgBWRmlsdGVyAEVTQ0FQRSBleHByZXNzaW9uIG11c3QgYmUgYSBzaW5nbGUgY2hhcmFjdGVyAHVwcGVyAHByb3BlcgBJZlNtYWxsZXIAY2Fubm90IHVzZSBSRVRVUk5JTkcgaW4gYSB0cmlnZ2VyAERyb3BUcmlnZ2VyAHNlY29uZCBhcmd1bWVudCB0byBudGhfdmFsdWUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIAYXJndW1lbnQgb2YgbnRpbGUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIAZnJhbWUgc3RhcnRpbmcgb2Zmc2V0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlcgBmcmFtZSBlbmRpbmcgb2Zmc2V0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlcgBJbnRlZ2VyAFJvd2lkICVsbGQgb3V0IG9mIG9yZGVyAFJlbWFpbmRlcgBmcmFtZSBzdGFydGluZyBvZmZzZXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIAZnJhbWUgZW5kaW5nIG9mZnNldCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlcgBhZGRyAHBhZHIAY2hhcgB5ZWFyAENsZWFyAEJpdE9yAHNlcQBDb2xsU2VxAEVsc2VFcQByZWdleHAAT3BlbkR1cABOb29wAEp1bXAAL3Vzci90bXAAL3Zhci90bXAAdGVtcABjdXJyZW50X3RpbWVzdGFtcABBZ2dTdGVwAG1vZGVTdGVwAHZhcmlhbmNlU3RlcABtdW5tYXAAbW1hcABtcmVtYXAAdnRhYjolcABzc2Vuc3VvAGlsc3VvAGF1dG8AR290bwBpbnRvAGluY3JlbWVudGFsX3ZhY3V1bSBlbmFibGVkIHdpdGggYSBtYXggcm9vdHBhZ2Ugb2YgemVybwBJZk5vdFplcm8ARGVjckp1bXBaZXJvAEZrSWZaZXJvAHNlcW5vAGluZGV4X3hpbmZvAHRhYmxlX3hpbmZvAG1hdGNoaW5mbwBpbmRleF9pbmZvAHRhYmxlX2luZm8AT3BlblBzZXVkbwBmY2hvd24AQmVnaW5TdWJydG4AUmV0dXJuAGpzb24Abm8gcXVlcnkgc29sdXRpb24AaW5kZXggY29ycnVwdGlvbgBkYXRhYmFzZSBjb3JydXB0aW9uAGZyZWUgc3BhY2UgY29ycnVwdGlvbgB1bmtub3duIGNvbHVtbiAiJXMiIGluIGZvcmVpZ24ga2V5IGRlZmluaXRpb24AJXMueEJlc3RJbmRleCBtYWxmdW5jdGlvbgBhdXRob3JpemVyIG1hbGZ1bmN0aW9uACUjVCgpIG1heSBub3QgYmUgdXNlZCBhcyBhIHdpbmRvdyBmdW5jdGlvbgAnJXMnIGlzIG5vdCBhIGZ1bmN0aW9uAEZ1bmN0aW9uAGNhbm5vdCBzdGFydCBhIHRyYW5zYWN0aW9uIHdpdGhpbiBhIHRyYW5zYWN0aW9uAGNhbm5vdCBjaGFuZ2UgJXMgd2FsIG1vZGUgZnJvbSB3aXRoaW4gYSB0cmFuc2FjdGlvbgB0ZW1wb3Jhcnkgc3RvcmFnZSBjYW5ub3QgYmUgY2hhbmdlZCBmcm9tIHdpdGhpbiBhIHRyYW5zYWN0aW9uAGNhbm5vdCBWQUNVVU0gZnJvbSB3aXRoaW4gYSB0cmFuc2FjdGlvbgBTYWZldHkgbGV2ZWwgbWF5IG5vdCBiZSBjaGFuZ2VkIGluc2lkZSBhIHRyYW5zYWN0aW9uAFRyYW5zYWN0aW9uAFBlcm11dGF0aW9uAHVua25vd24gb3BlcmF0aW9uAHVuc3VwcG9ydGVkIGZyYW1lIHNwZWNpZmljYXRpb24AUkFOR0Ugd2l0aCBvZmZzZXQgUFJFQ0VESU5HL0ZPTExPV0lORyByZXF1aXJlcyBvbmUgT1JERVIgQlkgZXhwcmVzc2lvbgB0b28gbWFueSBsZXZlbHMgb2YgdHJpZ2dlciByZWN1cnNpb24AdXNlcl92ZXJzaW9uAHNxbGl0ZV92ZXJzaW9uAGRhdGFfdmVyc2lvbgBzY2hlbWFfdmVyc2lvbgBzcWxpdGVfZHJvcF9jb2x1bW4Ac3FsaXRlX3JlbmFtZV9jb2x1bW4AYWZ0ZXIgZHJvcCBjb2x1bW4Abm8gc3VjaCBjb2x1bW4AbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBub24tZ2VuZXJhdGVkIGNvbHVtbgBjYW5ub3QgdXNlIERFRkFVTFQgb24gYSBnZW5lcmF0ZWQgY29sdW1uAGFkZCBjb2x1bW4AQ2Fubm90IGFkZCBhIFBSSU1BUlkgS0VZIGNvbHVtbgBDYW5ub3QgYWRkIGEgVU5JUVVFIGNvbHVtbgBjYW5ub3QgYWRkIGEgU1RPUkVEIGNvbHVtbgBWQ29sdW1uAGJ1aWx0aW4AYXNpbgBhdCBtb3N0ICVkIHRhYmxlcyBpbiBhIGpvaW4AbWluAG9yaWdpbgBWQmVnaW4AbWFpbgBFeHBsYWluAHNpZ24Ac3NlbgBvcGVuAElmTm90T3BlbgBTb3J0ZXJPcGVuAFZPcGVuAGhpZGRlbgBhdGFuAG1lZGlhbgBTZWVrU2NhbgBWSW5pdEluAGF1dG9fdmFjdXVtAGluY3JlbWVudGFsX3ZhY3V1bQBJbmNyVmFjdXVtAHN1bQBkcm9wIGNvbHVtbiBmcm9tAC9kZXYvdXJhbmRvbQBBZGRJbW0AcnRyaW0AbHRyaW0AcmVhZG9ubHlfc2htACVzLXNobQB0bmVtAFJBSVNFKCkgbWF5IG9ubHkgYmUgdXNlZCB3aXRoaW4gYSB0cmlnZ2VyLXByb2dyYW0AUHJvZ3JhbQBQYXJhbQBmdWwAZmNudGwAaW9jdGwAaWdvbABsb2NraW5nIHByb3RvY29sAG5jb2wAbm90bnVsbABpZm51bGwAL2Rldi9udWxsAGRhdGFiYXNlIG9yIGRpc2sgaXMgZnVsbABOb3ROdWxsAFNvZnROdWxsAElzTnVsbABaZXJvT3JOdWxsAEhhbHRJZk51bGwAY29sbABjYWNoZV9zcGlsbABSb3dDZWxsAGNlaWwAZGV0YWlsAHBhZGwAdW5peC1leGNsAHRibAB3YWwAdmlydHVhbAB0b3RhbABpbmNyZW1lbnRhbABPcGVuRXBoZW1lcmFsAEFnZ0ZpbmFsAG5vcm1hbABJbmRleCBhbHJlYWR5IG9wdGltYWwAcGFydGlhbAByZWFsAFJlYWwAcGsAb2sAdW5saW5rAHJlYWRsaW5rAEZpbmlzaFNlZWsARGVmZXJyZWRTZWVrAG5vbG9jawBDdXJzb3JVbmxvY2sAYmxvY2sAJXMubG9jawBDdXJzb3JMb2NrAFRhYmxlTG9jawBpbnRlZ3JpdHlfY2hlY2sAZm9yZWlnbl9rZXlfY2hlY2sAcXVpY2tfY2hlY2sAY2VsbF9zaXplX2NoZWNrAGludGVncml0eS1jaGVjawBGa0NoZWNrAFR5cGVDaGVjawBJbnRlZ3JpdHlDawByZXppAG5vaXRhemkAaXRpdmkAc3NlbmV2aQBpdGkAaXNzaXNpAGlzaXNpAHBpAG5vaQBnbmkAc2lzc2lpAGlzc2lzaWkAc3NzaWlpAHNlaQBpdGljaQBldGFjaQBsYWNpAGNvdGgAbW9udGgAanNvbl9hcnJheV9sZW5ndGgAb3ZlcmZsb3cgbGlzdCBsZW5ndGgAd2R0aABzdGF0X3B1c2gAYWNvc2gAYXNpbmgAYXRhbmgAanNvbl9wYXRjaABkYXRhdHlwZSBtaXNtYXRjaABhcmd1bWVudCB0eXBlIG1pc21hdGNoAGFiYnJldmlhdGVkIHF1ZXJ5IGFsZ29yaXRobSBzZWFyY2gAdW5peGVwb2NoAHNxbGl0ZV9hdHRhY2gAc3FsaXRlX2RldGFjaABqc29uX2VhY2gAYXZnAG5hcmcAc3FsaXRlX2xvZwBzdGF0ZW1lbnQgdG9vIGxvbmcAY2Fubm90IG9wZW4gJXMgY29sdW1uIGZvciB3cml0aW5nAHN1YnN0cmluZwBTdHJpbmcAc3FsaXRlX3JldHVybmluZwBlbmNvZGluZwBzdHJpbmcgb3IgYmxvYiB0b28gYmlnAFJlbGVhc2VSZWcAJS4xNmcAJSEuMTVnAHNzZW5sdWYAcHJpbnRmAHR5cGVvZgBtb2Rlb2YAb3V0IG9mAHJlbmFtZSBjb2x1bW5zIG9mAG51bGxpZgBpaWYAb2ZmADAxMjM0NTY3ODlhYmNkZWYASWYAJTA2LjNmACUuKmYAZ2V0cGFnZXNpemUAZG9jc2l6ZQBtbWFwX3NpemUAZGVmYXVsdF9jYWNoZV9zaXplAFBSQUdNQSAlUS5wYWdlX3NpemUAZnRzM3Rva2VuaXplAG9wdGltaXplAGpzb25fcmVtb3ZlAE1vdmUAY2Fubm90IGNvbW1pdCAtIG5vIHRyYW5zYWN0aW9uIGlzIGFjdGl2ZQBjYW5ub3Qgcm9sbGJhY2sgLSBubyB0cmFuc2FjdGlvbiBpcyBhY3RpdmUAZXhjbHVzaXZlAHRydWUASXNUcnVlAHVuaXF1ZQBkZmx0X3ZhbHVlAENhbm5vdCBhZGQgYSBSRUZFUkVOQ0VTIGNvbHVtbiB3aXRoIG5vbi1OVUxMIGRlZmF1bHQgdmFsdWUAQWdnVmFsdWUAanNvbl9xdW90ZQBwd3JpdGUAT3BlbldyaXRlAG9uX2RlbGV0ZQBzZWN1cmVfZGVsZXRlAElkeERlbGV0ZQBwcml2YXRlAGFnZ3JlZ2F0ZQBWQ3JlYXRlAG9uX3VwZGF0ZQBWVXBkYXRlAGN1cnJlbnRfZGF0ZQBmYWxsb2NhdGUAZnRydW5jYXRlAHJlcGxpY2F0ZQBiYWQgcGFyYW1ldGVyIG9yIG90aGVyIEFQSSBtaXN1c2UAdG9vIG1hbnkgdGVybXMgaW4gJXMgQlkgY2xhdXNlAHRvbyBtYW55IHRlcm1zIGluIE9SREVSIEJZIGNsYXVzZQBhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgR1JPVVAgQlkgY2xhdXNlAFBBUlRJVElPTiBjbGF1c2UAYSBOQVRVUkFMIGpvaW4gbWF5IG5vdCBoYXZlIGFuIE9OIG9yIFVTSU5HIGNsYXVzZQBkYXRhYmFzZSAlcyBpcyBhbHJlYWR5IGluIHVzZQBBZ2dJbnZlcnNlAHJldmVyc2UAY2xvc2UAQ2xvc2UAZmFsc2UAYXR0ZW1wdCB0byB3cml0ZSBhIHJlYWRvbmx5IGRhdGFiYXNlAGNvcnJ1cHQgZGF0YWJhc2UAYXR0YWNoZWQgZGF0YWJhc2VzIG11c3QgdXNlIHRoZSBzYW1lIHRleHQgZW5jb2RpbmcgYXMgbWFpbiBkYXRhYmFzZQBmaWxlIGlzIG5vdCBhIGRhdGFiYXNlAHRlbXBfc3RvcmUAJXMgY2xhdXNlIHNob3VsZCBjb21lIGFmdGVyICVzIG5vdCBiZWZvcmUARXhwaXJlAHNxdWFyZQBleHByX2NvbXBhcmUAU29ydGVyQ29tcGFyZQBzdWJ0eXBlAENsclN1YnR5cGUAanNvbl90eXBlAElzTnVsbE9yVHlwZQBJZk5vSG9wZQBpbHRuZQB1bml4LW5vbmUASW5pdENvcm91dGluZQBFbmRDb3JvdXRpbmUAaWNuZQBsb2NhbHRpbWUAc3RyZnRpbWUAZGF0ZXRpbWUAY3VycmVudF90aW1lAHRuZW1lAGFmdGVyIHJlbmFtZQBub24tdGV4dCBmaWxlbmFtZQBWUmVuYW1lAGFtYmlndW91cyBjb2x1bW4gbmFtZQB0ZW1wb3JhcnkgdHJpZ2dlciBtYXkgbm90IGhhdmUgcXVhbGlmaWVkIG5hbWUAc2ltcGxlAGxvd2VyX3F1YXJ0aWxlAHVwcGVyX3F1YXJ0aWxlAHVuaXgtZG90ZmlsZQBjYW5ub3Qgb3BlbiBmaWxlAHVuYWJsZSB0byBvcGVuIGRhdGFiYXNlIGZpbGUAaW1tdXRhYmxlAEFib3J0YWJsZQBsZWdhY3lfYWx0ZXJfdGFibGUAc3FsaXRlX3JlbmFtZV90YWJsZQBjYW5ub3QgY3JlYXRlIHRyaWdnZXIgb24gc3lzdGVtIHRhYmxlAHZpcnR1YWwgdGFibGUAbm8gc3VjaCB0YWJsZQBudW1iZXIgb2YgY29sdW1ucyBpbiBmb3JlaWduIGtleSBkb2VzIG5vdCBtYXRjaCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUAbG9jYWwgdGltZSB1bmF2YWlsYWJsZQBhbm90aGVyIHJvdyBhdmFpbGFibGUAbm8gbW9yZSByb3dzIGF2YWlsYWJsZQBWYXJpYWJsZQBEcm9wVGFibGUAdXRmMTZsZQBVVEYxNmxlAFVURi0xNmxlAGNhc2Vfc2Vuc2l0aXZlX2xpa2UAU2V0Q29va2llAFJlYWRDb29raWUAY2FjaGUAY29sdW1uIGluZGV4IG91dCBvZiByYW5nZQBub3RpZmljYXRpb24gbWVzc2FnZQB3YXJuaW5nIG1lc3NhZ2UAaW52YWxpZCByb290cGFnZQBFeHRlbmRzIG9mZiBlbmQgb2YgcGFnZQBqc29uX3RyZWUAQ3JlYXRlQnRyZWUAZGVlAGpvdXJuYWxfbW9kZQBsb2NraW5nX21vZGUAb3Bjb2RlAHVuaWNvZGUASm91cm5hbE1vZGUARGl2aWRlAGNvYWxlc2NlAHNxbGl0ZV9zZXF1ZW5jZQBTZXF1ZW5jZQBkaWZmZXJlbmNlAHZhcmlhbmNlAE9uY2UAVHJhY2UAanNvbl9yZXBsYWNlAHV0ZjE2YmUAVVRGMTZiZQBVVEYtMTZiZQBOZQBMZQBHZQAyMGM6MjBlADIwYjoyMGUAJSEuMjBlAGdldGN3ZABNYWtlUmVjb3JkAHRoc3RuZHJkAGxpa2VsaWhvb2QAZmNobW9kAHJvdW5kAE5vdEZvdW5kAFJld2luZABTZWVrRW5kAEJpdEFuZABvbGQAJWxsZCAlbGxkAG5vIHN1Y2ggcm93aWQ6ICVsbGQAcmVidWlsZABZaWVsZABsYXN0X2luc2VydF9yb3dpZAAlcy5yb3dpZABTRUxFQ1QqRlJPTSIldyIuJXMgT1JERVIgQlkgcm93aWQAU0VMRUNUKkZST00iJXciLiVzIFdIRVJFICVzIE9SREVSIEJZIHJvd2lkAElkeFJvd2lkAE5ld1Jvd2lkAFNlZWtSb3dpZABnZXRldWlkAGludmFsaWQAanNvbl92YWxpZABma2lkAF9fbGFuZ2lkACV6LCBsYW5naWQAbGFuZ3VhZ2VpZABkb2NpZABhcHBsaWNhdGlvbl9pZABzcWxpdGVfc291cmNlX2lkAG5vdCBhdXRob3JpemVkAEluZGV4IG9wdGltaXplZABub3RpbmRleGVkAHVuYWJsZSB0byBpZGVudGlmeSB0aGUgb2JqZWN0IHRvIGJlIHJlaW5kZXhlZAB2aWV3cyBtYXkgbm90IGJlIGluZGV4ZWQAdmlydHVhbCB0YWJsZXMgbWF5IG5vdCBiZSBpbmRleGVkAHRhYmxlICVzIG1heSBub3QgYmUgaW5kZXhlZAByZWFkX3VuY29tbWl0dGVkAHJlY3Vyc2l2ZSBhZ2dyZWdhdGUgcXVlcmllcyBub3Qgc3VwcG9ydGVkAHF1ZXJ5IGFib3J0ZWQAcm93cyBpbnNlcnRlZABpbnRlcnJ1cHRlZABjaGVja3BvaW50ZWQAYWNjZXNzIHRvICV6IGlzIHByb2hpYml0ZWQAYWNjZXNzIHRvIHZpZXcgIiVzIiBwcm9oaWJpdGVkAHJvd3MgZGVsZXRlZABnZW5lcmF0ZWQAcm93cyB1cGRhdGVkAG5vdHVzZWQAcm93IHZhbHVlIG1pc3VzZWQAc3FsaXRlX2NvbXBpbGVvcHRpb25fdXNlZABQYWdlICVkIGlzIG5ldmVyIHVzZWQAQ29sdW1uc1VzZWQAc3RvcmVkAHZpcnR1YWwgdGFibGVzIG1heSBub3QgYmUgYWx0ZXJlZAB2aWV3ICVzIG1heSBub3QgYmUgYWx0ZXJlZAB0YWJsZSAlcyBtYXkgbm90IGJlIGFsdGVyZWQAc2hhcmVkAGluZGV4IGFzc29jaWF0ZWQgd2l0aCBVTklRVUUgb3IgUFJJTUFSWSBLRVkgY29uc3RyYWludCBjYW5ub3QgYmUgZHJvcHBlZAB0YWJsZSAlcyBtYXkgbm90IGJlIGRyb3BwZWQAdmlldyAlcyBpcyBjaXJjdWxhcmx5IGRlZmluZWQAdW5vcGVuZWQAZGF0YWJhc2UgZGlzayBpbWFnZSBpcyBtYWxmb3JtZWQAJXMgY29uc3RyYWludCBmYWlsZWQARk9SRUlHTiBLRVkgY29uc3RyYWludCBmYWlsZWQAbGFyZ2UgZmlsZSBzdXBwb3J0IGlzIGRpc2FibGVkAGZ0czN0b2tlbml6ZSBkaXNhYmxlZABkYXRhYmFzZSAlcyBpcyBsb2NrZWQAZGF0YWJhc2UgaXMgbG9ja2VkAGRhdGFiYXNlIHRhYmxlIGlzIGxvY2tlZABhdXRob3JpemF0aW9uIGRlbmllZABhY2Nlc3MgcGVybWlzc2lvbiBkZW5pZWQAdGFibGUgJVMgaGFzICVkIGNvbHVtbnMgYnV0ICVkIHZhbHVlcyB3ZXJlIHN1cHBsaWVkAHRlbXBvcmFyeSB0YWJsZSBuYW1lIG11c3QgYmUgdW5xdWFsaWZpZWQAdGFibGUgJXMgbWF5IG5vdCBiZSBtb2RpZmllZABjb25mbGljdGluZyBPTiBDT05GTElDVCBjbGF1c2VzIHNwZWNpZmllZABubyB0YWJsZXMgc3BlY2lmaWVkAGRhdGFiYXNlIGlzIGFscmVhZHkgYXR0YWNoZWQAZGF0YWJhc2Ugc2NoZW1hIGhhcyBjaGFuZ2VkAGV4Y2x1ZGVkAFBvaW50ZXIgbWFwIHBhZ2UgJWQgaXMgcmVmZXJlbmNlZABSb3dTZXRBZGQARmlsdGVyQWRkAHByZWFkAFJvd1NldFJlYWQAT3BlblJlYWQAJTA0ZAAlMDNkACUwMmQANDBmLTIxYS0yMWQAc3FsaXRlX3N0YXQlZABjb2x1bW4lZABzcWxpdGVfYXV0b2luZGV4XyVzXyVkAHZhcmlhYmxlIG51bWJlciBtdXN0IGJlIGJldHdlZW4gPzEgYW5kID8lZABGYWlsZWQgdG8gcmVhZCBwdHJtYXAga2V5PSVkAHVuYWJsZSB0byBnZXQgdGhlIHBhZ2UuIGVycm9yIGNvZGU9JWQAT2Zmc2V0ICVkIG91dCBvZiByYW5nZSAlZC4uJWQAayglZABVUERBVEUgJVEuc3FsaXRlX21hc3RlciBTRVQgcm9vdHBhZ2U9JWQgV0hFUkUgIyVkIEFORCByb290cGFnZT0jJWQAVVBEQVRFICVRLnNxbGl0ZV9tYXN0ZXIgU0VUIHR5cGU9JyVzJywgbmFtZT0lUSwgdGJsX25hbWU9JVEsIHJvb3RwYWdlPSMlZCwgc3FsPSVRIFdIRVJFIHJvd2lkPSMlZABVUERBVEUgJVEuc3FsaXRlX21hc3RlciBTRVQgdHlwZT0ndGFibGUnLCBuYW1lPSVRLCB0YmxfbmFtZT0lUSwgcm9vdHBhZ2U9MCwgc3FsPSVRIFdIRVJFIHJvd2lkPSMlZAB0b28gbWFueSBhdHRhY2hlZCBkYXRhYmFzZXMgLSBtYXggJWQAdG9vIG1hbnkgYXJndW1lbnRzIG9uICVzKCkgLSBtYXggJWQAZXhwZWN0ZWQgJWQgY29sdW1ucyBmb3IgJyVzJyBidXQgZ290ICVkAGF0dGVtcHQgdG8gb3BlbiAiJXMiIGFzIGZpbGUgZGVzY3JpcHRvciAlZABpbnZhbGlkIHBhZ2UgbnVtYmVyICVkAGZhaWxlZCB0byBnZXQgcGFnZSAlZAAybmQgcmVmZXJlbmNlIHRvIHBhZ2UgJWQAZnJlZWxpc3QgbGVhZiBjb3VudCB0b28gYmlnIG9uIHBhZ2UgJWQAYnRyZWVJbml0UGFnZSgpIHJldHVybnMgZXJyb3IgY29kZSAlZAAlcyBpcyAlZCBidXQgc2hvdWxkIGJlICVkACVyICVzIEJZIHRlcm0gb3V0IG9mIHJhbmdlIC0gc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgJWQAc3ViLXNlbGVjdCByZXR1cm5zICVkIGNvbHVtbnMgLSBleHBlY3RlZCAlZABJTiguLi4pIGVsZW1lbnQgaGFzICVkIHRlcm0lcyAtIGV4cGVjdGVkICVkACVzTElTVCBTVUJRVUVSWSAlZABSRVVTRSBMSVNUIFNVQlFVRVJZICVkACVzU0NBTEFSIFNVQlFVRVJZICVkAFJFVVNFIFNVQlFVRVJZICVkAElOREVYICVkAHRvbyBtYW55IEZST00gY2xhdXNlIHRlcm1zLCBtYXg6ICVkAHJ3YwB1dGMAZGVzYwBhc2MAY2hlY2twb2ludF9mdWxsZnN5bmMAZnVsbF9mc3luYwBjaGFyaW5kZXhGdW5jAHNxcnRGdW5jAGNvdEZ1bmMAcmlnaHRGdW5jAGxlZnRGdW5jAGFjb3NGdW5jAGZsb29yRnVuYwBwb3dlckZ1bmMAc3RyZmlsdGVyRnVuYwBwcm9wZXJGdW5jAHBhZHJGdW5jAGV4cEZ1bmMAYXNpbkZ1bmMAc2lnbkZ1bmMAYXRhbkZ1bmMAY2VpbEZ1bmMAcGFkbEZ1bmMAY290aEZ1bmMAYWNvc2hGdW5jAGFzaW5oRnVuYwBhdGFuaEZ1bmMAbG9nRnVuYwByYWQyZGVnRnVuYwByZXZlcnNlRnVuYwBQdXJlRnVuYwBzcXVhcmVGdW5jAGRpZmZlcmVuY2VGdW5jAGRlZzJyYWRGdW5jAHBhZGNGdW5jAGF0bjJGdW5jAGxvZzEwRnVuYwBlbmMAbnVtZXJpYwAxPT1hcmdjAFNxbEV4ZWMAcGFkYwAlLjRjJXMlLjE2YwBzcWxpdGUtc3JjL3NxbGl0ZS1hbWFsZ2FtYXRpb24tMzM5MDMwMC9leHRlbnNpb24tZnVuY3Rpb25zLmMAJXMvZXRpbHFzXyVsbHglYwB1bnJlY29nbml6ZWQgbWF0Y2hpbmZvIHJlcXVlc3Q6ICVjAEdvc3ViAGdsb2IAemVyb2Jsb2IAcmFuZG9tYmxvYgBCbG9iAGlsYgBpdGlsaWIAbWVtZGIAQVRUQUNIICVRIEFTIHZhY3V1bV9kYgByb3RhAGV2aXRhAGxhbm9pdGEAZXRhAFJvd0RhdGEAU29ydGVyRGF0YQBpY25hAHNxbGl0ZV90ZW1wX3NjaGVtYQBzcWxpdGVfc2NoZW1hAHdyaXRhYmxlX3NjaGVtYQB0cnVzdGVkX3NjaGVtYQBjb3JydXB0IHNjaGVtYQBQYXJzZVNjaGVtYQBpbGxhAGV6aWxhAGl0aWxhAG1zaWxhAHNxbGl0ZV8AcHJhZ21hXwBTUUxJVEVfAF9ST1dJRF8AJXMgYXQgbGluZSAlZCBvZiBbJS4xMHNdAGJpbmQgb24gYSBidXN5IHByZXBhcmVkIHN0YXRlbWVudDogWyVzXQBtYWxmb3JtZWQgTUFUQ0ggZXhwcmVzc2lvbjogWyVzXQBbJWRdAFtdAFswXQAkWwBMRUZULU1PU1QgU1VCUVVFUlkAQ09NUE9VTkQgUVVFUlkAQU5ZAGdlbmVyYXRlZCBjb2x1bW5zIGNhbm5vdCBiZSBwYXJ0IG9mIHRoZSBQUklNQVJZIEtFWQBBVVRPSU5DUkVNRU5UIGlzIG9ubHkgYWxsb3dlZCBvbiBhbiBJTlRFR0VSIFBSSU1BUlkgS0VZAGRvY2lkIElOVEVHRVIgUFJJTUFSWSBLRVkARk9SRUlHTiBLRVkAUklHSFQgUEFSVCBPRiBPUkRFUiBCWQBHUk9VUCBCWQBpaXNYAGlzaVgAQVVUT01BVElDIFBBUlRJQUwgQ09WRVJJTkcgSU5ERVgAQVVUT01BVElDIENPVkVSSU5HIElOREVYAC1taiUwNlg5JTAyWABTQ0FOIENPTlNUQU5UIFJPVwBWSUVXAGpzb25fb2JqZWN0KCkgbGFiZWxzIG11c3QgYmUgVEVYVABGSVJTVABMQVNUAEVYQ0VQVABOT1QAIElOVABJZHhMVABTZWVrTFQAU0VUIERFRkFVTFQATVVURVhfT01JVABDT01NSVQATElNSVQAUklHSFQASWR4R1QAU2Vla0dUAExFRlQARElTVElOQ1QAUkVTVFJJQ1QASU5URVJTRUNUAHRvbyBtYW55IHRlcm1zIGluIGNvbXBvdW5kIFNFTEVDVAB1bmtub3duIGpvaW4gdHlwZTogJVQlcyVUJXMlVAAtJVQAdG9vIG1hbnkgYXJndW1lbnRzIG9uIGZ1bmN0aW9uICVUAHVua25vd24gZGF0YWJhc2UgJVQAZm9yZWlnbiBrZXkgb24gJXMgc2hvdWxkIHJlZmVyZW5jZSBvbmx5IG9uZSBjb2x1bW4gb2YgdGFibGUgJVQAQ1JFQVRFIFZJUlRVQUwgVEFCTEUgJVQAaGV4IGxpdGVyYWwgdG9vIGJpZzogJXMlI1QAbm8gc3VjaCBmdW5jdGlvbjogJSNUAG5vdCBhdXRob3JpemVkIHRvIHVzZSBmdW5jdGlvbjogJSNUAERFRkFVTFRfUkVDVVJTSVZFX1RSSUdHRVJTAElOUwBFTkFCTEVfRlRTM19QQVJFTlRIRVNJUwBESVNBQkxFX0xGUwAlcyAlUwBubyBzdWNoIGluZGV4OiAlUwBjYW5ub3QgY3JlYXRlICVzIHRyaWdnZXIgb24gdmlldzogJVMAbm8gc3VjaCB0cmlnZ2VyOiAlUwBjYW5ub3QgY3JlYXRlIElOU1RFQUQgT0YgdHJpZ2dlciBvbiB0YWJsZTogJVMATUFURVJJQUxJWkUgJSFTAENPLVJPVVRJTkUgJSFTAFVTSU5HIElOREVYICVzIEZPUiBJTi1PUEVSQVRPUgBVU0lORyBST1dJRCBTRUFSQ0ggT04gVEFCTEUgJXMgRk9SIElOLU9QRVJBVE9SAE1VTFRJLUlOREVYIE9SAFNRTElURV9UTVBESVIAQUZURVIASU5URUdFUgBPUkRFUgBORUFSAERFTEVURSBGUk9NICVRLiVzIFdIRVJFICVzPSVRAG5hbWU9JVEgQU5EIHNxbD0lUQBERUxFVEUgRlJPTSAlUS5zcWxpdGVfc2VxdWVuY2UgV0hFUkUgbmFtZT0lUQAsIHguJVEAU0VMRUNUICogRlJPTSAlUS4lUQBVUERBVEUgIiV3Ii5zcWxpdGVfc2VxdWVuY2Ugc2V0IG5hbWUgPSAlUSBXSEVSRSBuYW1lID0gJVEAVVBEQVRFICIldyIuc3FsaXRlX21hc3RlciBTRVQgc3FsID0gcHJpbnRmKCclJS4lZHMsICcsc3FsKSB8fCAlUSB8fCBzdWJzdHIoc3FsLDErbGVuZ3RoKHByaW50ZignJSUuJWRzJyxzcWwpKSkgV0hFUkUgdHlwZSA9ICd0YWJsZScgQU5EIG5hbWUgPSAlUQBTRVRVUABHUk9VUABSRUNVUlNJVkUgU1RFUABOYU4AbWFsZm9ybWVkIEpTT04ATk8gQUNUSU9OAE9NSVRfTE9BRF9FWFRFTlNJT04AVU5JT04AIExFRlQtSk9JTgBCRUdJTgAsYXJnIEhJRERFTgAsc2NoZW1hIEhJRERFTgBTQ0FOAERFRkFVTFRfQVVUT1ZBQ1VVTQAgTlVNAFJUUklNAENhbm5vdCBhZGQgYSBOT1QgTlVMTCBjb2x1bW4gd2l0aCBkZWZhdWx0IHZhbHVlIE5VTEwATk9UIE5VTEwAU0VUIE5VTEwAU0VMRUNUIDEgRlJPTSAlUS4nJXFfc2VnbWVudHMnIFdIRVJFIGJsb2NraWQ9PyBBTkQgYmxvY2sgSVMgTlVMTABVTklPTiBBTEwAIFJFQUwAQ0hFQ0sAYWJvcnQgZHVlIHRvIFJPTExCQUNLAE1BVENIAFNFQVJDSABVU0lORwBFTkFCTEVfTk9STUFMSVpFACBVTklRVUUAREVMRVRFAFVQREFURQBSRUxFQVNFAE5PQ0FTRQBCRUZPUkUAQ1JFAE5PTkUASWR4TEUAU2Vla0xFAFRBQkxFADE2TEUASWR4R0UAU2Vla0dFACVzIFVTSU5HIFRFTVAgQi1UUkVFAENBU0NBREUAMTZCRQBBTkQAUk9XSUQAT0lEAERFU0MAU0VMRUNUIGlkeCwgc3RhcnRfYmxvY2ssIGxlYXZlc19lbmRfYmxvY2ssIGVuZF9ibG9jaywgcm9vdCBGUk9NICVRLiclcV9zZWdkaXInIFdIRVJFIGxldmVsID0gPyBPUkRFUiBCWSBpZHggQVNDAFNFTEVDVCBpZHgsIHN0YXJ0X2Jsb2NrLCBsZWF2ZXNfZW5kX2Jsb2NrLCBlbmRfYmxvY2ssIHJvb3QgRlJPTSAlUS4nJXFfc2VnZGlyJyBXSEVSRSBsZXZlbCBCRVRXRUVOID8gQU5EID9PUkRFUiBCWSBsZXZlbCBERVNDLCBpZHggQVNDAFNFTEVDVCBsZXZlbCwgaWR4LCBlbmRfYmxvY2sgRlJPTSAlUS4nJXFfc2VnZGlyJyBXSEVSRSBsZXZlbCBCRVRXRUVOID8gQU5EID8gT1JERVIgQlkgbGV2ZWwgREVTQywgaWR4IEFTQwBTRUxFQ1QgaWR4IEZST00gJVEuJyVxX3NlZ2RpcicgV0hFUkUgbGV2ZWw9PyBPUkRFUiBCWSAxIEFTQwBTWVNURU1fTUFMTE9DAEJMT0IAQkJCAFVQREFURSBPUiBGQUlMICVRLiclcV9zZWdkaXInIFNFVCBsZXZlbD0tMSxpZHg9PyBXSEVSRSBsZXZlbD0/IEFORCBpZHg9PwBVUERBVEUgJVEuJyVxX3NlZ2RpcicgU0VUIGlkeCA9ID8gV0hFUkUgbGV2ZWw9PyBBTkQgaWR4PT8AJXM9PwBTRUxFQ1QgJXMgV0hFUkUgcm93aWQ9PwBTRUxFQ1Qgc2l6ZSBGUk9NICVRLiclcV9kb2NzaXplJyBXSEVSRSBkb2NpZD0/AFNFTEVDVCB2YWx1ZSBGUk9NICVRLiclcV9zdGF0JyBXSEVSRSBpZD0/AD8sPyw/AERFTEVURSBGUk9NICVRLiclcV9zZWdkaXInIFdIRVJFIGxldmVsIEJFVFdFRU4gPyBBTkQgPwBTRUxFQ1QgbWF4KGxldmVsKSBGUk9NICVRLiclcV9zZWdkaXInIFdIRVJFIGxldmVsIEJFVFdFRU4gPyBBTkQgPwBERUxFVEUgRlJPTSAlUS4nJXFfc2VnbWVudHMnIFdIRVJFIGJsb2NraWQgQkVUV0VFTiA/IEFORCA/AFVQREFURSAlUS4nJXFfc2VnZGlyJyBTRVQgc3RhcnRfYmxvY2sgPSA/LCByb290ID0gP1dIRVJFIGxldmVsID0gPyBBTkQgaWR4ID0gPwBTRUxFQ1QgaWR4LCBzdGFydF9ibG9jaywgbGVhdmVzX2VuZF9ibG9jaywgZW5kX2Jsb2NrLCByb290IEZST00gJVEuJyVxX3NlZ2RpcicgV0hFUkUgbGV2ZWwgPSA/IEFORCBpZHggPSA/AERFTEVURSBGUk9NICVRLiclcV9zZWdkaXInIFdIRVJFIGxldmVsID0gPyBBTkQgaWR4ID0gPwBERUxFVEUgRlJPTSAlUS4nJXFfc2VnZGlyJyBXSEVSRSBsZXZlbCA9ID8AU0VMRUNUIGNvdW50KCopIEZST00gJVEuJyVxX3NlZ2RpcicgV0hFUkUgbGV2ZWwgPSA/AFNFTEVDVCAlcyBXSEVSRSByb3dpZCA9ID8AREVMRVRFIEZST00gJVEuJyVxX2NvbnRlbnQnIFdIRVJFIHJvd2lkID0gPwBERUxFVEUgRlJPTSAlUS4nJXFfZG9jc2l6ZScgV0hFUkUgZG9jaWQgPSA/ACwgPwA8ZXhwcj4APGI+ADxiPi4uLjwvYj4ALT4+AC0+AHNlcGFyYXRvcnM9AHRva2VuY2hhcnM9AGF1dG9tZXJnZT0APABJTlNFUlQgSU5UTyAlUS5zcWxpdGVfbWFzdGVyIFZBTFVFUygnaW5kZXgnLCVRLCVRLCMlZCwlUSk7AENSRUFURSBUQUJMRSAlUS4nJXFfc2VnbWVudHMnKGJsb2NraWQgSU5URUdFUiBQUklNQVJZIEtFWSwgYmxvY2sgQkxPQik7AENSRUFURSBUQUJMRSAlUS4nJXFfZG9jc2l6ZScoZG9jaWQgSU5URUdFUiBQUklNQVJZIEtFWSwgc2l6ZSBCTE9CKTsAQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgJVEuJyVxX3N0YXQnKGlkIElOVEVHRVIgUFJJTUFSWSBLRVksIHZhbHVlIEJMT0IpOwBDUkVBVEUgVEFCTEUgJVEuJyVxX3NlZ2RpcicobGV2ZWwgSU5URUdFUixpZHggSU5URUdFUixzdGFydF9ibG9jayBJTlRFR0VSLGxlYXZlc19lbmRfYmxvY2sgSU5URUdFUixlbmRfYmxvY2sgSU5URUdFUixyb290IEJMT0IsUFJJTUFSWSBLRVkobGV2ZWwsIGlkeCkpOwBVUERBVEUgJVEuc3FsaXRlX21hc3RlciBTRVQgdGJsX25hbWUgPSAlUSwgbmFtZSA9IENBU0UgV0hFTiB0eXBlPSd0YWJsZScgVEhFTiAlUSBXSEVOIG5hbWUgTElLRSAnc3FsaXRlWF9hdXRvaW5kZXglJScgRVNDQVBFICdYJyAgICAgIEFORCB0eXBlPSdpbmRleCcgVEhFTiAnc3FsaXRlX2F1dG9pbmRleF8nIHx8ICVRIHx8IHN1YnN0cihuYW1lLCVkKzE4KSBFTFNFIG5hbWUgRU5EIFdIRVJFIHRibF9uYW1lPSVRIENPTExBVEUgbm9jYXNlIEFORCAodHlwZT0ndGFibGUnIE9SIHR5cGU9J2luZGV4JyBPUiB0eXBlPSd0cmlnZ2VyJyk7AERST1AgVEFCTEUgSUYgRVhJU1RTICVRLiclcV9zZWdtZW50cyc7RFJPUCBUQUJMRSBJRiBFWElTVFMgJVEuJyVxX3NlZ2Rpcic7RFJPUCBUQUJMRSBJRiBFWElTVFMgJVEuJyVxX2RvY3NpemUnO0RST1AgVEFCTEUgSUYgRVhJU1RTICVRLiclcV9zdGF0JzslcyBEUk9QIFRBQkxFIElGIEVYSVNUUyAlUS4nJXFfY29udGVudCc7AEFMVEVSIFRBQkxFICVRLiclcV9jb250ZW50JyAgUkVOQU1FIFRPICclcV9jb250ZW50JzsAQUxURVIgVEFCTEUgJVEuJyVxX3N0YXQnICBSRU5BTUUgVE8gJyVxX3N0YXQnOwBBTFRFUiBUQUJMRSAlUS4nJXFfc2VnbWVudHMnIFJFTkFNRSBUTyAnJXFfc2VnbWVudHMnOwBBTFRFUiBUQUJMRSAlUS4nJXFfc2VnZGlyJyAgIFJFTkFNRSBUTyAnJXFfc2VnZGlyJzsAQUxURVIgVEFCTEUgJVEuJyVxX2RvY3NpemUnICBSRU5BTUUgVE8gJyVxX2RvY3NpemUnOwA6bWVtb3J5OgBmaWxlOgBTdHJpbmc4AHV0ZjgAMjAyMi0wOS0wNSAxMTowMjoyMyA0NjM1ZjRhNjljOGMyYThkZjI0MmIzODRhOTkyYWVhNzEyMjRlMzlhMmNjYWI0MmQ4YzBiMDYwMmYxZTgyNmU4AFVURjgAVVRGLTgATUFYX0ZVTkNUSU9OX0FSRz0xMjcAREVGQVVMVF9TRUNUT1JfU0laRT00MDk2AERFRkFVTFRfUEFHRV9TSVpFPTQwOTYATUFYX1ZBUklBQkxFX05VTUJFUj0zMjc2NgBNQVhfUEFHRV9TSVpFPTY1NTM2AFVURjE2AFVURi0xNgBwNQB0b28gbWFueSByZWZlcmVuY2VzIHRvICIlcyI6IG1heCA2NTUzNQBzcWxpdGVfc3RhdDQAZnRzNABwNABERUZBVUxUX0ZJTEVfRk9STUFUPTQASW50NjQAcHdyaXRlNjQAcHJlYWQ2NABNQUxMT0NfU09GVF9MSU1JVD0xMDI0AHNxbGl0ZV9zdGF0MwBTQVZFUE9JTlQgZnRzMwBST0xMQkFDSyBUTyBmdHMzAFJFTEVBU0UgZnRzMwBwMwBFTkFCTEVfRlRTMwBNQVhfUEFHRV9DT1VOVD0xMDczNzQxODIzAHAyAGF0bjIAYXRhbjIAcmVtb3ZlX2RpYWNyaXRpY3M9MgBERUZBVUxUX1NZTkNIUk9OT1VTPTIAREVGQVVMVF9XQUxfU1lOQ0hST05PVVM9MgBhcmdjPT0zIHx8YXJnYz09MgBNQVhfREVGQVVMVF9QQUdFX1NJWkU9ODE5MgBTRUxFQ1QgdGJsLGlkeCxzdGF0IEZST00gJVEuc3FsaXRlX3N0YXQxAEFnZ1N0ZXAxAHJlbW92ZV9kaWFjcml0aWNzPTEAQVRPTUlDX0lOVFJJTlNJQ1M9MQBURU1QX1NUT1JFPTEAYXJnYz09MQB1bmljb2RlNjEAVVBEQVRFIE9SIEZBSUwgJVEuJyVxX3NlZ2RpcicgU0VUIGxldmVsPT8gV0hFUkUgbGV2ZWw9LTEAREVGQVVMVF9KT1VSTkFMX1NJWkVfTElNSVQ9LTEAU0VMRUNUIGxldmVsLCBjb3VudCgqKSBBUyBjbnQgRlJPTSAlUS4nJXFfc2VnZGlyJyAgIEdST1VQIEJZIGxldmVsIEhBVklORyBjbnQ+PT8gIE9SREVSIEJZIChsZXZlbCAlJSAxMDI0KSBBU0MsIDIgREVTQyBMSU1JVCAxAFNFTEVDVCAoU0VMRUNUIG1heChpZHgpIEZST00gJVEuJyVxX3NlZ2RpcicgV0hFUkUgbGV2ZWwgPSA/KSArIDEAU0VMRUNUJ0lOU0VSVCBJTlRPIHZhY3V1bV9kYi4nfHxxdW90ZShuYW1lKXx8JyBTRUxFQ1QqRlJPTSIldyIuJ3x8cXVvdGUobmFtZSlGUk9NIHZhY3V1bV9kYi5zcWxpdGVfc2NoZW1hIFdIRVJFIHR5cGU9J3RhYmxlJ0FORCBjb2FsZXNjZShyb290cGFnZSwxKT4wAFNFTEVDVCBzcWwgRlJPTSAiJXciLnNxbGl0ZV9zY2hlbWEgV0hFUkUgdHlwZT0ndGFibGUnQU5EIG5hbWU8PidzcWxpdGVfc2VxdWVuY2UnIEFORCBjb2FsZXNjZShyb290cGFnZSwxKT4wAHJlbW92ZV9kaWFjcml0aWNzPTAATUFYX1dPUktFUl9USFJFQURTPTAAREVGQVVMVF9XT1JLRVJfVEhSRUFEUz0wAE1BWF9NTUFQX1NJWkU9MABERUZBVUxUX01NQVBfU0laRT0wAFRIUkVBRFNBRkU9MAA5MjIzMzcyMDM2ODU0Nzc1ODAAREVGQVVMVF9QQ0FDSEVfSU5JVFNaPTIwAGxvZzEwAE1BWF9BVFRBQ0hFRD0xMABNQVhfQ09NUE9VTkRfU0VMRUNUPTUwMAA/MDAwAE1BWF9DT0xVTU49MjAwMABERUZBVUxUX0NBQ0hFX1NJWkU9LTIwMDAAREVGQVVMVF9XQUxfQVVUT0NIRUNLUE9JTlQ9MTAwMABNQVhfRVhQUl9ERVBUSD0xMDAwAE1BWF9UUklHR0VSX0RFUFRIPTEwMDAATUFYX0xJS0VfUEFUVEVSTl9MRU5HVEg9NTAwMDAATUFYX1ZEQkVfT1A9MjUwMDAwMDAwAE1BWF9MRU5HVEg9MTAwMDAwMDAwMABNQVhfU1FMX0xFTkdUSD0xMDAwMDAwMDAwAHNlY29uZCBhcmd1bWVudCB0byAlI1QoKSBtdXN0IGJlIGEgY29uc3RhbnQgYmV0d2VlbiAwLjAgYW5kIDEuMABDT01QSUxFUj1jbGFuZy0xNi4wLjAAL3Byb2Mvc2VsZi9mZC8AJVEuAE4uACQuAC0tACwAbm9za2lwc2NhbioAdW5vcmRlcmVkKgBzej1bMC05XSoAKHN1YnF1ZXJ5LSV1KQAoam9pbi0ldSkAQ1JFQVRFIFRBQkxFIHgodHlwZSB0ZXh0LG5hbWUgdGV4dCx0YmxfbmFtZSB0ZXh0LHJvb3RwYWdlIGludCxzcWwgdGV4dCkAQ1JFQVRFIFRBQkxFICVRLiVzKCVzKQBhdXRvbWF0aWMgaW5kZXggb24gJXMoJXMpAEFOWSglcykASU5TRVJUIElOVE8gJVEuJyVxX2NvbnRlbnQnIFZBTFVFUyglcykAQ1JFQVRFIFRBQkxFICVRLiclcV9jb250ZW50JyglcykAbWFsZm9ybWVkIGRhdGFiYXNlIHNjaGVtYSAoJXMpAE1FUkdFICglcykAQ1JFQVRFIFRBQkxFICVRLnNxbGl0ZV9zZXF1ZW5jZShuYW1lLHNlcSkAQ1JFQVRFIFRBQkxFIHgoaW5wdXQsIHRva2VuLCBzdGFydCwgZW5kLCBwb3NpdGlvbikAVVBEQVRFICIldyIuc3FsaXRlX21hc3RlciBTRVQgc3FsID0gc3FsaXRlX2Ryb3BfY29sdW1uKCVkLCBzcWwsICVkKSBXSEVSRSAodHlwZT09J3RhYmxlJyBBTkQgdGJsX25hbWU9JVEgQ09MTEFURSBub2Nhc2UpAG1lbWRiKCVwLCVsbGQpAEJhZCBwdHIgbWFwIGVudHJ5IGtleT0lZCBleHBlY3RlZD0oJWQsJWQpIGdvdD0oJWQsJWQpACVzKCVkKQB6ZXJvYmxvYiglZCkAbWF4IHJvb3RwYWdlICglZCkgZGlzYWdyZWVzIHdpdGggaGVhZGVyICglZCkARlRTIGV4cHJlc3Npb24gdHJlZSBpcyB0b28gbGFyZ2UgKG1heGltdW0gZGVwdGggJWQpAEV4cHJlc3Npb24gdHJlZSBpcyB0b28gbGFyZ2UgKG1heGltdW0gZGVwdGggJWQpAChibG9iKQBVU0UgVEVNUCBCLVRSRUUgRk9SICVzKERJU1RJTkNUKQBVUERBVEUgIiV3Ii5zcWxpdGVfbWFzdGVyIFNFVCBzcWwgPSBzcWxpdGVfcmVuYW1lX2NvbHVtbihzcWwsIHR5cGUsIG5hbWUsICVRLCAlUSwgJWQsICVRLCAlZCwgJWQpIFdIRVJFIG5hbWUgTk9UIExJS0UgJ3NxbGl0ZVhfJSUnIEVTQ0FQRSAnWCcgIEFORCAodHlwZSAhPSAnaW5kZXgnIE9SIHRibF9uYW1lID0gJVEpAENSRUFURSBUQUJMRSB4KGtleSx2YWx1ZSx0eXBlLGF0b20saWQscGFyZW50LGZ1bGxrZXkscGF0aCxqc29uIEhJRERFTixyb290IEhJRERFTikAQ1JFQVRFIFRBQkxFIHgodGVybSwgY29sLCBkb2N1bWVudHMsIG9jY3VycmVuY2VzLCBsYW5ndWFnZWlkIEhJRERFTikAQ1JFQVRFIFRBQkxFIHgoJXMgJVEgSElEREVOLCBkb2NpZCBISURERU4sICVRIEhJRERFTikAKE5VTEwpACVjPykAU0VMRUNUIE5PVCBFWElTVFMoU0VMRUNUIGRvY2lkIEZST00gJVEuJyVxX2NvbnRlbnQnIFdIRVJFIHJvd2lkIT0/KQBSRVBMQUNFIElOVE8gJVEuJyVxX3NlZ2RpcicgVkFMVUVTKD8sPyw/LD8sPyw/KQBSRVBMQUNFIElOVE8gJVEuJyVxX3N0YXQnIFZBTFVFUyg/LD8pAFJFUExBQ0UgSU5UTyAlUS4nJXFfZG9jc2l6ZScgVkFMVUVTKD8sPykALCVzKD8pAFJFUExBQ0UgSU5UTyAlUS4nJXFfc2VnbWVudHMnKGJsb2NraWQsIGJsb2NrKSBWQUxVRVMoPywgPykAU0VMRUNUIGNvYWxlc2NlKChTRUxFQ1QgbWF4KGJsb2NraWQpIEZST00gJVEuJyVxX3NlZ21lbnRzJykgKyAxLCAxKQBJTlNFUlQgSU5UTyB2YWN1dW1fZGIuc3FsaXRlX3NjaGVtYSBTRUxFQ1QqRlJPTSAiJXciLnNxbGl0ZV9zY2hlbWEgV0hFUkUgdHlwZSBJTigndmlldycsJ3RyaWdnZXInKSBPUih0eXBlPSd0YWJsZSdBTkQgcm9vdHBhZ2U9MCkAd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBmdW5jdGlvbiBzbmlwcGV0KCkAbWlzdXNlIG9mIGFnZ3JlZ2F0ZTogJXMoKQBtaXN1c2Ugb2YgJXMgZnVuY3Rpb24gJSNUKCkAd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBmdW5jdGlvbiAlI1QoKQB1bnNhZmUgdXNlIG9mICUjVCgpAEZJTFRFUiBtYXkgbm90IGJlIHVzZWQgd2l0aCBub24tYWdncmVnYXRlICUjVCgpAHVua25vd24gZnVuY3Rpb246ICUjVCgpAG1pc3VzZSBvZiBhZ2dyZWdhdGU6ICUjVCgpAGFtYmlndW91cyByZWZlcmVuY2UgdG8gJXMgaW4gVVNJTkcoKQBVUERBVEUgdGVtcC5zcWxpdGVfbWFzdGVyIFNFVCBzcWwgPSBzcWxpdGVfcmVuYW1lX2NvbHVtbihzcWwsIHR5cGUsIG5hbWUsICVRLCAlUSwgJWQsICVRLCAlZCwgMSkgV0hFUkUgdHlwZSBJTiAoJ3RyaWdnZXInLCAndmlldycpAFVQREFURSBzcWxpdGVfdGVtcF9zY2hlbWEgU0VUIHNxbCA9IHNxbGl0ZV9yZW5hbWVfdGFibGUoJVEsIHR5cGUsIG5hbWUsIHNxbCwgJVEsICVRLCAxKSwgdGJsX25hbWUgPSBDQVNFIFdIRU4gdGJsX25hbWU9JVEgQ09MTEFURSBub2Nhc2UgQU5EICAgc3FsaXRlX3JlbmFtZV90ZXN0KCVRLCBzcWwsIHR5cGUsIG5hbWUsIDEsICdhZnRlciByZW5hbWUnLCAwKSBUSEVOICVRIEVMU0UgdGJsX25hbWUgRU5EIFdIRVJFIHR5cGUgSU4gKCd2aWV3JywgJ3RyaWdnZXInKQAsJXMoeC4nYyVkJXEnKQBJTlNFUlQgSU5UTyAlUS5zcWxpdGVfbWFzdGVyIFZBTFVFUygndHJpZ2dlcicsJVEsJVEsMCwnQ1JFQVRFIFRSSUdHRVIgJXEnKQBTRUxFQ1QgMiAqIHRvdGFsKDEgKyBsZWF2ZXNfZW5kX2Jsb2NrIC0gc3RhcnRfYmxvY2spICAgRlJPTSAoU0VMRUNUICogRlJPTSAlUS4nJXFfc2VnZGlyJyAgICAgICAgIFdIRVJFIGxldmVsID0gPyBPUkRFUiBCWSBpZHggQVNDIExJTUlUID8gICkACikAQkxPT00gRklMVEVSIE9OICVTICgAU0VMRUNUIHNxbCBGUk9NICIldyIuc3FsaXRlX3NjaGVtYSBXSEVSRSB0eXBlPSdpbmRleCcAREVMRVRFIEZST00gJVEuc3FsaXRlX21hc3RlciBXSEVSRSBuYW1lPSVRIEFORCB0eXBlPSdpbmRleCcAbmFtZT0nJXEnIEFORCB0eXBlPSdpbmRleCcAREVMRVRFIEZST00gJVEuJyVxX2NvbnRlbnQnAERFTEVURSBGUk9NICVRLiclcV9zdGF0JwBERUxFVEUgRlJPTSAlUS4nJXFfc2VnbWVudHMnAERFTEVURSBGUk9NICVRLiclcV9zZWdkaXInAFNFTEVDVCA/IFVOSU9OIFNFTEVDVCBsZXZlbCAvICgxMDI0ICogPykgRlJPTSAlUS4nJXFfc2VnZGlyJwBTRUxFQ1QgbWF4KCBsZXZlbCAlJSAxMDI0ICkgRlJPTSAlUS4nJXFfc2VnZGlyJwBERUxFVEUgRlJPTSAlUS5zcWxpdGVfbWFzdGVyIFdIRVJFIG5hbWU9JVEgQU5EIHR5cGU9J3RyaWdnZXInAERFTEVURSBGUk9NICVRLnNxbGl0ZV9tYXN0ZXIgV0hFUkUgdGJsX25hbWU9JVEgYW5kIHR5cGUhPSd0cmlnZ2VyJwB0YmxfbmFtZT0nJXEnIEFORCB0eXBlIT0ndHJpZ2dlcicAJyUuKnEnACV6LCAnYyVkJXEnAHR5cGU9J3RyaWdnZXInIEFORCBuYW1lPSclcScALCB4LiclcScAaW5kZXggJyVxJwBKU09OIHBhdGggZXJyb3IgbmVhciAnJXEnAERFTEVURSBGUk9NICVRLiclcV9kb2NzaXplJwBVUERBVEUgIiV3Ii5zcWxpdGVfbWFzdGVyIFNFVCBzcWwgPSBzcWxpdGVfcmVuYW1lX3RhYmxlKCVRLCB0eXBlLCBuYW1lLCBzcWwsICVRLCAlUSwgJWQpIFdIRVJFICh0eXBlIT0naW5kZXgnIE9SIHRibF9uYW1lPSVRIENPTExBVEUgbm9jYXNlKUFORCAgIG5hbWUgTk9UIExJS0UgJ3NxbGl0ZVhfJSUnIEVTQ0FQRSAnWCcAU0VMRUNUIENBU0UgV0hFTiBxdWlja19jaGVjayBHTE9CICdDSEVDSyonIFRIRU4gcmFpc2UoQUJPUlQsJ0NIRUNLIGNvbnN0cmFpbnQgZmFpbGVkJykgRUxTRSByYWlzZShBQk9SVCwnTk9UIE5VTEwgY29uc3RyYWludCBmYWlsZWQnKSBFTkQgIEZST00gcHJhZ21hX3F1aWNrX2NoZWNrKCVRLCVRKSBXSEVSRSBxdWlja19jaGVjayBHTE9CICdDSEVDSyonIE9SIHF1aWNrX2NoZWNrIEdMT0IgJ05VTEwqJwBVUERBVEUgIiV3Ii5zcWxpdGVfbWFzdGVyIFNFVCBzcWwgPSBzcWxpdGVfcmVuYW1lX3F1b3RlZml4KCVRLCBzcWwpV0hFUkUgbmFtZSBOT1QgTElLRSAnc3FsaXRlWF8lJScgRVNDQVBFICdYJyBBTkQgc3FsIE5PVCBMSUtFICdjcmVhdGUgdmlydHVhbCUlJwBVUERBVEUgdGVtcC5zcWxpdGVfbWFzdGVyIFNFVCBzcWwgPSBzcWxpdGVfcmVuYW1lX3F1b3RlZml4KCd0ZW1wJywgc3FsKVdIRVJFIG5hbWUgTk9UIExJS0UgJ3NxbGl0ZVhfJSUnIEVTQ0FQRSAnWCcgQU5EIHNxbCBOT1QgTElLRSAnY3JlYXRlIHZpcnR1YWwlJScAc3FsaXRlXF8lACQAU0VMRUNUKkZST00iJXciAFNFTEVDVCByYWlzZShBQk9SVCwlUSkgRlJPTSAiJXciLiIldyIAQU5BTFlaRSAiJXciLiIldyIAZm9yZWlnbiBrZXkgbWlzbWF0Y2ggLSAiJXciIHJlZmVyZW5jaW5nICIldyIAZG91YmxlLXF1b3RlZCBzdHJpbmcgbGl0ZXJhbDogIiV3IgBzeW50YXggZXJyb3IgYWZ0ZXIgY29sdW1uIG5hbWUgIiUuKnMiACVjIiVzIgAoIiVzIgBjYW5ub3QgJXMgJXMgIiVzIgBnZW5lcmF0ZWQgY29sdW1uIGxvb3Agb24gIiVzIgBjYW5ub3QgSU5TRVJUIGludG8gZ2VuZXJhdGVkIGNvbHVtbiAiJXMiAGVycm9yIGluIGdlbmVyYXRlZCBjb2x1bW4gIiVzIgBjYW5ub3QgVVBEQVRFIGdlbmVyYXRlZCBjb2x1bW4gIiVzIgAlcyBpbiAiJXMiAFVQU0VSVCBub3QgaW1wbGVtZW50ZWQgZm9yIHZpcnR1YWwgdGFibGUgIiVzIgB1bnNhZmUgdXNlIG9mIHZpcnR1YWwgdGFibGUgIiVzIgBjYW5ub3QgY3JlYXRlIGEgVEVNUCBpbmRleCBvbiBub24tVEVNUCB0YWJsZSAiJXMiAG5vIHN1Y2ggaW5kZXg6ICIlcyIAdW5rbm93biBkYXRhdHlwZSBmb3IgJXMuJXM6ICIlcyIAY2Fubm90IGRyb3AgJXMgY29sdW1uOiAiJXMiAG5vIHN1Y2ggY29sdW1uOiAiJXMiAG5vIHN1Y2ggY29sdW1uOiAiJVQiAHVucmVjb2duaXplZCB0b2tlbjogIiVUIgB3ZWVrZGF5IABub24tdW5pcXVlIGVudHJ5IGluIGluZGV4IAB3cm9uZyAjIG9mIGVudHJpZXMgaW4gaW5kZXggACBtaXNzaW5nIGZy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KQAAcUQAANYzAAD2MgAA9CoAAHkgAAB2DAAALSUAAEE4AADWMwAAr0EAAFkrAAA1BQAA1jMAAIApAAD2MgAAEEMAAAYuAACAEwAAjSsAAPkFAABaLQAAywsAAHsTAAArJAAA1jMAAOAvAACtKQAA4ysAABA1AADeNwAAFgoAABs4AAArJAAA1jMAADY0AAAmBAAAEi4AAHc5AAB3MgAATQ0AADAvAADoBwAAAwIBAEH0lQILJzsAOwA7ADsAAAA7ADsAOwAAADsAOwA7ADsAAAAAAAAAOwAAAAAAOwBBpJYCCys7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAAAAAAAAAOwA7AEHolgILUTsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwA7ADsAOwBB8JgCC5QD//3//QD////+/v79+/r/AP3/APv+AP3+//4A/Pr+AAD+/fz8/P39+/78/P/+/fwA/wD+/v39/f7+///+/f4A/v4A//75+/v2AAD9AP7///z+APf8//38//3//v/39vz7//8AAPv9+/4AAP7+APv6+Pr6AP7//f/9+/3//v38/vwAAP3+AP37/f//AP7+AAD9AP4A/vz8+gD+AP7+/Pf7+f37+fgA/vT3+/j+/v8A/f3//f///fv//////fr7/Pr7//v9/f39/f39/f79+/79/fz6+/7+/v3//vv//vv9+/v8+/v8/gD/AAD9/wD99P8AAP37/QD+/P79/gD9+/r7+v7++/X//gD///0A/v3+/f3+9/j6/fz6/////Pr9AP7//f/9+vn6//j//PgA//3//v3//v36//3//fv7+vz7//4A/fr///7//v7+AP7+/v/+/v///P77//7///79AP/+/wD+//z+//////////4A/vz+/v3/AP/////+//8A////////////AP3/AP8AAP///f4A/P4AQZCcAgvWLHAGxQX4BEIBQgEBACcFxgXTBS0HLQctB9cBAAAAANYARQQtBy0HLQctBy0HLQctBy0HLQctBy0HLQctBw8BDwHDBMME2ABYAAEAAQABAAEAAQAoAG8AAgFpAdUBAAJHAm4CtQLcAiMDSgORAzEERQRFBEUERQRFBEUERQRFBEUERQRFBEUERQRFBEUERQRFBEUEWQRFBMAEvQO9A2MGfgbxBi0HLQctBy0HLQctBy0HLQctBy0HLQctBy0HLQctBy0HLQctBy0HLQctBy0HLQctBy0HLQctBy0HLQctBy0HLQctBy0HLQctBy0HLQctBy0HLQctBy0HLQctBy0HLQctBy0HiQC1ALUAtQC1ALUAtQC1AF4ArgFCAEEAcABuARUCFQLkAu0EFQIVAk8ATwAVApwBnAGcAU0AnAF7AHEAcQAWABYAMggyCEgBSAFIAe8A1AHUAdQB1AH3A/cDmQFuAWkEogQVAhUCFQIVAhUCFQIVAhUCFQIVAhUCFQIVAhUCFQIVAhUCFQIVAhUCyQNtAm0CFQKCAhQDFAPMBMwENgM2A0MA+gQyCDIIMggyCDIIMggyCBsFugO6A0kC2AGAAoMBtwIaAh0CvAIVAhUCFQIVAhUCFQIVAhUCFQIVAt4AFQIVAhUCFQIVAhUCFQIVAhUCFQIVAhUCmwSbBJsEFQIVAhUCNQIVAhUCFQKUA3gEFQIVAggFFQIVAhUCFQIVAhUCFQIVAn8CMgXRADQENAQ0BDQERALRANEAIQUAA5UDiQKdBCQFlQEkBdYE+QCdBJ0E+QCdBJUB1gRZBdAB6wT0A/QD9ANYBVgFWAVYBbgAuAAuBYgDBwXIBbAGsAZhBmEG3QbdBmEGbwZzBvcG5Ab/Bv8G/wb/BmEGDgeNBnMGcwaNBvcG5AaNBuQGjQZhBg4HigbzBmEGDgcfB2EGDgdhBg4HHwfEBsQGxAYCBzAHMAcfB8QGygbEBgIHxAbEBqUGNAfeBt4GHwdhBv0G/QYPBw8HzgbYBlUHYQbPBs4G3wblBo0GVwdpB2kHegd6B3oHMggyCDIIMggyCDIIMggyCDIIMggyCDIIMggyCDIIzwBHBEsBbAKHAyYDMgTLBZgFyQUqBVoFcgXrBQsFCgYLBhUGOwY+Bj8GmgWtBVIGtgUfBtEFbAZ2BlAGfAYMBg0GkgaVBj0G5gKVB5kHhwf7BpEHlAeOB5AHHQcSBygHkgeSB5YHHgebByAHnQewByQHMQeSBzIHeAeTB5IHIgeBB4IHhQeGBzoHSQecBzMHvge8B6wHUAcjB4gHsgeJB4MHpgc4B10HuQe/B8EHTwdYB8AHlwfCB8MHxAfGB5oHowfHB3cHxQfKB58HyAfMB1EHzgfQB9EH0gfTB9QHzweNB2IH2QfaB3YH1QfcB2QH2wfWB9cH2AfdB54HqgelB94HsQegB98H5wfqB+sH6QfsB+IHeQd7B+8H2wfxB/QH9Qf2B/cH+Af7BwMI/Af9B/4H/wcBCAIIAAiYB48HoQeiB6QHBAgHCAUIGQgaCMEAwQDBABIBEwEUAcEAEgETARQBwQDfANsA4QDOANIA0wDUAMEAEwDbAOkA2ADYANkA2ADZAMEAJwHYANkAHwDBANgA2QDBAOQA1QDmACcAzgDYANkAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAwQATALkAugC7ALwAvQC+AP0AEgETARQBwwDBAMUAwQAFARIBEwEUAf0AzADuAMwAUQArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQASARMBFAEGAWYAZwBoAGkAagBrAGwAbQBuAG8AcABxAO8A8ADvAPAA0gDTANQAOgE7AToBOwA8AVYA/ABYAPwAEwA6ATsBAAEBAXEAGQBIACgBigCLAAoBZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAUQAkATsAJAEqAWwAbQBuAG8AcABxAEUAdAB1AHYASABqAGsAwQBvAHAAcQA2ADcAOAA5ADoAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAeAAZANgA2QCRAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAOcAigCLAHQAdQB2AKQAmQATAJsANgA3ADgAOQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQCAAIEALgAvADAAMQArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQDYAMEAGQA7AMEAEwClAKYAwQBDABgAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEASQDYANkAOwDYANkAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAeQCRADsAwQB0AHUAdgB3ABEBzAB6AHsAfAATABQAhgAWAIgAiQATAIQAfwCAAIEAGAAWABcAdAB1AHYAJADBAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAO8A8AA3ATgB1wBqAGsA8QATADsA2ADZAN8A/ABzAHQAdQB2AJcAeAAaAEcAwQA0ATUBwQCVAIAAOQHYAA0BUQArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQD9ANgA2QBkAF8AmQA7AJsABQFqAGsAGQDBAGUAwQDBAOcAcgAZAHQAdQB2AHEAMAF5AMEAzAA7AHcAeAB5AHoAewB8AH0A2ADZAMEA2ADZAIMAigCLAOYAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAmQCaAJsAnACdAO8A8AB0AHUAdgBMAMEAFwATABkAFgD9ABcA/AD9AGwAVwDMAFkABQHGAFwABQF0AHUAdgDBADIBMwHYANkAlgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA7AMEA2ADZABMA7wDwABsBFwBqAGsAbABtAG4AbwBwAHEASQD8AP0AjgA0ATUBigCLAFEAOQGRACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADMBZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAGQF0AHUAdgAdARcAwQAZAHcAOwDBAHoAewB8ADsAfwDLADsAzQATAAwBhAAZABcAFgDBAIoAiwD5AMwA+wBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQATABYAFwA7ABcAGQDvAPAAdAB1AHYAwQALAHQAdQB2AHQAdQB2APwADQEWAMEADwArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQARAY8AwQB2AI8AZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEATAB2ADsA8QB0AHUAdgAwAdgA2QAkAY8APABZAPEAEwBcAMEAwQAXABYANwE4AecAZQAWAI8AZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAEwDBAMEAOwAXAHQAdQB2ADsAyQAVAPEAMAEWAM4AfwCAAIEAwQCAAIEA6wDsADABKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAFgDBANgA2QDBAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAOcAwQDBAMEAdAB1AHYA2ADZAHQAdQB2AOIAUADBABMA6wDsADABFwDTANQA5wDMANgA2QDNAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ABMAwQB7AEwA7wDwAMEA/QDvAPAA7wDwAMEAagBrAMEAWQD8AMEAXAA7APwAjQD8ACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ABwBoQDYANkAwQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQDnAMEAEAC7ALwAvQC+AAcACAAJADUBwwAZAMUAOQETAH8AgACBAAYBzAAWAHUAGADYANkABwFmAGcAaABpAGoAawBsAG0AbgBvAHAAcQArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQDBAO8A8ADBADsAEwC8AP0AvgBNAOIATwDBAMMA/ADFAMEAEwAtAS4BwQDBAMwA2ADZAOIA2ADZAAoBzACfAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEADADvAPAA6AAqAe4AdQD9AO8A8ADuAAMBBAHBAPwAGwAfAMEAwQCOAMwA/ADBAMEAJwAGAcEAZAAKARYBKgDMAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHUAnwDYANkAeQDYANkAPwDBAMEAwQDvAPAAcwB0AMEAKgFJAO4A7gDnABMA7wDwAPwAFgAYANMA1AAYAMEA2ADZANgA2QD8AJkAmgCbAP0AEAATAJAA1QAMASsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5AO4AEwA7AMEAOwArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQAWABcAwQAZAMEAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAHAFNAMEATwBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQAeAcEAwQDBAHUAIwF1AOgAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAzAAWABcAQgAZANgA2QAjAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAMEADAFVAGUAwQA1ATUB8AATADkBOQFeANAA0QDBAO8A8ADBAEIA/AATAAwB9ADYANkAwQBKANUA/AChABMABwH+ACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQDBANgA2QAFADsAwQATAPQACgALAAwADQAOAGUANQERAJIA/gA5AcEAwQBMAHMA2ADZADUBDAAHAR4AOQEgAC4AVwAuAFkAggDBAFwAKAAWAAcBGwDYANkAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAKgCWACMB2ADZAHQAdQB2ABMAFADBABYARgAEAXQAwQAYAAgBwQAHAU4APwA9AFEAdAAkAMEABAHBAB0AwQAIAcEAIQCRAMEAOwAwANgA2QBiANgA2QDBAHMAwQBzAMEAOwDYANkA2ADZANgA2QDYANkA/wDYANkARwDBAIMAwQAZAEEA2ADZANgA2QDYANkA0ADRAFUAhQDBAGQAwQBaAIoAiwCKAIsA2ADZANgA2QDBAGQAwQBsAIcAdAB1AGoAawCMAHkA2ADZANgA2QByAKIAdAB1AHYAKwEsAXkA2ADZANgA2QDBAPQAwQCHAPQAwQAAAQEBjAD0AMEA/gDBAMEA/gCZAJoAmwCNAP4AlQCWAAIB2ADZANgA2QCZAJoAmwCcAJ0AAAABAAIA2ADZAAUAcwCeAMEAoAAKAAsADAANAA4AwQA7ABEAfgDBABMAFACBABYAwQAWABYAGADBABcAHgAZACAAEwAUAJAAFgAkANgA2QAoAMEA2ADZAMEAmACBANgA2QDBACQA2ADZAMEAYwDBAMEANQDBAMEAOwAXAMEAGQDYANkAwQDYANkAmABGADsARwA7AHUAwQDYANkATgDYANkAUQDYANkAPgFHAFUAwQCFAMEAwQBaABcAFwAZABkAeAB5AGIAVQDBAGQAwQAXAFoAGQB5AGoAawATANgA2QDYANkAZAByAIMAdAB1AHYAagBrAHkA2ADZANgA2QDBAHIAdQB0AHUAdgCFAMEAeQDBAMEAigCLAMEAFwDBABkAFwAXABkAGQAHAAgA2ADZAMEAwQCZAJoAmwCcAJ0A2ADZAMEAogDYANkA2ADZAJkAmgCbAJwAnQABAAIAwQDBAAUAEwAUADsAFgAKAAsADAANAA4AwQBhABEAwQAXAMEAGQAgASQAwQDyANgA2QDsABcAHgAZACAAEwAUABcAFgAZANgA2QAoANgA2QDYANkAwQA7ANgA2QDBACQAUwBUAJkAmQCbAJsAFwBHABkAFwDBABkAwQDBAMEAdQDBAMEAwQBGAMEAwQA7AMEA/wD/AB8BTgD/APMAUQC/AP8AKQFHAA8BZAAlAfUACwHWAPYAagBrAGwA9gAPAWIA9QAlAXIA3AB0AHUAdgALAQ8BeQAPAeEA2wDlANsAZADbAAMBAwEDAQMBagBrAPkAxAA8ABgBjQDzAHIA+QB0AHUAdgCFAPUAeQDIACkBigCLAJkAmgCbAJwAnQApAcgAJgATABQAlwAWAMgAlgCMACYBJgEWABABKwDqABIAogAOAcgAJADtAJkAmgCbAJwAnQDtABsB7QDtABIAxwCVAPYAEAEOARAByACeAPYA9gDqADsA6gD2AMcAIgE+ACEByADHABYA3QBzAEcAyADIAMcAxwDdANoA2gATABQAQAAWANoA4wAWAOAAfgDgAKUA3QAYADEByABxADgBJADaANwA2gBkABoB2gBbANoAPQFqAGsA3QDjABoBPQFSAJQAcgAJAXQAdQB2ADsAkQB5ABYAFQGeAMgACQEZAMoAkwD6AEcAFwENAJIAwgDCAPkA+AD6AIwA9wD2AAYAwADAAMAALwEvAdUAzwAsAdUAmQCaAJsAnACdANUA1QBkANUA3gDPANYA1gBqAGsABADeAM8AAwAWAKMAcgAPAHQAdQB2ABAAFwB5ABcAiwCXAIIAGQCOABAAGAAUAJAAAQCOAIIAggA9ADUANQAlAJcANQA1AIIAdAAiAAEAjQAFABYAcwChAI0AmQCaAJsAnACdABkARABEAEsAKQBzABgAgwAUABMAfQAWAGAAFgAWAEMAFwAWAEMAOwAYABYAHABDABcAFgAWAJUAFwAXABcAdAAXABkAJQBhAI0AFwAXABYAjwAZAEsAWAAiACIAIgAiAFYASwBdABcAIgAWACIAGQAYACIAGQAXAI4AFwCOACwAFwAXABcACwAXABkAFgAWABYADwAXABcAFgAWABkAAQABAI0AGQAXAIcAPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AY0AjQA/AY0APwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AT8BPwE/AQBB8MgCC+QgOALQADgCdgBzAOUAOAJ2AHMA5QA4AiIFeQENBZgBMgIyAjICOAKZAXoBIgX8BCkAKQApACkA0AD2BUcARwDLA6MBKQApAOsBLwEXAS8BzAONAUcARwB9AH4AUADBBMEEGgQdBBAEEAR7AHsAfAB8AHwAfADcAZkB2QQBAAEAPwICAN0EJgJ2AHMA5QA9AeABkgDgAQwCdgBzAOUAEQIvBaEBCwKOAH0AfgBQAMEEwQQaBB0EEAQQBHsAewB8AHwAfAB8AHYAcwDlAEcBegB6AHoAegB5AHkAeAB4AHgAdwB0ALwBHAEcARwBHAG6AboBugEfBngBIQaoBHcBiwQ1AosENQKZAR8GGQIDAeIAvAFlAJEAwQE8AS8C8AB6AHoAegB6AHkAeQB4AHgAeAB3AHQAvAF9AH4AUADBBMEEGgQdBBAEEAR7AHsAfAB8AHwAfACOACYBqARTAcABeAB4AHgAdwB0ALwBfwCoBKkEqgSUALkBuAE4AncAdAC8AXwAfAB8AHwAdQB6AHoAegB6AHkAeQB4AHgAeAB3AHQAvAHGAXEADQANACICegB6AHoAegB5AHkAeAB4AHgAdwB0ALwBpgE8AS8CqASpBKoElQDIBJkByAR8AHwAfAB8AHoAegB6AHoAeQB5AHgAeAB4AHcAdAC8AdEBVgENBA0EGwQeBH0AfgBQAMEEwQQaBB0EEAQQBHsAewB8AHwAfAB8AP8ECgLeAKgEOAKZAeAAAgKvAFIAUwB6AHoAegB6AHkAeQB4AHgAeAB3AHQAvAHvAxAAEACoBIUAhQB9AH4AUADBBMEEGgQdBBAEEAR7AHsAfAB8AHwAfAB6AHoAegB6AHkAeQB4AHgAeAB3AHQAvAERBCICqAR1AagEqQSqBPwAmgWPAfgB9QH0AW8AMAI2AgQAngOeA7EB8wFUAcwBSAFoAYoB1QSoBKkEqgQzAjgCegB6AHoAegB5AHkAeAB4AHgAdwB0ALwBHAEcAXEBLAZHBrkBuAGaAJkBvQFHAEcABgU1AsUEqASpBKoEVQDHBA8BLQIfAgMCGQY4AmIAxgQGAP4E2AGOAH0AfgBQAMEEwQQaBB0EEAQQBHsAewB8AHwAfAB8ACYCDQANAAME+wHIBKgEyAQlAm0AbQDeADgC1gSvADgCqwFuAMUAvQE6AjkCrgEQBvkDRQEnAqgEDgEfAXAB/gFrAf0BAQFHAEcAHwJHAEcAZwE8AS8CTQZ6AHoAegB6AHkAeQB4AHgAeAB3AHQAvAH5A/kD+wP8AxsAHAEcAagEqQSqBIYEOAJMBpkBhQO+ACYCZAE1AiYCqQMVAgUChgQEAp0BhgQoAqgEqQSqBDgCIAISBjMAMwDWAH0AfgBQAMEEwQQaBB0EEAQQBHsAewB8AHwAfAB8AKgE2gGHAIcAmQEcARwB0gX5AXkAeQB4AHgAeAB3AHQAvAHvAzUCBgLZAB0CGQY8AS8CjgAGABQCfQB+AFAAwQTBBBoEHQQQBBAEewB7AHwAfAB8AHwAEwZ6AHoAegB6AHkAeQB4AHgAeAB3AHQAvAHlAagEqQSqBOIBGQHzBL0D/ACoBHUB+AH1AfQBqARUATsCqAQ7ApkBJAHzAb0DbAO/AOABPAEvAoABIgF8AXoAegB6AHoAeQB5AHgAeAB4AHcAdAC8AX0AfgBQAMEEwQQaBB0EEAQQBHsAewB8AHwAfAB8AJkBigFwBKgEZQNkABwBHAGoBKkEqgR1AUUEqASpBKoEqASpBKoENQLHASAAdQHpAH0AfgBQAMEEwQQaBB0EEAQQBHsAewB8AHwAfAB8AJkFvwM4AuQAvgN6AHoAegB6AHkAeQB4AHgAeAB3AHQAvAGGBOQAqASdAKgEqQSqBBEGDQANAC0BvQPQBIYEmQCZAYYEdQEvBpgEBQBxASwGrQHWBAMAvQN6AHoAegB6AHkAeQB4AHgAeAB3AHQAvAF9AH4AUADBBMEEGgQdBBAEEAR7AHsAfAB8AHwAfACZAdAANwKoBAQEqASpBKoEqASEAVQDmwAQBh4BkgFKBEoE6AE4AtEBVgEnBScFEAZ9AH4AUADBBMEEGgQdBBAEEAR7AHsAfAB8AHwAfACBADgCDQANAHYBegB6AHoAegB5AHkAeAB4AHgAdwB0ALwBLgE4AsUBEAKoBKkEqgQNAA0AqASpBKoEEQXPAfMEmQElBSUFEAb0A8UBxAHIACsBRwBHAPEEegB6AHoAegB5AHkAeAB4AHgAdwB0ALwBfQB+AFAAwQTBBBoEHQQQBBAEewB7AHwAfAB8AHwAmQHjADEEhgQcARwBowE4ARYBFgEdAR0BiwWWAZUBfgGGBDUCOAKGBKwENQJABjUCfQB+AFAAwQTBBBoEHQQQBBAEewB7AHwAfAB8AHwAxQHKBQ0ADQAABnoAegB6AHoAeQB5AHgAeAB4AHcAdAC8AckAOAJiATIGPwICAN0ESANJA0oDGgY9AbwEkgAGAJkB/wD+AP0AzgAvBQkArAQGAUcARwCoAXoAegB6AHoAeQB5AHgAeAB4AHcAdAC8AX0AfgBQAMEEwQQaBB0EEAQQBHsAewB8AHwAfAB8ADgCHAEcATgCvQSZAT4COQHdBF0BEAVgAaMBPQE1ApIA6wENAmsGiwFzAesBLwVGAEYADwVHAEcA8AAtBWgAUADBBMEEGgQdBBAEEAR7AHsAfAB8AHwAfAB6AHoAegB6AHkAeQB4AHgAeAB3AHQAvAFaBBwBHAGsAcAB9QW9BLcBHAEcAdEFSAU3AdoBNQJbBMsD6wHrAdkA7wQ1AgIGOALMA88AOAIDBPAAfwFcBAcCegB6AHoAegB5AHkAeAB4AHgAdwB0ALwB+gNrAEcARwD5Aw0ADQCQAzgC1wU4AhwBHAFhAA4C6wHAAZEDLgUqBSECmQEcARwBNQKXANEA1wXZBQYBwgE3ADcAOAA4ADUC+QP5A/sDuwFMAZkBDwIMACcBfQB+AFAAwQTBBBoEHQQQBBAEewB7AHwAfAB8AHwAWwGZAWAD/gW9BH0AfgBQAMEEwQQaBB0EEAQQBHsAewB8AHwAfAB8AHEEaQbaAWkGcwF9AHIAUADBBMEEGgQdBBAEEAR7AHsAfAB8AHwAfADXBUkB2gFLAXoAegB6AHoAeQB5AHgAeAB4AHcAdAC8AcsAiwU4Ag4FYAPQAb0EtAF6AHoAegB6AHkAeQB4AHgAeAB3AHQAvAEpAnEEagYbAmoGDwAPAHwDegB6AHoAegB5AHkAeAB4AHgAdwB0ALwBOAIqARoCbwSLBRcGGAYzBZkBBgAGAJEE9ASfAUABHAEcAYsF/AE1Ag0CLAHJASsAKwA4An0DDAA1AkoB3gGpAZcBfgBQAMEEwQQaBB0EEAQQBHsAewB8AHwAfAB8ADgCOQA5ACABqASLBfABygGIAYgBhwERAYUBbwQWBlEDkQSXAQYAOAJBAYYE1gEsACwAFQZaBKoB6gAGAEMBAAEcAgABhgSvATgChgRCAREA5wFbBDoAOgB6AHoAegB6AHkAeQB4AHgAeAB3AHQAvAFcBNgA4QE7ADsAqASpBKoEbwAwAkQBBADsAMgBDgI4Au0AyAE4ArUBqAAsAqQBjQDfATMCOAIlATgCRwQ4AiUBOAJHBBMCOAJoAwgAPAA8AOsAPQA9ADgCngE4Ap4BOAK9AT4APgAtAC0ALgAuAC8ALwDHADEAMQAtAjgCZwE4AmQA5gEyADIAPwA/AEAAQAAxAp8BFwKaATgCAwQ4AhYCPAEvAjwBLwJBAEEADgAOADgCAwQ4AgACpANoA/oDbQBtAKMD+QNCAEIAgwCDAG4AwwG9AToCOQKgAbEA+QOEAIQAQwBDADgC0wE4AqQD1wFUBRsB4gCjAzsBUwWXATgCywGXAfkD+QP7A+8AlwFWANUARgU0ADQARABEAPkD+QP7A/wDGwAxBpwEvwFFAEUAIAFhAGwABQZqAIgBiAGHAREBhQE4Am8DUQNzAzgCbwAwAtIBBAA4ApgAHgAmADgCbATqAIwBQwFvADACDwIEADMCNQA1AEIBOAKjAKMAOAJRAdQBpACkAE0BMwJMAEwAOAIhAeoFOAIfAOkFOAK9AVIB4wFkADYANgBYAUgASAAoAewAOAQtAr0BbwNQBYYAhgCoAEkASQCNAKEAoQAmBi0CFwI4Aj8BOAJcARgC8QPZAQUBBQF7A3oD6wAXAjgCAwQ4AtsBFgIFAW8BbQBtAAkCiACIAIIAggADBG4AbgG9AToCOQJtAG0A+QOiAKIAnACcADgCbgA4BL0BOgI5ApoBXwH5AzgCYQE8AS8COAJXATgCZADxAWUBAgFkAIIDgwOMAIwAYwEeBfkD+QP7A/wDGwCLAIsAagHDAYkAiQCKAIoA+QP5A/sD/AMbAJwEvwE4AnQBIAFvADAC/QMEAIgBiAGHAREBhQE4AnUEUQM4AjQEOAICAewBMwI4AtMASwBLACsCwgPqAAUBQwFvADACoQMEAHEATQBNAEIBSgBKACoAKgBdBb0BMAAwAIoFMwLOA88DRARDBEQEQwReAy0ClgCiA0IFcQBOBSoCkAX9A/sE8gTmBOwA5QTnBL0BOQY/BTQBFAGoADUBCwCNAIkBNgHoAC0CfQUDBE8BIwF4BdsAUAFtAG0AqAMpAYIF6wBVAd0BbgD2Ab0BOgI5AnEFgQX5A5ABDQVtAd8AzgUDBM0FSwVMBUoFSQVtAG0AzAA8BtAELgIJAdoAbgDNAL0BOgI5ApoBgwH5A/0FswA8AS8C+QP5A/sD/AMbAOYA+wXNBE8AMAJVAAQAogHXACQCUQBUALwAfgWtALUAzQHDASMAzgEzArcA+QP5A/sD/AMbALgA0wW5ALoA7wHyAGIAjgGEBSQAgwXkAVsA1QGRAYYFvQHAAMgF9gDeBeoBWgEVAfgAxADtAf8BLQJeAegE+QD6AJMBIQUgBW8AMAKwAQQAHwUYBV0ASwZzA0oG4ACUAbIBCAIHAbMBKwYzAgMFAgVsAQMEMgEBBQgBSQYdBm0AbQByARcFMwEcBrYBgABuAGIFvQE6AjkCvQEiAvkDCgC6BWkAfQFhBSIAPAJjADgFLQI6AaIEEgIQARIBewHSADcFIwKBAYIBEwE9AuME3gSbAZwB7gWlALIA7wX5A/kD+wP8AxsA7QXsBQMETgCTAKYA3ADdAG0AbQBEAzABpwC+AdQAPgFuAOcAvQE6AjkCkABCBPkDQARGAbQAqQC8BLYATgHuAJMD8QBQBLsAqgCrAKUBVwBYAKcBvQBZAFoArABTBPMATwT0AJ4AEgD1AFkB9wD5A/kD+wP8AxsABQFIBMEAygTpAcIAJQBuAVMD7gH7AMMA+gFcABMA8gFmARQA9wFxA2kBXgB+AzEBnwABAicAXwCWBKAAIATGA3cEYACuAHYE4QAYARoBxgDAA3EAjASIBAQBFQAWABcAigSQBI8EfAQYACEAGQDKAB4CGgBkAC8EZgAhBGcABwAfBCMEWQQkBFgECgELARwAKACGAf4DXwNwAB0ANAKeBJ0EDAGwAI8AnQPaBNoE2gTaBNoE2gTaBNoE2gTaBNoE2gTaBNoEDQFCBtoEQQYAQeDpAguBCW8GbwZvBsMF2ARHBdgE2ATYBMMFwwXDBdgEZQVlBfgF+QTYBNgE2ATYBNgE2ATYBNgE2ATYBMIF2ATYBNgE2AQbBhsG2ATYBNgE2ATYBNgE2ATYBG4F2AR1BdgE2ATYBNgE2ATEBcUF2ATYBNgE9wX5BdQFfAV7BXoFeQXmBVkFcwVsBXAFvgW/Bb0FwQXFBcQF2ARvBZ4FrgWdBdgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgEpgWtBawFqwW0BaoFpwWgBZ8FoQWiBdgE2ATwBNgE2ATtBCMF2ATYBNgE2ATYBAsGCgbYBKMF2AT5BJgFlwWxBaQFsAWvBf8FPwY+BtUF2ATYBNgE2ATYBNgEGwbYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgEWwUbBhsG2AT5BBsGGwZcBVwF9QT1BF8F2AQGBj4FPgU+BT4FRwU+BdgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBPwF+gXYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ARDBdgE2ATYBNgE2ATYBNgE2ATYBNgE2AQ4BtgE4QUxBUMFQwVDBUMFRQUyBTAFPQX6BN8EZwZ/BXQFRAV0BWQGcgV/BX8FcgV/BUQFZAYKBU8GBQVlBWUFZQVbBVsFWwVbBV8FXwXABUQFPQXYBGcGZwZNBU0FZgZmBk0F1QVXBogFJgUsBSwFLAUsBU0F6gRyBVcGVwZyBYgFJgVyBSYFcgVNBeoE5QVhBk0F6gTLBU0F6gRNBeoEywUkBSQFJAUZBdgE2ATLBSQFCgUkBRkFJAUkBS0G2ATPBc8FywVNBSUGJQZoBWgFbQVfBcYFTQXYBG0FawVpBXIFHAU7BjsGNwY3BjcGbAZsBgYGSAb5BPkE+QT5BEgGDAUMBfoE+gT5BEgG2ATYBNgE2ATYBNgEQwbYBAEG1gVRBdgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2AQMBtgE2ATYBNgE2ATYBNgE2ATYBNgEjQXYBNsEAwbYBNgE2ATYBNgE2ATYBNgEdgV3BVIF2ATYBNgE2ATYBNgE2ASFBdgE2ATYBIAF2ATYBNgE2ATYBNgE2ATYBGMG2ATYBNgE2ATYBNgE5AXjBdgE2ARPBdgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgECAXYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgEagXYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgEKgZgBdgE2ATYBNgEWgbYBNgE2ATYBNgE2ATYBNgE2ATYBNgE2ATYBNgEUwY0BY8F2ASOBZIF7gTYBOQE2ATYBAkAQYDzAgvnBr0AvQC8AL4AvwC/AL8AvwC+AL4AvgC+AL4AwwDFAMcAxwDGAMYAxADEAMsAywDNAM0AzgDQANAA0ADRANUA1gDXANcA1wDXANcA1wDXANcA1wDXANcA1wDXAOAA4ADcANwA3gDeAOEA4QDhAOEA4gDiAOIA4gDiAN8A3wDjAOMA4wDKAOUA5gDmAOYA5gDmAOkA2gDaAOoA6gDrAOsAvgDtAO0AvgC+AL4AzADMAMwA7wDyAPIA8gDwAPAA/AD8APMA8wDzAP4A9AD0APQA/wD/APUA9QABAQEBAAEAAQABAAEAAcgAyADuAO4ABgEGAQYBBgECAQIBAgECAQMBAwEDAQgBBAEEAfkA+QDnAOcA2wDbANsACQEJAQkB9wD3APgA+AD6APoA+gD6AL4A9gD2AAsBCwELAQsBvgAMAQwBDAEMAb4AvgAPAQ8BDwEPAQ8BDwEQAQ0BDQEOAQ4BBwEHAdkA2QDZANkA2QDYANgA2ADZANkA2QDZANkA2QDZANgA2QDZANkA2QDZANkA2QDZANkAEgHZANkA2QDZANkA2QDZANkA2QDZANkA2QATARMB2QAUARQB2QDZANkA2QDZANkAFwEXARgBGAEWARYBBQH9AP0AFQEVAb4AGQEZAd0A3QDoAOgAGgEaAb4AvgC+ABsBGwG+AL4AvgC+AL4A0wDUAL4AHQEfAR8BHwEgASABIAEiASIBHgEeASQBJQElASMBIwEjASMB2QDZAOwA7ADsAL4AvgC+ACcBJwG+AL4AvgC+AL4AvgC+ACgBvgC+AL4AKgEsAS0BLQEuAQoBCgExATEBMQEwAfEA8QAyATIBMwE0ATQBNAE0ATQBNAE1ATUBNQE5ATsBOwE8ATwBOgE6AT0BPQE+AT4BPgH7ABEBEQERATgBOAE3AbkAugC6ALsAuwC7AMAAwADAAMIAwgC+AMsAyQDJAMEAwQDBANAA0QDSANIAzwDP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IGRhdGEgdHlwZQBObyBzcGFjZSBsZWZ0IG9uIGRldmljZQBPdXQgb2YgbWVtb3J5AFJlc291cmNlIGJ1c3kASW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwAUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUASW52YWxpZCBzZWVrAENyb3NzLWRldmljZSBsaW5rAFJlYWQtb25seSBmaWxlIHN5c3RlbQBEaXJlY3Rvcnkgbm90IGVtcHR5AENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlcgBPcGVyYXRpb24gdGltZWQgb3V0AENvbm5lY3Rpb24gcmVmdXNlZABIb3N0IGlzIGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE11bHRpaG9wIGF0dGVtcHRlZAAAAAAApQJbAPABtQWMBSUBgwYdA5QE/wDHAzEDCwa8AY8BfwPKBCsA2gavAEIDTgPcAQ4EFQChBg0BlAILAjgGZAK8Av8CXQPnBAsHzwLLBe8F2wXhAh4GRQKFAIICbANvBPEA8wMYBdkA2gNMBlQCewGdA70EAABRABUCuwCzA20A/wGFBC8F+QQ4AGUBRgGfALcGqAFzAlMBAEGY7wMLDCEEAAAAAAAAAAAvAgBBuO8DCwY1BEcEVgQAQc7vAwsCoAQAQeLvAwuIAUYFYAVuBWEGAADPAQAAAAAAAAAAyQbpBvkGAAAAAAL/AARkACAAAAT//wYAAQABAAEA//8B/wH//////wH/Af8B/wH/Af8B/wH/Af//////Cv8gAP//A/8B/wT/HgAAAQX//////2MAAAhjAOgDAgAAAP//////AAAAAf8B//////////////8AQfnwAwsBBABBhvEDC0QB/wH//////wABIAAEAIAAAAj//wH/Af////////8B/wb/B/8I/wn//////7wCvAIBAP//AQABAP//AAD//////////wBB2vEDCwEUAEH68QMLHv//AQAK////////////Af8B/wAAAAAAAAH/Af8B/wBBqvIDC0gB/wAAAAAAAAH/Af8BAAAAAQAAAAH//////wAAAAAB////AAAAAP////////////8oAAr//////wEACv////8A//////////8AQdbzAwscAf8B////AQD//////////////////wr//////wBBgPQDCx8BAAAAAQAAAQABAAD+//9/AAAAALAEAAAoAAAAAAABAEHA9QMLARQAQcz1AwsB+gBB+/UDCwFAAEGM9gMLCP7//3////9/AEGs9gMLKQcAAAADAAAANAAAAAACAAAAAAAAZwUAANR0AABzAAAAdAAAAHUAAAB2AEHo9gMLRXcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAAwAAADQAAAAAAgAAAAAAABczAADYdAAAcwAAAHQAAAB1AAAAdgBBwPcDC0V3AAAAeAAAAHkAAAB6AAAAewAAAHwAAAB9AAAAfgAAAAMAAAA0AAAAAAIAAAAAAAAANAAA3HQAAHMAAAB0AAAAdQAAAHYAQZj4AwtFdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAADAAAANAAAAAACAAAAAAAAgysAANR0AABzAAAAdAAAAHUAAAB2AEHw+AMLJHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAAAAAQABBoPkDC27SKQAAlAAAAAAAAADdMQAAlQAAAAAAAAArEAAAlgAAAAAAAAD6NgAAlwAAAAAAAADYDAAAmAAAAAAAAADCDAAAmQAAAAAAAAC3MAAAmgAAAAAAAADSKgAAmwAAAAAAAABVPQAA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"); -// src/utils/sqljs.js +// src/utils/db/sqljs.js var import_sql = __toESM(require_sql_wasm()); var loadSQL = async () => { const sql = await (0, import_sql.default)({ @@ -47113,184 +49202,31 @@ var loadSQL = async () => { return sql; }; -// src/dispatch/mdb.ts -var dispatchDatabaseFileChanged = (dbPath, tag) => { - let evt = new CustomEvent(eventTypes.mdbChange, { detail: { dbPath, tag } }); - window.dispatchEvent(evt); -}; -var processFolderDB = async (folderPath, processor, fallback) => { - let tags = []; - const dbPath = folderPath + "/" + window.make.settings.folderContextFile + ".mdb"; - const dbFileExists = getAbstractFileAtPath(app, dbPath); - if (dbFileExists) { - const folderDB = await getMDBTable(window.make.sqlJS, "files", dbPath); - if (folderDB) { - tags.push(...folderDB.schema.def.split("&")); - await processor(folderDB, dbPath); - dispatchDatabaseFileChanged(dbPath); - } else if (fallback) { - await fallback(); - } - } else if (fallback) { - await fallback(); - } - return tags; -}; -var processTagDB = async (tags, processor) => { - for (const tag of tags) { - const dbPath = tagFileFromTag(tag); - const tagFileExists = getAbstractFileAtPath(app, dbPath); - if (tagFileExists) { - await getMDBTable(window.make.sqlJS, "files", dbPath).then((tagDB) => processor(tagDB, dbPath).then((f4) => { - dispatchDatabaseFileChanged(dbPath, tag); - })); - } - } -}; -var saveDB = async (dbPath, newTable) => { - const mdbTable = await mdbToDBTables(window.make.sqlJS, dbPath, newTable); - return saveDBToPath(window.make.sqlJS, dbPath, mdbTable); -}; -var renameRow = (folder, filePath, toFilePath) => { - return { - ...folder, - rows: folder.rows.map((f4) => f4.File == filePath ? { ...f4, "File": toFilePath } : f4) - }; -}; -var removeRow = (folder, filePath) => { - return { - ...folder, - rows: folder.rows.filter((f4) => f4.File != filePath) - }; -}; -var insertRow = (folder, row2) => { - if (folder.rows.find((f4) => f4.File == row2.File)) { - return { - ...folder, - rows: folder.rows.map((f4) => f4.File == row2.File ? { ...f4, ...row2 } : f4) - }; - } - return { - ...folder, - rows: [...folder.rows, row2] - }; -}; -var rowIsEmpty = (row2) => Object.keys(row2).filter((f4) => f4 != "File" && row2[f4].length != 0).length == 0 ? true : false; -var saveContextToFrontmatter = (file, cols, context) => { - saveContextToFile(getAbstractFileAtPath(app, file), cols, context); -}; -var onFileCreated = async (newPath) => { - const newFolderPath = getFolderPathFromString(newPath); - await processFolderDB(newFolderPath, async (folder, path) => { - }).then((f4) => processTagDB(f4, async (tag, path) => { - const newRow = { "File": newPath }; - await saveDB(path, insertRow(tag, newRow)); - })); -}; -var onFileChanged = async (oldPath, newPath) => { - const oldFolderPath = getFolderPathFromString(oldPath); - const newFolderPath = getFolderPathFromString(newPath); - if (oldFolderPath == newFolderPath) { - await processFolderDB(oldFolderPath, async (folder, path) => { - await saveDB(path, renameRow(folder, oldPath, newPath)); - }).then((f4) => processTagDB(f4, async (tag, path) => { - const fromDBRow = tag.rows.find((f5) => f5.File == oldPath); - if (fromDBRow) - await saveDB(path, renameRow(tag, oldPath, newPath)); - })); - } else { - await processFolderDB(oldFolderPath, async (folder, path) => { - await saveDB(path, removeRow(folder, oldPath)); - const dbPath = newFolderPath + "/" + window.make.settings.folderContextFile + ".mdb"; - const fromDBRow = folder.rows.find((f4) => f4.File == oldPath); - const toDBFileExists = getAbstractFileAtPath(app, dbPath); - if (toDBFileExists) { - const toFolderDB = await getMDBTable(window.make.sqlJS, "files", dbPath); - if (toFolderDB) { - const [newDBCols, fmDBCols] = Object.keys(fromDBRow).reduce((p3, c4) => fromDBRow[c4].length == 0 ? p3 : toFolderDB.cols.find((f4) => f4.name == fromDBRow[c4]) ? [[...p3[0], c4], p3[1]] : [p3[0], [...p3[1], c4]], [[], []]); - const newRow = { ...newDBCols.reduce((p3, c4) => ({ ...p3, [c4]: fromDBRow[c4] }), {}), "File": newPath }; - await saveDB(dbPath, insertRow(toFolderDB, newRow)); - saveContextToFrontmatter(newPath, folder.cols, fmDBCols.reduce((p3, c4) => ({ ...p3, [c4]: fromDBRow[c4] }), {})); - dispatchDatabaseFileChanged(dbPath); - } - } else { - saveContextToFrontmatter(newPath, folder.cols, Object.keys(fromDBRow).reduce((p3, c4) => ({ ...p3, [c4]: fromDBRow[c4] }), {})); - } - }, async () => { - const dbPath = newFolderPath + "/" + window.make.settings.folderContextFile + ".mdb"; - const toDBFileExists = getAbstractFileAtPath(app, dbPath); - if (toDBFileExists) { - const toFolderDB = await getMDBTable(window.make.sqlJS, "files", dbPath); - if (toFolderDB) - dispatchDatabaseFileChanged(dbPath); - } - }).then((f4) => processTagDB(f4, async (tag, path) => { - await saveDB(path, renameRow(tag, oldPath, newPath)); - })); - } -}; -var onFileDeleted = async (oldPath) => { - const oldFolderPath = getFolderPathFromString(oldPath); - await processFolderDB(oldFolderPath, async (folder, path) => { - const fromDBRow = folder.rows.find((f4) => f4.File == oldPath); - if (rowIsEmpty(fromDBRow)) { - await saveDB(path, removeRow(folder, oldPath)); - } - }).then((tags) => processTagDB(tags, async (tag, path) => { - const fromDBRow = tag.rows.find((f4) => f4.File == oldPath); - if (rowIsEmpty(fromDBRow)) { - await saveDB(path, removeRow(tag, oldPath)); - } - })); -}; -var onFolderChanged = async (oldPath, newPath) => { - await processFolderDB(newPath, async (folder, path) => { - const newDB = { - ...folder, - rows: folder.rows.map((f4) => getFolderPathFromString(f4["File"]) == oldPath ? { ...f4, "File": f4["File"].replace(oldPath, newPath) } : f4) - }; - await saveDB(path, newDB); - }).then((f4) => processTagDB(f4, async (tag, path) => { - const newDB = { - ...tag, - rows: tag.rows.map((f5) => getFolderPathFromString(f5["File"]) == oldPath ? { ...f5, "File": f5["File"].replace(oldPath, newPath) } : f5) - }; - await saveDB(path, newDB); - })); -}; -var onFolderDeleted = async (oldPath) => { -}; - -// src/main.ts -var import_queue_promise = __toESM(require_dist()); - // src/components/FileContextView/FileContextView.tsx -var import_obsidian26 = require("obsidian"); -init_compat_module(); +var import_obsidian33 = require("obsidian"); // src/components/FileContextView/FileContextList.tsx -init_compat_module(); -var FileContextList = (props) => { +var FileContextList = (props2) => { var _a2; - const { path } = props; + const { path } = props2; const { tableData, tagContexts, contextTable, folderPath, isFolderContext, setContextTable, saveDB: saveDB2, saveContextDB, dbPath } = q2(MDBContext); const fileContext = F( () => { - const tags = tagContexts.reduce((p3, c4) => contextTable[c4] ? { - ...p3, - [c4]: { - cols: contextTable[c4].cols.filter((f4) => f4.name != "File" && f4.type != "fileprop"), - data: contextTable[c4].rows.find((r3) => r3.File == path), - dataIndex: contextTable[c4].rows.findIndex((r3) => r3.File == path) - } - } : p3, {}); const td = tableData ? { "folder": { - cols: tableData.cols.filter((f4) => f4.name != "File" && f4.type != "fileprop"), + cols: tableData.cols.filter((f4) => f4.name != "File" && f4.type != "fileprop" && f4.hidden != "true"), data: tableData.rows.find((r3) => r3.File == path), dataIndex: tableData.rows.findIndex((r3) => r3.File == path) } } : {}; + const tags = tagContexts.reduce((p3, c4) => contextTable[c4] ? { + ...p3, + [c4]: { + cols: contextTable[c4].cols.filter((f4) => f4.name != "File" && f4.type != "fileprop" && f4.hidden != "true"), + data: contextTable[c4].rows.find((r3, index) => index == parseInt(props2.path)), + dataIndex: contextTable[c4].rows.findIndex((r3) => r3.File == path) + } + } : p3, {}); return { ...tags, ...td @@ -47311,22 +49247,22 @@ var FileContextList = (props) => { }, f4.name), /* @__PURE__ */ bn.createElement("div", { className: "mk-file-context-value" }, /* @__PURE__ */ bn.createElement(DataTypeView, { + plugin: props2.plugin, initialValue: fileContext.folder.data[f4.name], index: fileContext.folder.dataIndex, - table: "", file: fileContext.folder.data["File"], - field: f4, + column: { ...f4, table: "" }, editable: true }))) ))); }; // src/components/FileContextView/FileContextView.tsx -var import_obsidian27 = require("obsidian"); +var import_obsidian34 = require("obsidian"); var FILE_CONTEXT_VIEW_TYPE = "make-context-view"; -var ICON2 = "sheets-in-box"; -var VIEW_DISPLAY_TEXT2 = "Spaces"; -var FileContextLeafView = class extends import_obsidian27.ItemView { +var ICON2 = "component"; +var VIEW_DISPLAY_TEXT2 = "File Context"; +var FileContextLeafView = class extends import_obsidian34.ItemView { constructor(leaf, plugin) { super(leaf); this.navigation = false; @@ -47364,23 +49300,39 @@ var FileContextLeafView = class extends import_obsidian27.ItemView { constructFileContext() { this.destroy(); this.root = createRoot(this.contentEl); - this.root.render(/* @__PURE__ */ bn.createElement(FileContextView, null)); + this.root.render(/* @__PURE__ */ bn.createElement(FileContextView, { + plugin: this.plugin + })); + } +}; +var allTagsForFile = async (plugin, file) => { + var _a2, _b2, _c2, _d2, _e2, _f; + let rt = []; + const dbPath = folderContextFromFolder(plugin, file == null ? void 0 : file.parent.path); + const dbFileExists = getAbstractFileAtPath(app, dbPath); + if (dbFileExists) { + const folderDB = await getMDBTable(plugin, "files", dbPath, false); + if (folderDB) { + rt.push(...folderDB.schema.def.split("&")); + } + } + if (file instanceof import_obsidian33.TFile) { + const fCache = app.metadataCache.getFileCache(file); + if (fCache && fCache.tags) + rt.push(...(_b2 = (_a2 = fCache.tags) == null ? void 0 : _a2.map((f4) => f4.tag)) != null ? _b2 : []); + if (fCache && ((_c2 = fCache.frontmatter) == null ? void 0 : _c2.tags)) + rt.push(...(typeof ((_d2 = fCache.frontmatter) == null ? void 0 : _d2.tags) === "string" ? [fCache.frontmatter.tags] : Array.isArray((_e2 = fCache.frontmatter) == null ? void 0 : _e2.tags) ? (_f = fCache.frontmatter) == null ? void 0 : _f.tags : []).filter((f4) => typeof f4 === "string").map((f4) => "#" + f4)); } + return uniq(rt).filter((f4) => getAbstractFileAtPath(app, tagContextFromTag(plugin, f4))); }; -var FileContextView = () => { +var FileContextView = (props2) => { const [path, setPath] = p2(null); const file = F(() => getAbstractFileAtPath(app, path), [path]); const folderPath = file == null ? void 0 : file.parent.path; - const dbPath = `${folderPath}/${window.make.settings.folderContextFile}.mdb`; - const tags = F(() => { - var _a2, _b2, _c2, _d2, _e2; - let rt = []; - if (file instanceof import_obsidian26.TFile) { - const fCache = app.metadataCache.getFileCache(file); - rt.push(...(_b2 = (_a2 = fCache.tags) == null ? void 0 : _a2.map((f4) => f4.tag)) != null ? _b2 : []); - rt.push(...(typeof ((_c2 = fCache.frontmatter) == null ? void 0 : _c2.tags) === "string" ? [fCache.frontmatter.tags] : Array.isArray((_d2 = fCache.frontmatter) == null ? void 0 : _d2.tags) ? (_e2 = fCache.frontmatter) == null ? void 0 : _e2.tags : []).filter((f4) => typeof f4 === "string").map((f4) => "#" + f4)); - } - return uniq(rt).filter((f4) => getAbstractFileAtPath(app, tagFileFromTag(f4))); + const dbPath = folderContextFromFolder(props2.plugin, folderPath); + const [tags, setTags] = p2([]); + h2(() => { + allTagsForFile(props2.plugin, file).then((t4) => setTags(t4)); }, [file]); const contextExists = getAbstractFileAtPath(app, dbPath); const changeActiveFile = (evt) => { @@ -47388,7 +49340,7 @@ var FileContextView = () => { }; h2(() => { window.addEventListener(eventTypes.activeFileChange, changeActiveFile); - window.make.activeFileChange(); + props2.plugin.activeFileChange(); return () => { window.removeEventListener(eventTypes.activeFileChange, changeActiveFile); }; @@ -47398,24 +49350,179 @@ var FileContextView = () => { }, /* @__PURE__ */ bn.createElement("div", { className: "mk-file-context-section" }, /* @__PURE__ */ bn.createElement(FileSticker, { + plugin: props2.plugin, filePath: file == null ? void 0 : file.path }), /* @__PURE__ */ bn.createElement("div", null, file == null ? void 0 : file.name)), file && contextExists && /* @__PURE__ */ bn.createElement(MDBProvider, { + plugin: props2.plugin, dbPath, folder: folderPath }, /* @__PURE__ */ bn.createElement(FileContextList, { + plugin: props2.plugin, path: file.path })), tags.map((tag) => /* @__PURE__ */ bn.createElement(MDBProvider, { - dbPath: tagFileFromTag(tag), + plugin: props2.plugin, + dbPath: tagContextFromTag(props2.plugin, tag), tag }, /* @__PURE__ */ bn.createElement(FileContextList, { + plugin: props2.plugin, path: file.path })))); }; +// src/components/Blink/Blink.tsx +var import_obsidian35 = require("obsidian"); + +// src/components/Blink/BlinkComponent.tsx +var BlinkComponent = (props2) => { + const [previewPath, setPreviewPath] = p2(null); + const [allItems, setAllItems] = p2([]); + const defaultOptions3 = F(() => app.workspace.getLastOpenFiles().filter((f4) => getAbstractFileAtPath(app, f4)).map((f4) => ({ description: f4, value: f4, name: filePathToString(f4) })), []); + h2(() => { + const allTags = loadTags(props2.plugin).map((f4) => ({ + value: f4, + name: f4 + })); + const allNotes = getAllAbstractFilesInVault(props2.plugin, app).map((f4) => ({ + name: fileNameToString(f4.name), + description: f4.path, + value: f4.path + })); + setAllItems([...allNotes, ...allTags]); + }, []); + const loadPreview = (path) => { + if (previewPath != path && getAbstractFileAtPath(app, path)) { + setPreviewPath(path); + } + }; + const hoverItem = (item) => { + loadPreview(item); + }; + const selectItem = (item) => { + if (!item) + return; + const type = viewTypeByString(item); + if (type == "file" || type == "folder") { + openAFile(getAbstractFileAtPath(app, item), app, false); + } + if (type == "tag") { + openTag(item, app, false); + } + }; + const optionProps = { + multi: false, + editable: false, + onHover: hoverItem, + value: [], + options: allItems, + defaultOptions: defaultOptions3, + saveOptions: (_4, items) => selectItem(items[0]), + placeholder: "Quickly Search a File, Folder, Tag... Press Tab to Edit", + searchable: true, + showAll: true + }; + return /* @__PURE__ */ bn.createElement(bn.Fragment, null, /* @__PURE__ */ bn.createElement(OptionMenu, { + ...optionProps, + hide: props2.hide, + previewComponent: previewPath && /* @__PURE__ */ bn.createElement("div", { + className: "mk-blink-preview" + }, /* @__PURE__ */ bn.createElement(FlowView, { + plugin: props2.plugin, + path: previewPath, + load: true + })) + })); +}; + +// src/components/Blink/Blink.tsx +var Blink = class extends import_obsidian35.Modal { + constructor(app2, plugin) { + super(app2); + this.plugin = plugin; + this.modalEl.toggleClass("mk-blink-modal", true); + this.modalEl.toggleClass("modal", false); + this.modalEl.toggleClass("prompt", true); + this.root = createRoot(this.modalEl); + this.root.render(/* @__PURE__ */ bn.createElement(BlinkComponent, { + plugin, + hide: () => this.close() + })); + } +}; + +// src/components/ContextView/MDBFileViewer.tsx +var import_obsidian36 = require("obsidian"); +var MDB_FILE_VIEWER_TYPE = "make-mdb-viewer"; +var MDBFileViewer = class extends import_obsidian36.FileView { + constructor(leaf, plugin) { + super(leaf); + this.navigation = true; + this.plugin = plugin; + } + getViewType() { + return MDB_FILE_VIEWER_TYPE; + } + getDisplayText() { + var _a2; + return (_a2 = this.file) == null ? void 0 : _a2.name; + } + async onClose() { + this.destroy(); + } + destroy() { + if (this.root) + this.root.unmount(); + } + async onOpen() { + this.destroy(); + } + async setState(state, result) { + this.file = getAbstractFileAtPath(app, state.file); + this.constructInlineContext(); + await super.setState(state, result); + this.leaf.tabHeaderInnerTitleEl.innerText = this.file.name; + this.leaf.view.titleEl = this.file.name; + const headerEl = this.leaf.view.headerEl; + if (headerEl) { + headerEl.querySelector(".view-header-title").innerText = this.file.name; + } + return; + } + getState() { + let state = super.getState(); + state.file = this.file.path; + return state; + } + constructInlineContext() { + const mdbTypeByDBPath = (dbpath) => { + var _a2; + return dbpath.endsWith(((_a2 = this.plugin) == null ? void 0 : _a2.settings.folderContextFile) + ".mdb") ? "folder" : "tag"; + }; + const type = mdbTypeByDBPath(this.file.path); + const folder = type == "tag" ? null : getFolderFromPath(app, this.file.path); + const tag = type == "tag" ? filePathToString(this.file.path).replace(".mdb", "") : null; + this.destroy(); + this.root = createRoot(this.contentEl); + this.root.render( + /* @__PURE__ */ bn.createElement("div", { + className: "mk-folder-view" + }, tag ? /* @__PURE__ */ bn.createElement(TagContextViewComponent, { + type: "tag", + tag, + plugin: this.plugin + }) : /* @__PURE__ */ bn.createElement(FolderContextViewComponent, { + type: "folder", + folder, + plugin: this.plugin + })) + ); + } +}; + // src/main.ts -var MakeMDPlugin = class extends import_obsidian28.Plugin { +var MakeMDPlugin = class extends import_obsidian37.Plugin { constructor() { super(...arguments); + this.saveSpacesDB = (0, import_obsidian37.debounce)(() => saveDBAndKeepAlive(this.spaceDBInstance(), this.spacesDBPath), 1e3, true); this.triggerVaultChangeEvent = (file, changeType, oldPath) => { let event = new CustomEvent(eventTypes.vaultChange, { detail: { @@ -47427,26 +49534,31 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { window.dispatchEvent(event); }; this.onCreate = (file) => { + if (!file) + return; this.triggerVaultChangeEvent(file, "create", ""); - if (file instanceof import_obsidian28.TFile && file.extension != "mdb") { - this.queue.enqueue(() => onFileCreated(file.path)); - } + this.addToQueue(() => onFileCreated(this, file.path)); + onFileCreated2(this, file.path, file instanceof import_obsidian37.TFolder); }; this.onDelete = (file) => { this.triggerVaultChangeEvent(file, "delete", ""); - if (file instanceof import_obsidian28.TFile && file.extension != "mdb") { - this.queue.enqueue(() => onFileDeleted(file.path)); - } else if (file instanceof import_obsidian28.TFolder) { - this.queue.enqueue(() => onFolderDeleted(file.path)); + if (file instanceof import_obsidian37.TFile && file.extension != "mdb") { + this.addToQueue(() => onFileDeleted(this, file.path)); + onFileDeleted2(this, file.path); + } else if (file instanceof import_obsidian37.TFolder) { + this.addToQueue(() => onFolderDeleted(file.path)); + onFolderDeleted2(this, file.path); } this.activeFileChange(); }; this.onRename = (file, oldPath) => { this.triggerVaultChangeEvent(file, "rename", oldPath); - if (file instanceof import_obsidian28.TFile && file.extension != "mdb") { - this.queue.enqueue(() => onFileChanged(oldPath, file.path)); - } else if (file instanceof import_obsidian28.TFolder) { - this.queue.enqueue(() => onFolderChanged(oldPath, file.path)); + if (file instanceof import_obsidian37.TFile && file.extension != "mdb") { + this.addToQueue(() => onFileChanged(this, oldPath, file.path)); + onFileChanged2(this, oldPath, file.path); + } else if (file instanceof import_obsidian37.TFolder) { + this.addToQueue(() => onFolderChanged(this, oldPath, file.path)); + onFolderChanged2(this, oldPath, file.path); } this.activeFileChange(); }; @@ -47455,10 +49567,10 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { if (leafs.length == 0) { let leaf = this.app.workspace.getLeftLeaf(false); await leaf.setViewState({ type: FILE_TREE_VIEW_TYPE }); - if (showAfterAttach) - this.app.workspace.revealLeaf(leaf); } else { - leafs.forEach((leaf) => this.app.workspace.revealLeaf(leaf)); + } + if (platformIsMobile()) { + app.workspace.leftSplit.collapse(); } replaceMobileMainMenu(this); }; @@ -47484,7 +49596,6 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { let leaf = this.app.workspace.getRightLeaf(false); await leaf.setViewState({ type: FILE_CONTEXT_VIEW_TYPE }); } else { - leafs.forEach((leaf) => this.app.workspace.revealLeaf(leaf)); } }; this.refreshFileContextLeafs = () => { @@ -47496,6 +49607,15 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { this.openFileTreeLeaf(true); }; } + async sqlJS() { + console.time("Loading SQlite"); + const sqljs = await loadSQL(); + console.timeEnd("Loading SQlite"); + return sqljs; + } + spaceDBInstance() { + return this.spaceDB; + } openFlow() { const cm = getActiveCM(); if (cm) { @@ -47524,6 +49644,10 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { } } } + quickOpen() { + let quickOpenModal = new Blink(this.app, this); + quickOpenModal.open(); + } toggleBold() { const cm = getActiveCM(); if (cm) { @@ -47540,11 +49664,14 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { }); } } - loadSpaces() { + async loadSpaces() { + this.spacesDBPath = "spaces.mdb"; + this.spaceDB = await getDB(await loadSQL(), this.spacesDBPath); patchWorkspace(this); document.body.classList.toggle("mk-hide-tabs", !this.settings.sidebarTabs); + document.body.classList.toggle("mk-hide-ribbon", !this.settings.showRibbon); this.registerView(CONTEXT_VIEW_TYPE, (leaf) => { - return new ContextView(leaf, this); + return new ContextView(leaf, this, CONTEXT_VIEW_TYPE); }); if (this.settings.spacesEnabled) { if (!this.settings.spacesDisablePatch) @@ -47553,14 +49680,24 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { return new FileTreeView(leaf, this); }); this.app.workspace.onLayoutReady(async () => { + const tables = dbResultsToDBTables(this.spaceDBInstance().exec("SELECT name FROM sqlite_schema WHERE type ='table' AND name NOT LIKE 'sqlite_%';")); + if (tables.length == 0) { + initiateDB(this.spaceDBInstance()); + } + if (this.settings.folderRank) { + migrateIndex(this); + } else { + rebuildIndex(this); + } + this.registerEvent(this.app.vault.on("create", this.onCreate)); + this.registerEvent(this.app.vault.on("delete", this.onDelete)); + this.registerEvent(this.app.vault.on("rename", this.onRename)); await this.openFileTreeLeaf(true); + ; }); } - this.registerEvent(this.app.vault.on("create", this.onCreate)); - this.registerEvent(this.app.vault.on("delete", this.onDelete)); - this.registerEvent(this.app.vault.on("rename", this.onRename)); this.registerEvent(app.workspace.on("active-leaf-change", () => this.activeFileChange())); - this.registerEvent(app.workspace.on("editor-change", (0, import_obsidian28.debounce)(() => this.activeFileChange(), 180, true))); + this.registerEvent(app.workspace.on("editor-change", (0, import_obsidian37.debounce)(() => this.activeFileChange(), 180, true))); } activeFileChange() { let filePath = null; @@ -47570,8 +49707,8 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { if (file) filePath = file.path; } else { - const view = app.workspace.getActiveViewOfType(import_obsidian28.MarkdownView); - if (view instanceof import_obsidian28.MarkdownView) { + const view = app.workspace.getActiveViewOfType(import_obsidian37.MarkdownView); + if (view instanceof import_obsidian37.MarkdownView) { filePath = view.file.path; } } @@ -47581,9 +49718,27 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { } } loadContext() { + this.addCommand({ + id: "mk-open", + name: "Quick Open", + callback: () => this.quickOpen(), + hotkeys: [ + { + modifiers: ["Mod"], + key: "o" + } + ] + }); this.registerView(FILE_CONTEXT_VIEW_TYPE, (leaf) => { return new FileContextLeafView(leaf, this); }); + this.registerView(INLINE_CONTEXT_VIEW_TYPE, (leaf) => { + return new InlineContextView(leaf, this); + }); + this.registerView(MDB_FILE_VIEWER_TYPE, (leaf) => { + return new MDBFileViewer(leaf, this); + }); + this.registerExtensions(["mdb"], MDB_FILE_VIEWER_TYPE); this.app.workspace.onLayoutReady(async () => { await this.openFileContextLeaf(); this.activeFileChange(); @@ -47646,7 +49801,7 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { callback: () => this.toggleEm(), hotkeys: [ { - modifiers: ["Mod", "Shift"], + modifiers: ["Mod"], key: "i" } ] @@ -47656,27 +49811,39 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { if (platformIsMobile() && this.settings.mobileMakeBar) loadStylerIntoContainer(app.mobileToolbar.containerEl, this); } - async onload() { - window.make = this; - this.queue = new import_queue_promise.default({ - concurrent: 1, - interval: 0 + addToQueue(operation) { + this.queue = this.queue.then(operation).catch(() => { }); - this.sqlJS = await loadSQL(); - (0, import_obsidian28.addIcon)("mk-logo", mkLogo); - console.log("Loading Make.md"); + } + async onload() { + console.time("Loading Make.md"); + this.queue = Promise.resolve(); + (0, import_obsidian37.addIcon)("mk-logo", mkLogo); + console.time("Loading Settings"); this.addSettingTab(new MakeMDPluginSettingsTab(this.app, this)); await this.loadSettings(); + console.timeEnd("Loading Settings"); this.app.workspace.onLayoutReady(async () => { - if (!getAbstractFileAtPath(this.app, getFolderPathFromString(this.settings.tagContextFolder))) { + if (!getAbstractFileAtPath(this.app, getFolderPathFromString2(this.settings.tagContextFolder))) { this.app.vault.createFolder(this.settings.tagContextFolder); } }); - this.loadSpaces(); + console.time("Loading Spaces"); + await this.loadSpaces(); + console.timeEnd("Loading Spaces"); + console.time("Loading Context"); this.loadContext(); + console.timeEnd("Loading Context"); + console.time("Loading Flow Editor"); this.loadFlowEditor(); + console.timeEnd("Loading Flow Editor"); + console.time("Loading Maker Mode"); this.loadMakerMode(); + console.timeEnd("Loading Maker Mode"); + console.time("Loading CM Extensions"); this.registerEditorExtension(cmExtensions(this, platformIsMobile())); + console.timeEnd("Loading CM Extensions"); + console.timeEnd("Loading Make.md"); } openFileFromPortal(e4) { openFileFromPortal(this, e4); @@ -47692,6 +49859,10 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { } async loadSettings() { this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); + const userConfig = safelyParseJSON(await defaultConfigFile(this.app)); + this.settings.newFileFolderPath = userConfig.newFileFolderPath; + this.settings.newFileLocation = userConfig.newFileLocation; + this.saveSettings(); } async saveSettings(refresh = true) { await this.saveData(this.settings); @@ -47702,6 +49873,7 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { } onunload() { console.log("Unloading Make.md"); + this.spaceDBInstance().close(); window.removeEventListener(eventTypes.spawnPortal, this.spawnPortal); window.removeEventListener(eventTypes.loadPortal, this.loadPortal); window.removeEventListener(eventTypes.focusPortal, this.focusPortal); @@ -47710,30 +49882,13 @@ var MakeMDPlugin = class extends import_obsidian28.Plugin { this.openFileFromPortal ); this.detachFileTreeLeafs(); - this.queue.stop(); - this.queue.clear(); } }; -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ /*! Copyright (c) 2018 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -/** - * table-core - * - * Copyright (c) TanStack - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */ /** * @license * Lodash @@ -47752,11 +49907,23 @@ object-assign * * @license MIT */ -/** @license React v16.13.1 - * react-is.development.js +/** + * react-virtual + * + * Copyright (c) TanStack + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */ +/** + * table-core * - * Copyright (c) Facebook, Inc. and its affiliates. + * Copyright (c) TanStack * * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT */ diff --git a/manifest.json b/manifest.json index 49f85f6..6c037ed 100755 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "make-md", "name": "MAKE.md", - "version": "0.5.15", + "version": "0.5.16", "minAppVersion": "0.16.0", "description": "Make.md brings you features that supercharges Obsidian. Sort your files in custom order and add file icons using Spaces. Edit inline embeds with Flow Editor. And style your text and add new markdown blocks without writing markdown using Maker Mode.", "author": "MAKE.md", diff --git a/styles.css b/styles.css index 73b2d2b..6d21e63 100644 --- a/styles.css +++ b/styles.css @@ -2,6 +2,21 @@ .mk-hide-tabs .mod-left-split .mod-top-left-space .workspace-tab-header-container-inner { visibility: hidden; } +.is-mobile.mk-hide-ribbon .workspace-drawer.mod-left .workspace-drawer-inner { + padding-left: 0 !important; +} +.mk-hide-ribbon .workspace-ribbon { + display: none; +} +.mk-hide-ribbon.is-hidden-frameless:not(.is-fullscreen) .workspace-tabs.mod-top-left-space .workspace-tab-header-container:before { + width: calc(var(--frame-left-space) + var(--ribbon-width)); +} +.mk-hide-ribbon.is-hidden-frameless:not(.is-fullscreen) .workspace-tabs.mod-top-left-space .workspace-tab-header-container { + padding-left: calc(var(--frame-left-space) + var(--ribbon-width)); +} +.is-mobile.mk-hide-ribbon .workspace-drawer-ribbon { + display: none; +} .is-mobile .workspace-drawer.mod-left .workspace-drawer-inner .workspace-drawer-header { padding-left: 0 !important; } @@ -15,6 +30,9 @@ } .is-mobile .mk-sidebar .mk-file-icon button { font-size: 16px; + margin: 0; + height: 24px; + width: 24px; } body.is-mobile .sidebar-toggle-button { display: flex !important; @@ -110,11 +128,11 @@ body:not(.is-mobile) .mk-main-menu-button:hover { overflow-x: auto; position: relative; z-index: 0; - padding: var(--file-margins); } .mk-folder-header { display: flex; - padding-left: 12px; + padding: var(--file-margins) var(--context-padding); + padding-bottom: 0 !important; } .mk-folder-header .inline-title { flex-grow: 1; @@ -204,6 +222,9 @@ body:not(.is-mobile) .mk-main-menu-button:hover { .mk-flowspace-editor .mk-floweditor { padding: 12px 0px; } +.mk-flowspace-editor.mk-foldernote { + padding: var(--context-padding); +} .mk-flowspace-container { } .mk-flowspace-title span { @@ -229,6 +250,24 @@ body:not(.is-mobile) .mk-main-menu-button:hover { font-size: var(--font-ui-small); font-style: italic; } +.mk-flow-container { + width: 100%; +} +.mk-flow-container > div { + border-bottom: thin dotted var(--divider-color); +} +.mk-flow-container > div > span { + font-size: var(--font-smallest); + padding: var(--size-4-1) var(--context-padding); + color: var(--text-faint); +} +.mk-folder-scroller .mk-flowspace-editor { + padding: 0; +} +.mk-folder-scroller .cm-sizer { + margin-left: var(--context-padding) !important; + margin-right: var(--context-padding) !important; +} /* src/css/Menu.css */ .mk-suggestion { @@ -318,6 +357,8 @@ body:not(.is-mobile) .mk-main-menu-button:hover { } .mk-options-menu__suggestions { width: 100%; + max-height: 180px; + overflow: auto; } @media screen and (min-width: 30em) { .mk-options-menu__suggestions { @@ -333,6 +374,15 @@ body:not(.is-mobile) .mk-main-menu-button:hover { margin: 0px 6px; padding: 6px 8px; border-radius: var(--radius-s); + display: flex; + flex-direction: column; +} +.mk-options-menu__suggestions li .mk-description { + color: var(--text-faint); + font-size: var(--font-ui-smaller); + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; } .mk-options-menu__suggestions li mark { text-decoration: underline; @@ -624,27 +674,64 @@ body:not(.is-mobile) .mk-main-menu-button:hover { margin-right: 0; display: flex; align-items: center; - padding-left: 8px; + padding-left: var(--context-padding); + gap: 16px; + min-height: 48px; +} +.mk-table-selector button { + border-radius: 0; + margin: 4px -8px; + margin-bottom: 1 !important; + height: 100%; +} +.mk-table-selector .mk-is-active { + border-bottom: thin solid var(--text-normal); + color: var(--text-normal); + background: none !important; } .mk-view-selector button { background: none; border: none; box-shadow: none; - margin: 4px; color: unset !important; } .mk-view-selector button:hover { - background-color: var(--interactive-hover); + color: var(--text-normal); } .mk-view-selector { width: 100%; display: flex; color: var(--text-faint); - align-items: center; + align-items: stretch; + border-bottom: 1px solid var(--divider-color); + flex-wrap: wrap; } .mk-view-selector input { background: none; border: none; + flex-grow: 1; +} +.is-phone .mk-view-selector button { + width: unset; +} +.mk-view-search { + background: var(--background-modifier-form-field); + display: flex; + border-radius: 8px; + align-items: center; +} +.mk-view-search button:hover { + background: unset !important; +} +.mk-view-search button { + margin: 0 !important; +} +.mk-view-options { + display: flex; + align-items: center; + color: var(--text-normal) !important; + min-height: 48px; + padding-left: var(--context-padding); } .mk-view-selector span { flex-grow: 1; @@ -655,7 +742,7 @@ body:not(.is-mobile) .mk-main-menu-button:hover { } .mk-filter-bar { display: flex; - padding: 8px 12px; + padding: 8px var(--context-padding); gap: 8px; width: 100%; border-bottom: 1px solid var(--divider-color); @@ -698,6 +785,24 @@ body:not(.is-mobile) .mk-main-menu-button:hover { } .mk-search-bar { } +.mk-tag-selector { + padding: 0 var(--context-padding); + display: flex; + gap: 8px; +} +.mk-tag-selector button { + color: var(--tag-color); + background-color: var(--tag-background); + border: var(--tag-border-width) solid var(--tag-border-color); + font-size: var(--tag-size); + vertical-align: baseline; + border-left: none; + border-right: none; + padding-top: var(--tag-padding-y); + padding-bottom: var(--tag-padding-y); + box-shadow: none !important; + height: unset !important; +} /* src/css/FlowEditor.css */ .mk-floweditor .workspace-leaf { @@ -807,15 +912,23 @@ body:not(.is-mobile) .mk-main-menu-button:hover { border-left: var(--embed-border-left); padding: var(--embed-padding); } +.mk-flow-seamless .internal-embed > .markdown-embed, .mk-flow-seamless .internal-embed.markdown-embed { padding: 8px; border-radius: 4px; border: thin solid var(--color-base-20); margin-top: 4px; } +.mk-flow-classic .internal-embed > .markdown-embed, .mk-flow-classic .internal-embed.markdown-embed { margin-top: 24px; } +.internal-embed > .markdown-embed .markdown-rendered h1, +.internal-embed > .markdown-embed .markdown-rendered h2, +.internal-embed > .markdown-embed .markdown-rendered h3, +.internal-embed > .markdown-embed .markdown-rendered h4, +.internal-embed > .markdown-embed .markdown-rendered h5, +.internal-embed > .markdown-embed .markdown-rendered h6, .internal-embed.markdown-embed .markdown-rendered h1, .internal-embed.markdown-embed .markdown-rendered h2, .internal-embed.markdown-embed .markdown-rendered h3, @@ -827,6 +940,7 @@ body:not(.is-mobile) .mk-main-menu-button:hover { .markdown-embed p { margin-bottom: 24px; } +.mk-flow-seamless .internal-embed > .markdown-embed, .mk-flow-seamless .internal-embed.markdown-embed { margin-top: 24px; } @@ -857,12 +971,15 @@ body:not(.is-mobile) .mk-main-menu-button:hover { .cm-line:hover > .mk-floweditor-selector { visibility: visible; } -.internal-embed.markdown-embed:hover .mk-floweditor-selector { +.internal-embed.markdown-embed:hover .mk-floweditor-selector, +.internal-embed > .markdown-embed:hover .mk-floweditor-selector { visibility: visible; } +.mk-flow-classic .internal-embed > .markdown-embed > .mk-floweditor-selector, .mk-flow-classic .internal-embed.markdown-embed > .mk-floweditor-selector { top: 5px !important; } +.mk-flow-seamless .internal-embed > .markdown-embed > .mk-floweditor-selector, .mk-flow-seamless .internal-embed.markdown-embed > .mk-floweditor-selector { top: -22px !important; right: 4px; @@ -896,35 +1013,163 @@ body:not(.is-mobile) .mk-main-menu-button:hover { width: 100%; height: 100%; overflow-x: auto; + background: var(--titlebar-background); } -.mk-cards-view { +.mk-cards-container .mk-list-view { display: inline-grid; grid-auto-flow: column; padding: 20px; gap: 20px; } -.mk-card { - padding: 12px; +.mk-cards-container .mk-list-item { border-radius: 4px; list-style: none; - background: var(--color-base-10); + background: var(--background-primary); + overflow: hidden; font-size: var(--font-ui-small); color: var(--text-muted); + box-shadow: + 0px 1px 2px rgba(0, 0, 0, 0.06), + 0px 3.4px 6.7px rgba(0, 0, 0, 0.06), + 0px 15px 30px rgba(0, 0, 0, 0.15); } -.mk-cards-col { +.mk-cards-container .mk-list-group { width: 200px; } -.mk-cards-col ul { +.mk-cards-grid .mk-list-item { + width: 250px; +} +.mk-cards-container svg { + display: none; +} +.mk-cards-grid .mk-list-group { + width: 100% !important; +} +.mk-cards-grid .mk-list-group ul { + flex-direction: row !important; + flex-wrap: wrap; +} +.mk-cards-container .mk-list-group ul { list-style: none; padding-inline-start: 0px; display: flex; flex-direction: column; gap: 10px; } +.mk-list-container .mk-list-group-header { + display: flex; + padding: 12px 24px 4px 24px; + background-color: var(--titlebar-background); +} +.mk-list-container .mk-list-group-header > div { + background: none !important; +} +.mk-list-container { + width: 100%; + height: 100%; + overflow-y: auto; + background: var(--background-primary); +} +.mk-list-container .mk-list-view { + display: flex; + flex-direction: column; +} +.mk-list-container .mk-list-item.mk-is-active { + background: var(--interactive-normal); +} +.mk-list-container .mk-list-item { + display: flex; + padding: 8px var(--context-padding) 0 var(--context-padding); + list-style: none; + font-size: var(--font-ui-small); + color: var(--text-muted); + align-items: center; +} +.mk-list-container .mk-list-fields { + display: flex; + flex-grow: 1; + flex-wrap: wrap; + align-items: center; + gap: 9px; + padding-bottom: 8px; + border-bottom: thin solid var(--divider-color); +} +.mk-list-container .mk-list-fields > div:not(.mk-cell-file) { + width: unset !important; +} +.mk-list-container .mk-list-group { + width: 100%; +} +.mk-cards-container .mk-cell-file-title, +.mk-list-container .mk-cell-file-title { + padding: 4px; + margin-bottom: 0; +} +.mk-list-container .mk-list-fields .mk-cell-file { + width: 100%; + color: var(--text-normal); + font-weight: var(--bold-weight); + margin-bottom: -12px; +} +.mk-cards-container .mk-list-fields { + padding: 12px; +} +.mk-list-fields .mk-cell-file-preview { + width: 100%; + color: var(--text-normal); + margin-bottom: -8px; + color: var(--text-faint); + text-overflow: ellipsis; + overflow: hidden; + -webkit-line-clamp: 1; + -webkit-box-orient: vertical; + display: -webkit-box; +} +.mk-list-container .mk-list-group ul { + list-style: none; + padding-inline-start: 0px; + display: flex; + flex-direction: column; + margin-top: 0; + margin-bottom: 0; +} +.mk-file-preview { + background: var(--label-color); +} +.mk-list-container .mk-file-preview { + width: 48px; + height: 48px; + border-radius: 8px; + margin-right: 8px; + display: flex; + align-items: center; + justify-content: center; +} +.mk-list-group-header .mk-cell-option-item { + background: none !important; +} +.mk-cards-container .mk-file-preview { + position: relative; + margin-bottom: 4px; + height: 40px; +} +.mk-cards-container .mk-file-icon { + position: absolute; + bottom: -6px; + font-size: 24px; + left: 14px; +} +.mk-list-container .mk-file-icon { + font-size: 20px; + display: flex; + align-items: center; + justify-content: center; +} /* src/css/Table.css */ .mk-folder-view { height: 100%; + --context-padding: var(--size-4-6); } .mk-th { position: relative; @@ -994,7 +1239,9 @@ body:not(.is-mobile) .mk-main-menu-button:hover { border-spacing: 0; min-width: 100%; } -.mk-table th { +.mk-table tr th:first-child .mk-col-header, +.mk-table tr td:first-child { + padding-left: var(--context-padding); } .mk-table .mk-td { border-top: 1px solid var(--divider-color); @@ -1032,8 +1279,12 @@ body:not(.is-mobile) .mk-main-menu-button:hover { align-items: center; gap: 2px; } +.mk-cell-option-item input { + margin: 0; +} .mk-cell-option-item div { padding: 2px 4px; + display: flex; height: 100%; } .mk-cell-option-item div:hover { @@ -1080,7 +1331,6 @@ body:not(.is-mobile) .mk-main-menu-button:hover { align-items: center; display: flex; width: 24px; - padding: 4px; border-radius: 4px; } .mk-cell-file-new .mk-cell-file-name { @@ -1169,14 +1419,17 @@ body:not(.is-mobile) .mk-main-menu-button:hover { box-sizing: border-box; margin-bottom: 1px; display: flex; - align-items: center; - padding-right: 12px; + align-items: center !important; + padding: 0 6px; position: relative; } .is-mobile .mk-tree-wrapper { padding-top: 6px; padding-bottom: 6px; } +.is-mobile .mk-tree-wrapper > div { + padding-left: 16px; +} .mk-tree-wrapper > div { display: flex; align-items: center; @@ -1228,13 +1481,21 @@ body:not(.is-mobile) .mk-main-menu-button:hover { flex-grow: 1; position: relative; display: flex; - align-items: center; + align-items: center !important; padding: var(--vertical-padding) 2px; - box-sizing: border-box; min-width: 0; margin-right: 4px; height: 28px; } +.is-mobile .mk-tree-item { + height: 38px; +} +.is-mobile .mk-tree-item:hover { + background-color: unset !important; +} +.workspace-leaf:not(.mod-active) .is-selected { + background: var(--nav-item-background-active) !important; +} .mk-tree-wrapper button { background: none; border: 0; @@ -1257,20 +1518,27 @@ body:not(.is-mobile) .mk-tree-wrapper button:hover { .mk-file-icon svg { width: 16px; height: 16px; - color: var(--text-muted); + color: var(--icon-color) !important; } .mk-file-icon button { - background: none; + background: var(--label-color); border: 0; box-shadow: none; - margin: 0; - height: 24px; - width: 24px; + margin: 2px; + height: 20px; + width: 20px; padding: 0; } .is-mobile .mk-file-icon { width: unset; } +body:not(.is-mobile) .mk-tree-wrapper .mk-drag-handle { + visibility: hidden; + margin-right: 4px; +} +body:not(.is-mobile) .mk-tree-wrapper:hover .mk-drag-handle { + visibility: visible; +} body:not(.is-mobile) .mk-tree-wrapper .mk-folder-buttons { display: none; } @@ -1326,7 +1594,6 @@ body:not(.is-mobile) .mk-tree-wrapper:hover .mk-folder-buttons { background: var(--nav-item-background-active); } body:not(.is-mobile) .mk-tree-wrapper:not(.mk-section-wrapper):not(.mk-disable-interaction):hover { - background: var(--nav-item-background-hover); } .mk-icon-menu { transform: translate3d(-500px, 0px, 0px); @@ -1347,13 +1614,14 @@ body:not(.is-mobile) .mk-tree-wrapper:not(.mk-section-wrapper):not(.mk-disable-i /* src/css/SectionView.css */ .mk-section { display: flex; - padding: 4px 0px; - padding-left: 12px; + padding: 4px; + padding-left: 16px; margin-top: 12px; color: var(--text-muted); font-size: var(--font-ui-smaller); width: 100%; justify-content: space-between; + margin-left: 0; } body:not(.is-mobile) .mk-section .mk-section-title:hover { background: var(--nav-item-background-hover); @@ -1361,6 +1629,7 @@ body:not(.is-mobile) .mk-section .mk-section-title:hover { .mk-section .mk-section-title { height: 24px; border-radius: 4px; + padding-left: 4px; display: flex; min-width: 0; align-items: center; @@ -1391,18 +1660,24 @@ body:not(.is-mobile) .mk-section:hover .mk-collapse { /* src/css/NewNote.css */ .mk-flow-bar { display: flex; + margin: 8px 12px; + gap: 12px; + align-items: center; } -.is-mobile .mk-flow-bar { +.is-mobile .mk-sidebar-switcher { border-top: thin solid var(--divider-color); + padding-top: 8px; } .mk-new-note { flex-grow: 1; padding: 8px 12px; font-size: var(--font-ui-smaller); - margin: 4px 12px; display: flex; align-items: center; } +.mk-button-blink { + padding: 8px 12px; +} .is-mobile .mk-new-note { margin: 8px 12px; } @@ -1427,23 +1702,43 @@ body:not(.is-mobile) .mk-section:hover .mk-collapse { } .mk-sidebar-switcher { display: flex; - border-radius: 16px; - background: var(--interactive-normal); - margin: 12px 12px; + margin: 8px 12px; + gap: 8px; } -.mk-sidebar-item { +.mk-sidebar-spaces .mk-sidebar-item { + display: flex; + justify-content: center; +} +.mk-sidebar-spaces { + border-left: thin solid var(--divider-color); + display: flex; + overflow: auto; flex-grow: 1; - padding: 4px; + padding-left: 4px; +} +.mk-sidebar-expanded { + flex-grow: 1; +} +.mk-sidebar-item { + height: 32px; + min-width: 32px; + padding: 8px; margin: 2px; - border-radius: 16px; + border-radius: 4px; + display: flex; + align-items: center; + gap: 4px; text-align: center; font-size: var(--font-ui-smaller); - color: var(--text-muted); + color: var(--tab-text-color); + transition: transform 250ms ease; } .mk-sidebar-item-active { - background: var(--interactive-hover); - box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.121), 0px 2px 3px rgba(0, 0, 0, 0.179); - color: var(--text-normal); + background: var(--background-primary); + color: var(--text-normal) !important; +} +.mk-sidebar-item-active svg { + color: var(--text-normal) !important; } /* src/css/MakeMenu.css */ @@ -1621,7 +1916,6 @@ mark { /* src/css/FileContext.css */ .mk-file-context button { - background: unset !important; box-shadow: unset !important; color: var(--text-faint); } @@ -1659,3 +1953,59 @@ mark { font-size: var(--font-ui-small); color: var(--text-faint); } + +/* src/css/Blink.css */ +.mk-blink-modal { + padding: 0; +} +.mk-blink-modal .mk-options-menu { + display: grid !important; + grid-template-columns: 5fr 8fr; + grid-template-rows: 50px auto; + height: var(--prompt-max-height); + width: unset !important; +} +.mk-blink-modal .mk-options-menu__search { + width: 100%; + padding: 0; +} +.mk-blink-modal .mk-options-menu__suggestions li { + margin: 6px; +} +.mk-blink-modal .mk-options-menu__search input { + padding: var(--size-4-6); + background-color: var(--background-primary); + font-size: var(--font-ui-medium); + border: none; + height: 40px; + border-radius: 0; + border-bottom: 1px solid var(--background-secondary); +} +.mk-blink-modal .mk-floweditor .workspace-leaf-content[data-type=canvas] .view-content { + height: 580px; +} +.mk-blink-modal .mk-options-menu__selected { + grid-column: 1 / 3; + grid-row: 1; + padding: 0; + margin-top: 0; +} +.mk-blink-modal .mk-options-menu__suggestions { + padding: var(--size-4-3); + grid-column: 1; + grid-row: 2; + max-height: unset; + width: unset; +} +.mk-blink-preview { + grid-column: 2; + grid-row: 2; + overflow: auto; + border-left: thin solid var(--background-secondary); +} +.mk-blink-preview .mk-flowspace-editor { + padding: 0 !important; +} +.mk-blink-preview .markdown-source-view { + padding: 12px; +}