Files
StudyDiary/.obsidian/plugins/better-search-views/main.js

4733 lines
165 KiB
JavaScript
Raw Normal View History

2025-10-25 20:35:10 +08:00
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __esm = (fn, res) => function __init() {
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
};
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// node_modules/solid-js/dist/solid.cjs
var require_solid = __commonJS({
"node_modules/solid-js/dist/solid.cjs"(exports) {
"use strict";
var taskIdCounter = 1;
var isCallbackScheduled = false;
var isPerformingWork = false;
var taskQueue = [];
var currentTask = null;
var shouldYieldToHost = null;
var yieldInterval = 5;
var deadline = 0;
var maxYieldInterval = 300;
var scheduleCallback = null;
var scheduledCallback = null;
var maxSigned31BitInt = 1073741823;
function setupScheduler() {
const channel = new MessageChannel(), port = channel.port2;
scheduleCallback = () => port.postMessage(null);
channel.port1.onmessage = () => {
if (scheduledCallback !== null) {
const currentTime = performance.now();
deadline = currentTime + yieldInterval;
const hasTimeRemaining = true;
try {
const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);
if (!hasMoreWork) {
scheduledCallback = null;
} else
port.postMessage(null);
} catch (error) {
port.postMessage(null);
throw error;
}
}
};
if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {
const scheduling = navigator.scheduling;
shouldYieldToHost = () => {
const currentTime = performance.now();
if (currentTime >= deadline) {
if (scheduling.isInputPending()) {
return true;
}
return currentTime >= maxYieldInterval;
} else {
return false;
}
};
} else {
shouldYieldToHost = () => performance.now() >= deadline;
}
}
function enqueue(taskQueue2, task) {
function findIndex() {
let m = 0;
let n = taskQueue2.length - 1;
while (m <= n) {
const k = n + m >> 1;
const cmp = task.expirationTime - taskQueue2[k].expirationTime;
if (cmp > 0)
m = k + 1;
else if (cmp < 0)
n = k - 1;
else
return k;
}
return m;
}
taskQueue2.splice(findIndex(), 0, task);
}
function requestCallback(fn, options) {
if (!scheduleCallback)
setupScheduler();
let startTime = performance.now(), timeout = maxSigned31BitInt;
if (options && options.timeout)
timeout = options.timeout;
const newTask = {
id: taskIdCounter++,
fn,
startTime,
expirationTime: startTime + timeout
};
enqueue(taskQueue, newTask);
if (!isCallbackScheduled && !isPerformingWork) {
isCallbackScheduled = true;
scheduledCallback = flushWork;
scheduleCallback();
}
return newTask;
}
function cancelCallback(task) {
task.fn = null;
}
function flushWork(hasTimeRemaining, initialTime) {
isCallbackScheduled = false;
isPerformingWork = true;
try {
return workLoop(hasTimeRemaining, initialTime);
} finally {
currentTask = null;
isPerformingWork = false;
}
}
function workLoop(hasTimeRemaining, initialTime) {
let currentTime = initialTime;
currentTask = taskQueue[0] || null;
while (currentTask !== null) {
if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {
break;
}
const callback = currentTask.fn;
if (callback !== null) {
currentTask.fn = null;
const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;
callback(didUserCallbackTimeout);
currentTime = performance.now();
if (currentTask === taskQueue[0]) {
taskQueue.shift();
}
} else
taskQueue.shift();
currentTask = taskQueue[0] || null;
}
return currentTask !== null;
}
var sharedConfig = {
context: void 0,
registry: void 0
};
function setHydrateContext(context) {
sharedConfig.context = context;
}
function nextHydrateContext() {
return {
...sharedConfig.context,
id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,
count: 0
};
}
var equalFn = (a, b) => a === b;
var $PROXY = Symbol("solid-proxy");
var $TRACK = Symbol("solid-track");
var $DEVCOMP = Symbol("solid-dev-component");
var signalOptions = {
equals: equalFn
};
var ERROR = null;
var runEffects = runQueue;
var STALE = 1;
var PENDING = 2;
var UNOWNED = {
owned: null,
cleanups: null,
context: null,
owner: null
};
var NO_INIT = {};
var Owner = null;
var Transition = null;
var Scheduler = null;
var ExternalSourceFactory = null;
var Listener = null;
var Updates = null;
var Effects = null;
var ExecCount = 0;
var [transPending, setTransPending] = /* @__PURE__ */ createSignal(false);
function createRoot(fn, detachedOwner) {
const listener = Listener, owner = Owner, unowned = fn.length === 0, root = unowned ? UNOWNED : {
owned: null,
cleanups: null,
context: null,
owner: detachedOwner === void 0 ? owner : detachedOwner
}, updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));
Owner = root;
Listener = null;
try {
return runUpdates(updateFn, true);
} finally {
Listener = listener;
Owner = owner;
}
}
function createSignal(value, options) {
options = options ? Object.assign({}, signalOptions, options) : signalOptions;
const s = {
value,
observers: null,
observerSlots: null,
comparator: options.equals || void 0
};
const setter = (value2) => {
if (typeof value2 === "function") {
if (Transition && Transition.running && Transition.sources.has(s))
value2 = value2(s.tValue);
else
value2 = value2(s.value);
}
return writeSignal(s, value2);
};
return [readSignal.bind(s), setter];
}
function createComputed(fn, value, options) {
const c = createComputation(fn, value, true, STALE);
if (Scheduler && Transition && Transition.running)
Updates.push(c);
else
updateComputation(c);
}
function createRenderEffect(fn, value, options) {
const c = createComputation(fn, value, false, STALE);
if (Scheduler && Transition && Transition.running)
Updates.push(c);
else
updateComputation(c);
}
function createEffect(fn, value, options) {
runEffects = runUserEffects;
const c = createComputation(fn, value, false, STALE), s = SuspenseContext && lookup(Owner, SuspenseContext.id);
if (s)
c.suspense = s;
if (!options || !options.render)
c.user = true;
Effects ? Effects.push(c) : updateComputation(c);
}
function createReaction(onInvalidate, options) {
let fn;
const c = createComputation(() => {
fn ? fn() : untrack(onInvalidate);
fn = void 0;
}, void 0, false, 0), s = SuspenseContext && lookup(Owner, SuspenseContext.id);
if (s)
c.suspense = s;
c.user = true;
return (tracking) => {
fn = tracking;
updateComputation(c);
};
}
function createMemo(fn, value, options) {
options = options ? Object.assign({}, signalOptions, options) : signalOptions;
const c = createComputation(fn, value, true, 0);
c.observers = null;
c.observerSlots = null;
c.comparator = options.equals || void 0;
if (Scheduler && Transition && Transition.running) {
c.tState = STALE;
Updates.push(c);
} else
updateComputation(c);
return readSignal.bind(c);
}
function createResource(pSource, pFetcher, pOptions) {
let source;
let fetcher;
let options;
if (arguments.length === 2 && typeof pFetcher === "object" || arguments.length === 1) {
source = true;
fetcher = pSource;
options = pFetcher || {};
} else {
source = pSource;
fetcher = pFetcher;
options = pOptions || {};
}
let pr = null, initP = NO_INIT, id = null, loadedUnderTransition = false, scheduled = false, resolved = "initialValue" in options, dynamic = typeof source === "function" && createMemo(source);
const contexts = /* @__PURE__ */ new Set(), [value, setValue] = (options.storage || createSignal)(options.initialValue), [error, setError] = createSignal(void 0), [track, trigger] = createSignal(void 0, {
equals: false
}), [state, setState] = createSignal(resolved ? "ready" : "unresolved");
if (sharedConfig.context) {
id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;
let v;
if (options.ssrLoadFrom === "initial")
initP = options.initialValue;
else if (sharedConfig.load && (v = sharedConfig.load(id)))
initP = v[0];
}
function loadEnd(p, v, error2, key) {
if (pr === p) {
pr = null;
key !== void 0 && (resolved = true);
if ((p === initP || v === initP) && options.onHydrated)
queueMicrotask(() => options.onHydrated(key, {
value: v
}));
initP = NO_INIT;
if (Transition && p && loadedUnderTransition) {
Transition.promises.delete(p);
loadedUnderTransition = false;
runUpdates(() => {
Transition.running = true;
completeLoad(v, error2);
}, false);
} else
completeLoad(v, error2);
}
return v;
}
function completeLoad(v, err) {
runUpdates(() => {
if (err === void 0)
setValue(() => v);
setState(err !== void 0 ? "errored" : resolved ? "ready" : "unresolved");
setError(err);
for (const c of contexts.keys())
c.decrement();
contexts.clear();
}, false);
}
function read() {
const c = SuspenseContext && lookup(Owner, SuspenseContext.id), v = value(), err = error();
if (err !== void 0 && !pr)
throw err;
if (Listener && !Listener.user && c) {
createComputed(() => {
track();
if (pr) {
if (c.resolved && Transition && loadedUnderTransition)
Transition.promises.add(pr);
else if (!contexts.has(c)) {
c.increment();
contexts.add(c);
}
}
});
}
return v;
}
function load(refetching = true) {
if (refetching !== false && scheduled)
return;
scheduled = false;
const lookup2 = dynamic ? dynamic() : source;
loadedUnderTransition = Transition && Transition.running;
if (lookup2 == null || lookup2 === false) {
loadEnd(pr, untrack(value));
return;
}
if (Transition && pr)
Transition.promises.delete(pr);
const p = initP !== NO_INIT ? initP : untrack(() => fetcher(lookup2, {
value: value(),
refetching
}));
if (typeof p !== "object" || !(p && "then" in p)) {
loadEnd(pr, p, void 0, lookup2);
return p;
}
pr = p;
scheduled = true;
queueMicrotask(() => scheduled = false);
runUpdates(() => {
setState(resolved ? "refreshing" : "pending");
trigger();
}, false);
return p.then((v) => loadEnd(p, v, void 0, lookup2), (e) => loadEnd(p, void 0, castError(e), lookup2));
}
Object.defineProperties(read, {
state: {
get: () => state()
},
error: {
get: () => error()
},
loading: {
get() {
const s = state();
return s === "pending" || s === "refreshing";
}
},
latest: {
get() {
if (!resolved)
return read();
const err = error();
if (err && !pr)
throw err;
return value();
}
}
});
if (dynamic)
createComputed(() => load(false));
else
load(false);
return [read, {
refetch: load,
mutate: setValue
}];
}
function createDeferred(source, options) {
let t, timeout = options ? options.timeoutMs : void 0;
const node = createComputation(() => {
if (!t || !t.fn)
t = requestCallback(() => setDeferred(() => node.value), timeout !== void 0 ? {
timeout
} : void 0);
return source();
}, void 0, true);
const [deferred, setDeferred] = createSignal(node.value, options);
updateComputation(node);
setDeferred(() => node.value);
return deferred;
}
function createSelector(source, fn = equalFn, options) {
const subs = /* @__PURE__ */ new Map();
const node = createComputation((p) => {
const v = source();
for (const [key, val] of subs.entries())
if (fn(key, v) !== fn(key, p)) {
for (const c of val.values()) {
c.state = STALE;
if (c.pure)
Updates.push(c);
else
Effects.push(c);
}
}
return v;
}, void 0, true, STALE);
updateComputation(node);
return (key) => {
const listener = Listener;
if (listener) {
let l;
if (l = subs.get(key))
l.add(listener);
else
subs.set(key, l = /* @__PURE__ */ new Set([listener]));
onCleanup(() => {
l.delete(listener);
!l.size && subs.delete(key);
});
}
return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);
};
}
function batch(fn) {
return runUpdates(fn, false);
}
function untrack(fn) {
if (Listener === null)
return fn();
const listener = Listener;
Listener = null;
try {
return fn();
} finally {
Listener = listener;
}
}
function on(deps, fn, options) {
const isArray = Array.isArray(deps);
let prevInput;
let defer = options && options.defer;
return (prevValue) => {
let input;
if (isArray) {
input = Array(deps.length);
for (let i = 0; i < deps.length; i++)
input[i] = deps[i]();
} else
input = deps();
if (defer) {
defer = false;
return void 0;
}
const result = untrack(() => fn(input, prevInput, prevValue));
prevInput = input;
return result;
};
}
function onMount(fn) {
createEffect(() => untrack(fn));
}
function onCleanup(fn) {
if (Owner === null)
;
else if (Owner.cleanups === null)
Owner.cleanups = [fn];
else
Owner.cleanups.push(fn);
return fn;
}
function catchError(fn, handler) {
ERROR || (ERROR = Symbol("error"));
Owner = createComputation(void 0, void 0, true);
Owner.context = {
[ERROR]: [handler]
};
if (Transition && Transition.running)
Transition.sources.add(Owner);
try {
return fn();
} catch (err) {
handleError(err);
} finally {
Owner = Owner.owner;
}
}
function onError(fn) {
ERROR || (ERROR = Symbol("error"));
if (Owner === null)
;
else if (Owner.context === null)
Owner.context = {
[ERROR]: [fn]
};
else if (!Owner.context[ERROR])
Owner.context[ERROR] = [fn];
else
Owner.context[ERROR].push(fn);
}
function getListener() {
return Listener;
}
function getOwner() {
return Owner;
}
function runWithOwner(o, fn) {
const prev = Owner;
const prevListener = Listener;
Owner = o;
Listener = null;
try {
return runUpdates(fn, true);
} catch (err) {
handleError(err);
} finally {
Owner = prev;
Listener = prevListener;
}
}
function enableScheduling(scheduler = requestCallback) {
Scheduler = scheduler;
}
function startTransition(fn) {
if (Transition && Transition.running) {
fn();
return Transition.done;
}
const l = Listener;
const o = Owner;
return Promise.resolve().then(() => {
Listener = l;
Owner = o;
let t;
if (Scheduler || SuspenseContext) {
t = Transition || (Transition = {
sources: /* @__PURE__ */ new Set(),
effects: [],
promises: /* @__PURE__ */ new Set(),
disposed: /* @__PURE__ */ new Set(),
queue: /* @__PURE__ */ new Set(),
running: true
});
t.done || (t.done = new Promise((res) => t.resolve = res));
t.running = true;
}
runUpdates(fn, false);
Listener = Owner = null;
return t ? t.done : void 0;
});
}
function useTransition() {
return [transPending, startTransition];
}
function resumeEffects(e) {
Effects.push.apply(Effects, e);
e.length = 0;
}
function createContext(defaultValue, options) {
const id = Symbol("context");
return {
id,
Provider: createProvider(id),
defaultValue
};
}
function useContext(context) {
let ctx;
return (ctx = lookup(Owner, context.id)) !== void 0 ? ctx : context.defaultValue;
}
function children(fn) {
const children2 = createMemo(fn);
const memo = createMemo(() => resolveChildren(children2()));
memo.toArray = () => {
const c = memo();
return Array.isArray(c) ? c : c != null ? [c] : [];
};
return memo;
}
var SuspenseContext;
function getSuspenseContext() {
return SuspenseContext || (SuspenseContext = createContext({}));
}
function enableExternalSource(factory) {
if (ExternalSourceFactory) {
const oldFactory = ExternalSourceFactory;
ExternalSourceFactory = (fn, trigger) => {
const oldSource = oldFactory(fn, trigger);
const source = factory((x) => oldSource.track(x), trigger);
return {
track: (x) => source.track(x),
dispose() {
source.dispose();
oldSource.dispose();
}
};
};
} else {
ExternalSourceFactory = factory;
}
}
function readSignal() {
const runningTransition = Transition && Transition.running;
if (this.sources && (runningTransition ? this.tState : this.state)) {
if ((runningTransition ? this.tState : this.state) === STALE)
updateComputation(this);
else {
const updates = Updates;
Updates = null;
runUpdates(() => lookUpstream(this), false);
Updates = updates;
}
}
if (Listener) {
const sSlot = this.observers ? this.observers.length : 0;
if (!Listener.sources) {
Listener.sources = [this];
Listener.sourceSlots = [sSlot];
} else {
Listener.sources.push(this);
Listener.sourceSlots.push(sSlot);
}
if (!this.observers) {
this.observers = [Listener];
this.observerSlots = [Listener.sources.length - 1];
} else {
this.observers.push(Listener);
this.observerSlots.push(Listener.sources.length - 1);
}
}
if (runningTransition && Transition.sources.has(this))
return this.tValue;
return this.value;
}
function writeSignal(node, value, isComp) {
let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;
if (!node.comparator || !node.comparator(current, value)) {
if (Transition) {
const TransitionRunning = Transition.running;
if (TransitionRunning || !isComp && Transition.sources.has(node)) {
Transition.sources.add(node);
node.tValue = value;
}
if (!TransitionRunning)
node.value = value;
} else
node.value = value;
if (node.observers && node.observers.length) {
runUpdates(() => {
for (let i = 0; i < node.observers.length; i += 1) {
const o = node.observers[i];
const TransitionRunning = Transition && Transition.running;
if (TransitionRunning && Transition.disposed.has(o))
continue;
if (TransitionRunning ? !o.tState : !o.state) {
if (o.pure)
Updates.push(o);
else
Effects.push(o);
if (o.observers)
markDownstream(o);
}
if (!TransitionRunning)
o.state = STALE;
else
o.tState = STALE;
}
if (Updates.length > 1e6) {
Updates = [];
if (false)
;
throw new Error();
}
}, false);
}
}
return value;
}
function updateComputation(node) {
if (!node.fn)
return;
cleanNode(node);
const owner = Owner, listener = Listener, time = ExecCount;
Listener = Owner = node;
runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);
if (Transition && !Transition.running && Transition.sources.has(node)) {
queueMicrotask(() => {
runUpdates(() => {
Transition && (Transition.running = true);
Listener = Owner = node;
runComputation(node, node.tValue, time);
Listener = Owner = null;
}, false);
});
}
Listener = listener;
Owner = owner;
}
function runComputation(node, value, time) {
let nextValue;
try {
nextValue = node.fn(value);
} catch (err) {
if (node.pure) {
if (Transition && Transition.running) {
node.tState = STALE;
node.tOwned && node.tOwned.forEach(cleanNode);
node.tOwned = void 0;
} else {
node.state = STALE;
node.owned && node.owned.forEach(cleanNode);
node.owned = null;
}
}
node.updatedAt = time + 1;
return handleError(err);
}
if (!node.updatedAt || node.updatedAt <= time) {
if (node.updatedAt != null && "observers" in node) {
writeSignal(node, nextValue, true);
} else if (Transition && Transition.running && node.pure) {
Transition.sources.add(node);
node.tValue = nextValue;
} else
node.value = nextValue;
node.updatedAt = time;
}
}
function createComputation(fn, init, pure, state = STALE, options) {
const c = {
fn,
state,
updatedAt: null,
owned: null,
sources: null,
sourceSlots: null,
cleanups: null,
value: init,
owner: Owner,
context: null,
pure
};
if (Transition && Transition.running) {
c.state = 0;
c.tState = state;
}
if (Owner === null)
;
else if (Owner !== UNOWNED) {
if (Transition && Transition.running && Owner.pure) {
if (!Owner.tOwned)
Owner.tOwned = [c];
else
Owner.tOwned.push(c);
} else {
if (!Owner.owned)
Owner.owned = [c];
else
Owner.owned.push(c);
}
}
if (ExternalSourceFactory) {
const [track, trigger] = createSignal(void 0, {
equals: false
});
const ordinary = ExternalSourceFactory(c.fn, trigger);
onCleanup(() => ordinary.dispose());
const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());
const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);
c.fn = (x) => {
track();
return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);
};
}
return c;
}
function runTop(node) {
const runningTransition = Transition && Transition.running;
if ((runningTransition ? node.tState : node.state) === 0)
return;
if ((runningTransition ? node.tState : node.state) === PENDING)
return lookUpstream(node);
if (node.suspense && untrack(node.suspense.inFallback))
return node.suspense.effects.push(node);
const ancestors = [node];
while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {
if (runningTransition && Transition.disposed.has(node))
return;
if (runningTransition ? node.tState : node.state)
ancestors.push(node);
}
for (let i = ancestors.length - 1; i >= 0; i--) {
node = ancestors[i];
if (runningTransition) {
let top = node, prev = ancestors[i + 1];
while ((top = top.owner) && top !== prev) {
if (Transition.disposed.has(top))
return;
}
}
if ((runningTransition ? node.tState : node.state) === STALE) {
updateComputation(node);
} else if ((runningTransition ? node.tState : node.state) === PENDING) {
const updates = Updates;
Updates = null;
runUpdates(() => lookUpstream(node, ancestors[0]), false);
Updates = updates;
}
}
}
function runUpdates(fn, init) {
if (Updates)
return fn();
let wait = false;
if (!init)
Updates = [];
if (Effects)
wait = true;
else
Effects = [];
ExecCount++;
try {
const res = fn();
completeUpdates(wait);
return res;
} catch (err) {
if (!wait)
Effects = null;
Updates = null;
handleError(err);
}
}
function completeUpdates(wait) {
if (Updates) {
if (Scheduler && Transition && Transition.running)
scheduleQueue(Updates);
else
runQueue(Updates);
Updates = null;
}
if (wait)
return;
let res;
if (Transition) {
if (!Transition.promises.size && !Transition.queue.size) {
const sources = Transition.sources;
const disposed = Transition.disposed;
Effects.push.apply(Effects, Transition.effects);
res = Transition.resolve;
for (const e2 of Effects) {
"tState" in e2 && (e2.state = e2.tState);
delete e2.tState;
}
Transition = null;
runUpdates(() => {
for (const d of disposed)
cleanNode(d);
for (const v of sources) {
v.value = v.tValue;
if (v.owned) {
for (let i = 0, len = v.owned.length; i < len; i++)
cleanNode(v.owned[i]);
}
if (v.tOwned)
v.owned = v.tOwned;
delete v.tValue;
delete v.tOwned;
v.tState = 0;
}
setTransPending(false);
}, false);
} else if (Transition.running) {
Transition.running = false;
Transition.effects.push.apply(Transition.effects, Effects);
Effects = null;
setTransPending(true);
return;
}
}
const e = Effects;
Effects = null;
if (e.length)
runUpdates(() => runEffects(e), false);
if (res)
res();
}
function runQueue(queue) {
for (let i = 0; i < queue.length; i++)
runTop(queue[i]);
}
function scheduleQueue(queue) {
for (let i = 0; i < queue.length; i++) {
const item = queue[i];
const tasks = Transition.queue;
if (!tasks.has(item)) {
tasks.add(item);
Scheduler(() => {
tasks.delete(item);
runUpdates(() => {
Transition.running = true;
runTop(item);
}, false);
Transition && (Transition.running = false);
});
}
}
}
function runUserEffects(queue) {
let i, userLength = 0;
for (i = 0; i < queue.length; i++) {
const e = queue[i];
if (!e.user)
runTop(e);
else
queue[userLength++] = e;
}
if (sharedConfig.context) {
if (sharedConfig.count) {
sharedConfig.effects || (sharedConfig.effects = []);
sharedConfig.effects.push(...queue.slice(0, userLength));
return;
} else if (sharedConfig.effects) {
queue = [...sharedConfig.effects, ...queue];
userLength += sharedConfig.effects.length;
delete sharedConfig.effects;
}
setHydrateContext();
}
for (i = 0; i < userLength; i++)
runTop(queue[i]);
}
function lookUpstream(node, ignore) {
const runningTransition = Transition && Transition.running;
if (runningTransition)
node.tState = 0;
else
node.state = 0;
for (let i = 0; i < node.sources.length; i += 1) {
const source = node.sources[i];
if (source.sources) {
const state = runningTransition ? source.tState : source.state;
if (state === STALE) {
if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount))
runTop(source);
} else if (state === PENDING)
lookUpstream(source, ignore);
}
}
}
function markDownstream(node) {
const runningTransition = Transition && Transition.running;
for (let i = 0; i < node.observers.length; i += 1) {
const o = node.observers[i];
if (runningTransition ? !o.tState : !o.state) {
if (runningTransition)
o.tState = PENDING;
else
o.state = PENDING;
if (o.pure)
Updates.push(o);
else
Effects.push(o);
o.observers && markDownstream(o);
}
}
}
function cleanNode(node) {
let i;
if (node.sources) {
while (node.sources.length) {
const source = node.sources.pop(), index = node.sourceSlots.pop(), obs = source.observers;
if (obs && obs.length) {
const n = obs.pop(), s = source.observerSlots.pop();
if (index < obs.length) {
n.sourceSlots[s] = index;
obs[index] = n;
source.observerSlots[index] = s;
}
}
}
}
if (Transition && Transition.running && node.pure) {
if (node.tOwned) {
for (i = node.tOwned.length - 1; i >= 0; i--)
cleanNode(node.tOwned[i]);
delete node.tOwned;
}
reset(node, true);
} else if (node.owned) {
for (i = node.owned.length - 1; i >= 0; i--)
cleanNode(node.owned[i]);
node.owned = null;
}
if (node.cleanups) {
for (i = node.cleanups.length - 1; i >= 0; i--)
node.cleanups[i]();
node.cleanups = null;
}
if (Transition && Transition.running)
node.tState = 0;
else
node.state = 0;
node.context = null;
}
function reset(node, top) {
if (!top) {
node.tState = 0;
Transition.disposed.add(node);
}
if (node.owned) {
for (let i = 0; i < node.owned.length; i++)
reset(node.owned[i]);
}
}
function castError(err) {
if (err instanceof Error)
return err;
return new Error(typeof err === "string" ? err : "Unknown error", {
cause: err
});
}
function runErrors(err, fns, owner) {
try {
for (const f of fns)
f(err);
} catch (e) {
handleError(e, owner && owner.owner || null);
}
}
function handleError(err, owner = Owner) {
const fns = ERROR && lookup(owner, ERROR);
const error = castError(err);
if (!fns)
throw error;
if (Effects)
Effects.push({
fn() {
runErrors(error, fns, owner);
},
state: STALE
});
else
runErrors(error, fns, owner);
}
function lookup(owner, key) {
return owner ? owner.context && owner.context[key] !== void 0 ? owner.context[key] : lookup(owner.owner, key) : void 0;
}
function resolveChildren(children2) {
if (typeof children2 === "function" && !children2.length)
return resolveChildren(children2());
if (Array.isArray(children2)) {
const results = [];
for (let i = 0; i < children2.length; i++) {
const result = resolveChildren(children2[i]);
Array.isArray(result) ? results.push.apply(results, result) : results.push(result);
}
return results;
}
return children2;
}
function createProvider(id, options) {
return function provider(props) {
let res;
createRenderEffect(() => res = untrack(() => {
Owner.context = {
[id]: props.value
};
return children(() => props.children);
}), void 0);
return res;
};
}
function observable(input) {
return {
subscribe(observer) {
if (!(observer instanceof Object) || observer == null) {
throw new TypeError("Expected the observer to be an object.");
}
const handler = typeof observer === "function" ? observer : observer.next && observer.next.bind(observer);
if (!handler) {
return {
unsubscribe() {
}
};
}
const dispose2 = createRoot((disposer) => {
createEffect(() => {
const v = input();
untrack(() => handler(v));
});
return disposer;
});
if (getOwner())
onCleanup(dispose2);
return {
unsubscribe() {
dispose2();
}
};
},
[Symbol.observable || "@@observable"]() {
return this;
}
};
}
function from(producer) {
const [s, set] = createSignal(void 0, {
equals: false
});
if ("subscribe" in producer) {
const unsub = producer.subscribe((v) => set(() => v));
onCleanup(() => "unsubscribe" in unsub ? unsub.unsubscribe() : unsub());
} else {
const clean = producer(set);
onCleanup(clean);
}
return s;
}
var FALLBACK = Symbol("fallback");
function dispose(d) {
for (let i = 0; i < d.length; i++)
d[i]();
}
function mapArray(list, mapFn, options = {}) {
let items = [], mapped = [], disposers = [], len = 0, indexes = mapFn.length > 1 ? [] : null;
onCleanup(() => dispose(disposers));
return () => {
let newItems = list() || [], i, j;
newItems[$TRACK];
return untrack(() => {
let newLen = newItems.length, newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item;
if (newLen === 0) {
if (len !== 0) {
dispose(disposers);
disposers = [];
items = [];
mapped = [];
len = 0;
indexes && (indexes = []);
}
if (options.fallback) {
items = [FALLBACK];
mapped[0] = createRoot((disposer) => {
disposers[0] = disposer;
return options.fallback();
});
len = 1;
}
} else if (len === 0) {
mapped = new Array(newLen);
for (j = 0; j < newLen; j++) {
items[j] = newItems[j];
mapped[j] = createRoot(mapper);
}
len = newLen;
} else {
temp = new Array(newLen);
tempdisposers = new Array(newLen);
indexes && (tempIndexes = new Array(newLen));
for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++)
;
for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {
temp[newEnd] = mapped[end];
tempdisposers[newEnd] = disposers[end];
indexes && (tempIndexes[newEnd] = indexes[end]);
}
newIndices = /* @__PURE__ */ new Map();
newIndicesNext = new Array(newEnd + 1);
for (j = newEnd; j >= start; j--) {
item = newItems[j];
i = newIndices.get(item);
newIndicesNext[j] = i === void 0 ? -1 : i;
newIndices.set(item, j);
}
for (i = start; i <= end; i++) {
item = items[i];
j = newIndices.get(item);
if (j !== void 0 && j !== -1) {
temp[j] = mapped[i];
tempdisposers[j] = disposers[i];
indexes && (tempIndexes[j] = indexes[i]);
j = newIndicesNext[j];
newIndices.set(item, j);
} else
disposers[i]();
}
for (j = start; j < newLen; j++) {
if (j in temp) {
mapped[j] = temp[j];
disposers[j] = tempdisposers[j];
if (indexes) {
indexes[j] = tempIndexes[j];
indexes[j](j);
}
} else
mapped[j] = createRoot(mapper);
}
mapped = mapped.slice(0, len = newLen);
items = newItems.slice(0);
}
return mapped;
});
function mapper(disposer) {
disposers[j] = disposer;
if (indexes) {
const [s, set] = createSignal(j);
indexes[j] = set;
return mapFn(newItems[j], s);
}
return mapFn(newItems[j]);
}
};
}
function indexArray(list, mapFn, options = {}) {
let items = [], mapped = [], disposers = [], signals = [], len = 0, i;
onCleanup(() => dispose(disposers));
return () => {
const newItems = list() || [];
newItems[$TRACK];
return untrack(() => {
if (newItems.length === 0) {
if (len !== 0) {
dispose(disposers);
disposers = [];
items = [];
mapped = [];
len = 0;
signals = [];
}
if (options.fallback) {
items = [FALLBACK];
mapped[0] = createRoot((disposer) => {
disposers[0] = disposer;
return options.fallback();
});
len = 1;
}
return mapped;
}
if (items[0] === FALLBACK) {
disposers[0]();
disposers = [];
items = [];
mapped = [];
len = 0;
}
for (i = 0; i < newItems.length; i++) {
if (i < items.length && items[i] !== newItems[i]) {
signals[i](() => newItems[i]);
} else if (i >= items.length) {
mapped[i] = createRoot(mapper);
}
}
for (; i < items.length; i++) {
disposers[i]();
}
len = signals.length = disposers.length = newItems.length;
items = newItems.slice(0);
return mapped = mapped.slice(0, len);
});
function mapper(disposer) {
disposers[i] = disposer;
const [s, set] = createSignal(newItems[i]);
signals[i] = set;
return mapFn(s, i);
}
};
}
var hydrationEnabled = false;
function enableHydration() {
hydrationEnabled = true;
}
function createComponent(Comp, props) {
if (hydrationEnabled) {
if (sharedConfig.context) {
const c = sharedConfig.context;
setHydrateContext(nextHydrateContext());
const r = untrack(() => Comp(props || {}));
setHydrateContext(c);
return r;
}
}
return untrack(() => Comp(props || {}));
}
function trueFn() {
return true;
}
var propTraps = {
get(_, property, receiver) {
if (property === $PROXY)
return receiver;
return _.get(property);
},
has(_, property) {
if (property === $PROXY)
return true;
return _.has(property);
},
set: trueFn,
deleteProperty: trueFn,
getOwnPropertyDescriptor(_, property) {
return {
configurable: true,
enumerable: true,
get() {
return _.get(property);
},
set: trueFn,
deleteProperty: trueFn
};
},
ownKeys(_) {
return _.keys();
}
};
function resolveSource(s) {
return !(s = typeof s === "function" ? s() : s) ? {} : s;
}
function resolveSources() {
for (let i = 0, length = this.length; i < length; ++i) {
const v = this[i]();
if (v !== void 0)
return v;
}
}
function mergeProps(...sources) {
let proxy = false;
for (let i = 0; i < sources.length; i++) {
const s = sources[i];
proxy = proxy || !!s && $PROXY in s;
sources[i] = typeof s === "function" ? (proxy = true, createMemo(s)) : s;
}
if (proxy) {
return new Proxy({
get(property) {
for (let i = sources.length - 1; i >= 0; i--) {
const v = resolveSource(sources[i])[property];
if (v !== void 0)
return v;
}
},
has(property) {
for (let i = sources.length - 1; i >= 0; i--) {
if (property in resolveSource(sources[i]))
return true;
}
return false;
},
keys() {
const keys = [];
for (let i = 0; i < sources.length; i++)
keys.push(...Object.keys(resolveSource(sources[i])));
return [...new Set(keys)];
}
}, propTraps);
}
const target = {};
const sourcesMap = {};
const defined = /* @__PURE__ */ new Set();
for (let i = sources.length - 1; i >= 0; i--) {
const source = sources[i];
if (!source)
continue;
const sourceKeys = Object.getOwnPropertyNames(source);
for (let i2 = 0, length = sourceKeys.length; i2 < length; i2++) {
const key = sourceKeys[i2];
if (key === "__proto__" || key === "constructor")
continue;
const desc = Object.getOwnPropertyDescriptor(source, key);
if (!defined.has(key)) {
if (desc.get) {
defined.add(key);
Object.defineProperty(target, key, {
enumerable: true,
configurable: true,
get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])
});
} else {
if (desc.value !== void 0)
defined.add(key);
target[key] = desc.value;
}
} else {
const sources2 = sourcesMap[key];
if (sources2) {
if (desc.get) {
sources2.push(desc.get.bind(source));
} else if (desc.value !== void 0) {
sources2.push(() => desc.value);
}
} else if (target[key] === void 0)
target[key] = desc.value;
}
}
}
return target;
}
function splitProps(props, ...keys) {
if ($PROXY in props) {
const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);
const res = keys.map((k) => {
return new Proxy({
get(property) {
return k.includes(property) ? props[property] : void 0;
},
has(property) {
return k.includes(property) && property in props;
},
keys() {
return k.filter((property) => property in props);
}
}, propTraps);
});
res.push(new Proxy({
get(property) {
return blocked.has(property) ? void 0 : props[property];
},
has(property) {
return blocked.has(property) ? false : property in props;
},
keys() {
return Object.keys(props).filter((k) => !blocked.has(k));
}
}, propTraps));
return res;
}
const otherObject = {};
const objects = keys.map(() => ({}));
for (const propName of Object.getOwnPropertyNames(props)) {
const desc = Object.getOwnPropertyDescriptor(props, propName);
const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;
let blocked = false;
let objectIndex = 0;
for (const k of keys) {
if (k.includes(propName)) {
blocked = true;
isDefaultDesc ? objects[objectIndex][propName] = desc.value : Object.defineProperty(objects[objectIndex], propName, desc);
}
++objectIndex;
}
if (!blocked) {
isDefaultDesc ? otherObject[propName] = desc.value : Object.defineProperty(otherObject, propName, desc);
}
}
return [...objects, otherObject];
}
function lazy(fn) {
let comp;
let p;
const wrap = (props) => {
const ctx = sharedConfig.context;
if (ctx) {
const [s, set] = createSignal();
sharedConfig.count || (sharedConfig.count = 0);
sharedConfig.count++;
(p || (p = fn())).then((mod) => {
setHydrateContext(ctx);
sharedConfig.count--;
set(() => mod.default);
setHydrateContext();
});
comp = s;
} else if (!comp) {
const [s] = createResource(() => (p || (p = fn())).then((mod) => mod.default));
comp = s;
}
let Comp;
return createMemo(() => (Comp = comp()) && untrack(() => {
if (false)
;
if (!ctx)
return Comp(props);
const c = sharedConfig.context;
setHydrateContext(ctx);
const r = Comp(props);
setHydrateContext(c);
return r;
}));
};
wrap.preload = () => p || ((p = fn()).then((mod) => comp = () => mod.default), p);
return wrap;
}
var counter = 0;
function createUniqueId() {
const ctx = sharedConfig.context;
return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;
}
var narrowedError = (name) => `Stale read from <${name}>.`;
function For(props) {
const fallback = "fallback" in props && {
fallback: () => props.fallback
};
return createMemo(mapArray(() => props.each, props.children, fallback || void 0));
}
function Index(props) {
const fallback = "fallback" in props && {
fallback: () => props.fallback
};
return createMemo(indexArray(() => props.each, props.children, fallback || void 0));
}
function Show(props) {
const keyed = props.keyed;
const condition = createMemo(() => props.when, void 0, {
equals: (a, b) => keyed ? a === b : !a === !b
});
return createMemo(() => {
const c = condition();
if (c) {
const child = props.children;
const fn = typeof child === "function" && child.length > 0;
return fn ? untrack(() => child(keyed ? c : () => {
if (!untrack(condition))
throw narrowedError("Show");
return props.when;
})) : child;
}
return props.fallback;
}, void 0, void 0);
}
function Switch(props) {
let keyed = false;
const equals = (a, b) => a[0] === b[0] && (keyed ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];
const conditions = children(() => props.children), evalConditions = createMemo(() => {
let conds = conditions();
if (!Array.isArray(conds))
conds = [conds];
for (let i = 0; i < conds.length; i++) {
const c = conds[i].when;
if (c) {
keyed = !!conds[i].keyed;
return [i, c, conds[i]];
}
}
return [-1];
}, void 0, {
equals
});
return createMemo(() => {
const [index, when, cond] = evalConditions();
if (index < 0)
return props.fallback;
const c = cond.children;
const fn = typeof c === "function" && c.length > 0;
return fn ? untrack(() => c(keyed ? when : () => {
if (untrack(evalConditions)[0] !== index)
throw narrowedError("Match");
return cond.when;
})) : c;
}, void 0, void 0);
}
function Match(props) {
return props;
}
var Errors;
function resetErrorBoundaries() {
Errors && [...Errors].forEach((fn) => fn());
}
function ErrorBoundary(props) {
let err;
let v;
if (sharedConfig.context && sharedConfig.load && (v = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count)))
err = v[0];
const [errored, setErrored] = createSignal(err, void 0);
Errors || (Errors = /* @__PURE__ */ new Set());
Errors.add(setErrored);
onCleanup(() => Errors.delete(setErrored));
return createMemo(() => {
let e;
if (e = errored()) {
const f = props.fallback;
return typeof f === "function" && f.length ? untrack(() => f(e, () => setErrored())) : f;
}
return catchError(() => props.children, setErrored);
}, void 0, void 0);
}
var suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;
var SuspenseListContext = createContext();
function SuspenseList(props) {
let [wrapper, setWrapper] = createSignal(() => ({
inFallback: false
})), show;
const listContext = useContext(SuspenseListContext);
const [registry, setRegistry] = createSignal([]);
if (listContext) {
show = listContext.register(createMemo(() => wrapper()().inFallback));
}
const resolved = createMemo((prev) => {
const reveal = props.revealOrder, tail = props.tail, {
showContent = true,
showFallback = true
} = show ? show() : {}, reg = registry(), reverse = reveal === "backwards";
if (reveal === "together") {
const all = reg.every((inFallback2) => !inFallback2());
const res2 = reg.map(() => ({
showContent: all && showContent,
showFallback
}));
res2.inFallback = !all;
return res2;
}
let stop = false;
let inFallback = prev.inFallback;
const res = [];
for (let i = 0, len = reg.length; i < len; i++) {
const n = reverse ? len - i - 1 : i, s = reg[n]();
if (!stop && !s) {
res[n] = {
showContent,
showFallback
};
} else {
const next = !stop;
if (next)
inFallback = true;
res[n] = {
showContent: next,
showFallback: !tail || next && tail === "collapsed" ? showFallback : false
};
stop = true;
}
}
if (!stop)
inFallback = false;
res.inFallback = inFallback;
return res;
}, {
inFallback: false
});
setWrapper(() => resolved);
return createComponent(SuspenseListContext.Provider, {
value: {
register: (inFallback) => {
let index;
setRegistry((registry2) => {
index = registry2.length;
return [...registry2, inFallback];
});
return createMemo(() => resolved()[index], void 0, {
equals: suspenseListEquals
});
}
},
get children() {
return props.children;
}
});
}
function Suspense(props) {
let counter2 = 0, show, ctx, p, flicker, error;
const [inFallback, setFallback] = createSignal(false), SuspenseContext2 = getSuspenseContext(), store = {
increment: () => {
if (++counter2 === 1)
setFallback(true);
},
decrement: () => {
if (--counter2 === 0)
setFallback(false);
},
inFallback,
effects: [],
resolved: false
}, owner = getOwner();
if (sharedConfig.context && sharedConfig.load) {
const key = sharedConfig.context.id + sharedConfig.context.count;
let ref = sharedConfig.load(key);
if (ref && (p = ref[0]) && p !== "$$f") {
if (typeof p !== "object" || !("then" in p))
p = Promise.resolve(p);
const [s, set] = createSignal(void 0, {
equals: false
});
flicker = s;
p.then((err) => {
if (err || sharedConfig.done) {
err && (error = err);
return set();
}
sharedConfig.gather(key);
setHydrateContext(ctx);
set();
setHydrateContext();
});
}
}
const listContext = useContext(SuspenseListContext);
if (listContext)
show = listContext.register(store.inFallback);
let dispose2;
onCleanup(() => dispose2 && dispose2());
return createComponent(SuspenseContext2.Provider, {
value: store,
get children() {
return createMemo(() => {
if (error)
throw error;
ctx = sharedConfig.context;
if (flicker) {
flicker();
return flicker = void 0;
}
if (ctx && p === "$$f")
setHydrateContext();
const rendered = createMemo(() => props.children);
return createMemo((prev) => {
const inFallback2 = store.inFallback(), {
showContent = true,
showFallback = true
} = show ? show() : {};
if ((!inFallback2 || p && p !== "$$f") && showContent) {
store.resolved = true;
dispose2 && dispose2();
dispose2 = ctx = p = void 0;
resumeEffects(store.effects);
return rendered();
}
if (!showFallback)
return;
if (dispose2)
return prev;
return createRoot((disposer) => {
dispose2 = disposer;
if (ctx) {
setHydrateContext({
id: ctx.id + "f",
count: 0
});
ctx = void 0;
}
return props.fallback;
}, owner);
});
});
}
});
}
var DEV = void 0;
exports.$DEVCOMP = $DEVCOMP;
exports.$PROXY = $PROXY;
exports.$TRACK = $TRACK;
exports.DEV = DEV;
exports.ErrorBoundary = ErrorBoundary;
exports.For = For;
exports.Index = Index;
exports.Match = Match;
exports.Show = Show;
exports.Suspense = Suspense;
exports.SuspenseList = SuspenseList;
exports.Switch = Switch;
exports.batch = batch;
exports.cancelCallback = cancelCallback;
exports.catchError = catchError;
exports.children = children;
exports.createComponent = createComponent;
exports.createComputed = createComputed;
exports.createContext = createContext;
exports.createDeferred = createDeferred;
exports.createEffect = createEffect;
exports.createMemo = createMemo;
exports.createReaction = createReaction;
exports.createRenderEffect = createRenderEffect;
exports.createResource = createResource;
exports.createRoot = createRoot;
exports.createSelector = createSelector;
exports.createSignal = createSignal;
exports.createUniqueId = createUniqueId;
exports.enableExternalSource = enableExternalSource;
exports.enableHydration = enableHydration;
exports.enableScheduling = enableScheduling;
exports.equalFn = equalFn;
exports.from = from;
exports.getListener = getListener;
exports.getOwner = getOwner;
exports.indexArray = indexArray;
exports.lazy = lazy;
exports.mapArray = mapArray;
exports.mergeProps = mergeProps;
exports.observable = observable;
exports.on = on;
exports.onCleanup = onCleanup;
exports.onError = onError;
exports.onMount = onMount;
exports.requestCallback = requestCallback;
exports.resetErrorBoundaries = resetErrorBoundaries;
exports.runWithOwner = runWithOwner;
exports.sharedConfig = sharedConfig;
exports.splitProps = splitProps;
exports.startTransition = startTransition;
exports.untrack = untrack;
exports.useContext = useContext;
exports.useTransition = useTransition;
}
});
// node_modules/solid-js/web/dist/web.cjs
var require_web = __commonJS({
"node_modules/solid-js/web/dist/web.cjs"(exports) {
"use strict";
var solidJs = require_solid();
var booleans = ["allowfullscreen", "async", "autofocus", "autoplay", "checked", "controls", "default", "disabled", "formnovalidate", "hidden", "indeterminate", "ismap", "loop", "multiple", "muted", "nomodule", "novalidate", "open", "playsinline", "readonly", "required", "reversed", "seamless", "selected"];
var Properties = /* @__PURE__ */ new Set(["className", "value", "readOnly", "formNoValidate", "isMap", "noModule", "playsInline", ...booleans]);
var ChildProperties = /* @__PURE__ */ new Set(["innerHTML", "textContent", "innerText", "children"]);
var Aliases = /* @__PURE__ */ Object.assign(/* @__PURE__ */ Object.create(null), {
className: "class",
htmlFor: "for"
});
var PropAliases = /* @__PURE__ */ Object.assign(/* @__PURE__ */ Object.create(null), {
class: "className",
formnovalidate: {
$: "formNoValidate",
BUTTON: 1,
INPUT: 1
},
ismap: {
$: "isMap",
IMG: 1
},
nomodule: {
$: "noModule",
SCRIPT: 1
},
playsinline: {
$: "playsInline",
VIDEO: 1
},
readonly: {
$: "readOnly",
INPUT: 1,
TEXTAREA: 1
}
});
function getPropAlias(prop, tagName) {
const a = PropAliases[prop];
return typeof a === "object" ? a[tagName] ? a["$"] : void 0 : a;
}
var DelegatedEvents = /* @__PURE__ */ new Set(["beforeinput", "click", "dblclick", "contextmenu", "focusin", "focusout", "input", "keydown", "keyup", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup", "pointerdown", "pointermove", "pointerout", "pointerover", "pointerup", "touchend", "touchmove", "touchstart"]);
var SVGElements = /* @__PURE__ */ new Set([
"altGlyph",
"altGlyphDef",
"altGlyphItem",
"animate",
"animateColor",
"animateMotion",
"animateTransform",
"circle",
"clipPath",
"color-profile",
"cursor",
"defs",
"desc",
"ellipse",
"feBlend",
"feColorMatrix",
"feComponentTransfer",
"feComposite",
"feConvolveMatrix",
"feDiffuseLighting",
"feDisplacementMap",
"feDistantLight",
"feFlood",
"feFuncA",
"feFuncB",
"feFuncG",
"feFuncR",
"feGaussianBlur",
"feImage",
"feMerge",
"feMergeNode",
"feMorphology",
"feOffset",
"fePointLight",
"feSpecularLighting",
"feSpotLight",
"feTile",
"feTurbulence",
"filter",
"font",
"font-face",
"font-face-format",
"font-face-name",
"font-face-src",
"font-face-uri",
"foreignObject",
"g",
"glyph",
"glyphRef",
"hkern",
"image",
"line",
"linearGradient",
"marker",
"mask",
"metadata",
"missing-glyph",
"mpath",
"path",
"pattern",
"polygon",
"polyline",
"radialGradient",
"rect",
"set",
"stop",
"svg",
"switch",
"symbol",
"text",
"textPath",
"tref",
"tspan",
"use",
"view",
"vkern"
]);
var SVGNamespace = {
xlink: "http://www.w3.org/1999/xlink",
xml: "http://www.w3.org/XML/1998/namespace"
};
var DOMElements = /* @__PURE__ */ new Set(["html", "base", "head", "link", "meta", "style", "title", "body", "address", "article", "aside", "footer", "header", "main", "nav", "section", "body", "blockquote", "dd", "div", "dl", "dt", "figcaption", "figure", "hr", "li", "ol", "p", "pre", "ul", "a", "abbr", "b", "bdi", "bdo", "br", "cite", "code", "data", "dfn", "em", "i", "kbd", "mark", "q", "rp", "rt", "ruby", "s", "samp", "small", "span", "strong", "sub", "sup", "time", "u", "var", "wbr", "area", "audio", "img", "map", "track", "video", "embed", "iframe", "object", "param", "picture", "portal", "source", "svg", "math", "canvas", "noscript", "script", "del", "ins", "caption", "col", "colgroup", "table", "tbody", "td", "tfoot", "th", "thead", "tr", "button", "datalist", "fieldset", "form", "input", "label", "legend", "meter", "optgroup", "option", "output", "progress", "select", "textarea", "details", "dialog", "menu", "summary", "details", "slot", "template", "acronym", "applet", "basefont", "bgsound", "big", "blink", "center", "content", "dir", "font", "frame", "frameset", "hgroup", "image", "keygen", "marquee", "menuitem", "nobr", "noembed", "noframes", "plaintext", "rb", "rtc", "shadow", "spacer", "strike", "tt", "xmp", "a", "abbr", "acronym", "address", "applet", "area", "article", "aside", "audio", "b", "base", "basefont", "bdi", "bdo", "bgsound", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "em", "embed", "fieldset", "figcaption", "figure", "font", "footer", "form", "frame", "frameset", "head", "header", "hgroup", "hr", "html", "i", "iframe", "image", "img", "input", "ins", "kbd", "keygen", "label", "legend", "li", "link", "main", "map", "mark", "marquee", "menu", "menuitem", "meta", "meter", "nav", "nobr", "noembed", "noframes", "noscript", "object", "ol", "optgroup", "option", "output", "p", "param", "picture", "plaintext", "portal", "pre", "progress", "q", "rb", "rp", "rt", "rtc", "ruby", "s", "samp", "script", "section", "select", "shadow", "slot", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "title", "tr", "track", "tt", "u", "ul", "var", "video", "wbr", "xmp", "input", "h1", "h2", "h3", "h4", "h5", "h6"]);
function reconcileArrays(parentNode, a, b) {
let bLength = b.length, aEnd = a.length, bEnd = bLength, aStart = 0, bStart = 0, after = a[aEnd - 1].nextSibling, map = null;
while (aStart < aEnd || bStart < bEnd) {
if (a[aStart] === b[bStart]) {
aStart++;
bStart++;
continue;
}
while (a[aEnd - 1] === b[bEnd - 1]) {
aEnd--;
bEnd--;
}
if (aEnd === aStart) {
const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;
while (bStart < bEnd)
parentNode.insertBefore(b[bStart++], node);
} else if (bEnd === bStart) {
while (aStart < aEnd) {
if (!map || !map.has(a[aStart]))
a[aStart].remove();
aStart++;
}
} else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {
const node = a[--aEnd].nextSibling;
parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);
parentNode.insertBefore(b[--bEnd], node);
a[aEnd] = b[bEnd];
} else {
if (!map) {
map = /* @__PURE__ */ new Map();
let i = bStart;
while (i < bEnd)
map.set(b[i], i++);
}
const index = map.get(a[aStart]);
if (index != null) {
if (bStart < index && index < bEnd) {
let i = aStart, sequence = 1, t;
while (++i < aEnd && i < bEnd) {
if ((t = map.get(a[i])) == null || t !== index + sequence)
break;
sequence++;
}
if (sequence > index - bStart) {
const node = a[aStart];
while (bStart < index)
parentNode.insertBefore(b[bStart++], node);
} else
parentNode.replaceChild(b[bStart++], a[aStart++]);
} else
aStart++;
} else
a[aStart++].remove();
}
}
}
var $$EVENTS = "_$DX_DELEGATE";
function render(code, element, init, options = {}) {
let disposer;
solidJs.createRoot((dispose) => {
disposer = dispose;
element === document ? code() : insert(element, code(), element.firstChild ? null : void 0, init);
}, options.owner);
return () => {
disposer();
element.textContent = "";
};
}
function template(html, isCE, isSVG) {
let node;
const create = () => {
const t = document.createElement("template");
t.innerHTML = html;
return isSVG ? t.content.firstChild.firstChild : t.content.firstChild;
};
const fn = isCE ? () => solidJs.untrack(() => document.importNode(node || (node = create()), true)) : () => (node || (node = create())).cloneNode(true);
fn.cloneNode = fn;
return fn;
}
function delegateEvents(eventNames, document2 = window.document) {
const e = document2[$$EVENTS] || (document2[$$EVENTS] = /* @__PURE__ */ new Set());
for (let i = 0, l = eventNames.length; i < l; i++) {
const name = eventNames[i];
if (!e.has(name)) {
e.add(name);
document2.addEventListener(name, eventHandler);
}
}
}
function clearDelegatedEvents(document2 = window.document) {
if (document2[$$EVENTS]) {
for (let name of document2[$$EVENTS].keys())
document2.removeEventListener(name, eventHandler);
delete document2[$$EVENTS];
}
}
function setAttribute(node, name, value) {
if (value == null)
node.removeAttribute(name);
else
node.setAttribute(name, value);
}
function setAttributeNS(node, namespace, name, value) {
if (value == null)
node.removeAttributeNS(namespace, name);
else
node.setAttributeNS(namespace, name, value);
}
function className(node, value) {
if (value == null)
node.removeAttribute("class");
else
node.className = value;
}
function addEventListener(node, name, handler, delegate) {
if (delegate) {
if (Array.isArray(handler)) {
node[`$$${name}`] = handler[0];
node[`$$${name}Data`] = handler[1];
} else
node[`$$${name}`] = handler;
} else if (Array.isArray(handler)) {
const handlerFn = handler[0];
node.addEventListener(name, handler[0] = (e) => handlerFn.call(node, handler[1], e));
} else
node.addEventListener(name, handler);
}
function classList(node, value, prev = {}) {
const classKeys = Object.keys(value || {}), prevKeys = Object.keys(prev);
let i, len;
for (i = 0, len = prevKeys.length; i < len; i++) {
const key = prevKeys[i];
if (!key || key === "undefined" || value[key])
continue;
toggleClassKey(node, key, false);
delete prev[key];
}
for (i = 0, len = classKeys.length; i < len; i++) {
const key = classKeys[i], classValue = !!value[key];
if (!key || key === "undefined" || prev[key] === classValue || !classValue)
continue;
toggleClassKey(node, key, true);
prev[key] = classValue;
}
return prev;
}
function style(node, value, prev) {
if (!value)
return prev ? setAttribute(node, "style") : value;
const nodeStyle = node.style;
if (typeof value === "string")
return nodeStyle.cssText = value;
typeof prev === "string" && (nodeStyle.cssText = prev = void 0);
prev || (prev = {});
value || (value = {});
let v, s;
for (s in prev) {
value[s] == null && nodeStyle.removeProperty(s);
delete prev[s];
}
for (s in value) {
v = value[s];
if (v !== prev[s]) {
nodeStyle.setProperty(s, v);
prev[s] = v;
}
}
return prev;
}
function spread(node, props = {}, isSVG, skipChildren) {
const prevProps = {};
if (!skipChildren) {
solidJs.createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));
}
solidJs.createRenderEffect(() => props.ref && props.ref(node));
solidJs.createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));
return prevProps;
}
function dynamicProperty(props, key) {
const src = props[key];
Object.defineProperty(props, key, {
get() {
return src();
},
enumerable: true
});
return props;
}
function innerHTML(parent, content) {
!solidJs.sharedConfig.context && (parent.innerHTML = content);
}
function use(fn, element, arg) {
return solidJs.untrack(() => fn(element, arg));
}
function insert(parent, accessor, marker, initial) {
if (marker !== void 0 && !initial)
initial = [];
if (typeof accessor !== "function")
return insertExpression(parent, accessor, initial, marker);
solidJs.createRenderEffect((current) => insertExpression(parent, accessor(), current, marker), initial);
}
function assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {
props || (props = {});
for (const prop in prevProps) {
if (!(prop in props)) {
if (prop === "children")
continue;
prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);
}
}
for (const prop in props) {
if (prop === "children") {
if (!skipChildren)
insertExpression(node, props.children);
continue;
}
const value = props[prop];
prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);
}
}
function hydrate$1(code, element, options = {}) {
solidJs.sharedConfig.completed = globalThis._$HY.completed;
solidJs.sharedConfig.events = globalThis._$HY.events;
solidJs.sharedConfig.load = globalThis._$HY.load;
solidJs.sharedConfig.gather = (root) => gatherHydratable(element, root);
solidJs.sharedConfig.registry = /* @__PURE__ */ new Map();
solidJs.sharedConfig.context = {
id: options.renderId || "",
count: 0
};
gatherHydratable(element, options.renderId);
const dispose = render(code, element, [...element.childNodes], options);
solidJs.sharedConfig.context = null;
return dispose;
}
function getNextElement(template2) {
let node, key;
if (!solidJs.sharedConfig.context || !(node = solidJs.sharedConfig.registry.get(key = getHydrationKey()))) {
if (solidJs.sharedConfig.context)
console.warn("Unable to find DOM nodes for hydration key:", key);
if (!template2)
throw new Error("Unrecoverable Hydration Mismatch. No template for key: " + key);
return template2();
}
if (solidJs.sharedConfig.completed)
solidJs.sharedConfig.completed.add(node);
solidJs.sharedConfig.registry.delete(key);
return node;
}
function getNextMatch(el, nodeName) {
while (el && el.localName !== nodeName)
el = el.nextSibling;
return el;
}
function getNextMarker(start) {
let end = start, count = 0, current = [];
if (solidJs.sharedConfig.context) {
while (end) {
if (end.nodeType === 8) {
const v = end.nodeValue;
if (v === "#")
count++;
else if (v === "/") {
if (count === 0)
return [end, current];
count--;
}
}
current.push(end);
end = end.nextSibling;
}
}
return [end, current];
}
function runHydrationEvents() {
if (solidJs.sharedConfig.events && !solidJs.sharedConfig.events.queued) {
queueMicrotask(() => {
const {
completed,
events
} = solidJs.sharedConfig;
events.queued = false;
while (events.length) {
const [el, e] = events[0];
if (!completed.has(el))
return;
eventHandler(e);
events.shift();
}
});
solidJs.sharedConfig.events.queued = true;
}
}
function toPropertyName(name) {
return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());
}
function toggleClassKey(node, key, value) {
const classNames = key.trim().split(/\s+/);
for (let i = 0, nameLen = classNames.length; i < nameLen; i++)
node.classList.toggle(classNames[i], value);
}
function assignProp(node, prop, value, prev, isSVG, skipRef) {
let isCE, isProp, isChildProp, propAlias, forceProp;
if (prop === "style")
return style(node, value, prev);
if (prop === "classList")
return classList(node, value, prev);
if (value === prev)
return prev;
if (prop === "ref") {
if (!skipRef)
value(node);
} else if (prop.slice(0, 3) === "on:") {
const e = prop.slice(3);
prev && node.removeEventListener(e, prev);
value && node.addEventListener(e, value);
} else if (prop.slice(0, 10) === "oncapture:") {
const e = prop.slice(10);
prev && node.removeEventListener(e, prev, true);
value && node.addEventListener(e, value, true);
} else if (prop.slice(0, 2) === "on") {
const name = prop.slice(2).toLowerCase();
const delegate = DelegatedEvents.has(name);
if (!delegate && prev) {
const h = Array.isArray(prev) ? prev[0] : prev;
node.removeEventListener(name, h);
}
if (delegate || value) {
addEventListener(node, name, value, delegate);
delegate && delegateEvents([name]);
}
} else if (prop.slice(0, 5) === "attr:") {
setAttribute(node, prop.slice(5), value);
} else if ((forceProp = prop.slice(0, 5) === "prop:") || (isChildProp = ChildProperties.has(prop)) || !isSVG && ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
if (forceProp) {
prop = prop.slice(5);
isProp = true;
}
if (prop === "class" || prop === "className")
className(node, value);
else if (isCE && !isProp && !isChildProp)
node[toPropertyName(prop)] = value;
else
node[propAlias || prop] = value;
} else {
const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
if (ns)
setAttributeNS(node, ns, prop, value);
else
setAttribute(node, Aliases[prop] || prop, value);
}
return value;
}
function eventHandler(e) {
const key = `$$${e.type}`;
let node = e.composedPath && e.composedPath()[0] || e.target;
if (e.target !== node) {
Object.defineProperty(e, "target", {
configurable: true,
value: node
});
}
Object.defineProperty(e, "currentTarget", {
configurable: true,
get() {
return node || document;
}
});
if (solidJs.sharedConfig.registry && !solidJs.sharedConfig.done)
solidJs.sharedConfig.done = _$HY.done = true;
while (node) {
const handler = node[key];
if (handler && !node.disabled) {
const data = node[`${key}Data`];
data !== void 0 ? handler.call(node, data, e) : handler.call(node, e);
if (e.cancelBubble)
return;
}
node = node._$host || node.parentNode || node.host;
}
}
function insertExpression(parent, value, current, marker, unwrapArray) {
if (solidJs.sharedConfig.context) {
!current && (current = [...parent.childNodes]);
let cleaned = [];
for (let i = 0; i < current.length; i++) {
const node = current[i];
if (node.nodeType === 8 && node.data.slice(0, 2) === "!$")
node.remove();
else
cleaned.push(node);
}
current = cleaned;
}
while (typeof current === "function")
current = current();
if (value === current)
return current;
const t = typeof value, multi = marker !== void 0;
parent = multi && current[0] && current[0].parentNode || parent;
if (t === "string" || t === "number") {
if (solidJs.sharedConfig.context)
return current;
if (t === "number")
value = value.toString();
if (multi) {
let node = current[0];
if (node && node.nodeType === 3) {
node.data = value;
} else
node = document.createTextNode(value);
current = cleanChildren(parent, current, marker, node);
} else {
if (current !== "" && typeof current === "string") {
current = parent.firstChild.data = value;
} else
current = parent.textContent = value;
}
} else if (value == null || t === "boolean") {
if (solidJs.sharedConfig.context)
return current;
current = cleanChildren(parent, current, marker);
} else if (t === "function") {
solidJs.createRenderEffect(() => {
let v = value();
while (typeof v === "function")
v = v();
current = insertExpression(parent, v, current, marker);
});
return () => current;
} else if (Array.isArray(value)) {
const array = [];
const currentArray = current && Array.isArray(current);
if (normalizeIncomingArray(array, value, current, unwrapArray)) {
solidJs.createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));
return () => current;
}
if (solidJs.sharedConfig.context) {
if (!array.length)
return current;
for (let i = 0; i < array.length; i++) {
if (array[i].parentNode)
return current = array;
}
}
if (array.length === 0) {
current = cleanChildren(parent, current, marker);
if (multi)
return current;
} else if (currentArray) {
if (current.length === 0) {
appendNodes(parent, array, marker);
} else
reconcileArrays(parent, current, array);
} else {
current && cleanChildren(parent);
appendNodes(parent, array);
}
current = array;
} else if (value.nodeType) {
if (solidJs.sharedConfig.context && value.parentNode)
return current = multi ? [value] : value;
if (Array.isArray(current)) {
if (multi)
return current = cleanChildren(parent, current, marker, value);
cleanChildren(parent, current, null, value);
} else if (current == null || current === "" || !parent.firstChild) {
parent.appendChild(value);
} else
parent.replaceChild(value, parent.firstChild);
current = value;
} else
console.warn(`Unrecognized value. Skipped inserting`, value);
return current;
}
function normalizeIncomingArray(normalized, array, current, unwrap) {
let dynamic = false;
for (let i = 0, len = array.length; i < len; i++) {
let item = array[i], prev = current && current[i], t;
if (item == null || item === true || item === false)
;
else if ((t = typeof item) === "object" && item.nodeType) {
normalized.push(item);
} else if (Array.isArray(item)) {
dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;
} else if (t === "function") {
if (unwrap) {
while (typeof item === "function")
item = item();
dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;
} else {
normalized.push(item);
dynamic = true;
}
} else {
const value = String(item);
if (prev && prev.nodeType === 3 && prev.data === value)
normalized.push(prev);
else
normalized.push(document.createTextNode(value));
}
}
return dynamic;
}
function appendNodes(parent, array, marker = null) {
for (let i = 0, len = array.length; i < len; i++)
parent.insertBefore(array[i], marker);
}
function cleanChildren(parent, current, marker, replacement) {
if (marker === void 0)
return parent.textContent = "";
const node = replacement || document.createTextNode("");
if (current.length) {
let inserted = false;
for (let i = current.length - 1; i >= 0; i--) {
const el = current[i];
if (node !== el) {
const isParent = el.parentNode === parent;
if (!inserted && !i)
isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);
else
isParent && el.remove();
} else
inserted = true;
}
} else
parent.insertBefore(node, marker);
return [node];
}
function gatherHydratable(element, root) {
const templates = element.querySelectorAll(`*[data-hk]`);
for (let i = 0; i < templates.length; i++) {
const node = templates[i];
const key = node.getAttribute("data-hk");
if ((!root || key.startsWith(root)) && !solidJs.sharedConfig.registry.has(key))
solidJs.sharedConfig.registry.set(key, node);
}
}
function getHydrationKey() {
const hydrate2 = solidJs.sharedConfig.context;
return `${hydrate2.id}${hydrate2.count++}`;
}
function NoHydration(props) {
return solidJs.sharedConfig.context ? void 0 : props.children;
}
function Hydration(props) {
return props.children;
}
function voidFn() {
}
function throwInBrowser(func) {
const err = new Error(`${func.name} is not supported in the browser, returning undefined`);
console.error(err);
}
function renderToString(fn, options) {
throwInBrowser(renderToString);
}
function renderToStringAsync(fn, options) {
throwInBrowser(renderToStringAsync);
}
function renderToStream(fn, options) {
throwInBrowser(renderToStream);
}
function ssr(template2, ...nodes) {
}
function ssrElement(name, props, children, needsId) {
}
function ssrClassList(value) {
}
function ssrStyle(value) {
}
function ssrAttribute(key, value) {
}
function ssrHydrationKey() {
}
function resolveSSRNode(node) {
}
function escape(html) {
}
function ssrSpread(props, isSVG, skipChildren) {
}
var isServer = false;
var isDev = false;
var SVG_NAMESPACE = "http://www.w3.org/2000/svg";
function createElement(tagName, isSVG = false) {
return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);
}
var hydrate = (...args) => {
solidJs.enableHydration();
return hydrate$1(...args);
};
function Portal(props) {
const {
useShadow
} = props, marker = document.createTextNode(""), mount = () => props.mount || document.body, owner = solidJs.getOwner();
let content;
let hydrating = !!solidJs.sharedConfig.context;
solidJs.createEffect(() => {
if (hydrating)
solidJs.getOwner().user = hydrating = false;
content || (content = solidJs.runWithOwner(owner, () => solidJs.createMemo(() => props.children)));
const el = mount();
if (el instanceof HTMLHeadElement) {
const [clean, setClean] = solidJs.createSignal(false);
const cleanup = () => setClean(true);
solidJs.createRoot((dispose) => insert(el, () => !clean() ? content() : dispose(), null));
solidJs.onCleanup(cleanup);
} else {
const container = createElement(props.isSVG ? "g" : "div", props.isSVG), renderRoot = useShadow && container.attachShadow ? container.attachShadow({
mode: "open"
}) : container;
Object.defineProperty(container, "_$host", {
get() {
return marker.parentNode;
},
configurable: true
});
insert(renderRoot, content);
el.appendChild(container);
props.ref && props.ref(container);
solidJs.onCleanup(() => el.removeChild(container));
}
}, void 0, {
render: !hydrating
});
return marker;
}
function Dynamic(props) {
const [p, others] = solidJs.splitProps(props, ["component"]);
const cached = solidJs.createMemo(() => p.component);
return solidJs.createMemo(() => {
const component = cached();
switch (typeof component) {
case "function":
Object.assign(component, {
[solidJs.$DEVCOMP]: true
});
return solidJs.untrack(() => component(others));
case "string":
const isSvg = SVGElements.has(component);
const el = solidJs.sharedConfig.context ? getNextElement() : createElement(component, isSvg);
spread(el, others, isSvg);
return el;
}
});
}
Object.defineProperty(exports, "ErrorBoundary", {
enumerable: true,
get: function() {
return solidJs.ErrorBoundary;
}
});
Object.defineProperty(exports, "For", {
enumerable: true,
get: function() {
return solidJs.For;
}
});
Object.defineProperty(exports, "Index", {
enumerable: true,
get: function() {
return solidJs.Index;
}
});
Object.defineProperty(exports, "Match", {
enumerable: true,
get: function() {
return solidJs.Match;
}
});
Object.defineProperty(exports, "Show", {
enumerable: true,
get: function() {
return solidJs.Show;
}
});
Object.defineProperty(exports, "Suspense", {
enumerable: true,
get: function() {
return solidJs.Suspense;
}
});
Object.defineProperty(exports, "SuspenseList", {
enumerable: true,
get: function() {
return solidJs.SuspenseList;
}
});
Object.defineProperty(exports, "Switch", {
enumerable: true,
get: function() {
return solidJs.Switch;
}
});
Object.defineProperty(exports, "createComponent", {
enumerable: true,
get: function() {
return solidJs.createComponent;
}
});
Object.defineProperty(exports, "effect", {
enumerable: true,
get: function() {
return solidJs.createRenderEffect;
}
});
Object.defineProperty(exports, "getOwner", {
enumerable: true,
get: function() {
return solidJs.getOwner;
}
});
Object.defineProperty(exports, "memo", {
enumerable: true,
get: function() {
return solidJs.createMemo;
}
});
Object.defineProperty(exports, "mergeProps", {
enumerable: true,
get: function() {
return solidJs.mergeProps;
}
});
Object.defineProperty(exports, "untrack", {
enumerable: true,
get: function() {
return solidJs.untrack;
}
});
exports.Aliases = Aliases;
exports.Assets = voidFn;
exports.ChildProperties = ChildProperties;
exports.DOMElements = DOMElements;
exports.DelegatedEvents = DelegatedEvents;
exports.Dynamic = Dynamic;
exports.Hydration = Hydration;
exports.HydrationScript = voidFn;
exports.NoHydration = NoHydration;
exports.Portal = Portal;
exports.Properties = Properties;
exports.SVGElements = SVGElements;
exports.SVGNamespace = SVGNamespace;
exports.addEventListener = addEventListener;
exports.assign = assign;
exports.classList = classList;
exports.className = className;
exports.clearDelegatedEvents = clearDelegatedEvents;
exports.delegateEvents = delegateEvents;
exports.dynamicProperty = dynamicProperty;
exports.escape = escape;
exports.generateHydrationScript = voidFn;
exports.getAssets = voidFn;
exports.getHydrationKey = getHydrationKey;
exports.getNextElement = getNextElement;
exports.getNextMarker = getNextMarker;
exports.getNextMatch = getNextMatch;
exports.getPropAlias = getPropAlias;
exports.hydrate = hydrate;
exports.innerHTML = innerHTML;
exports.insert = insert;
exports.isDev = isDev;
exports.isServer = isServer;
exports.render = render;
exports.renderToStream = renderToStream;
exports.renderToString = renderToString;
exports.renderToStringAsync = renderToStringAsync;
exports.resolveSSRNode = resolveSSRNode;
exports.runHydrationEvents = runHydrationEvents;
exports.setAttribute = setAttribute;
exports.setAttributeNS = setAttributeNS;
exports.spread = spread;
exports.ssr = ssr;
exports.ssrAttribute = ssrAttribute;
exports.ssrClassList = ssrClassList;
exports.ssrElement = ssrElement;
exports.ssrHydrationKey = ssrHydrationKey;
exports.ssrSpread = ssrSpread;
exports.ssrStyle = ssrStyle;
exports.style = style;
exports.template = template;
exports.use = use;
exports.useAssets = voidFn;
}
});
// src/ui/solid/plugin-context.tsx
var require_plugin_context = __commonJS({
"src/ui/solid/plugin-context.tsx"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PluginContextProvider = PluginContextProvider;
exports.usePluginContext = usePluginContext;
var _web = require_web();
var _solidJs = require_solid();
var _obsidian = require("obsidian");
var PluginContext = (0, _solidJs.createContext)();
function PluginContextProvider(props) {
const handleClick = async (event, path, line) => {
if (event.target instanceof HTMLAnchorElement) {
return;
}
const file = props.plugin.app.metadataCache.getFirstLinkpathDest(path, path);
if (!file) {
new _obsidian.Notice(`File ${path} does not exist`);
return;
}
await props.plugin.app.workspace.getLeaf(false).openFile(file);
const activeMarkdownView = props.plugin.app.workspace.getActiveViewOfType(_obsidian.MarkdownView);
if (!activeMarkdownView) {
new _obsidian.Notice(`Failed to open file ${path}. Can't scroll to line ${line}`);
return;
}
try {
activeMarkdownView.setEphemeralState({
line
});
} catch (error) {
console.error(error);
}
};
const handleMouseover = (event, path, line) => {
if (!props.plugin.app.internalPlugins.plugins["page-preview"].enabled) {
return;
}
if (_obsidian.Keymap.isModifier(event, "Mod")) {
const target = event.target;
const previewLocation = {
scroll: line
};
if (path) {
props.plugin.app.workspace.trigger("link-hover", {}, target, path, "", previewLocation);
}
}
};
const handleHeightChange = () => {
props.infinityScroll.invalidateAll();
};
return (0, _web.createComponent)(PluginContext.Provider, {
get value() {
return {
handleClick,
handleMouseover,
handleHeightChange,
plugin: props.plugin,
app: props.plugin.app
};
},
get children() {
return props.children;
}
});
}
function usePluginContext() {
const pluginContext = (0, _solidJs.useContext)(PluginContext);
if (!pluginContext) {
throw new Error("pluginContext must be used inside a provider");
}
return pluginContext;
}
}
});
// src/ui/solid/icons/list-icon.tsx
var require_list_icon = __commonJS({
"src/ui/solid/icons/list-icon.tsx"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ListIcon = ListIcon;
var _web = require_web();
var _tmpl$ = /* @__PURE__ */ (0, _web.template)(`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="better-search-views-icon lucide lucide-dot"><circle cx="12.1" cy="12.1" r="1">`);
function ListIcon() {
return _tmpl$();
}
}
});
// src/ui/solid/icons/heading-icon.tsx
var require_heading_icon = __commonJS({
"src/ui/solid/icons/heading-icon.tsx"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.HeadingIcon = HeadingIcon;
var _web = require_web();
var _tmpl$ = /* @__PURE__ */ (0, _web.template)(`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="better-search-views-icon lucide lucide-heading"><path d="M6 12h12"></path><path d="M6 20V4"></path><path d="M18 20V4">`);
function HeadingIcon() {
return _tmpl$();
}
}
});
// src/patterns.ts
var patterns_exports = {};
__export(patterns_exports, {
listItemToken: () => listItemToken,
wikiLinkBrackets: () => wikiLinkBrackets
});
var wikiLinkBrackets, listItemToken;
var init_patterns = __esm({
"src/patterns.ts"() {
wikiLinkBrackets = /\[\[|]]/g;
listItemToken = /^-\s+/;
}
});
// src/ui/solid/title.tsx
var require_title = __commonJS({
"src/ui/solid/title.tsx"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Title = Title;
var _web = require_web();
var _solidJs = require_solid();
var _pluginContext = require_plugin_context();
var _listIcon = require_list_icon();
var _headingIcon = require_heading_icon();
var _patterns = (init_patterns(), __toCommonJS(patterns_exports));
var _tmpl$ = /* @__PURE__ */ (0, _web.template)(`<div class="better-search-views-titles-container">`);
var _tmpl$2 = /* @__PURE__ */ (0, _web.template)(`<div class="tree-item-inner"><div class="better-search-views-breadcrumb-container"><div class="better-search-views-breadcrumb-token"></div><div>`);
function removeListToken(text) {
return text.trim().replace(_patterns.listItemToken, "");
}
function Title(props) {
const {
handleClick,
handleMouseover
} = (0, _pluginContext.usePluginContext)();
return (() => {
const _el$ = _tmpl$();
(0, _web.insert)(_el$, (0, _web.createComponent)(_solidJs.For, {
get each() {
return props.breadcrumbs;
},
children: (breadcrumb, i) => {
const handleTitleClick = async (event) => await handleClick(event, props.contextTree.filePath, breadcrumb.position.start.line);
const handleTitleMouseover = (event) => handleMouseover(event, props.contextTree.filePath, breadcrumb.position.start.line);
return (() => {
const _el$2 = _tmpl$2(), _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling;
_el$3.$$mouseover = handleTitleMouseover;
_el$3.$$click = handleTitleClick;
(0, _web.insert)(_el$4, (0, _web.createComponent)(_solidJs.Switch, {
get fallback() {
return (0, _web.createComponent)(_listIcon.ListIcon, {});
},
get children() {
return (0, _web.createComponent)(_solidJs.Match, {
get when() {
return breadcrumb.type === "heading";
},
get children() {
return (0, _web.createComponent)(_headingIcon.HeadingIcon, {});
}
});
}
}));
(0, _web.insert)(_el$5, () => removeListToken(breadcrumb.text));
return _el$2;
})();
}
}));
return _el$;
})();
}
(0, _web.delegateEvents)(["click", "mouseover"]);
}
});
// src/ui/solid/match-section.tsx
var require_match_section = __commonJS({
"src/ui/solid/match-section.tsx"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.MatchSection = MatchSection;
var _web = require_web();
var _solidJs = require_solid();
var _obsidian = require("obsidian");
var _pluginContext = require_plugin_context();
var _tmpl$ = /* @__PURE__ */ (0, _web.template)(`<div class="search-result-file-matches">`);
var _tmpl$2 = /* @__PURE__ */ (0, _web.template)(`<div class="search-result-file-match better-search-views-file-match markdown-preview-view markdown-rendered">`);
function MatchSection(props) {
const {
handleClick,
handleMouseover,
app
} = (0, _pluginContext.usePluginContext)();
const matchLifecycleManager = new _obsidian.Component();
(0, _solidJs.onCleanup)(() => {
matchLifecycleManager.unload();
});
return (0, _web.createComponent)(_solidJs.Show, {
get when() {
return props.sectionsWithMatches.length > 0;
},
get children() {
const _el$ = _tmpl$();
(0, _web.insert)(_el$, (0, _web.createComponent)(_solidJs.For, {
get each() {
return props.sectionsWithMatches;
},
children: (section) => {
const line = section.cache.position.start.line;
return (() => {
const _el$2 = _tmpl$2();
_el$2.$$mouseover = (event) => {
handleMouseover(event, section.filePath, line);
};
_el$2.$$click = async (event) => {
await handleClick(event, section.filePath, line);
};
(0, _web.use)(async (el) => {
await _obsidian.MarkdownRenderer.render(app, section.text, el, section.filePath, matchLifecycleManager);
matchLifecycleManager.load();
}, _el$2);
return _el$2;
})();
}
}));
return _el$;
}
});
}
(0, _web.delegateEvents)(["click", "mouseover"]);
}
});
// src/ui/solid/icons/collapse-icon.tsx
var require_collapse_icon = __commonJS({
"src/ui/solid/icons/collapse-icon.tsx"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CollapseIcon = CollapseIcon;
var _web = require_web();
var _tmpl$ = /* @__PURE__ */ (0, _web.template)(`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon right-triangle"><path d="M3 8L12 17L21 8">`);
function CollapseIcon() {
return _tmpl$();
}
}
});
// src/ui/solid/branch.tsx
var require_branch = __commonJS({
"src/ui/solid/branch.tsx"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Branch = Branch;
var _web = require_web();
var _solidJs = require_solid();
var _title = require_title();
var _matchSection = require_match_section();
var _collapseIcon = require_collapse_icon();
var _pluginContext = require_plugin_context();
var _tmpl$ = /* @__PURE__ */ (0, _web.template)(`<div class="tree-item-self search-result-file-title is-clickable"><div>`);
var _tmpl$2 = /* @__PURE__ */ (0, _web.template)(`<div class="tree-item search-result better-search-views-tree"><div><div class="better-search-views-tree-item-children">`);
function Branch(props) {
const {
handleHeightChange
} = (0, _pluginContext.usePluginContext)();
const [isHidden, setIsHidden] = (0, _solidJs.createSignal)(false);
const breadcrumbs = () => {
const breadcrumbForBranch = {
text: props.contextTree.text,
type: props.contextTree.type,
position: props.contextTree.cacheItem.position
};
return [breadcrumbForBranch, ...props.contextTree.breadcrumbs || []];
};
return (() => {
const _el$ = _tmpl$2(), _el$4 = _el$.firstChild, _el$5 = _el$4.firstChild;
(0, _web.insert)(_el$, (0, _web.createComponent)(_solidJs.Show, {
get when() {
return props.contextTree.type !== "file";
},
get children() {
const _el$2 = _tmpl$(), _el$3 = _el$2.firstChild;
_el$3.$$click = () => {
setIsHidden(!isHidden());
handleHeightChange();
};
(0, _web.insert)(_el$3, (0, _web.createComponent)(_collapseIcon.CollapseIcon, {}));
(0, _web.insert)(_el$2, (0, _web.createComponent)(_title.Title, {
get breadcrumbs() {
return breadcrumbs();
},
get contextTree() {
return props.contextTree;
}
}), null);
(0, _web.effect)(() => (0, _web.className)(_el$3, `tree-item-icon collapse-icon ${isHidden() ? "is-collapsed" : ""}`));
return _el$2;
}
}), _el$4);
(0, _web.insert)(_el$4, (0, _web.createComponent)(_matchSection.MatchSection, {
get sectionsWithMatches() {
return props.contextTree.sectionsWithMatches;
}
}), _el$5);
(0, _web.insert)(_el$5, (0, _web.createComponent)(_solidJs.For, {
get each() {
return props.contextTree.branches;
},
children: (branch) => (0, _web.createComponent)(Branch, {
contextTree: branch
})
}));
(0, _web.effect)(() => (0, _web.className)(_el$4, isHidden() ? "better-search-views-is-hidden" : ""));
return _el$;
})();
}
(0, _web.delegateEvents)(["click"]);
}
});
// src/context-tree/collapse/collapse-empty-nodes.ts
var collapse_empty_nodes_exports = {};
__export(collapse_empty_nodes_exports, {
collapseEmptyNodes: () => collapseEmptyNodes
});
function collapseEmptyNodes(tree) {
var _a, _b;
if (!((_a = tree == null ? void 0 : tree.sectionsWithMatches) == null ? void 0 : _a.length) && tree.branches.length === 1) {
const firstBranch = tree.branches[0];
const breadcrumb = {
text: firstBranch.text,
type: firstBranch.type,
position: (_b = firstBranch.cacheItem) == null ? void 0 : _b.position
};
return collapseEmptyNodes({
...tree,
branches: firstBranch.branches,
breadcrumbs: [...tree.breadcrumbs || [], breadcrumb],
sectionsWithMatches: firstBranch.sectionsWithMatches
});
}
return { ...tree, branches: tree.branches.map(collapseEmptyNodes) };
}
var init_collapse_empty_nodes = __esm({
"src/context-tree/collapse/collapse-empty-nodes.ts"() {
}
});
// node_modules/mark.js/dist/mark.js
var require_mark = __commonJS({
"node_modules/mark.js/dist/mark.js"(exports, module2) {
(function(global, factory) {
typeof exports === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global.Mark = factory();
})(exports, function() {
"use strict";
var _typeof = 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 classCallCheck = function(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
};
var createClass = function() {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor)
descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function(Constructor, protoProps, staticProps) {
if (protoProps)
defineProperties(Constructor.prototype, protoProps);
if (staticProps)
defineProperties(Constructor, staticProps);
return Constructor;
};
}();
var _extends = Object.assign || function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
var DOMIterator = function() {
function DOMIterator2(ctx) {
var iframes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
var exclude = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
var iframesTimeout = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 5e3;
classCallCheck(this, DOMIterator2);
this.ctx = ctx;
this.iframes = iframes;
this.exclude = exclude;
this.iframesTimeout = iframesTimeout;
}
createClass(DOMIterator2, [{
key: "getContexts",
value: function getContexts() {
var ctx = void 0, filteredCtx = [];
if (typeof this.ctx === "undefined" || !this.ctx) {
ctx = [];
} else if (NodeList.prototype.isPrototypeOf(this.ctx)) {
ctx = Array.prototype.slice.call(this.ctx);
} else if (Array.isArray(this.ctx)) {
ctx = this.ctx;
} else if (typeof this.ctx === "string") {
ctx = Array.prototype.slice.call(document.querySelectorAll(this.ctx));
} else {
ctx = [this.ctx];
}
ctx.forEach(function(ctx2) {
var isDescendant = filteredCtx.filter(function(contexts) {
return contexts.contains(ctx2);
}).length > 0;
if (filteredCtx.indexOf(ctx2) === -1 && !isDescendant) {
filteredCtx.push(ctx2);
}
});
return filteredCtx;
}
}, {
key: "getIframeContents",
value: function getIframeContents(ifr, successFn) {
var errorFn = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : function() {
};
var doc = void 0;
try {
var ifrWin = ifr.contentWindow;
doc = ifrWin.document;
if (!ifrWin || !doc) {
throw new Error("iframe inaccessible");
}
} catch (e) {
errorFn();
}
if (doc) {
successFn(doc);
}
}
}, {
key: "isIframeBlank",
value: function isIframeBlank(ifr) {
var bl = "about:blank", src = ifr.getAttribute("src").trim(), href = ifr.contentWindow.location.href;
return href === bl && src !== bl && src;
}
}, {
key: "observeIframeLoad",
value: function observeIframeLoad(ifr, successFn, errorFn) {
var _this = this;
var called = false, tout = null;
var listener = function listener2() {
if (called) {
return;
}
called = true;
clearTimeout(tout);
try {
if (!_this.isIframeBlank(ifr)) {
ifr.removeEventListener("load", listener2);
_this.getIframeContents(ifr, successFn, errorFn);
}
} catch (e) {
errorFn();
}
};
ifr.addEventListener("load", listener);
tout = setTimeout(listener, this.iframesTimeout);
}
}, {
key: "onIframeReady",
value: function onIframeReady(ifr, successFn, errorFn) {
try {
if (ifr.contentWindow.document.readyState === "complete") {
if (this.isIframeBlank(ifr)) {
this.observeIframeLoad(ifr, successFn, errorFn);
} else {
this.getIframeContents(ifr, successFn, errorFn);
}
} else {
this.observeIframeLoad(ifr, successFn, errorFn);
}
} catch (e) {
errorFn();
}
}
}, {
key: "waitForIframes",
value: function waitForIframes(ctx, done) {
var _this2 = this;
var eachCalled = 0;
this.forEachIframe(ctx, function() {
return true;
}, function(ifr) {
eachCalled++;
_this2.waitForIframes(ifr.querySelector("html"), function() {
if (!--eachCalled) {
done();
}
});
}, function(handled) {
if (!handled) {
done();
}
});
}
}, {
key: "forEachIframe",
value: function forEachIframe(ctx, filter, each) {
var _this3 = this;
var end = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : function() {
};
var ifr = ctx.querySelectorAll("iframe"), open = ifr.length, handled = 0;
ifr = Array.prototype.slice.call(ifr);
var checkEnd = function checkEnd2() {
if (--open <= 0) {
end(handled);
}
};
if (!open) {
checkEnd();
}
ifr.forEach(function(ifr2) {
if (DOMIterator2.matches(ifr2, _this3.exclude)) {
checkEnd();
} else {
_this3.onIframeReady(ifr2, function(con) {
if (filter(ifr2)) {
handled++;
each(con);
}
checkEnd();
}, checkEnd);
}
});
}
}, {
key: "createIterator",
value: function createIterator(ctx, whatToShow, filter) {
return document.createNodeIterator(ctx, whatToShow, filter, false);
}
}, {
key: "createInstanceOnIframe",
value: function createInstanceOnIframe(contents) {
return new DOMIterator2(contents.querySelector("html"), this.iframes);
}
}, {
key: "compareNodeIframe",
value: function compareNodeIframe(node, prevNode, ifr) {
var compCurr = node.compareDocumentPosition(ifr), prev = Node.DOCUMENT_POSITION_PRECEDING;
if (compCurr & prev) {
if (prevNode !== null) {
var compPrev = prevNode.compareDocumentPosition(ifr), after = Node.DOCUMENT_POSITION_FOLLOWING;
if (compPrev & after) {
return true;
}
} else {
return true;
}
}
return false;
}
}, {
key: "getIteratorNode",
value: function getIteratorNode(itr) {
var prevNode = itr.previousNode();
var node = void 0;
if (prevNode === null) {
node = itr.nextNode();
} else {
node = itr.nextNode() && itr.nextNode();
}
return {
prevNode,
node
};
}
}, {
key: "checkIframeFilter",
value: function checkIframeFilter(node, prevNode, currIfr, ifr) {
var key = false, handled = false;
ifr.forEach(function(ifrDict, i) {
if (ifrDict.val === currIfr) {
key = i;
handled = ifrDict.handled;
}
});
if (this.compareNodeIframe(node, prevNode, currIfr)) {
if (key === false && !handled) {
ifr.push({
val: currIfr,
handled: true
});
} else if (key !== false && !handled) {
ifr[key].handled = true;
}
return true;
}
if (key === false) {
ifr.push({
val: currIfr,
handled: false
});
}
return false;
}
}, {
key: "handleOpenIframes",
value: function handleOpenIframes(ifr, whatToShow, eCb, fCb) {
var _this4 = this;
ifr.forEach(function(ifrDict) {
if (!ifrDict.handled) {
_this4.getIframeContents(ifrDict.val, function(con) {
_this4.createInstanceOnIframe(con).forEachNode(whatToShow, eCb, fCb);
});
}
});
}
}, {
key: "iterateThroughNodes",
value: function iterateThroughNodes(whatToShow, ctx, eachCb, filterCb, doneCb) {
var _this5 = this;
var itr = this.createIterator(ctx, whatToShow, filterCb);
var ifr = [], elements = [], node = void 0, prevNode = void 0, retrieveNodes = function retrieveNodes2() {
var _getIteratorNode = _this5.getIteratorNode(itr);
prevNode = _getIteratorNode.prevNode;
node = _getIteratorNode.node;
return node;
};
while (retrieveNodes()) {
if (this.iframes) {
this.forEachIframe(ctx, function(currIfr) {
return _this5.checkIframeFilter(node, prevNode, currIfr, ifr);
}, function(con) {
_this5.createInstanceOnIframe(con).forEachNode(whatToShow, function(ifrNode) {
return elements.push(ifrNode);
}, filterCb);
});
}
elements.push(node);
}
elements.forEach(function(node2) {
eachCb(node2);
});
if (this.iframes) {
this.handleOpenIframes(ifr, whatToShow, eachCb, filterCb);
}
doneCb();
}
}, {
key: "forEachNode",
value: function forEachNode(whatToShow, each, filter) {
var _this6 = this;
var done = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : function() {
};
var contexts = this.getContexts();
var open = contexts.length;
if (!open) {
done();
}
contexts.forEach(function(ctx) {
var ready = function ready2() {
_this6.iterateThroughNodes(whatToShow, ctx, each, filter, function() {
if (--open <= 0) {
done();
}
});
};
if (_this6.iframes) {
_this6.waitForIframes(ctx, ready);
} else {
ready();
}
});
}
}], [{
key: "matches",
value: function matches(element, selector) {
var selectors = typeof selector === "string" ? [selector] : selector, fn = element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector;
if (fn) {
var match = false;
selectors.every(function(sel) {
if (fn.call(element, sel)) {
match = true;
return false;
}
return true;
});
return match;
} else {
return false;
}
}
}]);
return DOMIterator2;
}();
var Mark$1 = function() {
function Mark2(ctx) {
classCallCheck(this, Mark2);
this.ctx = ctx;
this.ie = false;
var ua = window.navigator.userAgent;
if (ua.indexOf("MSIE") > -1 || ua.indexOf("Trident") > -1) {
this.ie = true;
}
}
createClass(Mark2, [{
key: "log",
value: function log(msg) {
var level = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "debug";
var log2 = this.opt.log;
if (!this.opt.debug) {
return;
}
if ((typeof log2 === "undefined" ? "undefined" : _typeof(log2)) === "object" && typeof log2[level] === "function") {
log2[level]("mark.js: " + msg);
}
}
}, {
key: "escapeStr",
value: function escapeStr(str) {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
}, {
key: "createRegExp",
value: function createRegExp(str) {
if (this.opt.wildcards !== "disabled") {
str = this.setupWildcardsRegExp(str);
}
str = this.escapeStr(str);
if (Object.keys(this.opt.synonyms).length) {
str = this.createSynonymsRegExp(str);
}
if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
str = this.setupIgnoreJoinersRegExp(str);
}
if (this.opt.diacritics) {
str = this.createDiacriticsRegExp(str);
}
str = this.createMergedBlanksRegExp(str);
if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
str = this.createJoinersRegExp(str);
}
if (this.opt.wildcards !== "disabled") {
str = this.createWildcardsRegExp(str);
}
str = this.createAccuracyRegExp(str);
return str;
}
}, {
key: "createSynonymsRegExp",
value: function createSynonymsRegExp(str) {
var syn = this.opt.synonyms, sens = this.opt.caseSensitive ? "" : "i", joinerPlaceholder = this.opt.ignoreJoiners || this.opt.ignorePunctuation.length ? "\0" : "";
for (var index in syn) {
if (syn.hasOwnProperty(index)) {
var value = syn[index], k1 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(index) : this.escapeStr(index), k2 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(value) : this.escapeStr(value);
if (k1 !== "" && k2 !== "") {
str = str.replace(new RegExp("(" + this.escapeStr(k1) + "|" + this.escapeStr(k2) + ")", "gm" + sens), joinerPlaceholder + ("(" + this.processSynomyms(k1) + "|") + (this.processSynomyms(k2) + ")") + joinerPlaceholder);
}
}
}
return str;
}
}, {
key: "processSynomyms",
value: function processSynomyms(str) {
if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {
str = this.setupIgnoreJoinersRegExp(str);
}
return str;
}
}, {
key: "setupWildcardsRegExp",
value: function setupWildcardsRegExp(str) {
str = str.replace(/(?:\\)*\?/g, function(val) {
return val.charAt(0) === "\\" ? "?" : "";
});
return str.replace(/(?:\\)*\*/g, function(val) {
return val.charAt(0) === "\\" ? "*" : "";
});
}
}, {
key: "createWildcardsRegExp",
value: function createWildcardsRegExp(str) {
var spaces = this.opt.wildcards === "withSpaces";
return str.replace(/\u0001/g, spaces ? "[\\S\\s]?" : "\\S?").replace(/\u0002/g, spaces ? "[\\S\\s]*?" : "\\S*");
}
}, {
key: "setupIgnoreJoinersRegExp",
value: function setupIgnoreJoinersRegExp(str) {
return str.replace(/[^(|)\\]/g, function(val, indx, original) {
var nextChar = original.charAt(indx + 1);
if (/[(|)\\]/.test(nextChar) || nextChar === "") {
return val;
} else {
return val + "\0";
}
});
}
}, {
key: "createJoinersRegExp",
value: function createJoinersRegExp(str) {
var joiner = [];
var ignorePunctuation = this.opt.ignorePunctuation;
if (Array.isArray(ignorePunctuation) && ignorePunctuation.length) {
joiner.push(this.escapeStr(ignorePunctuation.join("")));
}
if (this.opt.ignoreJoiners) {
joiner.push("\\u00ad\\u200b\\u200c\\u200d");
}
return joiner.length ? str.split(/\u0000+/).join("[" + joiner.join("") + "]*") : str;
}
}, {
key: "createDiacriticsRegExp",
value: function createDiacriticsRegExp(str) {
var sens = this.opt.caseSensitive ? "" : "i", dct = this.opt.caseSensitive ? ["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105", "A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104", "c\xE7\u0107\u010D", "C\xC7\u0106\u010C", "d\u0111\u010F", "D\u0110\u010E", "e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119", "E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118", "i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012B", "I\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A", "l\u0142", "L\u0141", "n\xF1\u0148\u0144", "N\xD1\u0147\u0143", "o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014D", "O\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C", "r\u0159", "R\u0158", "s\u0161\u015B\u0219\u015F", "S\u0160\u015A\u0218\u015E", "t\u0165\u021B\u0163", "T\u0164\u021A\u0162", "u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016B", "U\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A", "y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFF", "Y\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178", "z\u017E\u017C\u017A", "Z\u017D\u017B\u0179"] : ["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104", "c\xE7\u0107\u010DC\xC7\u0106\u010C", "d\u0111\u010FD\u0110\u010E", "e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118", "i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012BI\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A", "l\u0142L\u0141", "n\xF1\u0148\u0144N\xD1\u0147\u0143", "o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014DO\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C", "r\u0159R\u0158", "s\u0161\u015B\u0219\u015FS\u0160\u015A\u0218\u015E", "t\u0165\u021B\u0163T\u0164\u021A\u0162", "u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016BU\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A", "y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFFY\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178", "z\u017E\u017C\u017AZ\u017D\u017B\u0179"];
var handled = [];
str.split("").forEach(function(ch) {
dct.every(function(dct2) {
if (dct2.indexOf(ch) !== -1) {
if (handled.indexOf(dct2) > -1) {
return false;
}
str = str.replace(new RegExp("[" + dct2 + "]", "gm" + sens), "[" + dct2 + "]");
handled.push(dct2);
}
return true;
});
});
return str;
}
}, {
key: "createMergedBlanksRegExp",
value: function createMergedBlanksRegExp(str) {
return str.replace(/[\s]+/gmi, "[\\s]+");
}
}, {
key: "createAccuracyRegExp",
value: function createAccuracyRegExp(str) {
var _this = this;
var chars = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xA1\xBF";
var acc = this.opt.accuracy, val = typeof acc === "string" ? acc : acc.value, ls = typeof acc === "string" ? [] : acc.limiters, lsJoin = "";
ls.forEach(function(limiter) {
lsJoin += "|" + _this.escapeStr(limiter);
});
switch (val) {
case "partially":
default:
return "()(" + str + ")";
case "complementary":
lsJoin = "\\s" + (lsJoin ? lsJoin : this.escapeStr(chars));
return "()([^" + lsJoin + "]*" + str + "[^" + lsJoin + "]*)";
case "exactly":
return "(^|\\s" + lsJoin + ")(" + str + ")(?=$|\\s" + lsJoin + ")";
}
}
}, {
key: "getSeparatedKeywords",
value: function getSeparatedKeywords(sv) {
var _this2 = this;
var stack = [];
sv.forEach(function(kw) {
if (!_this2.opt.separateWordSearch) {
if (kw.trim() && stack.indexOf(kw) === -1) {
stack.push(kw);
}
} else {
kw.split(" ").forEach(function(kwSplitted) {
if (kwSplitted.trim() && stack.indexOf(kwSplitted) === -1) {
stack.push(kwSplitted);
}
});
}
});
return {
"keywords": stack.sort(function(a, b) {
return b.length - a.length;
}),
"length": stack.length
};
}
}, {
key: "isNumeric",
value: function isNumeric(value) {
return Number(parseFloat(value)) == value;
}
}, {
key: "checkRanges",
value: function checkRanges(array) {
var _this3 = this;
if (!Array.isArray(array) || Object.prototype.toString.call(array[0]) !== "[object Object]") {
this.log("markRanges() will only accept an array of objects");
this.opt.noMatch(array);
return [];
}
var stack = [];
var last = 0;
array.sort(function(a, b) {
return a.start - b.start;
}).forEach(function(item) {
var _callNoMatchOnInvalid = _this3.callNoMatchOnInvalidRanges(item, last), start = _callNoMatchOnInvalid.start, end = _callNoMatchOnInvalid.end, valid = _callNoMatchOnInvalid.valid;
if (valid) {
item.start = start;
item.length = end - start;
stack.push(item);
last = end;
}
});
return stack;
}
}, {
key: "callNoMatchOnInvalidRanges",
value: function callNoMatchOnInvalidRanges(range, last) {
var start = void 0, end = void 0, valid = false;
if (range && typeof range.start !== "undefined") {
start = parseInt(range.start, 10);
end = start + parseInt(range.length, 10);
if (this.isNumeric(range.start) && this.isNumeric(range.length) && end - last > 0 && end - start > 0) {
valid = true;
} else {
this.log("Ignoring invalid or overlapping range: " + ("" + JSON.stringify(range)));
this.opt.noMatch(range);
}
} else {
this.log("Ignoring invalid range: " + JSON.stringify(range));
this.opt.noMatch(range);
}
return {
start,
end,
valid
};
}
}, {
key: "checkWhitespaceRanges",
value: function checkWhitespaceRanges(range, originalLength, string) {
var end = void 0, valid = true, max = string.length, offset = originalLength - max, start = parseInt(range.start, 10) - offset;
start = start > max ? max : start;
end = start + parseInt(range.length, 10);
if (end > max) {
end = max;
this.log("End range automatically set to the max value of " + max);
}
if (start < 0 || end - start < 0 || start > max || end > max) {
valid = false;
this.log("Invalid range: " + JSON.stringify(range));
this.opt.noMatch(range);
} else if (string.substring(start, end).replace(/\s+/g, "") === "") {
valid = false;
this.log("Skipping whitespace only range: " + JSON.stringify(range));
this.opt.noMatch(range);
}
return {
start,
end,
valid
};
}
}, {
key: "getTextNodes",
value: function getTextNodes(cb) {
var _this4 = this;
var val = "", nodes = [];
this.iterator.forEachNode(NodeFilter.SHOW_TEXT, function(node) {
nodes.push({
start: val.length,
end: (val += node.textContent).length,
node
});
}, function(node) {
if (_this4.matchesExclude(node.parentNode)) {
return NodeFilter.FILTER_REJECT;
} else {
return NodeFilter.FILTER_ACCEPT;
}
}, function() {
cb({
value: val,
nodes
});
});
}
}, {
key: "matchesExclude",
value: function matchesExclude(el) {
return DOMIterator.matches(el, this.opt.exclude.concat(["script", "style", "title", "head", "html"]));
}
}, {
key: "wrapRangeInTextNode",
value: function wrapRangeInTextNode(node, start, end) {
var hEl = !this.opt.element ? "mark" : this.opt.element, startNode = node.splitText(start), ret = startNode.splitText(end - start);
var repl = document.createElement(hEl);
repl.setAttribute("data-markjs", "true");
if (this.opt.className) {
repl.setAttribute("class", this.opt.className);
}
repl.textContent = startNode.textContent;
startNode.parentNode.replaceChild(repl, startNode);
return ret;
}
}, {
key: "wrapRangeInMappedTextNode",
value: function wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) {
var _this5 = this;
dict.nodes.every(function(n, i) {
var sibl = dict.nodes[i + 1];
if (typeof sibl === "undefined" || sibl.start > start) {
if (!filterCb(n.node)) {
return false;
}
var s = start - n.start, e = (end > n.end ? n.end : end) - n.start, startStr = dict.value.substr(0, n.start), endStr = dict.value.substr(e + n.start);
n.node = _this5.wrapRangeInTextNode(n.node, s, e);
dict.value = startStr + endStr;
dict.nodes.forEach(function(k, j) {
if (j >= i) {
if (dict.nodes[j].start > 0 && j !== i) {
dict.nodes[j].start -= e;
}
dict.nodes[j].end -= e;
}
});
end -= e;
eachCb(n.node.previousSibling, n.start);
if (end > n.end) {
start = n.end;
} else {
return false;
}
}
return true;
});
}
}, {
key: "wrapMatches",
value: function wrapMatches(regex, ignoreGroups, filterCb, eachCb, endCb) {
var _this6 = this;
var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;
this.getTextNodes(function(dict) {
dict.nodes.forEach(function(node) {
node = node.node;
var match = void 0;
while ((match = regex.exec(node.textContent)) !== null && match[matchIdx] !== "") {
if (!filterCb(match[matchIdx], node)) {
continue;
}
var pos = match.index;
if (matchIdx !== 0) {
for (var i = 1; i < matchIdx; i++) {
pos += match[i].length;
}
}
node = _this6.wrapRangeInTextNode(node, pos, pos + match[matchIdx].length);
eachCb(node.previousSibling);
regex.lastIndex = 0;
}
});
endCb();
});
}
}, {
key: "wrapMatchesAcrossElements",
value: function wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) {
var _this7 = this;
var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;
this.getTextNodes(function(dict) {
var match = void 0;
while ((match = regex.exec(dict.value)) !== null && match[matchIdx] !== "") {
var start = match.index;
if (matchIdx !== 0) {
for (var i = 1; i < matchIdx; i++) {
start += match[i].length;
}
}
var end = start + match[matchIdx].length;
_this7.wrapRangeInMappedTextNode(dict, start, end, function(node) {
return filterCb(match[matchIdx], node);
}, function(node, lastIndex) {
regex.lastIndex = lastIndex;
eachCb(node);
});
}
endCb();
});
}
}, {
key: "wrapRangeFromIndex",
value: function wrapRangeFromIndex(ranges, filterCb, eachCb, endCb) {
var _this8 = this;
this.getTextNodes(function(dict) {
var originalLength = dict.value.length;
ranges.forEach(function(range, counter) {
var _checkWhitespaceRange = _this8.checkWhitespaceRanges(range, originalLength, dict.value), start = _checkWhitespaceRange.start, end = _checkWhitespaceRange.end, valid = _checkWhitespaceRange.valid;
if (valid) {
_this8.wrapRangeInMappedTextNode(dict, start, end, function(node) {
return filterCb(node, range, dict.value.substring(start, end), counter);
}, function(node) {
eachCb(node, range);
});
}
});
endCb();
});
}
}, {
key: "unwrapMatches",
value: function unwrapMatches(node) {
var parent = node.parentNode;
var docFrag = document.createDocumentFragment();
while (node.firstChild) {
docFrag.appendChild(node.removeChild(node.firstChild));
}
parent.replaceChild(docFrag, node);
if (!this.ie) {
parent.normalize();
} else {
this.normalizeTextNode(parent);
}
}
}, {
key: "normalizeTextNode",
value: function normalizeTextNode(node) {
if (!node) {
return;
}
if (node.nodeType === 3) {
while (node.nextSibling && node.nextSibling.nodeType === 3) {
node.nodeValue += node.nextSibling.nodeValue;
node.parentNode.removeChild(node.nextSibling);
}
} else {
this.normalizeTextNode(node.firstChild);
}
this.normalizeTextNode(node.nextSibling);
}
}, {
key: "markRegExp",
value: function markRegExp(regexp, opt) {
var _this9 = this;
this.opt = opt;
this.log('Searching with expression "' + regexp + '"');
var totalMatches = 0, fn = "wrapMatches";
var eachCb = function eachCb2(element) {
totalMatches++;
_this9.opt.each(element);
};
if (this.opt.acrossElements) {
fn = "wrapMatchesAcrossElements";
}
this[fn](regexp, this.opt.ignoreGroups, function(match, node) {
return _this9.opt.filter(node, match, totalMatches);
}, eachCb, function() {
if (totalMatches === 0) {
_this9.opt.noMatch(regexp);
}
_this9.opt.done(totalMatches);
});
}
}, {
key: "mark",
value: function mark(sv, opt) {
var _this10 = this;
this.opt = opt;
var totalMatches = 0, fn = "wrapMatches";
var _getSeparatedKeywords = this.getSeparatedKeywords(typeof sv === "string" ? [sv] : sv), kwArr = _getSeparatedKeywords.keywords, kwArrLen = _getSeparatedKeywords.length, sens = this.opt.caseSensitive ? "" : "i", handler = function handler2(kw) {
var regex = new RegExp(_this10.createRegExp(kw), "gm" + sens), matches = 0;
_this10.log('Searching with expression "' + regex + '"');
_this10[fn](regex, 1, function(term, node) {
return _this10.opt.filter(node, kw, totalMatches, matches);
}, function(element) {
matches++;
totalMatches++;
_this10.opt.each(element);
}, function() {
if (matches === 0) {
_this10.opt.noMatch(kw);
}
if (kwArr[kwArrLen - 1] === kw) {
_this10.opt.done(totalMatches);
} else {
handler2(kwArr[kwArr.indexOf(kw) + 1]);
}
});
};
if (this.opt.acrossElements) {
fn = "wrapMatchesAcrossElements";
}
if (kwArrLen === 0) {
this.opt.done(totalMatches);
} else {
handler(kwArr[0]);
}
}
}, {
key: "markRanges",
value: function markRanges(rawRanges, opt) {
var _this11 = this;
this.opt = opt;
var totalMatches = 0, ranges = this.checkRanges(rawRanges);
if (ranges && ranges.length) {
this.log("Starting to mark with the following ranges: " + JSON.stringify(ranges));
this.wrapRangeFromIndex(ranges, function(node, range, match, counter) {
return _this11.opt.filter(node, range, match, counter);
}, function(element, range) {
totalMatches++;
_this11.opt.each(element, range);
}, function() {
_this11.opt.done(totalMatches);
});
} else {
this.opt.done(totalMatches);
}
}
}, {
key: "unmark",
value: function unmark(opt) {
var _this12 = this;
this.opt = opt;
var sel = this.opt.element ? this.opt.element : "*";
sel += "[data-markjs]";
if (this.opt.className) {
sel += "." + this.opt.className;
}
this.log('Removal selector "' + sel + '"');
this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT, function(node) {
_this12.unwrapMatches(node);
}, function(node) {
var matchesSel = DOMIterator.matches(node, sel), matchesExclude = _this12.matchesExclude(node);
if (!matchesSel || matchesExclude) {
return NodeFilter.FILTER_REJECT;
} else {
return NodeFilter.FILTER_ACCEPT;
}
}, this.opt.done);
}
}, {
key: "opt",
set: function set$$1(val) {
this._opt = _extends({}, {
"element": "",
"className": "",
"exclude": [],
"iframes": false,
"iframesTimeout": 5e3,
"separateWordSearch": true,
"diacritics": true,
"synonyms": {},
"accuracy": "partially",
"acrossElements": false,
"caseSensitive": false,
"ignoreJoiners": false,
"ignoreGroups": 0,
"ignorePunctuation": [],
"wildcards": "disabled",
"each": function each() {
},
"noMatch": function noMatch() {
},
"filter": function filter() {
return true;
},
"done": function done() {
},
"debug": false,
"log": window.console
}, val);
},
get: function get$$1() {
return this._opt;
}
}, {
key: "iterator",
get: function get$$1() {
return new DOMIterator(this.ctx, this.opt.iframes, this.opt.exclude, this.opt.iframesTimeout);
}
}]);
return Mark2;
}();
function Mark(ctx) {
var _this = this;
var instance = new Mark$1(ctx);
this.mark = function(sv, opt) {
instance.mark(sv, opt);
return _this;
};
this.markRegExp = function(sv, opt) {
instance.markRegExp(sv, opt);
return _this;
};
this.markRanges = function(sv, opt) {
instance.markRanges(sv, opt);
return _this;
};
this.unmark = function(opt) {
instance.unmark(opt);
return _this;
};
return this;
}
return Mark;
});
}
});
// src/ui/solid/tree.tsx
var require_tree = __commonJS({
"src/ui/solid/tree.tsx"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Tree = Tree;
var _web = require_web();
var _solidJs = require_solid();
var _branch = require_branch();
var _collapseEmptyNodes = (init_collapse_empty_nodes(), __toCommonJS(collapse_empty_nodes_exports));
var _mark = _interopRequireDefault(require_mark());
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}
var _tmpl$ = /* @__PURE__ */ (0, _web.template)(`<div>`);
function Tree(props) {
const collapsedTree = () => ({
...props.fileContextTree,
branches: props.fileContextTree.branches.map(_collapseEmptyNodes.collapseEmptyNodes)
});
let markContextRef;
(0, _solidJs.createEffect)(() => {
new _mark.default(markContextRef).mark(props.highlights, {
element: "span",
className: "search-result-file-matched-text",
separateWordSearch: false,
diacritics: false
});
});
return (
// @ts-ignore
(() => {
const _el$ = _tmpl$();
const _ref$ = markContextRef;
typeof _ref$ === "function" ? (0, _web.use)(_ref$, _el$) : markContextRef = _el$;
(0, _web.insert)(_el$, (0, _web.createComponent)(_branch.Branch, {
get contextTree() {
return collapsedTree();
}
}));
return _el$;
})()
);
}
}
});
// src/ui/solid/render-context-tree.tsx
var require_render_context_tree = __commonJS({
"src/ui/solid/render-context-tree.tsx"(exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.renderContextTree = renderContextTree2;
var _web = require_web();
var _pluginContext = require_plugin_context();
var _tree = require_tree();
function renderContextTree2({
contextTree,
el,
plugin,
highlights,
infinityScroll
}) {
return (0, _web.render)(() => (0, _web.createComponent)(_pluginContext.PluginContextProvider, {
plugin,
infinityScroll,
get children() {
return (0, _web.createComponent)(_tree.Tree, {
fileContextTree: contextTree,
highlights
});
}
}), el);
}
}
});
// src/plugin.ts
var plugin_exports = {};
__export(plugin_exports, {
default: () => BetterBacklinksPlugin
});
module.exports = __toCommonJS(plugin_exports);
var import_obsidian2 = require("obsidian");
// src/patcher.ts
var import_obsidian = require("obsidian");
// node_modules/monkey-around/mjs/index.js
function around(obj, factories) {
const removers = Object.keys(factories).map((key) => around1(obj, key, factories[key]));
return removers.length === 1 ? removers[0] : function() {
removers.forEach((r) => r());
};
}
function around1(obj, method, createWrapper) {
const original = obj[method], hadOwn = obj.hasOwnProperty(method);
let current = createWrapper(original);
if (original)
Object.setPrototypeOf(current, original);
Object.setPrototypeOf(wrapper, current);
obj[method] = wrapper;
return remove;
function wrapper(...args) {
if (current === original && obj[method] === wrapper)
remove();
return current.apply(this, args);
}
function remove() {
if (obj[method] === wrapper) {
if (hadOwn)
obj[method] = original;
else
delete obj[method];
}
if (current === original)
return;
current = original;
Object.setPrototypeOf(wrapper, original || Function);
}
}
// src/metadata-cache-util/position.ts
var getTextAtPosition = (textInput, pos) => textInput.substring(pos.start.offset, pos.end.offset);
var getTextFromLineStartToPositionEnd = (textInput, pos) => textInput.substring(pos.start.offset - pos.start.col, pos.end.offset);
var doesPositionIncludeAnother = (container, child) => container.start.offset <= child.start.offset && container.end.offset >= child.end.offset;
function isSamePosition(a, b) {
return a && b && a.start.offset === b.start.offset && a.end.offset === b.end.offset;
}
function createPositionFromOffsets(content, startOffset, endOffset) {
const startLine = content.substring(0, startOffset).split("\n").length - 1;
const endLine = content.substring(0, endOffset).split("\n").length - 1;
const startLinePos = content.substring(0, startOffset).lastIndexOf("\n") + 1;
const startCol = content.substring(startLinePos, startOffset).length;
const endLinePos = content.substring(0, endOffset).lastIndexOf("\n") + 1;
const endCol = content.substring(endLinePos, endOffset).length;
return {
position: {
start: { line: startLine, col: startCol, offset: startOffset },
end: { line: endLine, col: endCol, offset: endOffset }
}
};
}
// src/metadata-cache-util/heading.ts
function getHeadingIndexContaining(position, headings) {
return headings.findIndex(
(heading) => heading.position.start.line === position.start.line
);
}
function getIndexOfHeadingAbove(position, headings) {
return headings.reduce(
(previousIndex, lookingAtHeading, index) => lookingAtHeading.position.start.line < position.start.line ? index : previousIndex,
-1
);
}
function getHeadingBreadcrumbs(position, headings) {
const headingBreadcrumbs = [];
if (headings.length === 0) {
return headingBreadcrumbs;
}
const collectAncestorHeadingsForHeadingAtIndex = (startIndex) => {
let currentLevel = headings[startIndex].level;
const previousHeadingIndex = startIndex - 1;
for (let i = previousHeadingIndex; i >= 0; i--) {
const lookingAtHeading = headings[i];
if (lookingAtHeading.level < currentLevel) {
currentLevel = lookingAtHeading.level;
headingBreadcrumbs.unshift(lookingAtHeading);
}
}
};
const headingIndexAtPosition = getHeadingIndexContaining(position, headings);
const positionIsInsideHeading = headingIndexAtPosition >= 0;
if (positionIsInsideHeading) {
headingBreadcrumbs.unshift(headings[headingIndexAtPosition]);
collectAncestorHeadingsForHeadingAtIndex(headingIndexAtPosition);
return headingBreadcrumbs;
}
const headingIndexAbovePosition = getIndexOfHeadingAbove(position, headings);
const positionIsBelowHeading = headingIndexAbovePosition >= 0;
if (positionIsBelowHeading) {
const headingAbovePosition = headings[headingIndexAbovePosition];
headingBreadcrumbs.unshift(headingAbovePosition);
collectAncestorHeadingsForHeadingAtIndex(headingIndexAbovePosition);
return headingBreadcrumbs;
}
return headingBreadcrumbs;
}
// src/metadata-cache-util/list.ts
function getListItemWithDescendants(listItemIndex, listItems) {
const rootListItem = listItems[listItemIndex];
const listItemWithDescendants = [rootListItem];
for (let i = listItemIndex + 1; i < listItems.length; i++) {
const nextItem = listItems[i];
if (nextItem.parent < rootListItem.position.start.line) {
return listItemWithDescendants;
}
listItemWithDescendants.push(nextItem);
}
return listItemWithDescendants;
}
function getListBreadcrumbs(position, listItems) {
const listBreadcrumbs = [];
if (listItems.length === 0) {
return listBreadcrumbs;
}
const thisItemIndex = getListItemIndexContaining(position, listItems);
const isPositionOutsideListItem = thisItemIndex < 0;
if (isPositionOutsideListItem) {
return listBreadcrumbs;
}
const thisItem = listItems[thisItemIndex];
let currentParent = thisItem.parent;
if (isTopLevelListItem(thisItem)) {
return listBreadcrumbs;
}
for (let i = thisItemIndex - 1; i >= 0; i--) {
const currentItem = listItems[i];
const currentItemIsHigherUp = currentItem.parent < currentParent;
if (currentItemIsHigherUp) {
listBreadcrumbs.unshift(currentItem);
currentParent = currentItem.parent;
}
if (isTopLevelListItem(currentItem)) {
return listBreadcrumbs;
}
}
return listBreadcrumbs;
}
function isTopLevelListItem(listItem) {
return listItem.parent < 0;
}
function getListItemIndexContaining(searchedForPosition, listItems) {
return listItems.findIndex(
({ position }) => doesPositionIncludeAnother(position, searchedForPosition)
);
}
function isPositionInList(position, listItems) {
return getListItemIndexContaining(position, listItems) >= 0;
}
// src/metadata-cache-util/section.ts
function getSectionContaining(searchedForPosition, sections) {
return sections.find(
({ position }) => doesPositionIncludeAnother(position, searchedForPosition)
);
}
function getFirstSectionUnder(position, sections) {
return sections.find(
(section) => section.position.start.line > position.start.line
);
}
// src/metadata-cache-util/format.ts
var formatListWithDescendants = (textInput, listItems) => {
const root = listItems[0];
const leadingSpacesCount = root.position.start.col;
return listItems.map(
(itemCache) => getTextFromLineStartToPositionEnd(textInput, itemCache.position).slice(
leadingSpacesCount
)
).join("\n");
};
// src/context-tree/create/create-context-tree.ts
function createContextTree({
positions,
fileContents,
stat,
filePath,
listItems = [],
headings = [],
sections = []
}) {
const positionsWithContext = positions.map((position) => {
return {
headingBreadcrumbs: getHeadingBreadcrumbs(position.position, headings),
listBreadcrumbs: getListBreadcrumbs(position.position, listItems),
sectionCache: getSectionContaining(position.position, sections),
position
};
});
const root = createContextTreeBranch("file", {}, stat, filePath, filePath);
for (const {
headingBreadcrumbs,
listBreadcrumbs,
sectionCache,
position
} of positionsWithContext) {
if (!sectionCache) {
continue;
}
let context = root;
for (const headingCache of headingBreadcrumbs) {
const headingFoundInChildren = context.branches.find(
(tree) => isSamePosition(tree.cacheItem.position, headingCache.position)
);
if (headingFoundInChildren) {
context = headingFoundInChildren;
} else {
const newContext = createContextTreeBranch(
"heading",
headingCache,
stat,
filePath,
headingCache.heading
);
context.branches.push(newContext);
context = newContext;
}
}
for (const listItemCache of listBreadcrumbs) {
const listItemFoundInChildren = context.branches.find(
(tree) => isSamePosition(tree.cacheItem.position, listItemCache.position)
);
if (listItemFoundInChildren) {
context = listItemFoundInChildren;
} else {
const newListContext = createContextTreeBranch(
"list",
listItemCache,
stat,
filePath,
getTextAtPosition(fileContents, listItemCache.position)
);
context.branches.push(newListContext);
context = newListContext;
}
}
const headingIndexAtPosition = getHeadingIndexContaining(
position.position,
headings
);
const linkIsInsideHeading = headingIndexAtPosition >= 0;
if (isPositionInList(position.position, listItems)) {
const indexOfListItemContainingLink = getListItemIndexContaining(
position.position,
listItems
);
const listItemCacheWithDescendants = getListItemWithDescendants(
indexOfListItemContainingLink,
listItems
);
const text = formatListWithDescendants(
fileContents,
listItemCacheWithDescendants
);
context.sectionsWithMatches.push({
// TODO: add type to the cache
// @ts-ignore
cache: listItemCacheWithDescendants[0],
text,
filePath
});
} else if (linkIsInsideHeading) {
const firstSectionUnderHeading = getFirstSectionUnder(
position.position,
sections
);
if (firstSectionUnderHeading) {
context.sectionsWithMatches.push({
cache: firstSectionUnderHeading,
text: getTextAtPosition(
fileContents,
firstSectionUnderHeading.position
),
filePath
});
}
} else {
const sectionText = getTextAtPosition(
fileContents,
sectionCache.position
);
context.sectionsWithMatches.push({
cache: sectionCache,
text: sectionText,
filePath
});
}
}
return root;
}
function createContextTreeBranch(type, cacheItem, stat, filePath, text) {
return {
type,
cacheItem,
filePath,
text,
stat,
branches: [],
sectionsWithMatches: []
};
}
// src/patcher.ts
var import_render_context_tree = __toESM(require_render_context_tree());
init_patterns();
// src/disposer-registry.ts
var DisposerRegistry = class {
constructor() {
this.domToDisposers = /* @__PURE__ */ new WeakMap();
}
/**
* We assume here that match results are going to be added synchronously to the same dom, on which onAddResult is
* called
* @param searchResultDom
*/
onAddResult(searchResultDom) {
this.contextDom = searchResultDom;
if (!this.domToDisposers.has(this)) {
this.domToDisposers.set(this, []);
}
}
addOnEmptyResultsCallback(fn) {
var _a;
if (!this.contextDom) {
throw new Error(
"You rendered a Solid root before you got a reference to the containing searchResultDom"
);
}
(_a = this.domToDisposers.get(this.contextDom)) == null ? void 0 : _a.push(fn);
}
/**
* This may be called before any results are added
* @param searchResultDom
*/
onEmptyResults(searchResultDom) {
var _a;
(_a = this.domToDisposers.get(searchResultDom)) == null ? void 0 : _a.forEach((disposer) => disposer());
this.domToDisposers.set(searchResultDom, []);
}
};
// src/context-tree/dedupe/dedupe-matches.ts
function dedupeMatches(tree) {
return {
...tree,
sectionsWithMatches: dedupe(tree.sectionsWithMatches),
branches: tree.branches.map((branch) => dedupeMatches(branch))
};
}
function areMatchesInSameSection(a, b) {
return a.text === b.text && isSamePosition(a.cache.position, b.cache.position);
}
function dedupe(matches) {
return matches.filter(
(match, index, array) => index === array.findIndex((inner) => areMatchesInSameSection(inner, match))
);
}
// src/patcher.ts
var errorTimeout = 1e4;
function getHighlightsFromVChild(vChild) {
const { content, matches } = vChild;
const firstMatch = matches[0];
const [start, end] = firstMatch;
return content.substring(start, end).toLowerCase().replace(wikiLinkBrackets, "");
}
var Patcher = class {
constructor(plugin) {
this.plugin = plugin;
this.wrappedMatches = /* @__PURE__ */ new WeakSet();
this.wrappedSearchResultItems = /* @__PURE__ */ new WeakSet();
this.triedPatchingSearchResultItem = false;
this.triedPatchingRenderContentMatches = false;
this.disposerRegistry = new DisposerRegistry();
}
patchComponent() {
const patcher = this;
this.plugin.register(
around(import_obsidian.Component.prototype, {
addChild(old) {
return function(child, ...args) {
const thisIsSearchView = this.hasOwnProperty("searchQuery");
const hasBacklinks = child == null ? void 0 : child.backlinkDom;
if ((thisIsSearchView || hasBacklinks) && !patcher.triedPatchingSearchResultItem) {
patcher.triedPatchingSearchResultItem = true;
try {
patcher.patchSearchResultDom(child.dom || child.backlinkDom);
} catch (error) {
patcher.reportError(
error,
"Error while patching Obsidian internals"
);
}
}
return old.call(this, child, ...args);
};
}
})
);
}
patchSearchResultDom(searchResultDom) {
const patcher = this;
this.plugin.register(
around(searchResultDom.constructor.prototype, {
addResult(old) {
return function(...args) {
patcher.disposerRegistry.onAddResult(this);
const result = old.call(this, ...args);
if (!patcher.triedPatchingRenderContentMatches) {
patcher.triedPatchingRenderContentMatches = true;
try {
patcher.patchSearchResultItem(result);
} catch (error) {
patcher.reportError(
error,
"Error while patching Obsidian internals"
);
}
}
return result;
};
},
emptyResults(old) {
return function(...args) {
patcher.disposerRegistry.onEmptyResults(this);
return old.call(this, ...args);
};
}
})
);
}
patchSearchResultItem(searchResultItem) {
const patcher = this;
this.plugin.register(
around(searchResultItem.constructor.prototype, {
renderContentMatches(old) {
return function(...args) {
const result = old.call(this, ...args);
if (patcher.wrappedSearchResultItems.has(this) || !this.vChildren._children || this.vChildren._children.length === 0) {
return result;
}
patcher.wrappedSearchResultItems.add(this);
try {
let someMatchIsInProperties = false;
const matchPositions = this.vChildren._children.map(
// todo: works only for one match per block
(child) => {
const { content, matches } = child;
const firstMatch2 = matches[0];
if (Object.hasOwn(firstMatch2, "key")) {
someMatchIsInProperties = true;
return null;
}
const [start, end] = firstMatch2;
return createPositionFromOffsets(content, start, end);
}
);
if (someMatchIsInProperties) {
return result;
}
const highlights = this.vChildren._children.map(
getHighlightsFromVChild
);
const deduped = [...new Set(highlights)];
const firstMatch = this.vChildren._children[0];
patcher.mountContextTreeOnMatchEl(
this,
firstMatch,
matchPositions,
deduped,
this.parent.infinityScroll
);
this.vChildren._children = this.vChildren._children.slice(0, 1);
} catch (e) {
patcher.reportError(
e,
`Failed to mount context tree for file path: ${this.file.path}`
);
}
return result;
};
}
})
);
}
reportError(error, message) {
var _a;
(_a = this.currentNotice) == null ? void 0 : _a.hide();
this.currentNotice = new import_obsidian.Notice(
`Better Search Views: ${message}. Please report an issue with the details from the console attached.`,
errorTimeout
);
console.error(`${message}. Reason:`, error);
}
mountContextTreeOnMatchEl(container, match, positions, highlights, infinityScroll) {
if (this.wrappedMatches.has(match)) {
return;
}
this.wrappedMatches.add(match);
const { cache, content } = match;
const { file } = container;
const matchIsOnlyInFileName = !cache.sections || content === "";
if (file.extension === "canvas" || matchIsOnlyInFileName) {
return;
}
const contextTree = createContextTree({
positions,
fileContents: content,
stat: file.stat,
filePath: file.path,
...cache
});
const mountPoint = createDiv();
const dispose = (0, import_render_context_tree.renderContextTree)({
highlights,
contextTree: dedupeMatches(contextTree),
el: mountPoint,
plugin: this.plugin,
infinityScroll
});
this.disposerRegistry.addOnEmptyResultsCallback(dispose);
match.el = mountPoint;
}
};
// src/plugin.ts
var BetterBacklinksPlugin = class extends import_obsidian2.Plugin {
async onload() {
const patcher = new Patcher(this);
patcher.patchComponent();
}
};
/*! Bundled license information:
mark.js/dist/mark.js:
(*!***************************************************
* mark.js v8.11.1
* https://markjs.io/
* Copyright (c) 2014–2018, Julian Kühnel
* Released under the MIT license https://git.io/vwTVl
*****************************************************)
*/
/* nosourcemap */