// ==UserScript==
// @name honkoku-toolbox
// @name:en Honkoku Tools
// @name:ja 翻刻ツールボックス
// @name:zh 翻刻工具箱
// @name:ko 翻刻道具箱子
// @namespace https://mkpo.li/
// @version 0.9.3
// @author monkey
// @description:en Convenient tools for transcribing Japanese classical texts
// @description:ja 日本の古典籍をデジタル翻刻する際の便利ツール
// @description:zh 日本古籍數字化翻印用的便利工具集成
// @description:ko 日本古典文獻을 디지털化할 때 便利한 道具
// @license MIT
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAaLSURBVHgB7VtdUttWFD6SScxMH0pXgOhbSNqYHcAKCiuoO9MXYDKYFeCsAGcI8NIZkxWQrAC6AkibwltxV1BemmKCrX5HSFi+Plc6km0QU38zHpGrqyvde8/Pd865IZpgggn+z3Ckxv1z8nBp+j4t0sPg1HFoZfUZtWjMcKVGTPzwASfPqOD9R+FGjBVTlvYKPTw8LMIGrpuazs0Tmvn8lGqQ6Q2I9QyaGmvz6c+KEoABjqkAwAJUNf12P1H1c5kuoDZb4eQZtb1z+jHtWXEBrtr0Ey6n9MDAhGZ2frerIlRkEb8jx6VmbOK95yldjUUV2FwIjM8C3TP2z+jINz66VKIfyJBI7HjFLdF2mp3yFZLsUoHQ7dI7sy2uBqznmHwDO36imHxt7dngeCYcKhC2McGnrMuGOHddWnY6kMiegbOCd/0aKhxKcSpSF2CMnED09XtndIjLMmUETxyTqcPy/5rluanUgf3gg8bhFitdn5q4LsUbsdNv/FKmBWjRDW2uf0/vKQc0NmBsnECy0lc3dIrdvEx7lvtgc+rtNi2s5Zw8I3UBxskJfMHVQncvXSd5Qjxx6Pnc+nN6zf1pCKQuwLg4QWisVsSbN7L15mfaI5p4hJF5ARgv32yDQco1vs0bdDq09Oq7nkSygY7ZqFwBlIoH8IuYcfEkd8/zBSnsw6Mx8LvY+81u6GxqMDXVT205YKKejeIA6mLnD6pTBmiJ0J0bdHDlF/MuUQZcTfcxNw+Wvpk4hqAGIErLxjOe2aeEeIAXWLtJqgUQOIAHET0kJThYMQMb5vlPn9g/chWibnoDfgZScOeVEgw0q8YFFmI7baNUCyC9iF1YUqDS19elLaG5df0lWV/xjgOzLa4GoYFuJQxRK5fpJOk7VQvAL5J8c2mKZkkHb6DFoXqaJQcp+mC2xdWA6S4M7RzUsp4wjIeA6ujtJ+QKBKgWgF/kdvpdFi9I+0pHO00JgngeaAIVmxqUp4MIsdcPbpHdIyVIg+sGyZXBdlJi9db9rISTeX/dpSVtwBFIkB+I82lAYq51WR6GpAZSoiQuDZK02thlIXlAHPvQX3iMo3gbFuASizhnUyGoiDddhueKU22HqpLUFS4alLB7Rn8PhMGWCfU9B++DxMksvv3YFiUWLhqUEKpBzfiuKi6JC7D+YlB9TBQuGhT7Cd4AClfJSsYkFC4alKD1BnlQzGhQgOQNtBKUMm42cCoaunuYlptLQAM+WwxnR2xwVUY2U1Z4F5EWB0JDTJ5hpac89gi9TWRkE6FaAA5l357RAVdepPuaFJaBAXoKHsHhsUcjhEZFdLEAQll0tJWZWtBlsYiShZ763eEtugmNkdWGw1XLCzhFtWCjxFnoKSLD3IlN27dpjGwqEQrBK2nygcb6vI7Tc7ACn/3OpKdQqUb0NxtFlMaOzdIYV3jwnjc0JugkoNsLh4NrFzTUmPxAxGeIH0vD6jwt8ViYeB1NiwNU1hE5hzV1ZoJrhs2M5EjtBpl1fVWml/+06aPkwjgAKd9miSpZy1MR8gQ+wXPnQZqOLb7H/+749PrVc11ucGTR4KggBT5mNjhCEm+AbfpGkzpPtQH3HQ1yNtg0umaJPDoNgn5btsEhjS9xSU3YpNqAMZ4XEokK3vVBaKtGf4OP1KLTIGRHS1sk1XiBe40GIbrH2L3+fgh8mDSxJGgORVzfxi8qaN3gvcHmDkGauK6QhBZ+1fWM5fFCnRCJ0HX1pKivSpxx8oxcEpA31yflDSW4sAPo2Ejr53Nytk2bWd1t37uogAg9Q8t2Pzz8tAhxXxlm8oyhbIDSRaoOLApgNejPA96y0bpJjfk78h6rHUoClC6yhoryFmWEJQ9I8clzToGJU1gHvNAcjDQxrAqoXKSbI8635QHjiRS4xfgBSQ8LdMALsXOu5y1DLYA2YernTKyWhOdCVhipnyc85pVuD1o3NSXyoRYgLWEa7mBDUweU0OkKahBGh6HO29/tByX51AMTQxnBcR+p5SQJWKFJl71f/qTZn7+lv+D7VwZKYAb4wATU5lgKphiFdIMRmBVKaoaq9HJ4/y7HQAlu03lCX9vu5ZIALaEZCThJMuhpeAHuvEFYAjvgWmB4GMOL7rEafvmXPtqGL7QEBLgR6K2lLMYLwTnIUCJOw+Ozy0lkKZXSjnu3NbQ6S5IkKx5FbVAqi2U4npOIR1EbNFlhluM5qWPTIwFXjvCxG8Hku6gtvnj4/9IzwQQTPH78B7gKG4oYvtjQAAAAAElFTkSuQmCC
// @match https://honkoku.org/app/*
// @match https://ja.wikisource.org/w/index.php?title=*&action=*
// @grant GM.getValue
// @grant GM.setValue
// @grant GM_addStyle
// @description 日本の古典籍を翻刻する際の便利ツール
// ==/UserScript==
(e=>{if(typeof GM_addStyle=="function"){GM_addStyle(e);return}const t=document.createElement("style");t.textContent=e,document.head.append(t)})(' .CodeMirror.display-variant-highlight .highlight-variant,.editor-wrapper.display-variant-highlight .token .char.highlight-variant{color:#ff9800;font-weight:700}button.svelte-1ewjpur{width:2em;height:2em;border:1px solid #bbb;background-color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;white-space:nowrap;background-color:#ffffff85;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}button.svelte-1ewjpur:hover{background-color:#eee;border-color:#000}button.active.svelte-1ewjpur{background-color:#eee}.variants.svelte-1ewjpur{display:flex;flex-direction:column;gap:0}.variants.svelte-1ewjpur button:where(.svelte-1ewjpur){font-family:"Noto Serif Hentaigana",UniHentaiKana,serif;border-radius:2em;box-shadow:0 0 5px 1px #bbb}.variants.svelte-1ewjpur button:where(.svelte-1ewjpur):hover{background-color:#eee}.float-menu.svelte-1rgb4pt{writing-mode:vertical-rl;position:fixed;bottom:0;left:50%;transform:translate(-50%);background-color:#fbfbfb;z-index:100;padding:.5em;font-size:.85rem;border-radius:.5em;box-shadow:4px 4px 1em #0003;display:grid;grid-template-columns:auto 1fr;-webkit-user-select:none;user-select:none;cursor:move}button.svelte-18a6ijc{padding:.5em .1em;border:1px solid #bbb;background-color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;white-space:nowrap;font-family:inherit}button.svelte-18a6ijc:hover{background-color:#eee}[data-color=black].svelte-18a6ijc{color:#000}[data-color=green].svelte-18a6ijc{color:#00a800}[data-color=blue].svelte-18a6ijc{color:#009dff}[data-color=red].svelte-18a6ijc{color:#ff3e00}[data-color=pink].svelte-18a6ijc{color:#f0d}[data-color=gray].svelte-18a6ijc{color:#888}[data-color=orange].svelte-18a6ijc{color:#ff9500}.kana-table.svelte-1c61vln{padding:.25em;display:grid;grid-template-columns:repeat(5,1fr);gap:.25em}button.svelte-1c61vln{font-family:"Noto Serif Hentaigana",UniHentaiKana,serif}h2.svelte-1c61vln{margin:0;border:none;font-size:1.25em;font-family:inherit;width:100%;text-align:center;font-weight:700}.menu-content-container.svelte-1c61vln{display:flex;flex-direction:column;font-family:"Noto Serif Hentaigana",UniHentaiKana,serif}.show-button.svelte-1c61vln{position:fixed;right:0;top:40%;height:3rem;transform:translateY(-50%);background-color:#fff;padding:.5em;border-radius:.5em 0 0 .5em;display:flex;align-items:center;justify-content:center;box-shadow:0 0 1em #0003;transition:transform .1s ease-in-out;border:1px solid #ccc;color:#ff36a4}.show-button.svelte-1c61vln:hover{transform:translateY(-50%) scale(1.1)}.kana.svelte-1c61vln{font-size:2em}.panel.svelte-1c61vln{display:flex;flex-direction:row;gap:.25em;padding:.25em}button.svelte-1m4k62d{padding:.5em .1em;border:1px solid #bbb;background-color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;white-space:nowrap;background-color:#ffffff85;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-family:Jigmo,Jigmo2,Jigmo3,HanaMinA,HanaMinB,serif}button.svelte-1m4k62d:hover{background-color:#eee;border-color:#000}button.active.svelte-1m4k62d{background-color:#eee}button.selected.svelte-1m4k62d{background-color:#fff0cc}.type.selected.svelte-1m4k62d{border-color:#765300}.variants.svelte-1m4k62d{display:flex;flex-direction:column;gap:0;box-shadow:0 0 5px 1px #bbb}.variants.svelte-1m4k62d button:where(.svelte-1m4k62d){width:2em}.variants.svelte-1m4k62d button:where(.svelte-1m4k62d):hover{background-color:#eee}h2.svelte-9lvbl8{margin:0;border:none;font-size:1.25em;font-family:inherit;width:100%;text-align:center;font-weight:700}.menu-content-container.svelte-9lvbl8{display:flex;flex-direction:column;gap:.25em;align-items:stretch;justify-content:center;font-family:"Noto Serif Hentaigana",UniHentaiKana,serif}.show-button.svelte-9lvbl8{position:fixed;right:0;top:60%;height:3rem;transform:translateY(-50%);background-color:#fff;padding:.5em;border-radius:.5em 0 0 .5em;display:flex;align-items:center;justify-content:center;box-shadow:0 0 1em #0003;transition:transform .1s ease-in-out;border:1px solid #ccc;font-family:serif;color:#0f03f8}.show-button.svelte-9lvbl8:hover{transform:translateY(-50%) scale(1.1)}.icon.svelte-9lvbl8{font-size:2em}.panel.svelte-9lvbl8{display:grid;grid-template-columns:repeat(5,1fr);gap:.25em;max-width:20em}label.svelte-9lvbl8{display:flex;align-items:center;justify-content:center;gap:.5em}hr.svelte-9lvbl8{border:1px solid #ccc;margin:0 .5em;height:100%}select.svelte-9lvbl8{width:100%;padding:.5em;border:1px solid #ccc;border-radius:.5em}input[type=text].svelte-h6zyeb,select.svelte-h6zyeb{height:3em}.panel.svelte-1l9kdai{border:1px solid #ccc;padding:.25em;border-radius:5px;display:flex;gap:0;flex-wrap:wrap;border:none}.panel.svelte-1l9kdai>h3:where(.svelte-1l9kdai){background-color:#f5f5f5;padding:.25em 0;border:1px solid #ccc;margin:.25em 0}.show-button.svelte-1l9kdai{position:fixed;right:0;top:50%;height:3rem;transform:translateY(-50%);background-color:#fff;padding:.5em;border-radius:.5em 0 0 .5em;display:flex;align-items:center;justify-content:center;box-shadow:0 0 1em #0003;transition:transform .1s ease-in-out;border:1px solid #ccc}.show-button.svelte-1l9kdai:hover{transform:translateY(-50%) scale(1.1)}.show-button.svelte-1l9kdai img:where(.svelte-1l9kdai){width:2em;height:2em}.panel.svelte-1l9kdai button:where(.svelte-1l9kdai){margin:.25em 0} ');
(function () {
'use strict';
var __defProp = Object.defineProperty;
var __typeError = (msg) => {
throw TypeError(msg);
};
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
var _text, _segments, _selectedText;
const DEV = false;
var is_array = Array.isArray;
var array_from = Array.from;
var define_property = Object.defineProperty;
var get_descriptor = Object.getOwnPropertyDescriptor;
var get_descriptors = Object.getOwnPropertyDescriptors;
var object_prototype = Object.prototype;
var array_prototype = Array.prototype;
var get_prototype_of = Object.getPrototypeOf;
const noop = () => {
};
function run_all(arr) {
for (var i2 = 0; i2 < arr.length; i2++) {
arr[i2]();
}
}
const DERIVED = 1 << 1;
const EFFECT = 1 << 2;
const RENDER_EFFECT = 1 << 3;
const BLOCK_EFFECT = 1 << 4;
const BRANCH_EFFECT = 1 << 5;
const ROOT_EFFECT = 1 << 6;
const UNOWNED = 1 << 7;
const DISCONNECTED = 1 << 8;
const CLEAN = 1 << 9;
const DIRTY = 1 << 10;
const MAYBE_DIRTY = 1 << 11;
const INERT = 1 << 12;
const DESTROYED = 1 << 13;
const EFFECT_RAN = 1 << 14;
const EFFECT_TRANSPARENT = 1 << 15;
const LEGACY_DERIVED_PROP = 1 << 16;
const HEAD_EFFECT = 1 << 18;
const EFFECT_HAS_DERIVED = 1 << 19;
const STATE_SYMBOL = Symbol("$state");
const LOADING_ATTR_SYMBOL = Symbol("");
function equals(value) {
return value === this.v;
}
function safe_not_equal(a2, b) {
return a2 != a2 ? b == b : a2 !== b || a2 !== null && typeof a2 === "object" || typeof a2 === "function";
}
function safe_equals(value) {
return !safe_not_equal(value, this.v);
}
function effect_in_teardown(rune) {
{
throw new Error("effect_in_teardown");
}
}
function effect_in_unowned_derived() {
{
throw new Error("effect_in_unowned_derived");
}
}
function effect_orphan(rune) {
{
throw new Error("effect_orphan");
}
}
function effect_update_depth_exceeded() {
{
throw new Error("effect_update_depth_exceeded");
}
}
function props_invalid_value(key) {
{
throw new Error("props_invalid_value");
}
}
function state_descriptors_fixed() {
{
throw new Error("state_descriptors_fixed");
}
}
function state_prototype_fixed() {
{
throw new Error("state_prototype_fixed");
}
}
function state_unsafe_local_read() {
{
throw new Error("state_unsafe_local_read");
}
}
function state_unsafe_mutation() {
{
throw new Error("state_unsafe_mutation");
}
}
function source(v) {
return {
f: 0,
// TODO ideally we could skip this altogether, but it causes type errors
v,
reactions: null,
equals,
version: 0
};
}
function state(v) {
return /* @__PURE__ */ push_derived_source(source(v));
}
// @__NO_SIDE_EFFECTS__
function mutable_source(initial_value, immutable = false) {
var _a;
const s2 = source(initial_value);
if (!immutable) {
s2.equals = safe_equals;
}
if (component_context !== null && component_context.l !== null) {
((_a = component_context.l).s ?? (_a.s = [])).push(s2);
}
return s2;
}
// @__NO_SIDE_EFFECTS__
function push_derived_source(source2) {
if (active_reaction !== null && (active_reaction.f & DERIVED) !== 0) {
if (derived_sources === null) {
set_derived_sources([source2]);
} else {
derived_sources.push(source2);
}
}
return source2;
}
function set(source2, value) {
if (active_reaction !== null && is_runes() && (active_reaction.f & DERIVED) !== 0 && // If the source was created locally within the current derived, then
// we allow the mutation.
(derived_sources === null || !derived_sources.includes(source2))) {
state_unsafe_mutation();
}
if (!source2.equals(value)) {
source2.v = value;
source2.version = increment_version();
mark_reactions(source2, DIRTY);
if (is_runes() && active_effect !== null && (active_effect.f & CLEAN) !== 0 && (active_effect.f & BRANCH_EFFECT) === 0) {
if (new_deps !== null && new_deps.includes(source2)) {
set_signal_status(active_effect, DIRTY);
schedule_effect(active_effect);
} else {
if (untracked_writes === null) {
set_untracked_writes([source2]);
} else {
untracked_writes.push(source2);
}
}
}
}
return value;
}
function mark_reactions(signal, status) {
var reactions = signal.reactions;
if (reactions === null) return;
var runes = is_runes();
var length = reactions.length;
for (var i2 = 0; i2 < length; i2++) {
var reaction = reactions[i2];
var flags = reaction.f;
if ((flags & DIRTY) !== 0) continue;
if (!runes && reaction === active_effect) continue;
set_signal_status(reaction, status);
if ((flags & (CLEAN | UNOWNED)) !== 0) {
if ((flags & DERIVED) !== 0) {
mark_reactions(
/** @type {Derived} */
reaction,
MAYBE_DIRTY
);
} else {
schedule_effect(
/** @type {Effect} */
reaction
);
}
}
}
}
const EACH_ITEM_REACTIVE = 1;
const EACH_INDEX_REACTIVE = 1 << 1;
const EACH_IS_CONTROLLED = 1 << 2;
const EACH_IS_ANIMATED = 1 << 3;
const EACH_ITEM_IMMUTABLE = 1 << 4;
const PROPS_IS_IMMUTABLE = 1;
const PROPS_IS_RUNES = 1 << 1;
const PROPS_IS_UPDATED = 1 << 2;
const PROPS_IS_BINDABLE = 1 << 3;
const PROPS_IS_LAZY_INITIAL = 1 << 4;
const TEMPLATE_FRAGMENT = 1;
const TEMPLATE_USE_IMPORT_NODE = 1 << 1;
const UNINITIALIZED = Symbol();
let hydrating = false;
function proxy(value, parent = null, prev) {
if (typeof value !== "object" || value === null || STATE_SYMBOL in value) {
return value;
}
const prototype = get_prototype_of(value);
if (prototype !== object_prototype && prototype !== array_prototype) {
return value;
}
var sources = /* @__PURE__ */ new Map();
var is_proxied_array = is_array(value);
var version = source(0);
if (is_proxied_array) {
sources.set("length", source(
/** @type {any[]} */
value.length
));
}
var metadata;
return new Proxy(
/** @type {any} */
value,
{
defineProperty(_, prop2, descriptor) {
if (!("value" in descriptor) || descriptor.configurable === false || descriptor.enumerable === false || descriptor.writable === false) {
state_descriptors_fixed();
}
var s2 = sources.get(prop2);
if (s2 === void 0) {
s2 = source(descriptor.value);
sources.set(prop2, s2);
} else {
set(s2, proxy(descriptor.value, metadata));
}
return true;
},
deleteProperty(target, prop2) {
var s2 = sources.get(prop2);
if (s2 === void 0) {
if (prop2 in target) {
sources.set(prop2, source(UNINITIALIZED));
}
} else {
set(s2, UNINITIALIZED);
update_version(version);
}
return true;
},
get(target, prop2, receiver) {
var _a;
if (prop2 === STATE_SYMBOL) {
return value;
}
var s2 = sources.get(prop2);
var exists = prop2 in target;
if (s2 === void 0 && (!exists || ((_a = get_descriptor(target, prop2)) == null ? void 0 : _a.writable))) {
s2 = source(proxy(exists ? target[prop2] : UNINITIALIZED, metadata));
sources.set(prop2, s2);
}
if (s2 !== void 0) {
var v = get(s2);
return v === UNINITIALIZED ? void 0 : v;
}
return Reflect.get(target, prop2, receiver);
},
getOwnPropertyDescriptor(target, prop2) {
var descriptor = Reflect.getOwnPropertyDescriptor(target, prop2);
if (descriptor && "value" in descriptor) {
var s2 = sources.get(prop2);
if (s2) descriptor.value = get(s2);
} else if (descriptor === void 0) {
var source2 = sources.get(prop2);
var value2 = source2 == null ? void 0 : source2.v;
if (source2 !== void 0 && value2 !== UNINITIALIZED) {
return {
enumerable: true,
configurable: true,
value: value2,
writable: true
};
}
}
return descriptor;
},
has(target, prop2) {
var _a;
if (prop2 === STATE_SYMBOL) {
return true;
}
var s2 = sources.get(prop2);
var has = s2 !== void 0 && s2.v !== UNINITIALIZED || Reflect.has(target, prop2);
if (s2 !== void 0 || active_effect !== null && (!has || ((_a = get_descriptor(target, prop2)) == null ? void 0 : _a.writable))) {
if (s2 === void 0) {
s2 = source(has ? proxy(target[prop2], metadata) : UNINITIALIZED);
sources.set(prop2, s2);
}
var value2 = get(s2);
if (value2 === UNINITIALIZED) {
return false;
}
}
return has;
},
set(target, prop2, value2, receiver) {
var _a;
var s2 = sources.get(prop2);
var has = prop2 in target;
if (is_proxied_array && prop2 === "length") {
for (var i2 = value2; i2 < /** @type {Source<number>} */
s2.v; i2 += 1) {
var other_s = sources.get(i2 + "");
if (other_s !== void 0) {
set(other_s, UNINITIALIZED);
} else if (i2 in target) {
other_s = source(UNINITIALIZED);
sources.set(i2 + "", other_s);
}
}
}
if (s2 === void 0) {
if (!has || ((_a = get_descriptor(target, prop2)) == null ? void 0 : _a.writable)) {
s2 = source(void 0);
set(s2, proxy(value2, metadata));
sources.set(prop2, s2);
}
} else {
has = s2.v !== UNINITIALIZED;
set(s2, proxy(value2, metadata));
}
var descriptor = Reflect.getOwnPropertyDescriptor(target, prop2);
if (descriptor == null ? void 0 : descriptor.set) {
descriptor.set.call(receiver, value2);
}
if (!has) {
if (is_proxied_array && typeof prop2 === "string") {
var ls = (
/** @type {Source<number>} */
sources.get("length")
);
var n2 = Number(prop2);
if (Number.isInteger(n2) && n2 >= ls.v) {
set(ls, n2 + 1);
}
}
update_version(version);
}
return true;
},
ownKeys(target) {
get(version);
var own_keys = Reflect.ownKeys(target).filter((key2) => {
var source3 = sources.get(key2);
return source3 === void 0 || source3.v !== UNINITIALIZED;
});
for (var [key, source2] of sources) {
if (source2.v !== UNINITIALIZED && !(key in target)) {
own_keys.push(key);
}
}
return own_keys;
},
setPrototypeOf() {
state_prototype_fixed();
}
}
);
}
function update_version(signal, d2 = 1) {
set(signal, signal.v + d2);
}
function get_proxied_value(value) {
if (value !== null && typeof value === "object" && STATE_SYMBOL in value) {
return value[STATE_SYMBOL];
}
return value;
}
function is(a2, b) {
return Object.is(get_proxied_value(a2), get_proxied_value(b));
}
var $window;
var first_child_getter;
var next_sibling_getter;
function init_operations() {
if ($window !== void 0) {
return;
}
$window = window;
var element_prototype = Element.prototype;
var node_prototype = Node.prototype;
first_child_getter = get_descriptor(node_prototype, "firstChild").get;
next_sibling_getter = get_descriptor(node_prototype, "nextSibling").get;
element_prototype.__click = void 0;
element_prototype.__className = "";
element_prototype.__attributes = null;
element_prototype.__e = void 0;
Text.prototype.__t = void 0;
}
function create_text(value = "") {
return document.createTextNode(value);
}
// @__NO_SIDE_EFFECTS__
function get_first_child(node) {
return first_child_getter.call(node);
}
// @__NO_SIDE_EFFECTS__
function get_next_sibling(node) {
return next_sibling_getter.call(node);
}
function child(node) {
{
return /* @__PURE__ */ get_first_child(node);
}
}
function first_child(fragment, is_text) {
{
var first = (
/** @type {DocumentFragment} */
/* @__PURE__ */ get_first_child(
/** @type {Node} */
fragment
)
);
if (first instanceof Comment && first.data === "") return /* @__PURE__ */ get_next_sibling(first);
return first;
}
}
function sibling(node, count = 1, is_text = false) {
let next_sibling = node;
while (count--) {
next_sibling = /** @type {TemplateNode} */
/* @__PURE__ */ get_next_sibling(next_sibling);
}
{
return next_sibling;
}
}
function clear_text_content(node) {
node.textContent = "";
}
function validate_effect(rune) {
if (active_effect === null && active_reaction === null) {
effect_orphan();
}
if (active_reaction !== null && (active_reaction.f & UNOWNED) !== 0) {
effect_in_unowned_derived();
}
if (is_destroying_effect) {
effect_in_teardown();
}
}
function push_effect(effect3, parent_effect) {
var parent_last = parent_effect.last;
if (parent_last === null) {
parent_effect.last = parent_effect.first = effect3;
} else {
parent_last.next = effect3;
effect3.prev = parent_last;
parent_effect.last = effect3;
}
}
function create_effect(type, fn2, sync, push2 = true) {
var is_root = (type & ROOT_EFFECT) !== 0;
var parent_effect = active_effect;
var effect3 = {
ctx: component_context,
deps: null,
nodes_start: null,
nodes_end: null,
f: type | DIRTY,
first: null,
fn: fn2,
last: null,
next: null,
parent: is_root ? null : parent_effect,
prev: null,
teardown: null,
transitions: null,
version: 0
};
if (sync) {
var previously_flushing_effect = is_flushing_effect;
try {
set_is_flushing_effect(true);
update_effect(effect3);
effect3.f |= EFFECT_RAN;
} catch (e2) {
destroy_effect(effect3);
throw e2;
} finally {
set_is_flushing_effect(previously_flushing_effect);
}
} else if (fn2 !== null) {
schedule_effect(effect3);
}
var inert = sync && effect3.deps === null && effect3.first === null && effect3.nodes_start === null && effect3.teardown === null && (effect3.f & EFFECT_HAS_DERIVED) === 0;
if (!inert && !is_root && push2) {
if (parent_effect !== null) {
push_effect(effect3, parent_effect);
}
if (active_reaction !== null && (active_reaction.f & DERIVED) !== 0) {
var derived2 = (
/** @type {Derived} */
active_reaction
);
(derived2.children ?? (derived2.children = [])).push(effect3);
}
}
return effect3;
}
function user_effect(fn2) {
validate_effect();
var defer = active_effect !== null && (active_effect.f & RENDER_EFFECT) !== 0 && // TODO do we actually need this? removing them changes nothing
component_context !== null && !component_context.m;
if (defer) {
var context = (
/** @type {ComponentContext} */
component_context
);
(context.e ?? (context.e = [])).push({
fn: fn2,
effect: active_effect,
reaction: active_reaction
});
} else {
var signal = effect$3(fn2);
return signal;
}
}
function effect_root(fn2) {
const effect3 = create_effect(ROOT_EFFECT, fn2, true);
return () => {
destroy_effect(effect3);
};
}
function effect$3(fn2) {
return create_effect(EFFECT, fn2, false);
}
function render_effect(fn2) {
return create_effect(RENDER_EFFECT, fn2, true);
}
function template_effect(fn2) {
return render_effect(fn2);
}
function block(fn2, flags = 0) {
return create_effect(RENDER_EFFECT | BLOCK_EFFECT | flags, fn2, true);
}
function branch(fn2, push2 = true) {
return create_effect(RENDER_EFFECT | BRANCH_EFFECT, fn2, true, push2);
}
function execute_effect_teardown(effect3) {
var teardown = effect3.teardown;
if (teardown !== null) {
const previously_destroying_effect = is_destroying_effect;
const previous_reaction = active_reaction;
set_is_destroying_effect(true);
set_active_reaction(null);
try {
teardown.call(null);
} finally {
set_is_destroying_effect(previously_destroying_effect);
set_active_reaction(previous_reaction);
}
}
}
function destroy_effect(effect3, remove_dom = true) {
var removed = false;
if ((remove_dom || (effect3.f & HEAD_EFFECT) !== 0) && effect3.nodes_start !== null) {
var node = effect3.nodes_start;
var end2 = effect3.nodes_end;
while (node !== null) {
var next = node === end2 ? null : (
/** @type {TemplateNode} */
/* @__PURE__ */ get_next_sibling(node)
);
node.remove();
node = next;
}
removed = true;
}
destroy_effect_children(effect3, remove_dom && !removed);
remove_reactions(effect3, 0);
set_signal_status(effect3, DESTROYED);
var transitions = effect3.transitions;
if (transitions !== null) {
for (const transition of transitions) {
transition.stop();
}
}
execute_effect_teardown(effect3);
var parent = effect3.parent;
if (parent !== null && parent.first !== null) {
unlink_effect(effect3);
}
effect3.next = effect3.prev = effect3.teardown = effect3.ctx = effect3.deps = effect3.parent = effect3.fn = effect3.nodes_start = effect3.nodes_end = null;
}
function unlink_effect(effect3) {
var parent = effect3.parent;
var prev = effect3.prev;
var next = effect3.next;
if (prev !== null) prev.next = next;
if (next !== null) next.prev = prev;
if (parent !== null) {
if (parent.first === effect3) parent.first = next;
if (parent.last === effect3) parent.last = prev;
}
}
function pause_effect(effect3, callback) {
var transitions = [];
pause_children(effect3, transitions, true);
run_out_transitions(transitions, () => {
destroy_effect(effect3);
if (callback) callback();
});
}
function run_out_transitions(transitions, fn2) {
var remaining = transitions.length;
if (remaining > 0) {
var check = () => --remaining || fn2();
for (var transition of transitions) {
transition.out(check);
}
} else {
fn2();
}
}
function pause_children(effect3, transitions, local) {
if ((effect3.f & INERT) !== 0) return;
effect3.f ^= INERT;
if (effect3.transitions !== null) {
for (const transition of effect3.transitions) {
if (transition.is_global || local) {
transitions.push(transition);
}
}
}
var child2 = effect3.first;
while (child2 !== null) {
var sibling2 = child2.next;
var transparent = (child2.f & EFFECT_TRANSPARENT) !== 0 || (child2.f & BRANCH_EFFECT) !== 0;
pause_children(child2, transitions, transparent ? local : false);
child2 = sibling2;
}
}
function resume_effect(effect3) {
resume_children(effect3, true);
}
function resume_children(effect3, local) {
if ((effect3.f & INERT) === 0) return;
effect3.f ^= INERT;
if (check_dirtiness(effect3)) {
update_effect(effect3);
}
var child2 = effect3.first;
while (child2 !== null) {
var sibling2 = child2.next;
var transparent = (child2.f & EFFECT_TRANSPARENT) !== 0 || (child2.f & BRANCH_EFFECT) !== 0;
resume_children(child2, transparent ? local : false);
child2 = sibling2;
}
if (effect3.transitions !== null) {
for (const transition of effect3.transitions) {
if (transition.is_global || local) {
transition.in();
}
}
}
}
let is_micro_task_queued$1 = false;
let current_queued_micro_tasks = [];
function process_micro_tasks() {
is_micro_task_queued$1 = false;
const tasks = current_queued_micro_tasks.slice();
current_queued_micro_tasks = [];
run_all(tasks);
}
function queue_micro_task(fn2) {
if (!is_micro_task_queued$1) {
is_micro_task_queued$1 = true;
queueMicrotask(process_micro_tasks);
}
current_queued_micro_tasks.push(fn2);
}
// @__NO_SIDE_EFFECTS__
function derived(fn2) {
let flags = DERIVED | DIRTY;
if (active_effect === null) {
flags |= UNOWNED;
} else {
active_effect.f |= EFFECT_HAS_DERIVED;
}
const signal = {
children: null,
deps: null,
equals,
f: flags,
fn: fn2,
reactions: null,
v: (
/** @type {V} */
null
),
version: 0,
parent: active_effect
};
if (active_reaction !== null && (active_reaction.f & DERIVED) !== 0) {
var derived2 = (
/** @type {Derived} */
active_reaction
);
(derived2.children ?? (derived2.children = [])).push(signal);
}
return signal;
}
// @__NO_SIDE_EFFECTS__
function derived_safe_equal(fn2) {
const signal = /* @__PURE__ */ derived(fn2);
signal.equals = safe_equals;
return signal;
}
function destroy_derived_children(derived2) {
var children = derived2.children;
if (children !== null) {
derived2.children = null;
for (var i2 = 0; i2 < children.length; i2 += 1) {
var child2 = children[i2];
if ((child2.f & DERIVED) !== 0) {
destroy_derived(
/** @type {Derived} */
child2
);
} else {
destroy_effect(
/** @type {Effect} */
child2
);
}
}
}
}
function update_derived(derived2) {
var value;
var prev_active_effect = active_effect;
set_active_effect(derived2.parent);
{
try {
destroy_derived_children(derived2);
value = update_reaction(derived2);
} finally {
set_active_effect(prev_active_effect);
}
}
var status = (skip_reaction || (derived2.f & UNOWNED) !== 0) && derived2.deps !== null ? MAYBE_DIRTY : CLEAN;
set_signal_status(derived2, status);
if (!derived2.equals(value)) {
derived2.v = value;
derived2.version = increment_version();
}
}
function destroy_derived(signal) {
destroy_derived_children(signal);
remove_reactions(signal, 0);
set_signal_status(signal, DESTROYED);
signal.children = signal.deps = signal.reactions = // @ts-expect-error `signal.fn` cannot be `null` while the signal is alive
signal.fn = null;
}
function lifecycle_outside_component(name) {
{
throw new Error("lifecycle_outside_component");
}
}
let is_micro_task_queued = false;
let is_flushing_effect = false;
let is_destroying_effect = false;
function set_is_flushing_effect(value) {
is_flushing_effect = value;
}
function set_is_destroying_effect(value) {
is_destroying_effect = value;
}
let queued_root_effects = [];
let flush_count = 0;
let active_reaction = null;
function set_active_reaction(reaction) {
active_reaction = reaction;
}
let active_effect = null;
function set_active_effect(effect3) {
active_effect = effect3;
}
let derived_sources = null;
function set_derived_sources(sources) {
derived_sources = sources;
}
let new_deps = null;
let skipped_deps = 0;
let untracked_writes = null;
function set_untracked_writes(value) {
untracked_writes = value;
}
let current_version = 0;
let skip_reaction = false;
let component_context = null;
function increment_version() {
return ++current_version;
}
function is_runes() {
return component_context !== null && component_context.l === null;
}
function check_dirtiness(reaction) {
var _a, _b;
var flags = reaction.f;
if ((flags & DIRTY) !== 0) {
return true;
}
if ((flags & MAYBE_DIRTY) !== 0) {
var dependencies = reaction.deps;
var is_unowned = (flags & UNOWNED) !== 0;
if (dependencies !== null) {
var i2;
if ((flags & DISCONNECTED) !== 0) {
for (i2 = 0; i2 < dependencies.length; i2++) {
((_a = dependencies[i2]).reactions ?? (_a.reactions = [])).push(reaction);
}
reaction.f ^= DISCONNECTED;
}
for (i2 = 0; i2 < dependencies.length; i2++) {
var dependency = dependencies[i2];
if (check_dirtiness(
/** @type {Derived} */
dependency
)) {
update_derived(
/** @type {Derived} */
dependency
);
}
if (is_unowned && active_effect !== null && !skip_reaction && !((_b = dependency == null ? void 0 : dependency.reactions) == null ? void 0 : _b.includes(reaction))) {
(dependency.reactions ?? (dependency.reactions = [])).push(reaction);
}
if (dependency.version > reaction.version) {
return true;
}
}
}
if (!is_unowned) {
set_signal_status(reaction, CLEAN);
}
}
return false;
}
function handle_error(error, effect3, component_context2) {
{
throw error;
}
}
function update_reaction(reaction) {
var _a;
var previous_deps = new_deps;
var previous_skipped_deps = skipped_deps;
var previous_untracked_writes = untracked_writes;
var previous_reaction = active_reaction;
var previous_skip_reaction = skip_reaction;
var prev_derived_sources = derived_sources;
new_deps = /** @type {null | Value[]} */
null;
skipped_deps = 0;
untracked_writes = null;
active_reaction = (reaction.f & (BRANCH_EFFECT | ROOT_EFFECT)) === 0 ? reaction : null;
skip_reaction = !is_flushing_effect && (reaction.f & UNOWNED) !== 0;
derived_sources = null;
try {
var result = (
/** @type {Function} */
(0, reaction.fn)()
);
var deps = reaction.deps;
if (new_deps !== null) {
var i2;
remove_reactions(reaction, skipped_deps);
if (deps !== null && skipped_deps > 0) {
deps.length = skipped_deps + new_deps.length;
for (i2 = 0; i2 < new_deps.length; i2++) {
deps[skipped_deps + i2] = new_deps[i2];
}
} else {
reaction.deps = deps = new_deps;
}
if (!skip_reaction) {
for (i2 = skipped_deps; i2 < deps.length; i2++) {
((_a = deps[i2]).reactions ?? (_a.reactions = [])).push(reaction);
}
}
} else if (deps !== null && skipped_deps < deps.length) {
remove_reactions(reaction, skipped_deps);
deps.length = skipped_deps;
}
return result;
} finally {
new_deps = previous_deps;
skipped_deps = previous_skipped_deps;
untracked_writes = previous_untracked_writes;
active_reaction = previous_reaction;
skip_reaction = previous_skip_reaction;
derived_sources = prev_derived_sources;
}
}
function remove_reaction(signal, dependency) {
let reactions = dependency.reactions;
if (reactions !== null) {
var index2 = reactions.indexOf(signal);
if (index2 !== -1) {
var new_length = reactions.length - 1;
if (new_length === 0) {
reactions = dependency.reactions = null;
} else {
reactions[index2] = reactions[new_length];
reactions.pop();
}
}
}
if (reactions === null && (dependency.f & DERIVED) !== 0 && // Destroying a child effect while updating a parent effect can cause a dependency to appear
// to be unused, when in fact it is used by the currently-updating parent. Checking `new_deps`
// allows us to skip the expensive work of disconnecting and immediately reconnecting it
(new_deps === null || !new_deps.includes(dependency))) {
set_signal_status(dependency, MAYBE_DIRTY);
if ((dependency.f & (UNOWNED | DISCONNECTED)) === 0) {
dependency.f ^= DISCONNECTED;
}
remove_reactions(
/** @type {Derived} **/
dependency,
0
);
}
}
function remove_reactions(signal, start_index) {
var dependencies = signal.deps;
if (dependencies === null) return;
for (var i2 = start_index; i2 < dependencies.length; i2++) {
remove_reaction(signal, dependencies[i2]);
}
}
function destroy_effect_children(signal, remove_dom = false) {
var effect3 = signal.first;
signal.first = signal.last = null;
while (effect3 !== null) {
var next = effect3.next;
destroy_effect(effect3, remove_dom);
effect3 = next;
}
}
function update_effect(effect3) {
var flags = effect3.f;
if ((flags & DESTROYED) !== 0) {
return;
}
set_signal_status(effect3, CLEAN);
var previous_effect = active_effect;
var previous_component_context = component_context;
active_effect = effect3;
component_context = effect3.ctx;
try {
if ((flags & BLOCK_EFFECT) === 0) {
destroy_effect_children(effect3);
}
execute_effect_teardown(effect3);
var teardown = update_reaction(effect3);
effect3.teardown = typeof teardown === "function" ? teardown : null;
effect3.version = current_version;
if (DEV) ;
} catch (error) {
handle_error(
/** @type {Error} */
error
);
} finally {
active_effect = previous_effect;
component_context = previous_component_context;
}
}
function infinite_loop_guard() {
if (flush_count > 1e3) {
flush_count = 0;
{
effect_update_depth_exceeded();
}
}
flush_count++;
}
function flush_queued_root_effects(root_effects) {
var length = root_effects.length;
if (length === 0) {
return;
}
infinite_loop_guard();
var previously_flushing_effect = is_flushing_effect;
is_flushing_effect = true;
try {
for (var i2 = 0; i2 < length; i2++) {
var effect3 = root_effects[i2];
if ((effect3.f & CLEAN) === 0) {
effect3.f ^= CLEAN;
}
var collected_effects = [];
process_effects(effect3, collected_effects);
flush_queued_effects(collected_effects);
}
} finally {
is_flushing_effect = previously_flushing_effect;
}
}
function flush_queued_effects(effects) {
var length = effects.length;
if (length === 0) return;
for (var i2 = 0; i2 < length; i2++) {
var effect3 = effects[i2];
if ((effect3.f & (DESTROYED | INERT)) === 0 && check_dirtiness(effect3)) {
update_effect(effect3);
if (effect3.deps === null && effect3.first === null && effect3.nodes_start === null) {
if (effect3.teardown === null) {
unlink_effect(effect3);
} else {
effect3.fn = null;
}
}
}
}
}
function process_deferred() {
is_micro_task_queued = false;
if (flush_count > 1001) {
return;
}
const previous_queued_root_effects = queued_root_effects;
queued_root_effects = [];
flush_queued_root_effects(previous_queued_root_effects);
if (!is_micro_task_queued) {
flush_count = 0;
}
}
function schedule_effect(signal) {
{
if (!is_micro_task_queued) {
is_micro_task_queued = true;
queueMicrotask(process_deferred);
}
}
var effect3 = signal;
while (effect3.parent !== null) {
effect3 = effect3.parent;
var flags = effect3.f;
if ((flags & (ROOT_EFFECT | BRANCH_EFFECT)) !== 0) {
if ((flags & CLEAN) === 0) return;
effect3.f ^= CLEAN;
}
}
queued_root_effects.push(effect3);
}
function process_effects(effect3, collected_effects) {
var current_effect = effect3.first;
var effects = [];
main_loop: while (current_effect !== null) {
var flags = current_effect.f;
var is_branch = (flags & BRANCH_EFFECT) !== 0;
var is_skippable_branch = is_branch && (flags & CLEAN) !== 0;
if (!is_skippable_branch && (flags & INERT) === 0) {
if ((flags & RENDER_EFFECT) !== 0) {
if (is_branch) {
current_effect.f ^= CLEAN;
} else if (check_dirtiness(current_effect)) {
update_effect(current_effect);
}
var child2 = current_effect.first;
if (child2 !== null) {
current_effect = child2;
continue;
}
} else if ((flags & EFFECT) !== 0) {
effects.push(current_effect);
}
}
var sibling2 = current_effect.next;
if (sibling2 === null) {
let parent = current_effect.parent;
while (parent !== null) {
if (effect3 === parent) {
break main_loop;
}
var parent_sibling = parent.next;
if (parent_sibling !== null) {
current_effect = parent_sibling;
continue main_loop;
}
parent = parent.parent;
}
}
current_effect = sibling2;
}
for (var i2 = 0; i2 < effects.length; i2++) {
child2 = effects[i2];
collected_effects.push(child2);
process_effects(child2, collected_effects);
}
}
function get(signal) {
var flags = signal.f;
if ((flags & DESTROYED) !== 0) {
return signal.v;
}
if (active_reaction !== null) {
if (derived_sources !== null && derived_sources.includes(signal)) {
state_unsafe_local_read();
}
var deps = active_reaction.deps;
if (new_deps === null && deps !== null && deps[skipped_deps] === signal) {
skipped_deps++;
} else if (new_deps === null) {
new_deps = [signal];
} else {
new_deps.push(signal);
}
if (untracked_writes !== null && active_effect !== null && (active_effect.f & CLEAN) !== 0 && (active_effect.f & BRANCH_EFFECT) === 0 && untracked_writes.includes(signal)) {
set_signal_status(active_effect, DIRTY);
schedule_effect(active_effect);
}
}
if ((flags & DERIVED) !== 0) {
var derived2 = (
/** @type {Derived} */
signal
);
if (check_dirtiness(derived2)) {
update_derived(derived2);
}
}
return signal.v;
}
function untrack(fn2) {
const previous_reaction = active_reaction;
try {
active_reaction = null;
return fn2();
} finally {
active_reaction = previous_reaction;
}
}
const STATUS_MASK = ~(DIRTY | MAYBE_DIRTY | CLEAN);
function set_signal_status(signal, status) {
signal.f = signal.f & STATUS_MASK | status;
}
function getContext(key) {
const context_map = get_or_init_context_map();
const result = (
/** @type {T} */
context_map.get(key)
);
return result;
}
function setContext(key, context) {
const context_map = get_or_init_context_map();
context_map.set(key, context);
return context;
}
function get_or_init_context_map(name) {
if (component_context === null) {
lifecycle_outside_component();
}
return component_context.c ?? (component_context.c = new Map(get_parent_context(component_context) || void 0));
}
function get_parent_context(component_context2) {
let parent = component_context2.p;
while (parent !== null) {
const context_map = parent.c;
if (context_map !== null) {
return context_map;
}
parent = parent.p;
}
return null;
}
function push(props, runes = false, fn2) {
component_context = {
p: component_context,
c: null,
e: null,
m: false,
s: props,
x: null,
l: null
};
if (!runes) {
component_context.l = {
s: null,
u: null,
r1: [],
r2: source(false)
};
}
}
function pop(component) {
const context_stack_item = component_context;
if (context_stack_item !== null) {
const component_effects = context_stack_item.e;
if (component_effects !== null) {
var previous_effect = active_effect;
var previous_reaction = active_reaction;
context_stack_item.e = null;
try {
for (var i2 = 0; i2 < component_effects.length; i2++) {
var component_effect = component_effects[i2];
set_active_effect(component_effect.effect);
set_active_reaction(component_effect.reaction);
effect$3(component_effect.fn);
}
} finally {
set_active_effect(previous_effect);
set_active_reaction(previous_reaction);
}
}
component_context = context_stack_item.p;
context_stack_item.m = true;
}
return (
/** @type {T} */
{}
);
}
const all_registered_events = /* @__PURE__ */ new Set();
const root_event_handles = /* @__PURE__ */ new Set();
function delegate(events) {
for (var i2 = 0; i2 < events.length; i2++) {
all_registered_events.add(events[i2]);
}
for (var fn2 of root_event_handles) {
fn2(events);
}
}
function handle_event_propagation(event) {
var _a;
var handler_element = this;
var owner_document = (
/** @type {Node} */
handler_element.ownerDocument
);
var event_name = event.type;
var path = ((_a = event.composedPath) == null ? void 0 : _a.call(event)) || [];
var current_target = (
/** @type {null | Element} */
path[0] || event.target
);
var path_idx = 0;
var handled_at = event.__root;
if (handled_at) {
var at_idx = path.indexOf(handled_at);
if (at_idx !== -1 && (handler_element === document || handler_element === /** @type {any} */
window)) {
event.__root = handler_element;
return;
}
var handler_idx = path.indexOf(handler_element);
if (handler_idx === -1) {
return;
}
if (at_idx <= handler_idx) {
path_idx = at_idx;
}
}
current_target = /** @type {Element} */
path[path_idx] || event.target;
if (current_target === handler_element) return;
define_property(event, "currentTarget", {
configurable: true,
get() {
return current_target || owner_document;
}
});
try {
var throw_error;
var other_errors = [];
while (current_target !== null) {
var parent_element = current_target.assignedSlot || current_target.parentNode || /** @type {any} */
current_target.host || null;
try {
var delegated = current_target["__" + event_name];
if (delegated !== void 0 && !/** @type {any} */
current_target.disabled) {
if (is_array(delegated)) {
var [fn2, ...data] = delegated;
fn2.apply(current_target, [event, ...data]);
} else {
delegated.call(current_target, event);
}
}
} catch (error) {
if (throw_error) {
other_errors.push(error);
} else {
throw_error = error;
}
}
if (event.cancelBubble || parent_element === handler_element || parent_element === null) {
break;
}
current_target = parent_element;
}
if (throw_error) {
for (let error of other_errors) {
queueMicrotask(() => {
throw error;
});
}
throw throw_error;
}
} finally {
event.__root = handler_element;
delete event.currentTarget;
}
}
function create_fragment_from_html(html) {
var elem = document.createElement("template");
elem.innerHTML = html;
return elem.content;
}
function assign_nodes(start2, end2) {
var effect3 = (
/** @type {Effect} */
active_effect
);
if (effect3.nodes_start === null) {
effect3.nodes_start = start2;
effect3.nodes_end = end2;
}
}
// @__NO_SIDE_EFFECTS__
function template(content, flags) {
var is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;
var use_import_node = (flags & TEMPLATE_USE_IMPORT_NODE) !== 0;
var node;
var has_start = !content.startsWith("<!>");
return () => {
if (node === void 0) {
node = create_fragment_from_html(has_start ? content : "<!>" + content);
if (!is_fragment) node = /** @type {Node} */
/* @__PURE__ */ get_first_child(node);
}
var clone = (
/** @type {TemplateNode} */
use_import_node ? document.importNode(node, true) : node.cloneNode(true)
);
if (is_fragment) {
var start2 = (
/** @type {TemplateNode} */
/* @__PURE__ */ get_first_child(clone)
);
var end2 = (
/** @type {TemplateNode} */
clone.lastChild
);
assign_nodes(start2, end2);
} else {
assign_nodes(clone, clone);
}
return clone;
};
}
function comment() {
var frag = document.createDocumentFragment();
var start2 = document.createComment("");
var anchor = create_text();
frag.append(start2, anchor);
assign_nodes(start2, anchor);
return frag;
}
function append(anchor, dom) {
if (anchor === null) {
return;
}
anchor.before(
/** @type {Node} */
dom
);
}
const PASSIVE_EVENTS = ["touchstart", "touchmove"];
function is_passive_event(name) {
return PASSIVE_EVENTS.includes(name);
}
function set_text(text, value) {
var str = value == null ? "" : typeof value === "object" ? value + "" : value;
if (str !== (text.__t ?? (text.__t = text.nodeValue))) {
text.__t = str;
text.nodeValue = str == null ? "" : str + "";
}
}
function mount(component, options) {
return _mount(component, options);
}
const document_listeners = /* @__PURE__ */ new Map();
function _mount(Component, { target, anchor, props = {}, events, context, intro = true }) {
init_operations();
var registered_events = /* @__PURE__ */ new Set();
var event_handle = (events2) => {
for (var i2 = 0; i2 < events2.length; i2++) {
var event_name = events2[i2];
if (registered_events.has(event_name)) continue;
registered_events.add(event_name);
var passive2 = is_passive_event(event_name);
target.addEventListener(event_name, handle_event_propagation, { passive: passive2 });
var n2 = document_listeners.get(event_name);
if (n2 === void 0) {
document.addEventListener(event_name, handle_event_propagation, { passive: passive2 });
document_listeners.set(event_name, 1);
} else {
document_listeners.set(event_name, n2 + 1);
}
}
};
event_handle(array_from(all_registered_events));
root_event_handles.add(event_handle);
var component = void 0;
var unmount = effect_root(() => {
var anchor_node = anchor ?? target.appendChild(create_text());
branch(() => {
if (context) {
push({});
var ctx = (
/** @type {ComponentContext} */
component_context
);
ctx.c = context;
}
if (events) {
props.$$events = events;
}
component = Component(anchor_node, props) || {};
if (context) {
pop();
}
});
return () => {
var _a;
for (var event_name of registered_events) {
target.removeEventListener(event_name, handle_event_propagation);
var n2 = (
/** @type {number} */
document_listeners.get(event_name)
);
if (--n2 === 0) {
document.removeEventListener(event_name, handle_event_propagation);
document_listeners.delete(event_name);
} else {
document_listeners.set(event_name, n2);
}
}
root_event_handles.delete(event_handle);
mounted_components.delete(component);
if (anchor_node !== anchor) {
(_a = anchor_node.parentNode) == null ? void 0 : _a.removeChild(anchor_node);
}
};
});
mounted_components.set(component, unmount);
return component;
}
let mounted_components = /* @__PURE__ */ new WeakMap();
function if_block(node, get_condition, consequent_fn, alternate_fn = null, elseif = false) {
var anchor = node;
var consequent_effect = null;
var alternate_effect = null;
var condition = null;
var flags = elseif ? EFFECT_TRANSPARENT : 0;
block(() => {
if (condition === (condition = !!get_condition())) return;
if (condition) {
if (consequent_effect) {
resume_effect(consequent_effect);
} else {
consequent_effect = branch(() => consequent_fn(anchor));
}
if (alternate_effect) {
pause_effect(alternate_effect, () => {
alternate_effect = null;
});
}
} else {
if (alternate_effect) {
resume_effect(alternate_effect);
} else if (alternate_fn) {
alternate_effect = branch(() => alternate_fn(anchor));
}
if (consequent_effect) {
pause_effect(consequent_effect, () => {
consequent_effect = null;
});
}
}
}, flags);
}
let current_each_item = null;
function index(_, i2) {
return i2;
}
function pause_effects(state2, items, controlled_anchor, items_map) {
var transitions = [];
var length = items.length;
for (var i2 = 0; i2 < length; i2++) {
pause_children(items[i2].e, transitions, true);
}
var is_controlled = length > 0 && transitions.length === 0 && controlled_anchor !== null;
if (is_controlled) {
var parent_node = (
/** @type {Element} */
/** @type {Element} */
controlled_anchor.parentNode
);
clear_text_content(parent_node);
parent_node.append(
/** @type {Element} */
controlled_anchor
);
items_map.clear();
link(state2, items[0].prev, items[length - 1].next);
}
run_out_transitions(transitions, () => {
for (var i3 = 0; i3 < length; i3++) {
var item = items[i3];
if (!is_controlled) {
items_map.delete(item.k);
link(state2, item.prev, item.next);
}
destroy_effect(item.e, !is_controlled);
}
});
}
function each(node, flags, get_collection, get_key, render_fn, fallback_fn = null) {
var anchor = node;
var state2 = { flags, items: /* @__PURE__ */ new Map(), first: null };
var is_controlled = (flags & EACH_IS_CONTROLLED) !== 0;
if (is_controlled) {
var parent_node = (
/** @type {Element} */
node
);
anchor = parent_node.appendChild(create_text());
}
var fallback = null;
block(() => {
var collection = get_collection();
var array = is_array(collection) ? collection : collection == null ? [] : array_from(collection);
var length = array.length;
{
reconcile(array, state2, anchor, render_fn, flags, get_key);
}
if (fallback_fn !== null) {
if (length === 0) {
if (fallback) {
resume_effect(fallback);
} else {
fallback = branch(() => fallback_fn(anchor));
}
} else if (fallback !== null) {
pause_effect(fallback, () => {
fallback = null;
});
}
}
});
}
function reconcile(array, state2, anchor, render_fn, flags, get_key) {
var _a, _b, _c, _d;
var is_animated = (flags & EACH_IS_ANIMATED) !== 0;
var should_update = (flags & (EACH_ITEM_REACTIVE | EACH_INDEX_REACTIVE)) !== 0;
var length = array.length;
var items = state2.items;
var first = state2.first;
var current = first;
var seen;
var prev = null;
var to_animate;
var matched = [];
var stashed = [];
var value;
var key;
var item;
var i2;
if (is_animated) {
for (i2 = 0; i2 < length; i2 += 1) {
value = array[i2];
key = get_key(value, i2);
item = items.get(key);
if (item !== void 0) {
(_a = item.a) == null ? void 0 : _a.measure();
(to_animate ?? (to_animate = /* @__PURE__ */ new Set())).add(item);
}
}
}
for (i2 = 0; i2 < length; i2 += 1) {
value = array[i2];
key = get_key(value, i2);
item = items.get(key);
if (item === void 0) {
var child_anchor = current ? (
/** @type {TemplateNode} */
current.e.nodes_start
) : anchor;
prev = create_item(
child_anchor,
state2,
prev,
prev === null ? state2.first : prev.next,
value,
key,
i2,
render_fn,
flags
);
items.set(key, prev);
matched = [];
stashed = [];
current = prev.next;
continue;
}
if (should_update) {
update_item(item, value, i2, flags);
}
if ((item.e.f & INERT) !== 0) {
resume_effect(item.e);
if (is_animated) {
(_b = item.a) == null ? void 0 : _b.unfix();
(to_animate ?? (to_animate = /* @__PURE__ */ new Set())).delete(item);
}
}
if (item !== current) {
if (seen !== void 0 && seen.has(item)) {
if (matched.length < stashed.length) {
var start2 = stashed[0];
var j;
prev = start2.prev;
var a2 = matched[0];
var b = matched[matched.length - 1];
for (j = 0; j < matched.length; j += 1) {
move(matched[j], start2, anchor);
}
for (j = 0; j < stashed.length; j += 1) {
seen.delete(stashed[j]);
}
link(state2, a2.prev, b.next);
link(state2, prev, a2);
link(state2, b, start2);
current = start2;
prev = b;
i2 -= 1;
matched = [];
stashed = [];
} else {
seen.delete(item);
move(item, current, anchor);
link(state2, item.prev, item.next);
link(state2, item, prev === null ? state2.first : prev.next);
link(state2, prev, item);
prev = item;
}
continue;
}
matched = [];
stashed = [];
while (current !== null && current.k !== key) {
if ((current.e.f & INERT) === 0) {
(seen ?? (seen = /* @__PURE__ */ new Set())).add(current);
}
stashed.push(current);
current = current.next;
}
if (current === null) {
continue;
}
item = current;
}
matched.push(item);
prev = item;
current = item.next;
}
if (current !== null || seen !== void 0) {
var to_destroy = seen === void 0 ? [] : array_from(seen);
while (current !== null) {
if ((current.e.f & INERT) === 0) {
to_destroy.push(current);
}
current = current.next;
}
var destroy_length = to_destroy.length;
if (destroy_length > 0) {
var controlled_anchor = (flags & EACH_IS_CONTROLLED) !== 0 && length === 0 ? anchor : null;
if (is_animated) {
for (i2 = 0; i2 < destroy_length; i2 += 1) {
(_c = to_destroy[i2].a) == null ? void 0 : _c.measure();
}
for (i2 = 0; i2 < destroy_length; i2 += 1) {
(_d = to_destroy[i2].a) == null ? void 0 : _d.fix();
}
}
pause_effects(state2, to_destroy, controlled_anchor, items);
}
}
if (is_animated) {
queue_micro_task(() => {
var _a2;
if (to_animate === void 0) return;
for (item of to_animate) {
(_a2 = item.a) == null ? void 0 : _a2.apply();
}
});
}
active_effect.first = state2.first && state2.first.e;
active_effect.last = prev && prev.e;
}
function update_item(item, value, index2, type) {
if ((type & EACH_ITEM_REACTIVE) !== 0) {
set(item.v, value);
}
if ((type & EACH_INDEX_REACTIVE) !== 0) {
set(
/** @type {Value<number>} */
item.i,
index2
);
} else {
item.i = index2;
}
}
function create_item(anchor, state2, prev, next, value, key, index2, render_fn, flags) {
var previous_each_item = current_each_item;
try {
var reactive = (flags & EACH_ITEM_REACTIVE) !== 0;
var mutable = (flags & EACH_ITEM_IMMUTABLE) === 0;
var v = reactive ? mutable ? /* @__PURE__ */ mutable_source(value) : source(value) : value;
var i2 = (flags & EACH_INDEX_REACTIVE) === 0 ? index2 : source(index2);
var item = {
i: i2,
v,
k: key,
a: null,
// @ts-expect-error
e: null,
prev,
next
};
current_each_item = item;
item.e = branch(() => render_fn(anchor, v, i2), hydrating);
item.e.prev = prev && prev.e;
item.e.next = next && next.e;
if (prev === null) {
state2.first = item;
} else {
prev.next = item;
prev.e.next = item.e;
}
if (next !== null) {
next.prev = item;
next.e.prev = item.e;
}
return item;
} finally {
current_each_item = previous_each_item;
}
}
function move(item, next, anchor) {
var end2 = item.next ? (
/** @type {TemplateNode} */
item.next.e.nodes_start
) : anchor;
var dest = next ? (
/** @type {TemplateNode} */
next.e.nodes_start
) : anchor;
var node = (
/** @type {TemplateNode} */
item.e.nodes_start
);
while (node !== end2) {
var next_node = (
/** @type {TemplateNode} */
/* @__PURE__ */ get_next_sibling(node)
);
dest.before(node);
node = next_node;
}
}
function link(state2, prev, next) {
if (prev === null) {
state2.first = next;
} else {
prev.next = next;
prev.e.next = next && next.e;
}
if (next !== null) {
next.prev = prev;
next.e.prev = prev && prev.e;
}
}
function snippet(node, get_snippet, ...args) {
var anchor = node;
var snippet2 = noop;
var snippet_effect;
block(() => {
if (snippet2 === (snippet2 = get_snippet())) return;
if (snippet_effect) {
destroy_effect(snippet_effect);
snippet_effect = null;
}
snippet_effect = branch(() => (
/** @type {SnippetFn} */
snippet2(anchor, ...args)
));
}, EFFECT_TRANSPARENT);
}
function action(dom, action2, get_value) {
effect$3(() => {
var payload = untrack(() => action2(dom, get_value == null ? void 0 : get_value()) || {});
if (payload == null ? void 0 : payload.destroy) {
return () => (
/** @type {Function} */
payload.destroy()
);
}
});
}
let listening_to_form_reset = false;
function add_form_reset_listener() {
if (!listening_to_form_reset) {
listening_to_form_reset = true;
document.addEventListener(
"reset",
(evt) => {
Promise.resolve().then(() => {
var _a;
if (!evt.defaultPrevented) {
for (
const e2 of
/**@type {HTMLFormElement} */
evt.target.elements
) {
(_a = e2.__on_r) == null ? void 0 : _a.call(e2);
}
}
});
},
// In the capture phase to guarantee we get noticed of it (no possiblity of stopPropagation)
{ capture: true }
);
}
}
function set_attribute(element, attribute, value, skip_warning) {
var attributes = element.__attributes ?? (element.__attributes = {});
if (attributes[attribute] === (attributes[attribute] = value)) return;
if (attribute === "loading") {
element[LOADING_ATTR_SYMBOL] = value;
}
if (value == null) {
element.removeAttribute(attribute);
} else if (typeof value !== "string" && get_setters(element).includes(attribute)) {
element[attribute] = value;
} else {
element.setAttribute(attribute, value);
}
}
var setters_cache = /* @__PURE__ */ new Map();
function get_setters(element) {
var setters = setters_cache.get(element.nodeName);
if (setters) return setters;
setters_cache.set(element.nodeName, setters = []);
var descriptors;
var proto = get_prototype_of(element);
while (proto.constructor.name !== "Element") {
descriptors = get_descriptors(proto);
for (var key in descriptors) {
if (descriptors[key].set) {
setters.push(key);
}
}
proto = get_prototype_of(proto);
}
return setters;
}
function toggle_class(dom, class_name, value) {
if (value) {
if (dom.classList.contains(class_name)) return;
dom.classList.add(class_name);
} else {
if (!dom.classList.contains(class_name)) return;
dom.classList.remove(class_name);
}
}
function listen_to_event_and_reset_event(element, event, handler, on_reset = handler) {
element.addEventListener(event, handler);
const prev = element.__on_r;
if (prev) {
element.__on_r = () => {
prev();
on_reset();
};
} else {
element.__on_r = on_reset;
}
add_form_reset_listener();
}
function bind_value(input, get2, set2 = get2) {
var runes = is_runes();
listen_to_event_and_reset_event(input, "input", () => {
var value = is_numberlike_input(input) ? to_number(input.value) : input.value;
set2(value);
if (runes && value !== (value = get2())) {
input.value = value ?? "";
}
});
render_effect(() => {
var value = get2();
if (is_numberlike_input(input) && value === to_number(input.value)) {
return;
}
if (input.type === "date" && !value && !input.value) {
return;
}
input.value = value ?? "";
});
}
function bind_checked(input, get2, set2 = get2) {
listen_to_event_and_reset_event(input, "change", () => {
var value = input.checked;
set2(value);
});
if (get2() == void 0) {
set2(false);
}
render_effect(() => {
var value = get2();
input.checked = Boolean(value);
});
}
function is_numberlike_input(input) {
var type = input.type;
return type === "number" || type === "range";
}
function to_number(value) {
return value === "" ? null : +value;
}
function select_option(select, value, mounting) {
if (select.multiple) {
return select_options(select, value);
}
for (var option of select.options) {
var option_value = get_option_value(option);
if (is(option_value, value)) {
option.selected = true;
return;
}
}
if (!mounting || value !== void 0) {
select.selectedIndex = -1;
}
}
function init_select(select, get_value) {
effect$3(() => {
var observer = new MutationObserver(() => {
var value = select.__value;
select_option(select, value);
});
observer.observe(select, {
// Listen to option element changes
childList: true,
subtree: true,
// because of <optgroup>
// Listen to option element value attribute changes
// (doesn't get notified of select value changes,
// because that property is not reflected as an attribute)
attributes: true,
attributeFilter: ["value"]
});
return () => {
observer.disconnect();
};
});
}
function bind_select_value(select, get2, set2 = get2) {
var mounting = true;
listen_to_event_and_reset_event(select, "change", () => {
var value;
if (select.multiple) {
value = [].map.call(select.querySelectorAll(":checked"), get_option_value);
} else {
var selected_option = select.querySelector(":checked");
value = selected_option && get_option_value(selected_option);
}
set2(value);
});
effect$3(() => {
var value = get2();
select_option(select, value, mounting);
if (mounting && value === void 0) {
var selected_option = select.querySelector(":checked");
if (selected_option !== null) {
value = get_option_value(selected_option);
set2(value);
}
}
select.__value = value;
mounting = false;
});
init_select(select);
}
function select_options(select, value) {
for (var option of select.options) {
option.selected = ~value.indexOf(get_option_value(option));
}
}
function get_option_value(option) {
if ("__value" in option) {
return option.__value;
} else {
return option.value;
}
}
function is_bound_this(bound_value, element_or_component) {
return bound_value === element_or_component || (bound_value == null ? void 0 : bound_value[STATE_SYMBOL]) === element_or_component;
}
function bind_this(element_or_component = {}, update, get_value, get_parts) {
effect$3(() => {
var old_parts;
var parts;
render_effect(() => {
old_parts = parts;
parts = [];
untrack(() => {
if (element_or_component !== get_value(...parts)) {
update(element_or_component, ...parts);
if (old_parts && is_bound_this(get_value(...old_parts), element_or_component)) {
update(null, ...old_parts);
}
}
});
});
return () => {
queue_micro_task(() => {
if (parts && is_bound_this(get_value(...parts), element_or_component)) {
update(null, ...parts);
}
});
};
});
return element_or_component;
}
function prop(props, key, flags, fallback) {
var _a;
var immutable = (flags & PROPS_IS_IMMUTABLE) !== 0;
var runes = (flags & PROPS_IS_RUNES) !== 0;
var bindable = (flags & PROPS_IS_BINDABLE) !== 0;
var lazy = (flags & PROPS_IS_LAZY_INITIAL) !== 0;
var prop_value = (
/** @type {V} */
props[key]
);
var setter = (_a = get_descriptor(props, key)) == null ? void 0 : _a.set;
var fallback_value = (
/** @type {V} */
fallback
);
var fallback_dirty = true;
var fallback_used = false;
var get_fallback = () => {
fallback_used = true;
if (fallback_dirty) {
fallback_dirty = false;
if (lazy) {
fallback_value = untrack(
/** @type {() => V} */
fallback
);
} else {
fallback_value = /** @type {V} */
fallback;
}
}
return fallback_value;
};
if (prop_value === void 0 && fallback !== void 0) {
if (setter && runes) {
props_invalid_value();
}
prop_value = get_fallback();
if (setter) setter(prop_value);
}
var getter;
if (runes) {
getter = () => {
var value = (
/** @type {V} */
props[key]
);
if (value === void 0) return get_fallback();
fallback_dirty = true;
fallback_used = false;
return value;
};
} else {
var derived_getter = (immutable ? derived : derived_safe_equal)(
() => (
/** @type {V} */
props[key]
)
);
derived_getter.f |= LEGACY_DERIVED_PROP;
getter = () => {
var value = get(derived_getter);
if (value !== void 0) fallback_value = /** @type {V} */
void 0;
return value === void 0 ? fallback_value : value;
};
}
if ((flags & PROPS_IS_UPDATED) === 0) {
return getter;
}
if (setter) {
var legacy_parent = props.$$legacy;
return function(value, mutation) {
if (arguments.length > 0) {
if (!runes || !mutation || legacy_parent) {
setter(mutation ? getter() : value);
}
return value;
} else {
return getter();
}
};
}
var from_child = false;
var inner_current_value = /* @__PURE__ */ mutable_source(prop_value);
var current_value = /* @__PURE__ */ derived(() => {
var parent_value = getter();
var child_value = get(inner_current_value);
if (from_child) {
from_child = false;
return child_value;
}
return inner_current_value.v = parent_value;
});
if (!immutable) current_value.equals = safe_equals;
return function(value, mutation) {
var current = get(current_value);
if (arguments.length > 0) {
const new_value = mutation ? get(current_value) : runes && bindable ? proxy(value) : value;
if (!current_value.equals(new_value)) {
from_child = true;
set(inner_current_value, new_value);
if (fallback_used && fallback_value !== void 0) {
fallback_value = new_value;
}
get(current_value);
}
return value;
}
return current;
};
}
function onMount(fn2) {
if (component_context === null) {
lifecycle_outside_component();
}
if (component_context.l !== null) {
init_update_callbacks(component_context).m.push(fn2);
} else {
user_effect(() => {
const cleanup = untrack(fn2);
if (typeof cleanup === "function") return (
/** @type {() => void} */
cleanup
);
});
}
}
function init_update_callbacks(context) {
var l = (
/** @type {ComponentContextLegacy} */
context.l
);
return l.u ?? (l.u = { a: [], b: [], m: [] });
}
const PUBLIC_VERSION = "5";
if (typeof window !== "undefined")
(window.__svelte || (window.__svelte = { v: /* @__PURE__ */ new Set() })).v.add(PUBLIC_VERSION);
const segmenter = new Intl.Segmenter();
function segment(text) {
return [...segmenter.segment(text)].map(({ segment: segment2 }) => segment2);
}
class Editor {
constructor() {
__privateAdd(this, _text, state(""));
__privateAdd(this, _segments, /* @__PURE__ */ derived(() => segment(get(__privateGet(this, _text)))));
__privateAdd(this, _selectedText, state(""));
}
/**
* The text of the editor.
*
* This value is a reactive `$state()` and read-only.
*/
get text() {
return get(__privateGet(this, _text));
}
/**
* @internal must be set by the editor implementation during text change
*/
set text(text) {
set(__privateGet(this, _text), proxy(text));
}
get segments() {
return get(__privateGet(this, _segments));
}
/**
* The text that is currently selected in the editor.
*
* This value is a reactive `$state()` and read-only.
*
* If there is no selection, this will be an empty string (`""`).
*
* For CodeMirror, if there are multiple selections, it will be
* separated by `editor.codeMirror.doc.lineSeparator()`
* (by default `editor.codeMirror.doc.lineSep || "\n"`).
*/
get selectedText() {
return get(__privateGet(this, _selectedText));
}
/**
* @internal must be set by the editor implementation during selection change
*/
set selectedText(selectedText) {
set(__privateGet(this, _selectedText), proxy(selectedText));
}
}
_text = new WeakMap();
_segments = new WeakMap();
_selectedText = new WeakMap();
class KojiEditor extends Editor {
constructor(wrapper) {
super();
__publicField(this, "wrapper");
__publicField(this, "editor");
this.wrapper = wrapper;
if (!this.wrapper.__vue__) {
throw new Error("KojiEditor: wrapper is not a Vue component");
}
this.editor = this.wrapper.__vue__.editor;
this.editor.watch("selection", () => {
this.selectedText = this.editor.selectedText;
});
this.editor.watch("requestedSrc", () => {
this.text = this.editor.value;
});
}
insertAtCursor(textToInsert) {
this.editor.insertOrReplace(textToInsert);
}
replaceSelection(replacer) {
this.editor.insertOrReplace(replacer(this.selectedText ?? ""));
}
markText(text) {
const allChars = this.wrapper.querySelectorAll(".token .char");
for (const char of allChars) {
if (char.textContent === text) {
char.classList.add("highlight-variant");
}
}
}
toggleClass(className, enabled) {
if (enabled === void 0) {
this.wrapper.classList.toggle(className);
} else if (enabled) {
this.wrapper.classList.add(className);
} else {
this.wrapper.classList.remove(className);
}
}
}
class CodeMirrorEditor extends Editor {
constructor(codeMirror) {
super();
this.codeMirror = codeMirror;
if (!codeMirror) {
throw new Error("[honkoku-toolbox] CodeMirrorEditor is not valid");
}
this.codeMirror = codeMirror;
this.codeMirror.on("cursorActivity", () => {
this.selectedText = this.codeMirror.getSelection();
});
this.codeMirror.on("change", () => {
this.text = this.codeMirror.getValue();
});
}
insertAtCursor(textToInsert) {
if (this.codeMirror.somethingSelected()) {
this.replaceSelection((_) => textToInsert);
} else {
const cursor = this.codeMirror.getCursor();
this.codeMirror.replaceRange(textToInsert, cursor);
}
}
replaceSelection(replacer) {
const replacedText = replacer(this.selectedText ?? "");
this.codeMirror.replaceSelection(replacedText);
}
markText(substr) {
if (!substr || !this.text.includes(substr)) return;
const textClusters = segment(this.text);
const substrClusters = segment(substr);
const clusterCodeUnitIndices = [0];
for (let i2 = 0; i2 < textClusters.length; (i2 += 1) - 1) {
clusterCodeUnitIndices.push(clusterCodeUnitIndices[i2] + textClusters[i2].length);
}
const occurrences = [];
for (let i2 = 0; i2 <= textClusters.length - substrClusters.length; (i2 += 1) - 1) {
let match = true;
for (let j = 0; j < substrClusters.length; (j += 1) - 1) {
if (textClusters[i2 + j] !== substrClusters[j]) {
match = false;
break;
}
}
if (match) {
const startIndex = clusterCodeUnitIndices[i2];
const endIndex = clusterCodeUnitIndices[i2 + substrClusters.length];
occurrences.push({ startIndex, endIndex });
}
}
for (const occurrence of occurrences) {
const textPosStart = this.codeMirror.posFromIndex(occurrence.startIndex);
const textPosEnd = this.codeMirror.posFromIndex(occurrence.endIndex);
this.codeMirror.markText(textPosStart, textPosEnd, { className: "highlight-variant" });
}
}
toggleClass(className, enabled) {
if (enabled === void 0) {
this.codeMirror.getWrapperElement().classList.toggle(className);
} else if (enabled) {
this.codeMirror.getWrapperElement().classList.add(className);
} else {
this.codeMirror.getWrapperElement().classList.remove(className);
}
}
}
var top = "top";
var bottom = "bottom";
var right = "right";
var left = "left";
var auto = "auto";
var basePlacements = [top, bottom, right, left];
var start = "start";
var end = "end";
var clippingParents = "clippingParents";
var viewport = "viewport";
var popper = "popper";
var reference = "reference";
var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
return acc.concat([placement + "-" + start, placement + "-" + end]);
}, []);
var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
}, []);
var beforeRead = "beforeRead";
var read = "read";
var afterRead = "afterRead";
var beforeMain = "beforeMain";
var main = "main";
var afterMain = "afterMain";
var beforeWrite = "beforeWrite";
var write = "write";
var afterWrite = "afterWrite";
var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
function getNodeName(element) {
return element ? (element.nodeName || "").toLowerCase() : null;
}
function getWindow(node) {
if (node == null) {
return window;
}
if (node.toString() !== "[object Window]") {
var ownerDocument = node.ownerDocument;
return ownerDocument ? ownerDocument.defaultView || window : window;
}
return node;
}
function isElement$1(node) {
var OwnElement = getWindow(node).Element;
return node instanceof OwnElement || node instanceof Element;
}
function isHTMLElement(node) {
var OwnElement = getWindow(node).HTMLElement;
return node instanceof OwnElement || node instanceof HTMLElement;
}
function isShadowRoot(node) {
if (typeof ShadowRoot === "undefined") {
return false;
}
var OwnElement = getWindow(node).ShadowRoot;
return node instanceof OwnElement || node instanceof ShadowRoot;
}
function applyStyles(_ref) {
var state2 = _ref.state;
Object.keys(state2.elements).forEach(function(name) {
var style = state2.styles[name] || {};
var attributes = state2.attributes[name] || {};
var element = state2.elements[name];
if (!isHTMLElement(element) || !getNodeName(element)) {
return;
}
Object.assign(element.style, style);
Object.keys(attributes).forEach(function(name2) {
var value = attributes[name2];
if (value === false) {
element.removeAttribute(name2);
} else {
element.setAttribute(name2, value === true ? "" : value);
}
});
});
}
function effect$2(_ref2) {
var state2 = _ref2.state;
var initialStyles = {
popper: {
position: state2.options.strategy,
left: "0",
top: "0",
margin: "0"
},
arrow: {
position: "absolute"
},
reference: {}
};
Object.assign(state2.elements.popper.style, initialStyles.popper);
state2.styles = initialStyles;
if (state2.elements.arrow) {
Object.assign(state2.elements.arrow.style, initialStyles.arrow);
}
return function() {
Object.keys(state2.elements).forEach(function(name) {
var element = state2.elements[name];
var attributes = state2.attributes[name] || {};
var styleProperties = Object.keys(state2.styles.hasOwnProperty(name) ? state2.styles[name] : initialStyles[name]);
var style = styleProperties.reduce(function(style2, property) {
style2[property] = "";
return style2;
}, {});
if (!isHTMLElement(element) || !getNodeName(element)) {
return;
}
Object.assign(element.style, style);
Object.keys(attributes).forEach(function(attribute) {
element.removeAttribute(attribute);
});
});
};
}
const applyStyles$1 = {
name: "applyStyles",
enabled: true,
phase: "write",
fn: applyStyles,
effect: effect$2,
requires: ["computeStyles"]
};
function getBasePlacement$1(placement) {
return placement.split("-")[0];
}
var max = Math.max;
var min = Math.min;
var round = Math.round;
function getUAString() {
var uaData = navigator.userAgentData;
if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {
return uaData.brands.map(function(item) {
return item.brand + "/" + item.version;
}).join(" ");
}
return navigator.userAgent;
}
function isLayoutViewport() {
return !/^((?!chrome|android).)*safari/i.test(getUAString());
}
function getBoundingClientRect(element, includeScale, isFixedStrategy) {
if (includeScale === void 0) {
includeScale = false;
}
if (isFixedStrategy === void 0) {
isFixedStrategy = false;
}
var clientRect = element.getBoundingClientRect();
var scaleX = 1;
var scaleY = 1;
if (includeScale && isHTMLElement(element)) {
scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
}
var _ref = isElement$1(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport;
var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
var width = clientRect.width / scaleX;
var height = clientRect.height / scaleY;
return {
width,
height,
top: y,
right: x + width,
bottom: y + height,
left: x,
x,
y
};
}
function getLayoutRect(element) {
var clientRect = getBoundingClientRect(element);
var width = element.offsetWidth;
var height = element.offsetHeight;
if (Math.abs(clientRect.width - width) <= 1) {
width = clientRect.width;
}
if (Math.abs(clientRect.height - height) <= 1) {
height = clientRect.height;
}
return {
x: element.offsetLeft,
y: element.offsetTop,
width,
height
};
}
function contains(parent, child2) {
var rootNode = child2.getRootNode && child2.getRootNode();
if (parent.contains(child2)) {
return true;
} else if (rootNode && isShadowRoot(rootNode)) {
var next = child2;
do {
if (next && parent.isSameNode(next)) {
return true;
}
next = next.parentNode || next.host;
} while (next);
}
return false;
}
function getComputedStyle(element) {
return getWindow(element).getComputedStyle(element);
}
function isTableElement(element) {
return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0;
}
function getDocumentElement(element) {
return ((isElement$1(element) ? element.ownerDocument : (
// $FlowFixMe[prop-missing]
element.document
)) || window.document).documentElement;
}
function getParentNode(element) {
if (getNodeName(element) === "html") {
return element;
}
return (
// this is a quicker (but less type safe) way to save quite some bytes from the bundle
// $FlowFixMe[incompatible-return]
// $FlowFixMe[prop-missing]
element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
element.parentNode || // DOM Element detected
(isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
// $FlowFixMe[incompatible-call]: HTMLElement is a Node
getDocumentElement(element)
);
}
function getTrueOffsetParent(element) {
if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
getComputedStyle(element).position === "fixed") {
return null;
}
return element.offsetParent;
}
function getContainingBlock(element) {
var isFirefox = /firefox/i.test(getUAString());
var isIE = /Trident/i.test(getUAString());
if (isIE && isHTMLElement(element)) {
var elementCss = getComputedStyle(element);
if (elementCss.position === "fixed") {
return null;
}
}
var currentNode = getParentNode(element);
if (isShadowRoot(currentNode)) {
currentNode = currentNode.host;
}
while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
var css = getComputedStyle(currentNode);
if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") {
return currentNode;
} else {
currentNode = currentNode.parentNode;
}
}
return null;
}
function getOffsetParent(element) {
var window2 = getWindow(element);
var offsetParent = getTrueOffsetParent(element);
while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === "static") {
offsetParent = getTrueOffsetParent(offsetParent);
}
if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle(offsetParent).position === "static")) {
return window2;
}
return offsetParent || getContainingBlock(element) || window2;
}
function getMainAxisFromPlacement(placement) {
return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
}
function within(min$1, value, max$1) {
return max(min$1, min(value, max$1));
}
function withinMaxClamp(min2, value, max2) {
var v = within(min2, value, max2);
return v > max2 ? max2 : v;
}
function getFreshSideObject() {
return {
top: 0,
right: 0,
bottom: 0,
left: 0
};
}
function mergePaddingObject(paddingObject) {
return Object.assign({}, getFreshSideObject(), paddingObject);
}
function expandToHashMap(value, keys) {
return keys.reduce(function(hashMap, key) {
hashMap[key] = value;
return hashMap;
}, {});
}
var toPaddingObject = function toPaddingObject2(padding, state2) {
padding = typeof padding === "function" ? padding(Object.assign({}, state2.rects, {
placement: state2.placement
})) : padding;
return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
};
function arrow(_ref) {
var _state$modifiersData$;
var state2 = _ref.state, name = _ref.name, options = _ref.options;
var arrowElement = state2.elements.arrow;
var popperOffsets2 = state2.modifiersData.popperOffsets;
var basePlacement = getBasePlacement$1(state2.placement);
var axis = getMainAxisFromPlacement(basePlacement);
var isVertical = [left, right].indexOf(basePlacement) >= 0;
var len = isVertical ? "height" : "width";
if (!arrowElement || !popperOffsets2) {
return;
}
var paddingObject = toPaddingObject(options.padding, state2);
var arrowRect = getLayoutRect(arrowElement);
var minProp = axis === "y" ? top : left;
var maxProp = axis === "y" ? bottom : right;
var endDiff = state2.rects.reference[len] + state2.rects.reference[axis] - popperOffsets2[axis] - state2.rects.popper[len];
var startDiff = popperOffsets2[axis] - state2.rects.reference[axis];
var arrowOffsetParent = getOffsetParent(arrowElement);
var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
var centerToReference = endDiff / 2 - startDiff / 2;
var min2 = paddingObject[minProp];
var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];
var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
var offset2 = within(min2, center, max2);
var axisProp = axis;
state2.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
}
function effect$1(_ref2) {
var state2 = _ref2.state, options = _ref2.options;
var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
if (arrowElement == null) {
return;
}
if (typeof arrowElement === "string") {
arrowElement = state2.elements.popper.querySelector(arrowElement);
if (!arrowElement) {
return;
}
}
if (!contains(state2.elements.popper, arrowElement)) {
return;
}
state2.elements.arrow = arrowElement;
}
const arrow$1 = {
name: "arrow",
enabled: true,
phase: "main",
fn: arrow,
effect: effect$1,
requires: ["popperOffsets"],
requiresIfExists: ["preventOverflow"]
};
function getVariation(placement) {
return placement.split("-")[1];
}
var unsetSides = {
top: "auto",
right: "auto",
bottom: "auto",
left: "auto"
};
function roundOffsetsByDPR(_ref, win) {
var x = _ref.x, y = _ref.y;
var dpr = win.devicePixelRatio || 1;
return {
x: round(x * dpr) / dpr || 0,
y: round(y * dpr) / dpr || 0
};
}
function mapToStyles(_ref2) {
var _Object$assign2;
var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
x,
y
}) : {
x,
y
};
x = _ref3.x;
y = _ref3.y;
var hasX = offsets.hasOwnProperty("x");
var hasY = offsets.hasOwnProperty("y");
var sideX = left;
var sideY = top;
var win = window;
if (adaptive) {
var offsetParent = getOffsetParent(popper2);
var heightProp = "clientHeight";
var widthProp = "clientWidth";
if (offsetParent === getWindow(popper2)) {
offsetParent = getDocumentElement(popper2);
if (getComputedStyle(offsetParent).position !== "static" && position === "absolute") {
heightProp = "scrollHeight";
widthProp = "scrollWidth";
}
}
offsetParent = offsetParent;
if (placement === top || (placement === left || placement === right) && variation === end) {
sideY = bottom;
var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : (
// $FlowFixMe[prop-missing]
offsetParent[heightProp]
);
y -= offsetY - popperRect.height;
y *= gpuAcceleration ? 1 : -1;
}
if (placement === left || (placement === top || placement === bottom) && variation === end) {
sideX = right;
var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : (
// $FlowFixMe[prop-missing]
offsetParent[widthProp]
);
x -= offsetX - popperRect.width;
x *= gpuAcceleration ? 1 : -1;
}
}
var commonStyles = Object.assign({
position
}, adaptive && unsetSides);
var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
x,
y
}, getWindow(popper2)) : {
x,
y
};
x = _ref4.x;
y = _ref4.y;
if (gpuAcceleration) {
var _Object$assign;
return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
}
return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
}
function computeStyles(_ref5) {
var state2 = _ref5.state, options = _ref5.options;
var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
var commonStyles = {
placement: getBasePlacement$1(state2.placement),
variation: getVariation(state2.placement),
popper: state2.elements.popper,
popperRect: state2.rects.popper,
gpuAcceleration,
isFixed: state2.options.strategy === "fixed"
};
if (state2.modifiersData.popperOffsets != null) {
state2.styles.popper = Object.assign({}, state2.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
offsets: state2.modifiersData.popperOffsets,
position: state2.options.strategy,
adaptive,
roundOffsets
})));
}
if (state2.modifiersData.arrow != null) {
state2.styles.arrow = Object.assign({}, state2.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
offsets: state2.modifiersData.arrow,
position: "absolute",
adaptive: false,
roundOffsets
})));
}
state2.attributes.popper = Object.assign({}, state2.attributes.popper, {
"data-popper-placement": state2.placement
});
}
const computeStyles$1 = {
name: "computeStyles",
enabled: true,
phase: "beforeWrite",
fn: computeStyles,
data: {}
};
var passive = {
passive: true
};
function effect(_ref) {
var state2 = _ref.state, instance = _ref.instance, options = _ref.options;
var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
var window2 = getWindow(state2.elements.popper);
var scrollParents = [].concat(state2.scrollParents.reference, state2.scrollParents.popper);
if (scroll) {
scrollParents.forEach(function(scrollParent) {
scrollParent.addEventListener("scroll", instance.update, passive);
});
}
if (resize) {
window2.addEventListener("resize", instance.update, passive);
}
return function() {
if (scroll) {
scrollParents.forEach(function(scrollParent) {
scrollParent.removeEventListener("scroll", instance.update, passive);
});
}
if (resize) {
window2.removeEventListener("resize", instance.update, passive);
}
};
}
const eventListeners = {
name: "eventListeners",
enabled: true,
phase: "write",
fn: function fn() {
},
effect,
data: {}
};
var hash$1 = {
left: "right",
right: "left",
bottom: "top",
top: "bottom"
};
function getOppositePlacement(placement) {
return placement.replace(/left|right|bottom|top/g, function(matched) {
return hash$1[matched];
});
}
var hash = {
start: "end",
end: "start"
};
function getOppositeVariationPlacement(placement) {
return placement.replace(/start|end/g, function(matched) {
return hash[matched];
});
}
function getWindowScroll(node) {
var win = getWindow(node);
var scrollLeft = win.pageXOffset;
var scrollTop = win.pageYOffset;
return {
scrollLeft,
scrollTop
};
}
function getWindowScrollBarX(element) {
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
}
function getViewportRect(element, strategy) {
var win = getWindow(element);
var html = getDocumentElement(element);
var visualViewport = win.visualViewport;
var width = html.clientWidth;
var height = html.clientHeight;
var x = 0;
var y = 0;
if (visualViewport) {
width = visualViewport.width;
height = visualViewport.height;
var layoutViewport = isLayoutViewport();
if (layoutViewport || !layoutViewport && strategy === "fixed") {
x = visualViewport.offsetLeft;
y = visualViewport.offsetTop;
}
}
return {
width,
height,
x: x + getWindowScrollBarX(element),
y
};
}
function getDocumentRect(element) {
var _element$ownerDocumen;
var html = getDocumentElement(element);
var winScroll = getWindowScroll(element);
var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
var y = -winScroll.scrollTop;
if (getComputedStyle(body || html).direction === "rtl") {
x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
}
return {
width,
height,
x,
y
};
}
function isScrollParent(element) {
var _getComputedStyle = getComputedStyle(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
}
function getScrollParent(node) {
if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) {
return node.ownerDocument.body;
}
if (isHTMLElement(node) && isScrollParent(node)) {
return node;
}
return getScrollParent(getParentNode(node));
}
function listScrollParents(element, list) {
var _element$ownerDocumen;
if (list === void 0) {
list = [];
}
var scrollParent = getScrollParent(element);
var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
var win = getWindow(scrollParent);
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
var updatedList = list.concat(target);
return isBody ? updatedList : (
// $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
updatedList.concat(listScrollParents(getParentNode(target)))
);
}
function rectToClientRect(rect) {
return Object.assign({}, rect, {
left: rect.x,
top: rect.y,
right: rect.x + rect.width,
bottom: rect.y + rect.height
});
}
function getInnerBoundingClientRect(element, strategy) {
var rect = getBoundingClientRect(element, false, strategy === "fixed");
rect.top = rect.top + element.clientTop;
rect.left = rect.left + element.clientLeft;
rect.bottom = rect.top + element.clientHeight;
rect.right = rect.left + element.clientWidth;
rect.width = element.clientWidth;
rect.height = element.clientHeight;
rect.x = rect.left;
rect.y = rect.top;
return rect;
}
function getClientRectFromMixedType(element, clippingParent, strategy) {
return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement$1(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
}
function getClippingParents(element) {
var clippingParents2 = listScrollParents(getParentNode(element));
var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle(element).position) >= 0;
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
if (!isElement$1(clipperElement)) {
return [];
}
return clippingParents2.filter(function(clippingParent) {
return isElement$1(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
});
}
function getClippingRect(element, boundary, rootBoundary, strategy) {
var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
var firstClippingParent = clippingParents2[0];
var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
var rect = getClientRectFromMixedType(element, clippingParent, strategy);
accRect.top = max(rect.top, accRect.top);
accRect.right = min(rect.right, accRect.right);
accRect.bottom = min(rect.bottom, accRect.bottom);
accRect.left = max(rect.left, accRect.left);
return accRect;
}, getClientRectFromMixedType(element, firstClippingParent, strategy));
clippingRect.width = clippingRect.right - clippingRect.left;
clippingRect.height = clippingRect.bottom - clippingRect.top;
clippingRect.x = clippingRect.left;
clippingRect.y = clippingRect.top;
return clippingRect;
}
function computeOffsets(_ref) {
var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;
var basePlacement = placement ? getBasePlacement$1(placement) : null;
var variation = placement ? getVariation(placement) : null;
var commonX = reference2.x + reference2.width / 2 - element.width / 2;
var commonY = reference2.y + reference2.height / 2 - element.height / 2;
var offsets;
switch (basePlacement) {
case top:
offsets = {
x: commonX,
y: reference2.y - element.height
};
break;
case bottom:
offsets = {
x: commonX,
y: reference2.y + reference2.height
};
break;
case right:
offsets = {
x: reference2.x + reference2.width,
y: commonY
};
break;
case left:
offsets = {
x: reference2.x - element.width,
y: commonY
};
break;
default:
offsets = {
x: reference2.x,
y: reference2.y
};
}
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
if (mainAxis != null) {
var len = mainAxis === "y" ? "height" : "width";
switch (variation) {
case start:
offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);
break;
case end:
offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);
break;
}
}
return offsets;
}
function detectOverflow(state2, options) {
if (options === void 0) {
options = {};
}
var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state2.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state2.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
var altContext = elementContext === popper ? reference : popper;
var popperRect = state2.rects.popper;
var element = state2.elements[altBoundary ? altContext : elementContext];
var clippingClientRect = getClippingRect(isElement$1(element) ? element : element.contextElement || getDocumentElement(state2.elements.popper), boundary, rootBoundary, strategy);
var referenceClientRect = getBoundingClientRect(state2.elements.reference);
var popperOffsets2 = computeOffsets({
reference: referenceClientRect,
element: popperRect,
strategy: "absolute",
placement
});
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
var overflowOffsets = {
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
};
var offsetData = state2.modifiersData.offset;
if (elementContext === popper && offsetData) {
var offset2 = offsetData[placement];
Object.keys(overflowOffsets).forEach(function(key) {
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
overflowOffsets[key] += offset2[axis] * multiply;
});
}
return overflowOffsets;
}
function computeAutoPlacement(state2, options) {
if (options === void 0) {
options = {};
}
var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
var variation = getVariation(placement);
var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
return getVariation(placement2) === variation;
}) : basePlacements;
var allowedPlacements = placements$1.filter(function(placement2) {
return allowedAutoPlacements.indexOf(placement2) >= 0;
});
if (allowedPlacements.length === 0) {
allowedPlacements = placements$1;
}
var overflows = allowedPlacements.reduce(function(acc, placement2) {
acc[placement2] = detectOverflow(state2, {
placement: placement2,
boundary,
rootBoundary,
padding
})[getBasePlacement$1(placement2)];
return acc;
}, {});
return Object.keys(overflows).sort(function(a2, b) {
return overflows[a2] - overflows[b];
});
}
function getExpandedFallbackPlacements(placement) {
if (getBasePlacement$1(placement) === auto) {
return [];
}
var oppositePlacement = getOppositePlacement(placement);
return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
}
function flip(_ref) {
var state2 = _ref.state, options = _ref.options, name = _ref.name;
if (state2.modifiersData[name]._skip) {
return;
}
var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
var preferredPlacement = state2.options.placement;
var basePlacement = getBasePlacement$1(preferredPlacement);
var isBasePlacement = basePlacement === preferredPlacement;
var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
return acc.concat(getBasePlacement$1(placement2) === auto ? computeAutoPlacement(state2, {
placement: placement2,
boundary,
rootBoundary,
padding,
flipVariations,
allowedAutoPlacements
}) : placement2);
}, []);
var referenceRect = state2.rects.reference;
var popperRect = state2.rects.popper;
var checksMap = /* @__PURE__ */ new Map();
var makeFallbackChecks = true;
var firstFittingPlacement = placements2[0];
for (var i2 = 0; i2 < placements2.length; i2++) {
var placement = placements2[i2];
var _basePlacement = getBasePlacement$1(placement);
var isStartVariation = getVariation(placement) === start;
var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
var len = isVertical ? "width" : "height";
var overflow = detectOverflow(state2, {
placement,
boundary,
rootBoundary,
altBoundary,
padding
});
var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
if (referenceRect[len] > popperRect[len]) {
mainVariationSide = getOppositePlacement(mainVariationSide);
}
var altVariationSide = getOppositePlacement(mainVariationSide);
var checks = [];
if (checkMainAxis) {
checks.push(overflow[_basePlacement] <= 0);
}
if (checkAltAxis) {
checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
}
if (checks.every(function(check) {
return check;
})) {
firstFittingPlacement = placement;
makeFallbackChecks = false;
break;
}
checksMap.set(placement, checks);
}
if (makeFallbackChecks) {
var numberOfChecks = flipVariations ? 3 : 1;
var _loop = function _loop2(_i2) {
var fittingPlacement = placements2.find(function(placement2) {
var checks2 = checksMap.get(placement2);
if (checks2) {
return checks2.slice(0, _i2).every(function(check) {
return check;
});
}
});
if (fittingPlacement) {
firstFittingPlacement = fittingPlacement;
return "break";
}
};
for (var _i = numberOfChecks; _i > 0; _i--) {
var _ret = _loop(_i);
if (_ret === "break") break;
}
}
if (state2.placement !== firstFittingPlacement) {
state2.modifiersData[name]._skip = true;
state2.placement = firstFittingPlacement;
state2.reset = true;
}
}
const flip$1 = {
name: "flip",
enabled: true,
phase: "main",
fn: flip,
requiresIfExists: ["offset"],
data: {
_skip: false
}
};
function getSideOffsets(overflow, rect, preventedOffsets) {
if (preventedOffsets === void 0) {
preventedOffsets = {
x: 0,
y: 0
};
}
return {
top: overflow.top - rect.height - preventedOffsets.y,
right: overflow.right - rect.width + preventedOffsets.x,
bottom: overflow.bottom - rect.height + preventedOffsets.y,
left: overflow.left - rect.width - preventedOffsets.x
};
}
function isAnySideFullyClipped(overflow) {
return [top, right, bottom, left].some(function(side) {
return overflow[side] >= 0;
});
}
function hide(_ref) {
var state2 = _ref.state, name = _ref.name;
var referenceRect = state2.rects.reference;
var popperRect = state2.rects.popper;
var preventedOffsets = state2.modifiersData.preventOverflow;
var referenceOverflow = detectOverflow(state2, {
elementContext: "reference"
});
var popperAltOverflow = detectOverflow(state2, {
altBoundary: true
});
var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
state2.modifiersData[name] = {
referenceClippingOffsets,
popperEscapeOffsets,
isReferenceHidden,
hasPopperEscaped
};
state2.attributes.popper = Object.assign({}, state2.attributes.popper, {
"data-popper-reference-hidden": isReferenceHidden,
"data-popper-escaped": hasPopperEscaped
});
}
const hide$1 = {
name: "hide",
enabled: true,
phase: "main",
requiresIfExists: ["preventOverflow"],
fn: hide
};
function distanceAndSkiddingToXY(placement, rects, offset2) {
var basePlacement = getBasePlacement$1(placement);
var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, {
placement
})) : offset2, skidding = _ref[0], distance = _ref[1];
skidding = skidding || 0;
distance = (distance || 0) * invertDistance;
return [left, right].indexOf(basePlacement) >= 0 ? {
x: distance,
y: skidding
} : {
x: skidding,
y: distance
};
}
function offset(_ref2) {
var state2 = _ref2.state, options = _ref2.options, name = _ref2.name;
var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
var data = placements.reduce(function(acc, placement) {
acc[placement] = distanceAndSkiddingToXY(placement, state2.rects, offset2);
return acc;
}, {});
var _data$state$placement = data[state2.placement], x = _data$state$placement.x, y = _data$state$placement.y;
if (state2.modifiersData.popperOffsets != null) {
state2.modifiersData.popperOffsets.x += x;
state2.modifiersData.popperOffsets.y += y;
}
state2.modifiersData[name] = data;
}
const offset$1 = {
name: "offset",
enabled: true,
phase: "main",
requires: ["popperOffsets"],
fn: offset
};
function popperOffsets(_ref) {
var state2 = _ref.state, name = _ref.name;
state2.modifiersData[name] = computeOffsets({
reference: state2.rects.reference,
element: state2.rects.popper,
strategy: "absolute",
placement: state2.placement
});
}
const popperOffsets$1 = {
name: "popperOffsets",
enabled: true,
phase: "read",
fn: popperOffsets,
data: {}
};
function getAltAxis(axis) {
return axis === "x" ? "y" : "x";
}
function preventOverflow(_ref) {
var state2 = _ref.state, options = _ref.options, name = _ref.name;
var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
var overflow = detectOverflow(state2, {
boundary,
rootBoundary,
padding,
altBoundary
});
var basePlacement = getBasePlacement$1(state2.placement);
var variation = getVariation(state2.placement);
var isBasePlacement = !variation;
var mainAxis = getMainAxisFromPlacement(basePlacement);
var altAxis = getAltAxis(mainAxis);
var popperOffsets2 = state2.modifiersData.popperOffsets;
var referenceRect = state2.rects.reference;
var popperRect = state2.rects.popper;
var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state2.rects, {
placement: state2.placement
})) : tetherOffset;
var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
mainAxis: tetherOffsetValue,
altAxis: tetherOffsetValue
} : Object.assign({
mainAxis: 0,
altAxis: 0
}, tetherOffsetValue);
var offsetModifierState = state2.modifiersData.offset ? state2.modifiersData.offset[state2.placement] : null;
var data = {
x: 0,
y: 0
};
if (!popperOffsets2) {
return;
}
if (checkMainAxis) {
var _offsetModifierState$;
var mainSide = mainAxis === "y" ? top : left;
var altSide = mainAxis === "y" ? bottom : right;
var len = mainAxis === "y" ? "height" : "width";
var offset2 = popperOffsets2[mainAxis];
var min$1 = offset2 + overflow[mainSide];
var max$1 = offset2 - overflow[altSide];
var additive = tether ? -popperRect[len] / 2 : 0;
var minLen = variation === start ? referenceRect[len] : popperRect[len];
var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
var arrowElement = state2.elements.arrow;
var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
width: 0,
height: 0
};
var arrowPaddingObject = state2.modifiersData["arrow#persistent"] ? state2.modifiersData["arrow#persistent"].padding : getFreshSideObject();
var arrowPaddingMin = arrowPaddingObject[mainSide];
var arrowPaddingMax = arrowPaddingObject[altSide];
var arrowLen = within(0, referenceRect[len], arrowRect[len]);
var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
var arrowOffsetParent = state2.elements.arrow && getOffsetParent(state2.elements.arrow);
var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;
var tetherMax = offset2 + maxOffset - offsetModifierValue;
var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1);
popperOffsets2[mainAxis] = preventedOffset;
data[mainAxis] = preventedOffset - offset2;
}
if (checkAltAxis) {
var _offsetModifierState$2;
var _mainSide = mainAxis === "x" ? top : left;
var _altSide = mainAxis === "x" ? bottom : right;
var _offset = popperOffsets2[altAxis];
var _len = altAxis === "y" ? "height" : "width";
var _min = _offset + overflow[_mainSide];
var _max = _offset - overflow[_altSide];
var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
popperOffsets2[altAxis] = _preventedOffset;
data[altAxis] = _preventedOffset - _offset;
}
state2.modifiersData[name] = data;
}
const preventOverflow$1 = {
name: "preventOverflow",
enabled: true,
phase: "main",
fn: preventOverflow,
requiresIfExists: ["offset"]
};
function getHTMLElementScroll(element) {
return {
scrollLeft: element.scrollLeft,
scrollTop: element.scrollTop
};
}
function getNodeScroll(node) {
if (node === getWindow(node) || !isHTMLElement(node)) {
return getWindowScroll(node);
} else {
return getHTMLElementScroll(node);
}
}
function isElementScaled(element) {
var rect = element.getBoundingClientRect();
var scaleX = round(rect.width) / element.offsetWidth || 1;
var scaleY = round(rect.height) / element.offsetHeight || 1;
return scaleX !== 1 || scaleY !== 1;
}
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
if (isFixed === void 0) {
isFixed = false;
}
var isOffsetParentAnElement = isHTMLElement(offsetParent);
var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
var documentElement = getDocumentElement(offsetParent);
var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
var scroll = {
scrollLeft: 0,
scrollTop: 0
};
var offsets = {
x: 0,
y: 0
};
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078
isScrollParent(documentElement)) {
scroll = getNodeScroll(offsetParent);
}
if (isHTMLElement(offsetParent)) {
offsets = getBoundingClientRect(offsetParent, true);
offsets.x += offsetParent.clientLeft;
offsets.y += offsetParent.clientTop;
} else if (documentElement) {
offsets.x = getWindowScrollBarX(documentElement);
}
}
return {
x: rect.left + scroll.scrollLeft - offsets.x,
y: rect.top + scroll.scrollTop - offsets.y,
width: rect.width,
height: rect.height
};
}
function order(modifiers) {
var map = /* @__PURE__ */ new Map();
var visited = /* @__PURE__ */ new Set();
var result = [];
modifiers.forEach(function(modifier) {
map.set(modifier.name, modifier);
});
function sort(modifier) {
visited.add(modifier.name);
var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
requires.forEach(function(dep) {
if (!visited.has(dep)) {
var depModifier = map.get(dep);
if (depModifier) {
sort(depModifier);
}
}
});
result.push(modifier);
}
modifiers.forEach(function(modifier) {
if (!visited.has(modifier.name)) {
sort(modifier);
}
});
return result;
}
function orderModifiers(modifiers) {
var orderedModifiers = order(modifiers);
return modifierPhases.reduce(function(acc, phase) {
return acc.concat(orderedModifiers.filter(function(modifier) {
return modifier.phase === phase;
}));
}, []);
}
function debounce$1(fn2) {
var pending;
return function() {
if (!pending) {
pending = new Promise(function(resolve) {
Promise.resolve().then(function() {
pending = void 0;
resolve(fn2());
});
});
}
return pending;
};
}
function mergeByName(modifiers) {
var merged = modifiers.reduce(function(merged2, current) {
var existing = merged2[current.name];
merged2[current.name] = existing ? Object.assign({}, existing, current, {
options: Object.assign({}, existing.options, current.options),
data: Object.assign({}, existing.data, current.data)
}) : current;
return merged2;
}, {});
return Object.keys(merged).map(function(key) {
return merged[key];
});
}
var DEFAULT_OPTIONS = {
placement: "bottom",
modifiers: [],
strategy: "absolute"
};
function areValidElements() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return !args.some(function(element) {
return !(element && typeof element.getBoundingClientRect === "function");
});
}
function popperGenerator(generatorOptions) {
if (generatorOptions === void 0) {
generatorOptions = {};
}
var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
return function createPopper2(reference2, popper2, options) {
if (options === void 0) {
options = defaultOptions;
}
var state2 = {
placement: "bottom",
orderedModifiers: [],
options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
modifiersData: {},
elements: {
reference: reference2,
popper: popper2
},
attributes: {},
styles: {}
};
var effectCleanupFns = [];
var isDestroyed = false;
var instance = {
state: state2,
setOptions: function setOptions(setOptionsAction) {
var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state2.options) : setOptionsAction;
cleanupModifierEffects();
state2.options = Object.assign({}, defaultOptions, state2.options, options2);
state2.scrollParents = {
reference: isElement$1(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
popper: listScrollParents(popper2)
};
var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state2.options.modifiers)));
state2.orderedModifiers = orderedModifiers.filter(function(m) {
return m.enabled;
});
runModifierEffects();
return instance.update();
},
// Sync update – it will always be executed, even if not necessary. This
// is useful for low frequency updates where sync behavior simplifies the
// logic.
// For high frequency updates (e.g. `resize` and `scroll` events), always
// prefer the async Popper#update method
forceUpdate: function forceUpdate() {
if (isDestroyed) {
return;
}
var _state$elements = state2.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;
if (!areValidElements(reference3, popper3)) {
return;
}
state2.rects = {
reference: getCompositeRect(reference3, getOffsetParent(popper3), state2.options.strategy === "fixed"),
popper: getLayoutRect(popper3)
};
state2.reset = false;
state2.placement = state2.options.placement;
state2.orderedModifiers.forEach(function(modifier) {
return state2.modifiersData[modifier.name] = Object.assign({}, modifier.data);
});
for (var index2 = 0; index2 < state2.orderedModifiers.length; index2++) {
if (state2.reset === true) {
state2.reset = false;
index2 = -1;
continue;
}
var _state$orderedModifie = state2.orderedModifiers[index2], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
if (typeof fn2 === "function") {
state2 = fn2({
state: state2,
options: _options,
name,
instance
}) || state2;
}
}
},
// Async and optimistically optimized update – it will not be executed if
// not necessary (debounced to run at most once-per-tick)
update: debounce$1(function() {
return new Promise(function(resolve) {
instance.forceUpdate();
resolve(state2);
});
}),
destroy: function destroy() {
cleanupModifierEffects();
isDestroyed = true;
}
};
if (!areValidElements(reference2, popper2)) {
return instance;
}
instance.setOptions(options).then(function(state3) {
if (!isDestroyed && options.onFirstUpdate) {
options.onFirstUpdate(state3);
}
});
function runModifierEffects() {
state2.orderedModifiers.forEach(function(_ref) {
var name = _ref.name, _ref$options = _ref.options, options2 = _ref$options === void 0 ? {} : _ref$options, effect3 = _ref.effect;
if (typeof effect3 === "function") {
var cleanupFn = effect3({
state: state2,
name,
instance,
options: options2
});
var noopFn = function noopFn2() {
};
effectCleanupFns.push(cleanupFn || noopFn);
}
});
}
function cleanupModifierEffects() {
effectCleanupFns.forEach(function(fn2) {
return fn2();
});
effectCleanupFns = [];
}
return instance;
};
}
var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
var createPopper = /* @__PURE__ */ popperGenerator({
defaultModifiers
});
var BOX_CLASS = "tippy-box";
var CONTENT_CLASS = "tippy-content";
var BACKDROP_CLASS = "tippy-backdrop";
var ARROW_CLASS = "tippy-arrow";
var SVG_ARROW_CLASS = "tippy-svg-arrow";
var TOUCH_OPTIONS = {
passive: true,
capture: true
};
var TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO2() {
return document.body;
};
function getValueAtIndexOrReturn(value, index2, defaultValue) {
if (Array.isArray(value)) {
var v = value[index2];
return v == null ? Array.isArray(defaultValue) ? defaultValue[index2] : defaultValue : v;
}
return value;
}
function isType(value, type) {
var str = {}.toString.call(value);
return str.indexOf("[object") === 0 && str.indexOf(type + "]") > -1;
}
function invokeWithArgsOrReturn(value, args) {
return typeof value === "function" ? value.apply(void 0, args) : value;
}
function debounce(fn5, ms) {
if (ms === 0) {
return fn5;
}
var timeout;
return function(arg) {
clearTimeout(timeout);
timeout = setTimeout(function() {
fn5(arg);
}, ms);
};
}
function splitBySpaces(value) {
return value.split(/\s+/).filter(Boolean);
}
function normalizeToArray(value) {
return [].concat(value);
}
function pushIfUnique(arr, value) {
if (arr.indexOf(value) === -1) {
arr.push(value);
}
}
function unique(arr) {
return arr.filter(function(item, index2) {
return arr.indexOf(item) === index2;
});
}
function getBasePlacement(placement) {
return placement.split("-")[0];
}
function arrayFrom(value) {
return [].slice.call(value);
}
function removeUndefinedProps(obj) {
return Object.keys(obj).reduce(function(acc, key) {
if (obj[key] !== void 0) {
acc[key] = obj[key];
}
return acc;
}, {});
}
function div() {
return document.createElement("div");
}
function isElement(value) {
return ["Element", "Fragment"].some(function(type) {
return isType(value, type);
});
}
function isNodeList(value) {
return isType(value, "NodeList");
}
function isMouseEvent(value) {
return isType(value, "MouseEvent");
}
function isReferenceElement(value) {
return !!(value && value._tippy && value._tippy.reference === value);
}
function getArrayOfElements(value) {
if (isElement(value)) {
return [value];
}
if (isNodeList(value)) {
return arrayFrom(value);
}
if (Array.isArray(value)) {
return value;
}
return arrayFrom(document.querySelectorAll(value));
}
function setTransitionDuration(els, value) {
els.forEach(function(el) {
if (el) {
el.style.transitionDuration = value + "ms";
}
});
}
function setVisibilityState(els, state2) {
els.forEach(function(el) {
if (el) {
el.setAttribute("data-state", state2);
}
});
}
function getOwnerDocument(elementOrElements) {
var _element$ownerDocumen;
var _normalizeToArray = normalizeToArray(elementOrElements), element = _normalizeToArray[0];
return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;
}
function isCursorOutsideInteractiveBorder(popperTreeData, event) {
var clientX = event.clientX, clientY = event.clientY;
return popperTreeData.every(function(_ref) {
var popperRect = _ref.popperRect, popperState = _ref.popperState, props = _ref.props;
var interactiveBorder = props.interactiveBorder;
var basePlacement = getBasePlacement(popperState.placement);
var offsetData = popperState.modifiersData.offset;
if (!offsetData) {
return true;
}
var topDistance = basePlacement === "bottom" ? offsetData.top.y : 0;
var bottomDistance = basePlacement === "top" ? offsetData.bottom.y : 0;
var leftDistance = basePlacement === "right" ? offsetData.left.x : 0;
var rightDistance = basePlacement === "left" ? offsetData.right.x : 0;
var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;
var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;
var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;
var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;
return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;
});
}
function updateTransitionEndListener(box, action2, listener) {
var method = action2 + "EventListener";
["transitionend", "webkitTransitionEnd"].forEach(function(event) {
box[method](event, listener);
});
}
function actualContains(parent, child2) {
var target = child2;
while (target) {
var _target$getRootNode;
if (parent.contains(target)) {
return true;
}
target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;
}
return false;
}
var currentInput = {
isTouch: false
};
var lastMouseMoveTime = 0;
function onDocumentTouchStart() {
if (currentInput.isTouch) {
return;
}
currentInput.isTouch = true;
if (window.performance) {
document.addEventListener("mousemove", onDocumentMouseMove);
}
}
function onDocumentMouseMove() {
var now = performance.now();
if (now - lastMouseMoveTime < 20) {
currentInput.isTouch = false;
document.removeEventListener("mousemove", onDocumentMouseMove);
}
lastMouseMoveTime = now;
}
function onWindowBlur() {
var activeElement = document.activeElement;
if (isReferenceElement(activeElement)) {
var instance = activeElement._tippy;
if (activeElement.blur && !instance.state.isVisible) {
activeElement.blur();
}
}
}
function bindGlobalEventListeners() {
document.addEventListener("touchstart", onDocumentTouchStart, TOUCH_OPTIONS);
window.addEventListener("blur", onWindowBlur);
}
var isBrowser = typeof window !== "undefined" && typeof document !== "undefined";
var isIE11 = isBrowser ? (
// @ts-ignore
!!window.msCrypto
) : false;
var pluginProps = {
animateFill: false,
followCursor: false,
inlinePositioning: false,
sticky: false
};
var renderProps = {
allowHTML: false,
animation: "fade",
arrow: true,
content: "",
inertia: false,
maxWidth: 350,
role: "tooltip",
theme: "",
zIndex: 9999
};
var defaultProps = Object.assign({
appendTo: TIPPY_DEFAULT_APPEND_TO,
aria: {
content: "auto",
expanded: "auto"
},
delay: 0,
duration: [300, 250],
getReferenceClientRect: null,
hideOnClick: true,
ignoreAttributes: false,
interactive: false,
interactiveBorder: 2,
interactiveDebounce: 0,
moveTransition: "",
offset: [0, 10],
onAfterUpdate: function onAfterUpdate() {
},
onBeforeUpdate: function onBeforeUpdate() {
},
onCreate: function onCreate() {
},
onDestroy: function onDestroy() {
},
onHidden: function onHidden() {
},
onHide: function onHide() {
},
onMount: function onMount2() {
},
onShow: function onShow() {
},
onShown: function onShown() {
},
onTrigger: function onTrigger() {
},
onUntrigger: function onUntrigger() {
},
onClickOutside: function onClickOutside() {
},
placement: "top",
plugins: [],
popperOptions: {},
render: null,
showOnCreate: false,
touch: true,
trigger: "mouseenter focus",
triggerTarget: null
}, pluginProps, renderProps);
var defaultKeys = Object.keys(defaultProps);
var setDefaultProps = function setDefaultProps2(partialProps) {
var keys = Object.keys(partialProps);
keys.forEach(function(key) {
defaultProps[key] = partialProps[key];
});
};
function getExtendedPassedProps(passedProps) {
var plugins = passedProps.plugins || [];
var pluginProps2 = plugins.reduce(function(acc, plugin) {
var name = plugin.name, defaultValue = plugin.defaultValue;
if (name) {
var _name;
acc[name] = passedProps[name] !== void 0 ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;
}
return acc;
}, {});
return Object.assign({}, passedProps, pluginProps2);
}
function getDataAttributeProps(reference2, plugins) {
var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {
plugins
}))) : defaultKeys;
var props = propKeys.reduce(function(acc, key) {
var valueAsString = (reference2.getAttribute("data-tippy-" + key) || "").trim();
if (!valueAsString) {
return acc;
}
if (key === "content") {
acc[key] = valueAsString;
} else {
try {
acc[key] = JSON.parse(valueAsString);
} catch (e2) {
acc[key] = valueAsString;
}
}
return acc;
}, {});
return props;
}
function evaluateProps(reference2, props) {
var out = Object.assign({}, props, {
content: invokeWithArgsOrReturn(props.content, [reference2])
}, props.ignoreAttributes ? {} : getDataAttributeProps(reference2, props.plugins));
out.aria = Object.assign({}, defaultProps.aria, out.aria);
out.aria = {
expanded: out.aria.expanded === "auto" ? props.interactive : out.aria.expanded,
content: out.aria.content === "auto" ? props.interactive ? null : "describedby" : out.aria.content
};
return out;
}
var innerHTML = function innerHTML2() {
return "innerHTML";
};
function dangerouslySetInnerHTML(element, html) {
element[innerHTML()] = html;
}
function createArrowElement(value) {
var arrow2 = div();
if (value === true) {
arrow2.className = ARROW_CLASS;
} else {
arrow2.className = SVG_ARROW_CLASS;
if (isElement(value)) {
arrow2.appendChild(value);
} else {
dangerouslySetInnerHTML(arrow2, value);
}
}
return arrow2;
}
function setContent(content, props) {
if (isElement(props.content)) {
dangerouslySetInnerHTML(content, "");
content.appendChild(props.content);
} else if (typeof props.content !== "function") {
if (props.allowHTML) {
dangerouslySetInnerHTML(content, props.content);
} else {
content.textContent = props.content;
}
}
}
function getChildren(popper2) {
var box = popper2.firstElementChild;
var boxChildren = arrayFrom(box.children);
return {
box,
content: boxChildren.find(function(node) {
return node.classList.contains(CONTENT_CLASS);
}),
arrow: boxChildren.find(function(node) {
return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);
}),
backdrop: boxChildren.find(function(node) {
return node.classList.contains(BACKDROP_CLASS);
})
};
}
function render(instance) {
var popper2 = div();
var box = div();
box.className = BOX_CLASS;
box.setAttribute("data-state", "hidden");
box.setAttribute("tabindex", "-1");
var content = div();
content.className = CONTENT_CLASS;
content.setAttribute("data-state", "hidden");
setContent(content, instance.props);
popper2.appendChild(box);
box.appendChild(content);
onUpdate(instance.props, instance.props);
function onUpdate(prevProps, nextProps) {
var _getChildren = getChildren(popper2), box2 = _getChildren.box, content2 = _getChildren.content, arrow2 = _getChildren.arrow;
if (nextProps.theme) {
box2.setAttribute("data-theme", nextProps.theme);
} else {
box2.removeAttribute("data-theme");
}
if (typeof nextProps.animation === "string") {
box2.setAttribute("data-animation", nextProps.animation);
} else {
box2.removeAttribute("data-animation");
}
if (nextProps.inertia) {
box2.setAttribute("data-inertia", "");
} else {
box2.removeAttribute("data-inertia");
}
box2.style.maxWidth = typeof nextProps.maxWidth === "number" ? nextProps.maxWidth + "px" : nextProps.maxWidth;
if (nextProps.role) {
box2.setAttribute("role", nextProps.role);
} else {
box2.removeAttribute("role");
}
if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {
setContent(content2, instance.props);
}
if (nextProps.arrow) {
if (!arrow2) {
box2.appendChild(createArrowElement(nextProps.arrow));
} else if (prevProps.arrow !== nextProps.arrow) {
box2.removeChild(arrow2);
box2.appendChild(createArrowElement(nextProps.arrow));
}
} else if (arrow2) {
box2.removeChild(arrow2);
}
}
return {
popper: popper2,
onUpdate
};
}
render.$$tippy = true;
var idCounter = 1;
var mouseMoveListeners = [];
var mountedInstances = [];
function createTippy(reference2, passedProps) {
var props = evaluateProps(reference2, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps))));
var showTimeout;
var hideTimeout;
var scheduleHideAnimationFrame;
var isVisibleFromClick = false;
var didHideDueToDocumentMouseDown = false;
var didTouchMove = false;
var ignoreOnFirstUpdate = false;
var lastTriggerEvent;
var currentTransitionEndListener;
var onFirstUpdate;
var listeners = [];
var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);
var currentTarget;
var id = idCounter++;
var popperInstance = null;
var plugins = unique(props.plugins);
var state2 = {
// Is the instance currently enabled?
isEnabled: true,
// Is the tippy currently showing and not transitioning out?
isVisible: false,
// Has the instance been destroyed?
isDestroyed: false,
// Is the tippy currently mounted to the DOM?
isMounted: false,
// Has the tippy finished transitioning in?
isShown: false
};
var instance = {
// properties
id,
reference: reference2,
popper: div(),
popperInstance,
props,
state: state2,
plugins,
// methods
clearDelayTimeouts,
setProps,
setContent: setContent2,
show,
hide: hide2,
hideWithInteractivity,
enable,
disable,
unmount,
destroy
};
if (!props.render) {
return instance;
}
var _props$render = props.render(instance), popper2 = _props$render.popper, onUpdate = _props$render.onUpdate;
popper2.setAttribute("data-tippy-root", "");
popper2.id = "tippy-" + instance.id;
instance.popper = popper2;
reference2._tippy = instance;
popper2._tippy = instance;
var pluginsHooks = plugins.map(function(plugin) {
return plugin.fn(instance);
});
var hasAriaExpanded = reference2.hasAttribute("aria-expanded");
addListeners();
handleAriaExpandedAttribute();
handleStyles();
invokeHook("onCreate", [instance]);
if (props.showOnCreate) {
scheduleShow();
}
popper2.addEventListener("mouseenter", function() {
if (instance.props.interactive && instance.state.isVisible) {
instance.clearDelayTimeouts();
}
});
popper2.addEventListener("mouseleave", function() {
if (instance.props.interactive && instance.props.trigger.indexOf("mouseenter") >= 0) {
getDocument().addEventListener("mousemove", debouncedOnMouseMove);
}
});
return instance;
function getNormalizedTouchSettings() {
var touch = instance.props.touch;
return Array.isArray(touch) ? touch : [touch, 0];
}
function getIsCustomTouchBehavior() {
return getNormalizedTouchSettings()[0] === "hold";
}
function getIsDefaultRenderFn() {
var _instance$props$rende;
return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);
}
function getCurrentTarget() {
return currentTarget || reference2;
}
function getDocument() {
var parent = getCurrentTarget().parentNode;
return parent ? getOwnerDocument(parent) : document;
}
function getDefaultTemplateChildren() {
return getChildren(popper2);
}
function getDelay(isShow) {
if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === "focus") {
return 0;
}
return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);
}
function handleStyles(fromHide) {
if (fromHide === void 0) {
fromHide = false;
}
popper2.style.pointerEvents = instance.props.interactive && !fromHide ? "" : "none";
popper2.style.zIndex = "" + instance.props.zIndex;
}
function invokeHook(hook, args, shouldInvokePropsHook) {
if (shouldInvokePropsHook === void 0) {
shouldInvokePropsHook = true;
}
pluginsHooks.forEach(function(pluginHooks) {
if (pluginHooks[hook]) {
pluginHooks[hook].apply(pluginHooks, args);
}
});
if (shouldInvokePropsHook) {
var _instance$props;
(_instance$props = instance.props)[hook].apply(_instance$props, args);
}
}
function handleAriaContentAttribute() {
var aria = instance.props.aria;
if (!aria.content) {
return;
}
var attr = "aria-" + aria.content;
var id2 = popper2.id;
var nodes = normalizeToArray(instance.props.triggerTarget || reference2);
nodes.forEach(function(node) {
var currentValue = node.getAttribute(attr);
if (instance.state.isVisible) {
node.setAttribute(attr, currentValue ? currentValue + " " + id2 : id2);
} else {
var nextValue = currentValue && currentValue.replace(id2, "").trim();
if (nextValue) {
node.setAttribute(attr, nextValue);
} else {
node.removeAttribute(attr);
}
}
});
}
function handleAriaExpandedAttribute() {
if (hasAriaExpanded || !instance.props.aria.expanded) {
return;
}
var nodes = normalizeToArray(instance.props.triggerTarget || reference2);
nodes.forEach(function(node) {
if (instance.props.interactive) {
node.setAttribute("aria-expanded", instance.state.isVisible && node === getCurrentTarget() ? "true" : "false");
} else {
node.removeAttribute("aria-expanded");
}
});
}
function cleanupInteractiveMouseListeners() {
getDocument().removeEventListener("mousemove", debouncedOnMouseMove);
mouseMoveListeners = mouseMoveListeners.filter(function(listener) {
return listener !== debouncedOnMouseMove;
});
}
function onDocumentPress(event) {
if (currentInput.isTouch) {
if (didTouchMove || event.type === "mousedown") {
return;
}
}
var actualTarget = event.composedPath && event.composedPath()[0] || event.target;
if (instance.props.interactive && actualContains(popper2, actualTarget)) {
return;
}
if (normalizeToArray(instance.props.triggerTarget || reference2).some(function(el) {
return actualContains(el, actualTarget);
})) {
if (currentInput.isTouch) {
return;
}
if (instance.state.isVisible && instance.props.trigger.indexOf("click") >= 0) {
return;
}
} else {
invokeHook("onClickOutside", [instance, event]);
}
if (instance.props.hideOnClick === true) {
instance.clearDelayTimeouts();
instance.hide();
didHideDueToDocumentMouseDown = true;
setTimeout(function() {
didHideDueToDocumentMouseDown = false;
});
if (!instance.state.isMounted) {
removeDocumentPress();
}
}
}
function onTouchMove() {
didTouchMove = true;
}
function onTouchStart() {
didTouchMove = false;
}
function addDocumentPress() {
var doc = getDocument();
doc.addEventListener("mousedown", onDocumentPress, true);
doc.addEventListener("touchend", onDocumentPress, TOUCH_OPTIONS);
doc.addEventListener("touchstart", onTouchStart, TOUCH_OPTIONS);
doc.addEventListener("touchmove", onTouchMove, TOUCH_OPTIONS);
}
function removeDocumentPress() {
var doc = getDocument();
doc.removeEventListener("mousedown", onDocumentPress, true);
doc.removeEventListener("touchend", onDocumentPress, TOUCH_OPTIONS);
doc.removeEventListener("touchstart", onTouchStart, TOUCH_OPTIONS);
doc.removeEventListener("touchmove", onTouchMove, TOUCH_OPTIONS);
}
function onTransitionedOut(duration, callback) {
onTransitionEnd(duration, function() {
if (!instance.state.isVisible && popper2.parentNode && popper2.parentNode.contains(popper2)) {
callback();
}
});
}
function onTransitionedIn(duration, callback) {
onTransitionEnd(duration, callback);
}
function onTransitionEnd(duration, callback) {
var box = getDefaultTemplateChildren().box;
function listener(event) {
if (event.target === box) {
updateTransitionEndListener(box, "remove", listener);
callback();
}
}
if (duration === 0) {
return callback();
}
updateTransitionEndListener(box, "remove", currentTransitionEndListener);
updateTransitionEndListener(box, "add", listener);
currentTransitionEndListener = listener;
}
function on(eventType, handler, options) {
if (options === void 0) {
options = false;
}
var nodes = normalizeToArray(instance.props.triggerTarget || reference2);
nodes.forEach(function(node) {
node.addEventListener(eventType, handler, options);
listeners.push({
node,
eventType,
handler,
options
});
});
}
function addListeners() {
if (getIsCustomTouchBehavior()) {
on("touchstart", onTrigger2, {
passive: true
});
on("touchend", onMouseLeave, {
passive: true
});
}
splitBySpaces(instance.props.trigger).forEach(function(eventType) {
if (eventType === "manual") {
return;
}
on(eventType, onTrigger2);
switch (eventType) {
case "mouseenter":
on("mouseleave", onMouseLeave);
break;
case "focus":
on(isIE11 ? "focusout" : "blur", onBlurOrFocusOut);
break;
case "focusin":
on("focusout", onBlurOrFocusOut);
break;
}
});
}
function removeListeners() {
listeners.forEach(function(_ref) {
var node = _ref.node, eventType = _ref.eventType, handler = _ref.handler, options = _ref.options;
node.removeEventListener(eventType, handler, options);
});
listeners = [];
}
function onTrigger2(event) {
var _lastTriggerEvent;
var shouldScheduleClickHide = false;
if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {
return;
}
var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === "focus";
lastTriggerEvent = event;
currentTarget = event.currentTarget;
handleAriaExpandedAttribute();
if (!instance.state.isVisible && isMouseEvent(event)) {
mouseMoveListeners.forEach(function(listener) {
return listener(event);
});
}
if (event.type === "click" && (instance.props.trigger.indexOf("mouseenter") < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {
shouldScheduleClickHide = true;
} else {
scheduleShow(event);
}
if (event.type === "click") {
isVisibleFromClick = !shouldScheduleClickHide;
}
if (shouldScheduleClickHide && !wasFocused) {
scheduleHide(event);
}
}
function onMouseMove(event) {
var target = event.target;
var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper2.contains(target);
if (event.type === "mousemove" && isCursorOverReferenceOrPopper) {
return;
}
var popperTreeData = getNestedPopperTree().concat(popper2).map(function(popper22) {
var _instance$popperInsta;
var instance2 = popper22._tippy;
var state22 = (_instance$popperInsta = instance2.popperInstance) == null ? void 0 : _instance$popperInsta.state;
if (state22) {
return {
popperRect: popper22.getBoundingClientRect(),
popperState: state22,
props
};
}
return null;
}).filter(Boolean);
if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {
cleanupInteractiveMouseListeners();
scheduleHide(event);
}
}
function onMouseLeave(event) {
var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf("click") >= 0 && isVisibleFromClick;
if (shouldBail) {
return;
}
if (instance.props.interactive) {
instance.hideWithInteractivity(event);
return;
}
scheduleHide(event);
}
function onBlurOrFocusOut(event) {
if (instance.props.trigger.indexOf("focusin") < 0 && event.target !== getCurrentTarget()) {
return;
}
if (instance.props.interactive && event.relatedTarget && popper2.contains(event.relatedTarget)) {
return;
}
scheduleHide(event);
}
function isEventListenerStopped(event) {
return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf("touch") >= 0 : false;
}
function createPopperInstance() {
destroyPopperInstance();
var _instance$props2 = instance.props, popperOptions = _instance$props2.popperOptions, placement = _instance$props2.placement, offset2 = _instance$props2.offset, getReferenceClientRect = _instance$props2.getReferenceClientRect, moveTransition = _instance$props2.moveTransition;
var arrow2 = getIsDefaultRenderFn() ? getChildren(popper2).arrow : null;
var computedReference = getReferenceClientRect ? {
getBoundingClientRect: getReferenceClientRect,
contextElement: getReferenceClientRect.contextElement || getCurrentTarget()
} : reference2;
var tippyModifier = {
name: "$$tippy",
enabled: true,
phase: "beforeWrite",
requires: ["computeStyles"],
fn: function fn5(_ref2) {
var state22 = _ref2.state;
if (getIsDefaultRenderFn()) {
var _getDefaultTemplateCh = getDefaultTemplateChildren(), box = _getDefaultTemplateCh.box;
["placement", "reference-hidden", "escaped"].forEach(function(attr) {
if (attr === "placement") {
box.setAttribute("data-placement", state22.placement);
} else {
if (state22.attributes.popper["data-popper-" + attr]) {
box.setAttribute("data-" + attr, "");
} else {
box.removeAttribute("data-" + attr);
}
}
});
state22.attributes.popper = {};
}
}
};
var modifiers = [{
name: "offset",
options: {
offset: offset2
}
}, {
name: "preventOverflow",
options: {
padding: {
top: 2,
bottom: 2,
left: 5,
right: 5
}
}
}, {
name: "flip",
options: {
padding: 5
}
}, {
name: "computeStyles",
options: {
adaptive: !moveTransition
}
}, tippyModifier];
if (getIsDefaultRenderFn() && arrow2) {
modifiers.push({
name: "arrow",
options: {
element: arrow2,
padding: 3
}
});
}
modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);
instance.popperInstance = createPopper(computedReference, popper2, Object.assign({}, popperOptions, {
placement,
onFirstUpdate,
modifiers
}));
}
function destroyPopperInstance() {
if (instance.popperInstance) {
instance.popperInstance.destroy();
instance.popperInstance = null;
}
}
function mount2() {
var appendTo = instance.props.appendTo;
var parentNode;
var node = getCurrentTarget();
if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === "parent") {
parentNode = node.parentNode;
} else {
parentNode = invokeWithArgsOrReturn(appendTo, [node]);
}
if (!parentNode.contains(popper2)) {
parentNode.appendChild(popper2);
}
instance.state.isMounted = true;
createPopperInstance();
}
function getNestedPopperTree() {
return arrayFrom(popper2.querySelectorAll("[data-tippy-root]"));
}
function scheduleShow(event) {
instance.clearDelayTimeouts();
if (event) {
invokeHook("onTrigger", [instance, event]);
}
addDocumentPress();
var delay = getDelay(true);
var _getNormalizedTouchSe = getNormalizedTouchSettings(), touchValue = _getNormalizedTouchSe[0], touchDelay = _getNormalizedTouchSe[1];
if (currentInput.isTouch && touchValue === "hold" && touchDelay) {
delay = touchDelay;
}
if (delay) {
showTimeout = setTimeout(function() {
instance.show();
}, delay);
} else {
instance.show();
}
}
function scheduleHide(event) {
instance.clearDelayTimeouts();
invokeHook("onUntrigger", [instance, event]);
if (!instance.state.isVisible) {
removeDocumentPress();
return;
}
if (instance.props.trigger.indexOf("mouseenter") >= 0 && instance.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(event.type) >= 0 && isVisibleFromClick) {
return;
}
var delay = getDelay(false);
if (delay) {
hideTimeout = setTimeout(function() {
if (instance.state.isVisible) {
instance.hide();
}
}, delay);
} else {
scheduleHideAnimationFrame = requestAnimationFrame(function() {
instance.hide();
});
}
}
function enable() {
instance.state.isEnabled = true;
}
function disable() {
instance.hide();
instance.state.isEnabled = false;
}
function clearDelayTimeouts() {
clearTimeout(showTimeout);
clearTimeout(hideTimeout);
cancelAnimationFrame(scheduleHideAnimationFrame);
}
function setProps(partialProps) {
if (instance.state.isDestroyed) {
return;
}
invokeHook("onBeforeUpdate", [instance, partialProps]);
removeListeners();
var prevProps = instance.props;
var nextProps = evaluateProps(reference2, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {
ignoreAttributes: true
}));
instance.props = nextProps;
addListeners();
if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {
cleanupInteractiveMouseListeners();
debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);
}
if (prevProps.triggerTarget && !nextProps.triggerTarget) {
normalizeToArray(prevProps.triggerTarget).forEach(function(node) {
node.removeAttribute("aria-expanded");
});
} else if (nextProps.triggerTarget) {
reference2.removeAttribute("aria-expanded");
}
handleAriaExpandedAttribute();
handleStyles();
if (onUpdate) {
onUpdate(prevProps, nextProps);
}
if (instance.popperInstance) {
createPopperInstance();
getNestedPopperTree().forEach(function(nestedPopper) {
requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);
});
}
invokeHook("onAfterUpdate", [instance, partialProps]);
}
function setContent2(content) {
instance.setProps({
content
});
}
function show() {
var isAlreadyVisible = instance.state.isVisible;
var isDestroyed = instance.state.isDestroyed;
var isDisabled = !instance.state.isEnabled;
var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;
var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);
if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {
return;
}
if (getCurrentTarget().hasAttribute("disabled")) {
return;
}
invokeHook("onShow", [instance], false);
if (instance.props.onShow(instance) === false) {
return;
}
instance.state.isVisible = true;
if (getIsDefaultRenderFn()) {
popper2.style.visibility = "visible";
}
handleStyles();
addDocumentPress();
if (!instance.state.isMounted) {
popper2.style.transition = "none";
}
if (getIsDefaultRenderFn()) {
var _getDefaultTemplateCh2 = getDefaultTemplateChildren(), box = _getDefaultTemplateCh2.box, content = _getDefaultTemplateCh2.content;
setTransitionDuration([box, content], 0);
}
onFirstUpdate = function onFirstUpdate2() {
var _instance$popperInsta2;
if (!instance.state.isVisible || ignoreOnFirstUpdate) {
return;
}
ignoreOnFirstUpdate = true;
void popper2.offsetHeight;
popper2.style.transition = instance.props.moveTransition;
if (getIsDefaultRenderFn() && instance.props.animation) {
var _getDefaultTemplateCh3 = getDefaultTemplateChildren(), _box = _getDefaultTemplateCh3.box, _content = _getDefaultTemplateCh3.content;
setTransitionDuration([_box, _content], duration);
setVisibilityState([_box, _content], "visible");
}
handleAriaContentAttribute();
handleAriaExpandedAttribute();
pushIfUnique(mountedInstances, instance);
(_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();
invokeHook("onMount", [instance]);
if (instance.props.animation && getIsDefaultRenderFn()) {
onTransitionedIn(duration, function() {
instance.state.isShown = true;
invokeHook("onShown", [instance]);
});
}
};
mount2();
}
function hide2() {
var isAlreadyHidden = !instance.state.isVisible;
var isDestroyed = instance.state.isDestroyed;
var isDisabled = !instance.state.isEnabled;
var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);
if (isAlreadyHidden || isDestroyed || isDisabled) {
return;
}
invokeHook("onHide", [instance], false);
if (instance.props.onHide(instance) === false) {
return;
}
instance.state.isVisible = false;
instance.state.isShown = false;
ignoreOnFirstUpdate = false;
isVisibleFromClick = false;
if (getIsDefaultRenderFn()) {
popper2.style.visibility = "hidden";
}
cleanupInteractiveMouseListeners();
removeDocumentPress();
handleStyles(true);
if (getIsDefaultRenderFn()) {
var _getDefaultTemplateCh4 = getDefaultTemplateChildren(), box = _getDefaultTemplateCh4.box, content = _getDefaultTemplateCh4.content;
if (instance.props.animation) {
setTransitionDuration([box, content], duration);
setVisibilityState([box, content], "hidden");
}
}
handleAriaContentAttribute();
handleAriaExpandedAttribute();
if (instance.props.animation) {
if (getIsDefaultRenderFn()) {
onTransitionedOut(duration, instance.unmount);
}
} else {
instance.unmount();
}
}
function hideWithInteractivity(event) {
getDocument().addEventListener("mousemove", debouncedOnMouseMove);
pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
debouncedOnMouseMove(event);
}
function unmount() {
if (instance.state.isVisible) {
instance.hide();
}
if (!instance.state.isMounted) {
return;
}
destroyPopperInstance();
getNestedPopperTree().forEach(function(nestedPopper) {
nestedPopper._tippy.unmount();
});
if (popper2.parentNode) {
popper2.parentNode.removeChild(popper2);
}
mountedInstances = mountedInstances.filter(function(i2) {
return i2 !== instance;
});
instance.state.isMounted = false;
invokeHook("onHidden", [instance]);
}
function destroy() {
if (instance.state.isDestroyed) {
return;
}
instance.clearDelayTimeouts();
instance.unmount();
removeListeners();
delete reference2._tippy;
instance.state.isDestroyed = true;
invokeHook("onDestroy", [instance]);
}
}
function tippy(targets, optionalProps) {
if (optionalProps === void 0) {
optionalProps = {};
}
var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);
bindGlobalEventListeners();
var passedProps = Object.assign({}, optionalProps, {
plugins
});
var elements = getArrayOfElements(targets);
var instances = elements.reduce(function(acc, reference2) {
var instance = reference2 && createTippy(reference2, passedProps);
if (instance) {
acc.push(instance);
}
return acc;
}, []);
return isElement(targets) ? instances[0] : instances;
}
tippy.defaultProps = defaultProps;
tippy.setDefaultProps = setDefaultProps;
tippy.currentInput = currentInput;
Object.assign({}, applyStyles$1, {
effect: function effect2(_ref) {
var state2 = _ref.state;
var initialStyles = {
popper: {
position: state2.options.strategy,
left: "0",
top: "0",
margin: "0"
},
arrow: {
position: "absolute"
},
reference: {}
};
Object.assign(state2.elements.popper.style, initialStyles.popper);
state2.styles = initialStyles;
if (state2.elements.arrow) {
Object.assign(state2.elements.arrow.style, initialStyles.arrow);
}
}
});
tippy.setDefaultProps({
render
});
var on_click$5 = (_, editor, $$props) => {
editor == null ? void 0 : editor.insertAtCursor($$props.display);
};
var root_1$1 = /* @__PURE__ */ template(`<button class="svelte-1ewjpur"> </button>`);
var root$4 = /* @__PURE__ */ template(`<button class="svelte-1ewjpur"> </button> <div class="variants svelte-1ewjpur"></div>`, 1);
function KanaButton($$anchor, $$props) {
push($$props, true);
let instance;
let button;
let variantsContainer;
let active = state(false);
onMount(() => {
instance = tippy(button, {
content: variantsContainer,
theme: "kana",
interactive: true,
offset: [0, 0],
placement: "right",
onShow: () => {
set(active, true);
},
onHide: () => {
set(active, false);
}
});
});
const editor = getContext("editor");
var fragment = root$4();
var button_1 = first_child(fragment);
bind_this(button_1, ($$value) => button = $$value, () => button);
button_1.__click = [on_click$5, editor, $$props];
var text = child(button_1);
var div2 = sibling(button_1, 2);
bind_this(div2, ($$value) => variantsContainer = $$value, () => variantsContainer);
each(div2, 21, () => $$props.variants, index, ($$anchor2, variant) => {
var button_2 = root_1$1();
button_2.__click = () => {
if (editor) {
editor.insertAtCursor(get(variant));
}
instance.hide();
};
var text_1 = child(button_2);
template_effect(() => set_text(text_1, get(variant)));
append($$anchor2, button_2);
});
template_effect(() => {
toggle_class(button_1, "active", get(active));
set_text(text, $$props.display);
});
append($$anchor, fragment);
pop();
}
delegate(["click"]);
var e = { dragStart: true }, t = (e2, t2, n2) => Math.min(Math.max(e2, t2), n2), n = (e2) => "string" == typeof e2, r = ([e2, t2], n2, r2) => {
const o2 = (e3, t3) => 0 === t3 ? 0 : Math.ceil(e3 / t3) * t3;
return [o2(n2, e2), o2(r2, t2)];
};
var o = (e2, t2) => e2.some((e3) => t2.some((t3) => e3.contains(t3)));
function i(e2, t2) {
if (void 0 === e2) return;
if (s(e2)) return e2.getBoundingClientRect();
if ("object" == typeof e2) {
const { top: t3 = 0, left: n3 = 0, right: r2 = 0, bottom: o2 = 0 } = e2;
return { top: t3, right: window.innerWidth - r2, bottom: window.innerHeight - o2, left: n3 };
}
if ("parent" === e2) return t2.parentNode.getBoundingClientRect();
const n2 = document.querySelector(e2);
if (null === n2) throw new Error("The selector provided for bound doesn't exists in the document.");
return n2.getBoundingClientRect();
}
var a = (e2, t2, n2) => e2.style.setProperty(t2, n2), s = (e2) => e2 instanceof HTMLElement, d = (d2, l = {}) => {
let c, u, { bounds: f, axis: g = "both", gpuAcceleration: h = true, legacyTranslate: p = true, transform: m, applyUserSelectHack: w = true, disabled: y = false, ignoreMultitouch: b = false, recomputeBounds: v = e, grid: x, position: E, cancel: S, handle: A, defaultClass: C = "neodrag", defaultClassDragging: N = "neodrag-dragging", defaultClassDragged: D = "neodrag-dragged", defaultPosition: M = { x: 0, y: 0 }, onDragStart: B, onDrag: $, onDragEnd: R } = l, H = false, L = 0, T = 0, X = 0, Y = 0, q = 0, P = 0, { x: k, y: z } = E ? { x: (E == null ? void 0 : E.x) ?? 0, y: (E == null ? void 0 : E.y) ?? 0 } : M;
V(k, z);
let I, U, W, j, F, G = "", J = !!E;
v = { ...e, ...v };
let K = /* @__PURE__ */ new Set();
const O = document.body.style, Q = d2.classList;
function V(e2 = L, t2 = T) {
if (!m) {
if (p) {
let n2 = `${+e2}px, ${+t2}px`;
return a(d2, "transform", h ? `translate3d(${n2}, 0)` : `translate(${n2})`);
}
return a(d2, "translate", `${+e2}px ${+t2}px ${h ? "1px" : ""}`);
}
const r2 = m({ offsetX: e2, offsetY: t2, rootNode: d2 });
n(r2) && a(d2, "transform", r2);
}
const Z = (e2, t2) => {
const n2 = { offsetX: L, offsetY: T, rootNode: d2, currentNode: F };
d2.dispatchEvent(new CustomEvent(e2, { detail: n2 })), t2 == null ? void 0 : t2(n2);
};
const _ = addEventListener;
_("pointerdown", te, false), _("pointerup", ne, false), _("pointermove", re, false), a(d2, "touch-action", "none");
const ee = () => {
let e2 = d2.offsetWidth / U.width;
return isNaN(e2) && (e2 = 1), e2;
};
function te(e2) {
if (y) return;
if (2 === e2.button) return;
if (K.add(e2.pointerId), b && K.size > 1) return e2.preventDefault();
if (v.dragStart && (I = i(f, d2)), n(A) && n(S) && A === S) throw new Error("`handle` selector can't be same as `cancel` selector");
if (Q.add(C), W = function(e3, t3) {
if (!e3) return [t3];
if (s(e3)) return [e3];
if (Array.isArray(e3)) return e3;
const n2 = t3.querySelectorAll(e3);
if (null === n2) throw new Error("Selector passed for `handle` option should be child of the element on which the action is applied");
return Array.from(n2.values());
}(A, d2), j = function(e3, t3) {
if (!e3) return [];
if (s(e3)) return [e3];
if (Array.isArray(e3)) return e3;
const n2 = t3.querySelectorAll(e3);
if (null === n2) throw new Error("Selector passed for `cancel` option should be child of the element on which the action is applied");
return Array.from(n2.values());
}(S, d2), c = /(both|x)/.test(g), u = /(both|y)/.test(g), o(j, W)) throw new Error("Element being dragged can't be a child of the element on which `cancel` is applied");
const t2 = e2.composedPath()[0];
if (!W.some((e3) => {
var _a;
return e3.contains(t2) || ((_a = e3.shadowRoot) == null ? void 0 : _a.contains(t2));
}) || o(j, [t2])) return;
F = 1 === W.length ? d2 : W.find((e3) => e3.contains(t2)), H = true, U = d2.getBoundingClientRect(), w && (G = O.userSelect, O.userSelect = "none"), Z("neodrag:start", B);
const { clientX: r2, clientY: a2 } = e2, l2 = ee();
c && (X = r2 - k / l2), u && (Y = a2 - z / l2), I && (q = r2 - U.left, P = a2 - U.top);
}
function ne(e2) {
K.delete(e2.pointerId), H && (v.dragEnd && (I = i(f, d2)), Q.remove(N), Q.add(D), w && (O.userSelect = G), Z("neodrag:end", R), c && (X = L), u && (Y = T), H = false);
}
function re(e2) {
if (!H || b && K.size > 1) return;
v.drag && (I = i(f, d2)), Q.add(N), e2.preventDefault(), U = d2.getBoundingClientRect();
let n2 = e2.clientX, o2 = e2.clientY;
const a2 = ee();
if (I) {
const e3 = { left: I.left + q, top: I.top + P, right: I.right + q - U.width, bottom: I.bottom + P - U.height };
n2 = t(n2, e3.left, e3.right), o2 = t(o2, e3.top, e3.bottom);
}
if (Array.isArray(x)) {
let [e3, t2] = x;
if (isNaN(+e3) || e3 < 0) throw new Error("1st argument of `grid` must be a valid positive number");
if (isNaN(+t2) || t2 < 0) throw new Error("2nd argument of `grid` must be a valid positive number");
let i2 = n2 - X, s2 = o2 - Y;
[i2, s2] = r([e3 / a2, t2 / a2], i2, s2), n2 = X + i2, o2 = Y + s2;
}
c && (L = Math.round((n2 - X) * a2)), u && (T = Math.round((o2 - Y) * a2)), k = L, z = T, Z("neodrag", $), V();
}
return { destroy: () => {
const e2 = removeEventListener;
e2("pointerdown", te, false), e2("pointerup", ne, false), e2("pointermove", re, false);
}, update: (t2) => {
var _a, _b;
g = t2.axis || "both", y = t2.disabled ?? false, b = t2.ignoreMultitouch ?? false, A = t2.handle, f = t2.bounds, v = t2.recomputeBounds ?? e, S = t2.cancel, w = t2.applyUserSelectHack ?? true, x = t2.grid, h = t2.gpuAcceleration ?? true, p = t2.legacyTranslate ?? true, m = t2.transform;
const n2 = Q.contains(D);
Q.remove(C, D), C = t2.defaultClass ?? "neodrag", N = t2.defaultClassDragging ?? "neodrag-dragging", D = t2.defaultClassDragged ?? "neodrag-dragged", Q.add(C), n2 && Q.add(D), J && (k = L = ((_a = t2.position) == null ? void 0 : _a.x) ?? L, z = T = ((_b = t2.position) == null ? void 0 : _b.y) ?? T, V());
} };
};
var on_dblclick = (_, shown) => shown(false);
var root$3 = /* @__PURE__ */ template(`<div class="float-menu svelte-1rgb4pt" role="dialog" title="ドラッグして移動、ダブルクリックして隠す"><!></div>`);
function FloatDialog($$anchor, $$props) {
push($$props, true);
let shown = prop($$props, "shown", 15, false);
var div2 = root$3();
div2.__dblclick = [on_dblclick, shown];
var node = child(div2);
snippet(node, () => $$props.children);
action(div2, ($$node) => d($$node));
append($$anchor, div2);
pop();
}
delegate(["dblclick"]);
var on_click$4 = (e2, editor, $$props) => {
e2.stopPropagation();
if (editor) {
if ($$props.text instanceof Function) {
editor.replaceSelection($$props.text);
} else {
editor.insertAtCursor($$props.text);
}
}
};
var root$2 = /* @__PURE__ */ template(`<button class="svelte-18a6ijc"> </button>`);
function InsertButton($$anchor, $$props) {
push($$props, true);
let color = prop($$props, "color", 3, "black"), display = prop($$props, "display", 19, () => $$props.text instanceof Function ? $$props.text("…") : $$props.text);
const editor = getContext("editor");
var button = root$2();
button.__click = [on_click$4, editor, $$props];
button.__contextmenu = function(...$$args) {
var _a;
(_a = $$props.oncontextmenu) == null ? void 0 : _a.apply(this, $$args);
};
var text_1 = child(button);
template_effect(() => {
set_attribute(button, "data-color", color());
set_attribute(button, "title", $$props.title);
set_text(text_1, display());
});
append($$anchor, button);
pop();
}
delegate(["click", "contextmenu"]);
var root_4$2 = /* @__PURE__ */ template(`<div class="row"><!></div>`);
var root_5 = /* @__PURE__ */ template(`<div class="row"></div>`);
var root_2$3 = /* @__PURE__ */ template(`<div class="menu-content-container svelte-1c61vln"><h2 class="svelte-1c61vln">變體假名</h2> <div class="kana-table svelte-1c61vln"></div> <div class="panel svelte-1c61vln"><!> <!> <div style="flex-grow: 1"></div> <!> <!></div></div>`);
var on_click$3 = (_, shown) => set(shown, true);
var root_6$1 = /* @__PURE__ */ template(`<button class="show-button svelte-1c61vln" title="變體假名パネルを開く"><div class="kana svelte-1c61vln">𛀂</div></button>`);
function VariantKana($$anchor, $$props) {
push($$props, true);
setContext("editor", $$props.editor);
let shown = state(false);
const KANA_TABLE = [
["あ", ["𛀂", "𛀅", "𛀃", "𛀄"]],
["い", ["𛀆", "𛀇", "𛀈", "𛀉"]],
["う", ["𛀊", "𛀋", "𛀌", "𛀍", "𛀎"]],
[
"え",
["𛀁", "𛀏", "𛀐", "𛀑", "𛀒", "𛀓"]
],
["お", ["𛀔", "𛀕", "𛀖"]],
[
"か",
[
"𛀗",
"𛀘",
"𛀙",
"𛀚",
"𛀛",
"𛀢",
"𛀜",
"𛀝",
"𛀞",
"𛀟",
"𛀠",
"𛀡"
]
],
[
"き",
[
"𛀣",
"𛀤",
"𛀥",
"𛀦",
"𛀻",
"𛀧",
"𛀨",
"𛀩",
"𛀪"
]
],
[
"く",
["𛀫", "𛀬", "𛀭", "𛀮", "𛀯", "𛀰", "𛀱"]
],
[
"け",
["𛀳", "𛀲", "𛀢", "𛀴", "𛀵", "𛀶", "𛀷"]
],
["こ", ["𛀸", "𛂘", "𛀹", "𛀻", "𛀺"]],
[
"さ",
[
"𛀼",
"𛀽",
"𛀾",
"𛀿",
"𛁀",
"𛁁",
"𛁂",
"𛁃"
]
],
[
"し",
["𛁄", "𛁅", "𛁆", "𛁇", "𛁈", "𛁉"]
],
[
"す",
[
"𛁊",
"𛁋",
"𛁌",
"𛁍",
"𛁎",
"𛁏",
"𛁐",
"𛁑"
]
],
["せ", ["𛁒", "𛁓", "𛁔", "𛁕", "𛁖"]],
[
"そ",
["𛁗", "𛁘", "𛁙", "𛁚", "𛁛", "𛁜", "𛁝"]
],
["た", ["𛁞", "𛁟", "𛁠", "𛁡"]],
[
"ち",
["𛁢", "𛁣", "𛁤", "𛁥", "𛁦", "𛁧", "𛁨"]
],
["つ", ["𛁩", "𛁪", "𛁫", "𛁬", "𛁭"]],
[
"て",
[
"𛁮",
"𛁯",
"𛁰",
"𛁱",
"𛁲",
"𛁳",
"𛁴",
"𛁵",
"𛁶",
"𛂎"
]
],
[
"と",
[
"𛁷",
"𛁸",
"𛁹",
"𛁺",
"𛁻",
"𛁼",
"𛁽",
"𛁭"
]
],
[
"な",
[
"𛁾",
"𛁿",
"𛂀",
"𛂁",
"𛂂",
"𛂃",
"𛂄",
"𛂅",
"𛂆"
]
],
[
"に",
[
"𛂇",
"𛂈",
"𛂉",
"𛂊",
"𛂋",
"𛂌",
"𛂍",
"𛂎"
]
],
["ぬ", ["𛂏", "𛂐", "𛂑"]],
[
"ね",
["𛂒", "𛂓", "𛂔", "𛂕", "𛂖", "𛂗", "𛂘"]
],
["の", ["𛂙", "𛂚", "𛂛", "𛂜", "𛂝"]],
[
"は",
[
"𛂞",
"𛂟",
"𛂠",
"𛂡",
"𛂢",
"𛂣",
"𛂤",
"𛂥",
"𛂦",
"𛂧",
"𛂨"
]
],
[
"ひ",
["𛂩", "𛂪", "𛂫", "𛂬", "𛂭", "𛂮", "𛂯"]
],
["ふ", ["𛂰", "𛂱", "𛂲"]],
[
"へ",
["𛂳", "𛂴", "𛂵", "𛂶", "𛂷", "𛂸", "𛂹"]
],
[
"ほ",
[
"𛂺",
"𛂻",
"𛂼",
"𛂽",
"𛂾",
"𛂿",
"𛃀",
"𛃁"
]
],
[
"ま",
[
"𛃂",
"𛃃",
"𛃄",
"𛃅",
"𛃆",
"𛃇",
"𛃈",
"𛃖"
]
],
[
"み",
["𛃉", "𛃊", "𛃋", "𛃌", "𛃍", "𛃎", "𛃏"]
],
[
"む",
["𛃐", "𛃑", "𛃒", "𛃓", "𛄝", "𛄞"]
],
["め", ["𛃔", "𛃕", "𛃖"]],
[
"も",
[
"𛃗",
"𛃘",
"𛃙",
"𛃚",
"𛃛",
"𛃜",
"𛄝",
"𛄞"
]
],
[
"や",
["𛃝", "𛃞", "𛃟", "𛃠", "𛃡", "𛃢"]
],
null,
["ゆ", ["𛃣", "𛃤", "𛃥", "𛃦"]],
null,
[
"よ",
["𛃧", "𛃨", "𛃩", "𛃪", "𛃫", "𛃬"]
],
["ら", ["𛃭", "𛃮", "𛃯", "𛃰"]],
[
"り",
["𛃱", "𛃲", "𛃳", "𛃴", "𛃵", "𛃶", "𛃷"]
],
[
"る",
["𛃸", "𛃹", "𛃺", "𛃻", "𛃼", "𛃽"]
],
["れ", ["𛃾", "𛃿", "𛄀", "𛄁"]],
[
"ろ",
["𛄂", "𛄃", "𛄄", "𛄅", "𛄆", "𛄇"]
],
["わ", ["𛄈", "𛄉", "𛄊", "𛄋", "𛄌"]],
["ゐ", ["𛄍", "𛄎", "𛄏", "𛄐", "𛄑"]],
null,
["ゑ", ["𛄒", "𛄓", "𛄔", "𛄕"]],
[
"を",
[
"𛄖",
"𛄗",
"𛄘",
"𛄙",
"𛄚",
"𛄛",
"𛄜",
"𛀅"
]
],
["ん", ["𛄝", "𛄞"]],
null,
null,
null,
null
];
var fragment = comment();
var node = first_child(fragment);
if_block(
node,
() => get(shown),
($$anchor2) => {
FloatDialog($$anchor2, {
get shown() {
return get(shown);
},
set shown($$value) {
set(shown, proxy($$value));
},
children: ($$anchor3, $$slotProps) => {
var div2 = root_2$3();
var div_1 = sibling(child(div2), 2);
each(div_1, 21, () => KANA_TABLE, index, ($$anchor4, k) => {
var fragment_2 = comment();
var node_1 = first_child(fragment_2);
if_block(
node_1,
() => get(k),
($$anchor5) => {
var div_2 = root_4$2();
const computed_const = /* @__PURE__ */ derived(() => {
const [kana, variants] = get(k);
return { kana, variants };
});
var node_2 = child(div_2);
KanaButton(node_2, {
get display() {
return get(computed_const).kana;
},
get variants() {
return get(computed_const).variants;
}
});
append($$anchor5, div_2);
},
($$anchor5) => {
var div_3 = root_5();
append($$anchor5, div_3);
}
);
append($$anchor4, fragment_2);
});
var div_4 = sibling(div_1, 2);
var node_3 = child(div_4);
InsertButton(node_3, {
color: "green",
display: "◌゙",
text: "゙",
title: "濁点"
});
var node_4 = sibling(node_3, 2);
InsertButton(node_4, {
color: "green",
display: "◌゚",
text: "゚",
title: "半濁点"
});
var node_5 = sibling(node_4, 4);
InsertButton(node_5, {
color: "green",
display: "子",
text: "子",
title: "「ネ」の異体字(漢字で代用)"
});
var node_6 = sibling(node_5, 2);
InsertButton(node_6, {
color: "green",
display: "井",
text: "井",
title: "「井」の異体字(漢字で代用)"
});
append($$anchor3, div2);
},
$$slots: { default: true }
});
},
($$anchor2) => {
var button = root_6$1();
button.__click = [on_click$3, shown];
append($$anchor2, button);
}
);
append($$anchor, fragment);
pop();
}
delegate(["click"]);
const GROUPED_VARIANTS = {
"者→者": [
["者", ["者", "者︀"]],
["諸", ["諸", "諸︀"]],
["著", ["著", "著︀"]],
["箸", [null, "箸󠄁"]],
["緒", ["緖", "緖"]],
["暑", ["暑", "暑︀"]],
["渚", ["渚", "渚︀"]],
["煮", ["煮", "煮︀"]],
["署", ["署", "署︀"]],
["猪", ["猪", "猪︀"]],
["都", ["都", "都︀"]],
["賭", [null, "賭󠄁"]],
["儲", [null, "儲󠄁"]],
["曙", [null, "曙󠄁"]],
["偖", [null, "偖󠄀"]],
["堵", [null, "堵󠄁"]],
["奢", ["奢", "奢︀"]],
["屠", ["屠", "屠︀"]],
["楮", [null, "楮󠄀"]],
["躇", [null, "躇󠄀"]],
["闍", [null, "闍󠄀"]]
],
"毎→每": [
["毎", ["每", null]],
["侮", ["侮", "侮︀"]],
["悔", ["悔", "悔︀"]],
["敏", ["敏", "敏︀"]],
["梅", ["梅", "梅︀"]],
["海", ["海", "海︀"]],
["繁", ["繁", "繁︀"]]
],
"礻→示": [
["神", ["神", "神︀"]],
["祥", ["祥", "祥︀"]],
["福", ["福", "福︀"]],
["視", ["視", "視︀"]],
["社", ["社", "社︀"]],
["祉", ["祉", "祉︀"]],
["祈", ["祈", "祈︀"]],
["祐", ["祐", "祐︀"]],
["祖", ["祖", "祖︀"]],
["祝", ["祝", "祝︀"]],
["禍", ["禍", "禍︀"]],
["禎", ["禎", "禎︀"]]
],
"真→眞": [
["直", ["直", "直︁"]],
["真", ["眞", "眞"]],
["顛", ["顚", "顚"]]
],
"开→幵": [
["研", ["硏", "硏"]],
["妍", ["姸", "姸"]],
["笄", ["筓", "筓"]]
],
"并→幷": [
["并", ["幷", "幷"]],
["併", ["倂", "倂"]],
["胼", ["腁", "腁"]],
["駢", ["騈", "騈"]],
["迸", ["逬", "逬"]],
["瓶", ["甁", "甁"]],
["屏", ["屛", "屛"]],
["塀", ["塀", "塀︀"]]
],
"𢀳→皀": [
["即", ["卽", "卽"]],
["節", ["節", "節︀"]],
["既", ["旣", "旣"]],
["郷", ["鄕", "鄕"]],
["慨", ["慨", "慨︀"]],
["概", ["槪", "槪"]],
["㮣", ["槩", "槩"]]
],
"曽→曾": [
["曽", ["曾", "曾"]],
["僧", ["僧", "僧︀"]],
["層", ["層", "層︀"]],
["憎", ["憎", "憎︀"]],
["贈", ["贈", "贈︀"]],
["増", ["增", "增"]]
],
"黒→黑": [
["黒", ["黑", "黑"]],
["墨", ["墨", "墨︀"]],
["薫", ["薰", "薰"]]
],
"東→柬": [
["練", ["練", "練︁"]],
["錬", ["鍊", "鍊"]],
["欄", ["欄", "欄︀"]]
],
"⺈→刀": [
["免", ["免", "免︀"]],
// ["逸", ["逸", null]],
// ["晩", ["晚", null]],
// ["勉", ["勉", null]],
["絶", ["絕", "絕"]]
],
"廿→艹": [
["漢", ["漢", "漢︀"]],
["難", ["難", "難︀"]],
["勤", ["勤", "勤︀"]],
["嘆", ["嘆", "嘆︀"]]
],
"兑→兌": [
["兑", ["兌", "兌"]],
["悦", ["悅", "悅"]],
["説", ["說", "說"]],
["脱", ["脫", "脫"]],
["鋭", ["銳", "銳"]],
["閲", ["閱", "閱"]]
],
"戸→戶": [
["戸", ["戶", "戶"]],
["戻", ["戾", "戾"]],
["涙", ["淚", "淚"]]
],
"豕→豖": [["琢", ["琢", "琢︀"]]],
"卑→卑": [
["卑", ["卑", "卑︀"]],
["碑", ["碑", "碑︀"]]
],
"匂→匃": [
["喝", ["喝", "喝︀"]],
["褐", ["褐", "褐︀"]],
["謁", ["謁", "謁︀"]],
["掲", ["揭", "揭"]],
["渇", ["渴", "渴"]]
],
"大→犬": [
["器", ["器", "器︀"]],
["突", ["突", "突︀"]],
["臭", ["臭", "臭︀"]],
["戻", ["戾", "戾"]],
["涙", ["淚", "淚"]],
["類", ["類", "類︀"]]
],
"㇏→乀󠄀": [
["又", ["又󠄂", "又󠄂"]],
["交", ["交󠄁", "交󠄁"]],
["文", [null, "文󠄁"]],
["史", [null, "史󠄁"]]
],
"冫⇆𰀪": [
["羽", ["羽", "羽󠄀"]],
["習", [null, "習󠄁"]],
["冬", ["冬", "冬󠄀"]]
],
"亡→亡󠄁": [["亡", [null, "亡󠄁"]]],
"丷→八": [
["遂", [null, "遂󠄂"]],
["半", [null, "半󠄁"]],
["肖", [null, "肖󠄁"]],
["酋", [null, "酋󠄁"]],
["益", ["益", "益︀"]]
],
"己→巳": [
["記", [null, "記󠄂"]],
["起", [null, "起󠄁"]]
],
"丶→丩": [["並", ["並", "並︀"]]],
"辶→辶󠄀": [["近", [null, "近󠄁"]]],
"爫→爪": [["採", [null, "採󠄁"]]],
"月→丹": [
["丹", [null, "丹󠄁"]],
["青", ["靑", "靑"]],
["精", [null, "精󠄀"]],
["晴", [null, "晴󠄀"]],
["睛", [null, "睛󠄀"]]
],
"𫩏→中": [
["告", ["吿", "吿"]],
["舎", ["舍", "舍"]],
["周", ["周", "周︀"]]
],
"人→入": [
["全", [null, "全󠄁"]],
["内", ["內", "內"]]
]
};
var root_2$2 = /* @__PURE__ */ template(`<button class="svelte-1m4k62d"> </button>`);
var root$1 = /* @__PURE__ */ template(`<button class="type svelte-1m4k62d"> </button> <div class="variants svelte-1m4k62d"></div>`, 1);
function InsertButtonVariantKanji($$anchor, $$props) {
push($$props, true);
let instance;
let button;
let variantsContainer;
let active = state(false);
onMount(() => {
instance = tippy(button, {
content: variantsContainer,
theme: "kana",
interactive: true,
offset: [0, 0],
placement: "auto",
onShow: () => {
set(active, true);
},
onHide: () => {
set(active, false);
}
});
});
const editor = getContext("editor");
var fragment = root$1();
var button_1 = first_child(fragment);
bind_this(button_1, ($$value) => button = $$value, () => button);
const class_directive = /* @__PURE__ */ derived(() => $$props.variants.some(([display, _v]) => $$props.selection.includes(display)));
template_effect(() => toggle_class(button_1, "selected", get(class_directive)));
var text = child(button_1);
var div2 = sibling(button_1, 2);
bind_this(div2, ($$value) => variantsContainer = $$value, () => variantsContainer);
const $$array = () => $$props.variants;
each(div2, 21, $$array, index, ($$anchor2, $$item) => {
let display = () => get($$item)[0];
let variant = () => get($$item)[1];
var fragment_1 = comment();
var node = first_child(fragment_1);
if_block(node, variant, ($$anchor3) => {
var button_2 = root_2$2();
button_2.__click = () => {
if (editor) {
editor.insertAtCursor(variant());
}
instance == null ? void 0 : instance.hide();
};
const class_directive_1 = /* @__PURE__ */ derived(() => $$props.selection.includes(display()));
template_effect(() => toggle_class(button_2, "selected", get(class_directive_1)));
var text_1 = child(button_2);
template_effect(() => set_text(text_1, `${display() ?? ""}→${variant() ?? ""}`));
append($$anchor3, button_2);
});
append($$anchor2, fragment_1);
});
template_effect(() => {
toggle_class(button_1, "active", get(active));
set_text(text, $$props.display);
});
append($$anchor, fragment);
pop();
}
delegate(["click"]);
const preferences = (() => {
let highlight = state(localStorage.getItem("highlight-variant-kanji") === "true");
return {
get highlight() {
return get(highlight);
},
set highlight(value) {
set(highlight, proxy(value));
localStorage.setItem("highlight-variant-kanji", value.toString());
}
};
})();
var root_4$1 = /* @__PURE__ */ template(`<hr class="svelte-9lvbl8"> <div class="panel svelte-9lvbl8"></div>`, 1);
var root_2$1 = /* @__PURE__ */ template(`<div class="menu-content-container svelte-9lvbl8"><h2 class="svelte-9lvbl8">異體漢字</h2> <label class="svelte-9lvbl8"><input type="checkbox" name="highlight"> <span>異體字をハイライト</span></label> <select class="svelte-9lvbl8"><option>異体字セレクタのみ</option><option>CJK互換漢字のみ</option><option>CJK互換漢字優先</option></select> <div class="panel svelte-9lvbl8"><!> <!></div> <!></div>`);
var on_click$2 = (_, shown) => set(shown, true);
var root_6 = /* @__PURE__ */ template(`<button class="show-button svelte-9lvbl8" title="變體假名パネルを開く"><div class="icon svelte-9lvbl8">異</div></button>`);
function VariantKanji($$anchor, $$props) {
push($$props, true);
setContext("editor", $$props.editor);
let shown = state(false);
const VARIANTS = [
{
traditional: "敎",
simplified: "教",
color: "blue"
}
];
let inputMode = state(proxy($$props.editor instanceof KojiEditor ? "compatibility-first" : "variant-selector-only"));
function selectVariant(compatibility, variantSelector) {
switch (get(inputMode)) {
case "compatibility-only":
return compatibility || null;
case "variant-selector-only":
return variantSelector || null;
case "compatibility-first":
return compatibility || variantSelector;
}
}
user_effect(() => {
for (const { simplified } of VARIANTS) {
if ($$props.editor.segments.includes(simplified)) {
$$props.editor.markText(simplified);
}
}
for (const [_key, variants] of Object.entries(GROUPED_VARIANTS)) {
for (const [display, _variant] of variants) {
if ($$props.editor.segments.includes(display)) {
$$props.editor.markText(display);
}
}
}
});
user_effect(() => {
$$props.editor.toggleClass("display-variant-highlight", preferences.highlight);
});
let selectedVariants = /* @__PURE__ */ derived(() => [
...[...Object.values(GROUPED_VARIANTS)].flat(),
...VARIANTS.map(({ traditional, simplified }) => [simplified, traditional])
].filter(([key, variants]) => segment($$props.editor.selectedText).includes(key)).map(([key, variants]) => [
key,
selectVariant(variants[0], variants[1])
]).filter(([_, variant]) => variant));
var fragment = comment();
var node = first_child(fragment);
if_block(
node,
() => get(shown),
($$anchor2) => {
FloatDialog($$anchor2, {
get shown() {
return get(shown);
},
set shown($$value) {
set(shown, proxy($$value));
},
children: ($$anchor3, $$slotProps) => {
var div2 = root_2$1();
var label = sibling(child(div2), 2);
var input = child(label);
var select = sibling(label, 2);
var option = child(select);
option.value = null == (option.__value = "variant-selector-only") ? "" : "variant-selector-only";
var option_1 = sibling(option);
option_1.value = null == (option_1.__value = "compatibility-only") ? "" : "compatibility-only";
var option_2 = sibling(option_1);
option_2.value = null == (option_2.__value = "compatibility-first") ? "" : "compatibility-first";
var div_1 = sibling(select, 2);
var node_1 = child(div_1);
each(node_1, 17, () => Object.entries(GROUPED_VARIANTS), index, ($$anchor4, $$item) => {
let key = () => get($$item)[0];
let variants = () => get($$item)[1];
var variants_1 = /* @__PURE__ */ derived(() => variants().map(([
display,
[compatibility, variantSelector]
]) => [
display,
selectVariant(compatibility, variantSelector)
]));
InsertButtonVariantKanji($$anchor4, {
get display() {
return key();
},
get variants() {
return get(variants_1);
},
get selection() {
return $$props.editor.selectedText;
}
});
});
var node_2 = sibling(node_1, 2);
var variants_2 = /* @__PURE__ */ derived(() => VARIANTS.map(({ traditional, simplified }) => [simplified, traditional]));
InsertButtonVariantKanji(node_2, {
display: "其ノ他",
get variants() {
return get(variants_2);
},
get selection() {
return $$props.editor.selectedText;
}
});
var node_3 = sibling(div_1, 2);
if_block(node_3, () => get(selectedVariants).length > 0, ($$anchor4) => {
var fragment_3 = root_4$1();
var div_2 = sibling(first_child(fragment_3), 2);
each(div_2, 21, () => get(selectedVariants), index, ($$anchor5, $$item) => {
let key = () => get($$item)[0];
let variant = () => get($$item)[1];
var display_1 = /* @__PURE__ */ derived(() => `${key()}→${variant()}`);
var title = /* @__PURE__ */ derived(() => `「${key()}」の異體字`);
InsertButton($$anchor5, {
color: "orange",
get display() {
return get(display_1);
},
text: (selectedText) => segment(selectedText).map((segment2) => segment2 === key() ? variant() : segment2).join(""),
get title() {
return get(title);
}
});
});
append($$anchor4, fragment_3);
});
bind_checked(input, () => preferences.highlight, ($$value) => preferences.highlight = $$value);
bind_select_value(select, () => get(inputMode), ($$value) => set(inputMode, $$value));
append($$anchor3, div2);
},
$$slots: { default: true }
});
},
($$anchor2) => {
var button = root_6();
button.__click = [on_click$2, shown];
append($$anchor2, button);
}
);
append($$anchor, fragment);
pop();
}
delegate(["click"]);
var _GM = /* @__PURE__ */ (() => typeof GM != "undefined" ? GM : void 0)();
var on_click$1 = (_, textValue, $$props, colorValue, displayValue, editing) => {
var _a, _b;
if (get(textValue)) {
(_a = $$props.onedit) == null ? void 0 : _a.call($$props, get(colorValue), get(textValue), get(displayValue));
set(editing, false);
} else {
(_b = $$props.ondelete) == null ? void 0 : _b.call($$props);
}
};
var root = /* @__PURE__ */ template(`<input type="text" title="入力文字(必須、空欄で削除)" class="svelte-h6zyeb"> <input type="text" title="表示文字" class="svelte-h6zyeb"> <select title="文字色" class="svelte-h6zyeb"><option>black</option><option>green</option><option>blue</option><option>red</option><option>pink</option><option>gray</option></select> <button>OK</button>`, 1);
function InsertButtonEdit($$anchor, $$props) {
push($$props, true);
let color = prop($$props, "color", 3, "black"), display = prop($$props, "display", 19, () => $$props.text);
let editing = state(false);
let textValue = state(proxy($$props.text));
let displayValue = state(proxy(display()));
let colorValue = state(proxy(color()));
var fragment = root();
var input = first_child(fragment);
var input_1 = sibling(input, 2);
var select = sibling(input_1, 2);
var option = child(select);
option.value = null == (option.__value = "black") ? "" : "black";
var option_1 = sibling(option);
option_1.value = null == (option_1.__value = "green") ? "" : "green";
var option_2 = sibling(option_1);
option_2.value = null == (option_2.__value = "blue") ? "" : "blue";
var option_3 = sibling(option_2);
option_3.value = null == (option_3.__value = "red") ? "" : "red";
var option_4 = sibling(option_3);
option_4.value = null == (option_4.__value = "pink") ? "" : "pink";
var option_5 = sibling(option_4);
option_5.value = null == (option_5.__value = "gray") ? "" : "gray";
var button = sibling(select, 2);
button.__click = [
on_click$1,
textValue,
$$props,
colorValue,
displayValue,
editing
];
bind_value(input, () => get(textValue), ($$value) => set(textValue, $$value));
bind_value(input_1, () => get(displayValue), ($$value) => set(displayValue, $$value));
bind_select_value(select, () => get(colorValue), ($$value) => set(colorValue, $$value));
append($$anchor, fragment);
pop();
}
delegate(["click"]);
function CustomInsertButton($$anchor, $$props) {
push($$props, true);
let color = prop($$props, "color", 3, "black"), display = prop($$props, "display", 19, () => $$props.text);
let editing = state(false);
proxy($$props.text);
var fragment = comment();
var node = first_child(fragment);
if_block(
node,
() => get(editing),
($$anchor2) => {
InsertButtonEdit($$anchor2, {
get color() {
return color();
},
get text() {
return $$props.text;
},
get display() {
return display();
},
onedit: (color2, text, display2) => {
var _a;
(_a = $$props.onedit) == null ? void 0 : _a.call($$props, color2, text, display2);
set(editing, false);
},
ondelete: () => {
var _a;
(_a = $$props.ondelete) == null ? void 0 : _a.call($$props);
set(editing, false);
}
});
},
($$anchor2) => {
InsertButton($$anchor2, {
get color() {
return color();
},
get text() {
return $$props.text;
},
get display() {
return display();
},
oncontextmenu: (e2) => {
e2.preventDefault();
set(editing, true);
}
});
}
);
append($$anchor, fragment);
pop();
}
var root_3 = /* @__PURE__ */ template(`<div class="panel svelte-1l9kdai"><h3 class="svelte-1l9kdai">頁注</h3> <!> <!> <!> <!> <!> <!> <!></div> <div class="panel svelte-1l9kdai"><h3 class="svelte-1l9kdai">音注</h3> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!></div> <div class="panel svelte-1l9kdai"><h3 class="svelte-1l9kdai">返点</h3> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!></div> <div class="panel svelte-1l9kdai"><h3 class="svelte-1l9kdai">註釋</h3> <!> <!> <!></div>`, 1);
var root_4 = /* @__PURE__ */ template(`<div class="panel svelte-1l9kdai"><h3 class="svelte-1l9kdai">傍点</h3> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <h3 class="svelte-1l9kdai">ルビー</h3> <!> <h3 class="svelte-1l9kdai">註釋</h3> <!> <!></div>`);
var on_click = (_, editingCustom) => {
set(editingCustom, !get(editingCustom));
};
var root_2 = /* @__PURE__ */ template(`<div class="panels"><!> <!> <div class="panel svelte-1l9kdai"><h3 class="svelte-1l9kdai">記号</h3> <!> <!> <!> <!> <!> <!> <!> <!> <!></div> <div class="panel svelte-1l9kdai"><h3 class="svelte-1l9kdai">踊字</h3> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!></div> <div class="panel svelte-1l9kdai"><h3 class="svelte-1l9kdai">合字</h3> <!> <!> <!> <!> <!> <!> <!> <!> <h3 class="svelte-1l9kdai">其他</h3> <button class="svelte-1l9kdai">カスタム</button> <!></div></div>`);
var on_click_1 = (_, shown) => set(shown, true);
var root_8 = /* @__PURE__ */ template(`<button class="show-button svelte-1l9kdai" title="翻刻ツールボックスを開く"><img alt="Honkoku" class="svelte-1l9kdai"></button>`);
function MainMenu($$anchor, $$props) {
push($$props, true);
setContext("editor", $$props.editor);
let shown = state(false);
let editingCustom = state(false);
let customButtons = state(proxy([]));
let customText = state("");
let customColor = "black";
let customDisplay = state("");
user_effect(() => {
set(customDisplay, proxy(get(customText)));
});
(async () => {
set(customButtons, proxy(JSON.parse(await _GM.getValue("customButtons", "[]"))));
})();
user_effect(() => {
_GM.setValue("customButtons", JSON.stringify(get(customButtons))).then();
});
user_effect(() => {
if (get(editingCustom)) {
set(customText, proxy($$props.editor.selectedText));
}
});
var fragment = comment();
var node = first_child(fragment);
if_block(
node,
() => get(shown),
($$anchor2) => {
FloatDialog($$anchor2, {
get shown() {
return get(shown);
},
set shown($$value) {
set(shown, proxy($$value));
},
children: ($$anchor3, $$slotProps) => {
var div2 = root_2();
var node_1 = child(div2);
if_block(node_1, () => $$props.platform === "honkoku", ($$anchor4) => {
var fragment_2 = root_3();
var div_1 = first_child(fragment_2);
var node_2 = sibling(child(div_1), 2);
InsertButton(node_2, { color: "green", text: "【左頁】" });
var node_3 = sibling(node_2, 2);
InsertButton(node_3, { color: "green", text: "【左丁】" });
var node_4 = sibling(node_3, 2);
InsertButton(node_4, { color: "green", text: "【右頁】" });
var node_5 = sibling(node_4, 2);
InsertButton(node_5, { color: "green", text: "【右丁】" });
var node_6 = sibling(node_5, 2);
InsertButton(node_6, { color: "red", text: "【上段】" });
var node_7 = sibling(node_6, 2);
InsertButton(node_7, { color: "red", text: "【中段】" });
var node_8 = sibling(node_7, 2);
InsertButton(node_8, { color: "red", text: "【下段】" });
var div_2 = sibling(div_1, 2);
var node_9 = sibling(child(div_2), 2);
InsertButton(node_9, { color: "gray", text: (t2) => ` ̄${t2}` });
var node_10 = sibling(node_9, 2);
InsertButton(node_10, { color: "green", text: " ̄ハ", display: "ハ" });
var node_11 = sibling(node_10, 2);
InsertButton(node_11, { color: "green", text: " ̄モ", display: "モ" });
var node_12 = sibling(node_11, 2);
InsertButton(node_12, { color: "green", text: " ̄ヲ", display: "ヲ" });
var node_13 = sibling(node_12, 2);
InsertButton(node_13, { color: "green", text: " ̄ヲバ", display: "ヲバ" });
var node_14 = sibling(node_13, 2);
InsertButton(node_14, { color: "green", text: " ̄カ", display: "カ" });
var node_15 = sibling(node_14, 2);
InsertButton(node_15, { color: "green", text: " ̄ガ", display: "ガ" });
var node_16 = sibling(node_15, 2);
InsertButton(node_16, { color: "green", text: " ̄ノ", display: "ノ" });
var node_17 = sibling(node_16, 2);
InsertButton(node_17, { color: "green", text: " ̄ニ", display: "ニ" });
var node_18 = sibling(node_17, 2);
InsertButton(node_18, { color: "green", text: " ̄ヘ", display: "ヘ" });
var node_19 = sibling(node_18, 2);
InsertButton(node_19, { color: "green", text: " ̄ノミ", display: "ノミ" });
var node_20 = sibling(node_19, 2);
InsertButton(node_20, { color: "green", text: " ̄ト", display: "ト" });
var node_21 = sibling(node_20, 2);
InsertButton(node_21, { color: "blue", text: " ̄ス", display: "ス" });
var node_22 = sibling(node_21, 2);
InsertButton(node_22, { color: "blue", text: " ̄スル", display: "ス" });
var node_23 = sibling(node_22, 2);
InsertButton(node_23, { color: "blue", text: " ̄タル", display: "タル" });
var node_24 = sibling(node_23, 2);
InsertButton(node_24, { color: "blue", text: " ̄タリ", display: "タリ" });
var node_25 = sibling(node_24, 2);
InsertButton(node_25, { color: "blue", text: " ̄ナリ", display: "ナリ" });
var node_26 = sibling(node_25, 2);
InsertButton(node_26, { color: "blue", text: " ̄ナル", display: "ナル" });
var node_27 = sibling(node_26, 2);
InsertButton(node_27, { color: "red", text: " ̄レバ", display: "レバ" });
var div_3 = sibling(div_2, 2);
var node_28 = sibling(child(div_3), 2);
InsertButton(node_28, { color: "red", text: "_レ", display: "レ" });
var node_29 = sibling(node_28, 2);
InsertButton(node_29, { color: "blue", text: "_一", display: "一" });
var node_30 = sibling(node_29, 2);
InsertButton(node_30, { color: "blue", text: "_二", display: "二" });
var node_31 = sibling(node_30, 2);
InsertButton(node_31, { color: "blue", text: "_三", display: "三" });
var node_32 = sibling(node_31, 2);
InsertButton(node_32, { color: "blue", text: "_四", display: "四" });
var node_33 = sibling(node_32, 2);
InsertButton(node_33, { color: "green", text: "_上", display: "上" });
var node_34 = sibling(node_33, 2);
InsertButton(node_34, { color: "green", text: "_中", display: "中" });
var node_35 = sibling(node_34, 2);
InsertButton(node_35, { color: "green", text: "_下", display: "下" });
var node_36 = sibling(node_35, 2);
InsertButton(node_36, { color: "pink", text: "_甲", display: "甲" });
var node_37 = sibling(node_36, 2);
InsertButton(node_37, { color: "pink", text: "_乙", display: "乙" });
var node_38 = sibling(node_37, 2);
InsertButton(node_38, { color: "pink", text: "_丙", display: "丙" });
var node_39 = sibling(node_38, 2);
InsertButton(node_39, { color: "pink", text: "_丁", display: "丁" });
var node_40 = sibling(node_39, 2);
InsertButton(node_40, { color: "pink", text: "_天", display: "天" });
var node_41 = sibling(node_40, 2);
InsertButton(node_41, { color: "pink", text: "_地", display: "地" });
var node_42 = sibling(node_41, 2);
InsertButton(node_42, { color: "pink", text: "_人", display: "人" });
var node_43 = sibling(node_42, 2);
InsertButton(node_43, { color: "red", text: "_一レ", display: "一レ" });
var node_44 = sibling(node_43, 2);
InsertButton(node_44, { color: "red", text: "_二レ", display: "二レ" });
var node_45 = sibling(node_44, 2);
InsertButton(node_45, { color: "red", text: "_三レ", display: "三レ" });
var node_46 = sibling(node_45, 2);
InsertButton(node_46, { color: "red", text: "_四レ", display: "四レ" });
var node_47 = sibling(node_46, 2);
InsertButton(node_47, { color: "red", text: "_上レ", display: "上レ" });
var div_4 = sibling(div_3, 2);
var node_48 = sibling(child(div_4), 2);
InsertButton(node_48, {
color: "pink",
text: (t2) => `/${t2}()`,
display: "ルビー"
});
var node_49 = sibling(node_48, 2);
InsertButton(node_49, {
color: "blue",
text: (t2) => `《割書:${t2}|》`,
display: "割注"
});
var node_50 = sibling(node_49, 2);
InsertButton(node_50, {
color: "red",
text: (t2) => `【${t2}】`,
display: "注釈"
});
append($$anchor4, fragment_2);
});
var node_51 = sibling(node_1, 2);
if_block(node_51, () => $$props.platform === "wikisource", ($$anchor4) => {
var div_5 = root_4();
var node_52 = sibling(child(div_5), 2);
InsertButton(node_52, {
color: "green",
text: (t2) => `{{傍点|style=filled sesame|${t2}}}`,
display: "﹅",
title: "傍点(黒ゴマ)"
});
var node_53 = sibling(node_52, 2);
InsertButton(node_53, {
color: "green",
text: (t2) => `{{傍点|style=open sesame|${t2}}}`,
display: "﹆",
title: "傍点(白ゴマ)"
});
var node_54 = sibling(node_53, 2);
InsertButton(node_54, {
color: "green",
text: (t2) => `{{傍点|style=filled dot|${t2}}}`,
display: "•",
title: "傍点(黒点)"
});
var node_55 = sibling(node_54, 2);
InsertButton(node_55, {
color: "green",
text: (t2) => `{{傍点|style=open dot|${t2}}}`,
display: "◦",
title: "傍点(白点)"
});
var node_56 = sibling(node_55, 2);
InsertButton(node_56, {
color: "green",
text: (t2) => `{{傍点|style=filled circle|${t2}}}`,
display: "●",
title: "傍点(黒丸)"
});
var node_57 = sibling(node_56, 2);
InsertButton(node_57, {
color: "green",
text: (t2) => `{{傍点|style=open circle|${t2}}}`,
display: "○",
title: "傍点(白丸)"
});
var node_58 = sibling(node_57, 2);
InsertButton(node_58, {
color: "green",
text: (t2) => `{{傍点|style=filled double-circle|${t2}}}`,
display: "◉",
title: "傍点(黒二重丸)"
});
var node_59 = sibling(node_58, 2);
InsertButton(node_59, {
color: "green",
text: (t2) => `{{傍点|style=open double-circle|${t2}}}`,
display: "◎",
title: "傍点(白二重丸)"
});
var node_60 = sibling(node_59, 2);
InsertButton(node_60, {
color: "green",
text: (t2) => `{{傍点|style=filled triangle|${t2}}}`,
display: "▲",
title: "傍点(黒三角)"
});
var node_61 = sibling(node_60, 2);
InsertButton(node_61, {
color: "green",
text: (t2) => `{{傍点|style=open triangle|${t2}}}`,
display: "△",
title: "傍点(白三角)"
});
var node_62 = sibling(node_61, 4);
InsertButton(node_62, {
color: "pink",
text: (t2) => `{{ruby|${t2}|}}`,
display: "ルビ"
});
var node_63 = sibling(node_62, 4);
InsertButton(node_63, {
color: "green",
text: (t2) => `<ref>${t2}</ref>`,
display: "註釋"
});
var node_64 = sibling(node_63, 2);
InsertButton(node_64, {
color: "green",
text: (t2) => `{{分註|${t2}|}}`,
display: "分註",
title: "分註(割註)"
});
append($$anchor4, div_5);
});
var div_6 = sibling(node_51, 2);
var node_65 = sibling(child(div_6), 2);
InsertButton(node_65, { color: "green", text: "—", title: "emダッシュ" });
var node_66 = sibling(node_65, 2);
InsertButton(node_66, { color: "green", text: "…", title: "省略号" });
var node_67 = sibling(node_66, 2);
InsertButton(node_67, { color: "green", text: "、", title: "読点" });
var node_68 = sibling(node_67, 2);
InsertButton(node_68, { color: "green", text: ",", title: "カンマ" });
var node_69 = sibling(node_68, 2);
InsertButton(node_69, { color: "green", text: "。", title: "句点" });
var node_70 = sibling(node_69, 2);
InsertButton(node_70, { color: "green", text: "-", title: "ハイフン" });
var node_71 = sibling(node_70, 2);
InsertButton(node_71, {
color: "green",
text: " ",
display: "␣",
title: "半角スペース"
});
var node_72 = sibling(node_71, 2);
InsertButton(node_72, {
color: "green",
text: " ",
display: "▢",
title: "全角スペース"
});
var node_73 = sibling(node_72, 2);
InsertButton(node_73, { color: "green", text: "◯", title: "全角丸" });
var div_7 = sibling(div_6, 2);
var node_74 = sibling(child(div_7), 2);
InsertButton(node_74, { color: "green", text: "々", title: "同の字点" });
var node_75 = sibling(node_74, 2);
InsertButton(node_75, {
color: "green",
text: "ゝ",
title: "一の字点(ひらがな)"
});
var node_76 = sibling(node_75, 2);
InsertButton(node_76, {
color: "green",
text: "ゞ",
title: "一の字点(ひらがな、濁点付き)"
});
var node_77 = sibling(node_76, 2);
InsertButton(node_77, {
color: "green",
text: "ヽ",
title: "一の字点(カタカナ)"
});
var node_78 = sibling(node_77, 2);
InsertButton(node_78, {
color: "green",
text: "ヾ",
title: "一の字点(カタカナ、濁点付き)"
});
var node_79 = sibling(node_78, 2);
InsertButton(node_79, { color: "green", text: "〻", title: "二の字点" });
var node_80 = sibling(node_79, 2);
InsertButton(node_80, { color: "green", text: "〳", title: "くの字点上" });
var node_81 = sibling(node_80, 2);
InsertButton(node_81, {
color: "green",
text: "〴",
title: "くの字点上(濁点付き)"
});
var node_82 = sibling(node_81, 2);
InsertButton(node_82, { color: "green", text: "〵", title: "くの字点下" });
var node_83 = sibling(node_82, 2);
InsertButton(node_83, {
color: "green",
text: "〱",
title: "くの字点(濁点付き)"
});
var node_84 = sibling(node_83, 2);
InsertButton(node_84, {
color: "green",
text: "〲",
title: "くの字点(濁点付き)"
});
var div_8 = sibling(div_7, 2);
var node_85 = sibling(child(div_8), 2);
InsertButton(node_85, { color: "green", text: "〆", title: "締め" });
var node_86 = sibling(node_85, 2);
InsertButton(node_86, { color: "green", text: " ͡と", title: "「こと」" });
var node_87 = sibling(node_86, 2);
InsertButton(node_87, { color: "green", text: "ゟ", title: "「より」" });
var node_88 = sibling(node_87, 2);
InsertButton(node_88, { color: "green", text: "𬼂", title: "「也」" });
var node_89 = sibling(node_88, 2);
InsertButton(node_89, { color: "green", text: "𬻿", title: "「也」" });
var node_90 = sibling(node_89, 2);
InsertButton(node_90, { color: "green", text: "ヿ", title: "「コト」" });
var node_91 = sibling(node_90, 2);
InsertButton(node_91, { color: "green", text: "𪜈", title: "「トモ」" });
var node_92 = sibling(node_91, 2);
InsertButton(node_92, { color: "green", text: "𬼀", title: "「タメ」" });
var button = sibling(node_92, 4);
button.__click = [on_click, editingCustom];
var node_93 = sibling(button, 2);
if_block(
node_93,
() => get(editingCustom),
($$anchor4) => {
InsertButtonEdit($$anchor4, {
get color() {
return customColor;
},
get text() {
return get(customText);
},
get display() {
return get(customDisplay);
},
onedit: (color, text, display) => {
get(customButtons).push({
text,
color,
display: !display || display === text ? void 0 : display
});
_GM.setValue("customButtons", JSON.stringify(get(customButtons)));
set(editingCustom, false);
}
});
},
($$anchor4) => {
var fragment_4 = comment();
var node_94 = first_child(fragment_4);
each(node_94, 17, () => get(customButtons), index, ($$anchor5, $$item, i2) => {
let text = () => get($$item).text;
let display = () => get($$item).display;
let color = () => get($$item).color;
CustomInsertButton($$anchor5, {
get color() {
return color();
},
get text() {
return text();
},
get display() {
return display();
},
onedit: (color2, text2, display2) => {
get(customButtons)[i2] = {
color: color2,
text: text2,
display: !display2 || display2 === text2 ? void 0 : display2
};
},
ondelete: () => {
get(customButtons).splice(i2, 1);
}
});
});
append($$anchor4, fragment_4);
}
);
append($$anchor3, div2);
},
$$slots: { default: true }
});
},
($$anchor2) => {
var button_1 = root_8();
button_1.__click = [on_click_1, shown];
var img = child(button_1);
set_attribute(img, "src", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAaLSURBVHgB7VtdUttWFD6SScxMH0pXgOhbSNqYHcAKCiuoO9MXYDKYFeCsAGcI8NIZkxWQrAC6AkibwltxV1BemmKCrX5HSFi+Plc6km0QU38zHpGrqyvde8/Pd865IZpgggn+z3Ckxv1z8nBp+j4t0sPg1HFoZfUZtWjMcKVGTPzwASfPqOD9R+FGjBVTlvYKPTw8LMIGrpuazs0Tmvn8lGqQ6Q2I9QyaGmvz6c+KEoABjqkAwAJUNf12P1H1c5kuoDZb4eQZtb1z+jHtWXEBrtr0Ey6n9MDAhGZ2frerIlRkEb8jx6VmbOK95yldjUUV2FwIjM8C3TP2z+jINz66VKIfyJBI7HjFLdF2mp3yFZLsUoHQ7dI7sy2uBqznmHwDO36imHxt7dngeCYcKhC2McGnrMuGOHddWnY6kMiegbOCd/0aKhxKcSpSF2CMnED09XtndIjLMmUETxyTqcPy/5rluanUgf3gg8bhFitdn5q4LsUbsdNv/FKmBWjRDW2uf0/vKQc0NmBsnECy0lc3dIrdvEx7lvtgc+rtNi2s5Zw8I3UBxskJfMHVQncvXSd5Qjxx6Pnc+nN6zf1pCKQuwLg4QWisVsSbN7L15mfaI5p4hJF5ARgv32yDQco1vs0bdDq09Oq7nkSygY7ZqFwBlIoH8IuYcfEkd8/zBSnsw6Mx8LvY+81u6GxqMDXVT205YKKejeIA6mLnD6pTBmiJ0J0bdHDlF/MuUQZcTfcxNw+Wvpk4hqAGIErLxjOe2aeEeIAXWLtJqgUQOIAHET0kJThYMQMb5vlPn9g/chWibnoDfgZScOeVEgw0q8YFFmI7baNUCyC9iF1YUqDS19elLaG5df0lWV/xjgOzLa4GoYFuJQxRK5fpJOk7VQvAL5J8c2mKZkkHb6DFoXqaJQcp+mC2xdWA6S4M7RzUsp4wjIeA6ujtJ+QKBKgWgF/kdvpdFi9I+0pHO00JgngeaAIVmxqUp4MIsdcPbpHdIyVIg+sGyZXBdlJi9db9rISTeX/dpSVtwBFIkB+I82lAYq51WR6GpAZSoiQuDZK02thlIXlAHPvQX3iMo3gbFuASizhnUyGoiDddhueKU22HqpLUFS4alLB7Rn8PhMGWCfU9B++DxMksvv3YFiUWLhqUEKpBzfiuKi6JC7D+YlB9TBQuGhT7Cd4AClfJSsYkFC4alKD1BnlQzGhQgOQNtBKUMm42cCoaunuYlptLQAM+WwxnR2xwVUY2U1Z4F5EWB0JDTJ5hpac89gi9TWRkE6FaAA5l357RAVdepPuaFJaBAXoKHsHhsUcjhEZFdLEAQll0tJWZWtBlsYiShZ763eEtugmNkdWGw1XLCzhFtWCjxFnoKSLD3IlN27dpjGwqEQrBK2nygcb6vI7Tc7ACn/3OpKdQqUb0NxtFlMaOzdIYV3jwnjc0JugkoNsLh4NrFzTUmPxAxGeIH0vD6jwt8ViYeB1NiwNU1hE5hzV1ZoJrhs2M5EjtBpl1fVWml/+06aPkwjgAKd9miSpZy1MR8gQ+wXPnQZqOLb7H/+749PrVc11ucGTR4KggBT5mNjhCEm+AbfpGkzpPtQH3HQ1yNtg0umaJPDoNgn5btsEhjS9xSU3YpNqAMZ4XEokK3vVBaKtGf4OP1KLTIGRHS1sk1XiBe40GIbrH2L3+fgh8mDSxJGgORVzfxi8qaN3gvcHmDkGauK6QhBZ+1fWM5fFCnRCJ0HX1pKivSpxx8oxcEpA31yflDSW4sAPo2Ejr53Nytk2bWd1t37uogAg9Q8t2Pzz8tAhxXxlm8oyhbIDSRaoOLApgNejPA96y0bpJjfk78h6rHUoClC6yhoryFmWEJQ9I8clzToGJU1gHvNAcjDQxrAqoXKSbI8635QHjiRS4xfgBSQ8LdMALsXOu5y1DLYA2YernTKyWhOdCVhipnyc85pVuD1o3NSXyoRYgLWEa7mBDUweU0OkKahBGh6HO29/tByX51AMTQxnBcR+p5SQJWKFJl71f/qTZn7+lv+D7VwZKYAb4wATU5lgKphiFdIMRmBVKaoaq9HJ4/y7HQAlu03lCX9vu5ZIALaEZCThJMuhpeAHuvEFYAjvgWmB4GMOL7rEafvmXPtqGL7QEBLgR6K2lLMYLwTnIUCJOw+Ozy0lkKZXSjnu3NbQ6S5IkKx5FbVAqi2U4npOIR1EbNFlhluM5qWPTIwFXjvCxG8Hku6gtvnj4/9IzwQQTPH78B7gKG4oYvtjQAAAAAElFTkSuQmCC");
append($$anchor2, button_1);
}
);
append($$anchor, fragment);
pop();
}
delegate(["click"]);
var root_1 = /* @__PURE__ */ template(`<!> <!> <!>`, 1);
function App($$anchor, $$props) {
push($$props, true);
const url = new URL(window.location.href);
const platform = (() => {
if (url.host.includes("honkoku.org")) return "honkoku";
if (url.host.includes("wikisource.org")) return "wikisource";
return void 0;
})();
console.info("[honkoku-toolbox] platform: ", platform);
let editor = state(void 0);
const MAX_RETRIES = 10;
setTimeout(
() => {
if (!platform) {
throw new Error("[honkoku-toolbox] Unsupported platform");
}
if (platform === "honkoku") {
let kojiWrapper;
const wrappers = document.getElementsByClassName("editor-wrapper");
if (wrappers.length > 0) {
kojiWrapper = wrappers[0];
}
if (!kojiWrapper) {
let retries = 0;
const interval = setInterval(
() => {
const wrappers2 = document.getElementsByClassName("editor-wrapper");
if (wrappers2.length > 0) {
kojiWrapper = wrappers2[0];
set(editor, proxy(new KojiEditor(kojiWrapper)));
console.log("[honkoku-toolbox] KojiEditor initialized: ", get(editor));
clearInterval(interval);
}
if (retries > MAX_RETRIES) {
clearInterval(interval);
}
retries += 1;
},
500
);
} else {
set(editor, proxy(new KojiEditor(kojiWrapper)));
console.log("[honkoku-toolbox] KojiEditor initialized: ", get(editor));
}
return;
}
if (platform === "wikisource") {
let cm;
const codeMirrorDivs = document.getElementsByClassName("CodeMirror");
if (codeMirrorDivs.length > 0) {
const codeMirror = codeMirrorDivs[0];
cm = codeMirror.CodeMirror;
set(editor, proxy(new CodeMirrorEditor(cm)));
console.info("[honkoku-toolbox] CodeMirrorEditor initialized: ", get(editor));
} else {
let retries = 0;
const interval = setInterval(
() => {
const codeMirrorDivs2 = document.getElementsByClassName("CodeMirror");
if (codeMirrorDivs2.length > 0) {
const codeMirror = codeMirrorDivs2[0];
cm = codeMirror.CodeMirror;
set(editor, proxy(new CodeMirrorEditor(cm)));
console.info("[honkoku-toolbox] CodeMirrorEditor initialized: ", get(editor));
clearInterval(interval);
} else {
if (retries > MAX_RETRIES) {
clearInterval(interval);
}
retries += 1;
}
},
500
);
}
}
},
500
);
var fragment = comment();
var node = first_child(fragment);
if_block(node, () => get(editor) && platform, ($$anchor2) => {
var fragment_1 = root_1();
var node_1 = first_child(fragment_1);
VariantKana(node_1, {
get editor() {
return get(editor);
}
});
var node_2 = sibling(node_1, 2);
MainMenu(node_2, {
get editor() {
return get(editor);
},
platform
});
var node_3 = sibling(node_2, 2);
VariantKanji(node_3, {
get editor() {
return get(editor);
}
});
append($$anchor2, fragment_1);
});
append($$anchor, fragment);
pop();
}
mount(App, {
target: (() => {
const app2 = document.createElement("div");
document.body.append(app2);
return app2;
})()
});
})();