// ==UserScript==
// @name honkoku-toolbox
// @namespace https://mkpo.li/
// @version 0.1.0
// @author monkey
// @icon data:image/png;base64,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
// @match https://honkoku.org/app/
// @match https://ja.wikisource.org/w/index.php?title=*&action=*
// @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-1xqxm3o{padding:.5em .1em;border:1px solid #bbb;background-color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;white-space:nowrap}button.svelte-1xqxm3o:hover{background-color:#eee}[data-color=black].svelte-1xqxm3o{color:#000}[data-color=green].svelte-1xqxm3o{color:#00a800}[data-color=blue].svelte-1xqxm3o{color:#009dff}[data-color=red].svelte-1xqxm3o{color:#ff3e00}[data-color=pink].svelte-1xqxm3o{color:#f0d}[data-color=gray].svelte-1xqxm3o{color:#888}.float-menu.svelte-sa4v07{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}.float-menu.svelte-sa4v07 .dragger:where(.svelte-sa4v07){padding:.25em;font-size:1.5em;cursor:move}.panel.svelte-sa4v07{border:1px solid #ccc;padding:.5em .25em;border-radius:5px;display:flex;gap:0;flex-wrap:wrap;border:none}.panel.svelte-sa4v07>h3:where(.svelte-sa4v07){background-color:#f5f5f5;padding:.25em 0;border:1px solid #ccc;margin:.25em 0}.dragger.svelte-sa4v07{vertical-align:middle;text-align:center;display:flex;align-items:center}.dragger.svelte-sa4v07:hover{background-color:#f5f5f5}.show-button.svelte-sa4v07{position:fixed;right:0;top:50%;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-sa4v07:hover{transform:translateY(-50%) scale(1.1)}.show-button.svelte-sa4v07 img:where(.svelte-sa4v07){width:2em;height:2em}h3.svelte-sa4v07 button:where(.svelte-sa4v07){background-color:transparent;border:none;cursor:pointer;font-weight:inherit;font-family:inherit;font-size:inherit;padding:0}h3.svelte-sa4v07 button:where(.svelte-sa4v07):hover{text-decoration:underline} ");
(function () {
'use strict';
var __defProp = Object.defineProperty;
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);
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 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_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);
}
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(effect2, parent_effect) {
var parent_last = parent_effect.last;
if (parent_last === null) {
parent_effect.last = parent_effect.first = effect2;
} else {
parent_last.next = effect2;
effect2.prev = parent_last;
parent_effect.last = effect2;
}
}
function create_effect(type, fn, sync, push2 = true) {
var is_root = (type & ROOT_EFFECT) !== 0;
var parent_effect = active_effect;
var effect2 = {
ctx: component_context,
deps: null,
nodes_start: null,
nodes_end: null,
f: type | DIRTY,
first: null,
fn,
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(effect2);
effect2.f |= EFFECT_RAN;
} catch (e2) {
destroy_effect(effect2);
throw e2;
} finally {
set_is_flushing_effect(previously_flushing_effect);
}
} else if (fn !== null) {
schedule_effect(effect2);
}
var inert = sync && effect2.deps === null && effect2.first === null && effect2.nodes_start === null && effect2.teardown === null && (effect2.f & EFFECT_HAS_DERIVED) === 0;
if (!inert && !is_root && push2) {
if (parent_effect !== null) {
push_effect(effect2, parent_effect);
}
if (active_reaction !== null && (active_reaction.f & DERIVED) !== 0) {
var derived2 = (
/** @type {Derived} */
active_reaction
);
(derived2.children ?? (derived2.children = [])).push(effect2);
}
}
return effect2;
}
function user_effect(fn) {
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,
effect: active_effect,
reaction: active_reaction
});
} else {
var signal = effect(fn);
return signal;
}
}
function effect_root(fn) {
const effect2 = create_effect(ROOT_EFFECT, fn, true);
return () => {
destroy_effect(effect2);
};
}
function effect(fn) {
return create_effect(EFFECT, fn, false);
}
function render_effect(fn) {
return create_effect(RENDER_EFFECT, fn, true);
}
function template_effect(fn) {
return render_effect(fn);
}
function block(fn, flags = 0) {
return create_effect(RENDER_EFFECT | BLOCK_EFFECT | flags, fn, true);
}
function branch(fn, push2 = true) {
return create_effect(RENDER_EFFECT | BRANCH_EFFECT, fn, true, push2);
}
function execute_effect_teardown(effect2) {
var teardown = effect2.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(effect2, remove_dom = true) {
var removed = false;
if ((remove_dom || (effect2.f & HEAD_EFFECT) !== 0) && effect2.nodes_start !== null) {
var node = effect2.nodes_start;
var end = effect2.nodes_end;
while (node !== null) {
var next = node === end ? null : (
/** @type {TemplateNode} */
/* @__PURE__ */ get_next_sibling(node)
);
node.remove();
node = next;
}
removed = true;
}
destroy_effect_children(effect2, remove_dom && !removed);
remove_reactions(effect2, 0);
set_signal_status(effect2, DESTROYED);
var transitions = effect2.transitions;
if (transitions !== null) {
for (const transition of transitions) {
transition.stop();
}
}
execute_effect_teardown(effect2);
var parent = effect2.parent;
if (parent !== null && parent.first !== null) {
unlink_effect(effect2);
}
effect2.next = effect2.prev = effect2.teardown = effect2.ctx = effect2.deps = effect2.parent = effect2.fn = effect2.nodes_start = effect2.nodes_end = null;
}
function unlink_effect(effect2) {
var parent = effect2.parent;
var prev = effect2.prev;
var next = effect2.next;
if (prev !== null) prev.next = next;
if (next !== null) next.prev = prev;
if (parent !== null) {
if (parent.first === effect2) parent.first = next;
if (parent.last === effect2) parent.last = prev;
}
}
function pause_effect(effect2, callback) {
var transitions = [];
pause_children(effect2, transitions, true);
run_out_transitions(transitions, () => {
destroy_effect(effect2);
if (callback) callback();
});
}
function run_out_transitions(transitions, fn) {
var remaining = transitions.length;
if (remaining > 0) {
var check = () => --remaining || fn();
for (var transition of transitions) {
transition.out(check);
}
} else {
fn();
}
}
function pause_children(effect2, transitions, local) {
if ((effect2.f & INERT) !== 0) return;
effect2.f ^= INERT;
if (effect2.transitions !== null) {
for (const transition of effect2.transitions) {
if (transition.is_global || local) {
transitions.push(transition);
}
}
}
var child2 = effect2.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(effect2) {
resume_children(effect2, true);
}
function resume_children(effect2, local) {
if ((effect2.f & INERT) === 0) return;
effect2.f ^= INERT;
if (check_dirtiness(effect2)) {
update_effect(effect2);
}
var child2 = effect2.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 (effect2.transitions !== null) {
for (const transition of effect2.transitions) {
if (transition.is_global || local) {
transition.in();
}
}
}
}
// @__NO_SIDE_EFFECTS__
function derived(fn) {
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,
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(fn) {
const signal = /* @__PURE__ */ derived(fn);
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(effect2) {
active_effect = effect2;
}
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, effect2, 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 effect2 = signal.first;
signal.first = signal.last = null;
while (effect2 !== null) {
var next = effect2.next;
destroy_effect(effect2, remove_dom);
effect2 = next;
}
}
function update_effect(effect2) {
var flags = effect2.f;
if ((flags & DESTROYED) !== 0) {
return;
}
set_signal_status(effect2, CLEAN);
var previous_effect = active_effect;
var previous_component_context = component_context;
active_effect = effect2;
component_context = effect2.ctx;
try {
if ((flags & BLOCK_EFFECT) === 0) {
destroy_effect_children(effect2);
}
execute_effect_teardown(effect2);
var teardown = update_reaction(effect2);
effect2.teardown = typeof teardown === "function" ? teardown : null;
effect2.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 effect2 = root_effects[i2];
if ((effect2.f & CLEAN) === 0) {
effect2.f ^= CLEAN;
}
var collected_effects = [];
process_effects(effect2, 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 effect2 = effects[i2];
if ((effect2.f & (DESTROYED | INERT)) === 0 && check_dirtiness(effect2)) {
update_effect(effect2);
if (effect2.deps === null && effect2.first === null && effect2.nodes_start === null) {
if (effect2.teardown === null) {
unlink_effect(effect2);
} else {
effect2.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 effect2 = signal;
while (effect2.parent !== null) {
effect2 = effect2.parent;
var flags = effect2.f;
if ((flags & (ROOT_EFFECT | BRANCH_EFFECT)) !== 0) {
if ((flags & CLEAN) === 0) return;
effect2.f ^= CLEAN;
}
}
queued_root_effects.push(effect2);
}
function process_effects(effect2, collected_effects) {
var current_effect = effect2.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 (effect2 === 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(fn) {
const previous_reaction = active_reaction;
try {
active_reaction = null;
return fn();
} 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, fn) {
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(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} */
{}
);
}
function deep_read_state(value) {
if (typeof value !== "object" || !value || value instanceof EventTarget) {
return;
}
if (STATE_SYMBOL in value) {
deep_read(value);
} else if (!Array.isArray(value)) {
for (let key in value) {
const prop2 = value[key];
if (typeof prop2 === "object" && prop2 && STATE_SYMBOL in prop2) {
deep_read(prop2);
}
}
}
}
function deep_read(value, visited = /* @__PURE__ */ new Set()) {
if (typeof value === "object" && value !== null && // We don't want to traverse DOM elements
!(value instanceof EventTarget) && !visited.has(value)) {
visited.add(value);
if (value instanceof Date) {
value.getTime();
}
for (let key in value) {
try {
deep_read(value[key], visited);
} catch (e2) {
}
}
const proto = get_prototype_of(value);
if (proto !== Object.prototype && proto !== Array.prototype && proto !== Map.prototype && proto !== Set.prototype && proto !== Date.prototype) {
const descriptors = get_descriptors(proto);
for (let key in descriptors) {
const get2 = descriptors[key].get;
if (get2) {
try {
get2.call(value);
} catch (e2) {
}
}
}
}
}
}
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 fn of root_event_handles) {
fn(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 [fn, ...data] = delegated;
fn.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(start, end) {
var effect2 = (
/** @type {Effect} */
active_effect
);
if (effect2.nodes_start === null) {
effect2.nodes_start = start;
effect2.nodes_end = end;
}
}
// @__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 start = (
/** @type {TemplateNode} */
/* @__PURE__ */ get_first_child(clone)
);
var end = (
/** @type {TemplateNode} */
clone.lastChild
);
assign_nodes(start, end);
} else {
assign_nodes(clone, clone);
}
return clone;
};
}
function comment() {
var frag = document.createDocumentFragment();
var start = document.createComment("");
var anchor = create_text();
frag.append(start, anchor);
assign_nodes(start, 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 passive = is_passive_event(event_name);
target.addEventListener(event_name, handle_event_propagation, { passive });
var n2 = document_listeners.get(event_name);
if (n2 === void 0) {
document.addEventListener(event_name, handle_event_propagation, { passive });
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 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 length = array.length;
var items = state2.items;
var first = state2.first;
var current = first;
var seen;
var prev = null;
var matched = [];
var stashed = [];
var value;
var key;
var item;
var i2;
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;
}
{
update_item(item, value, i2);
}
if ((item.e.f & INERT) !== 0) {
resume_effect(item.e);
}
if (item !== current) {
if (seen !== void 0 && seen.has(item)) {
if (matched.length < stashed.length) {
var start = stashed[0];
var j;
prev = start.prev;
var a2 = matched[0];
var b = matched[matched.length - 1];
for (j = 0; j < matched.length; j += 1) {
move(matched[j], start, 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, start);
current = start;
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 = null;
pause_effects(state2, to_destroy, controlled_anchor, items);
}
}
active_effect.first = state2.first && state2.first.e;
active_effect.last = prev && prev.e;
}
function update_item(item, value, index2, type) {
{
set(item.v, value);
}
{
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 end = 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 !== end) {
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 action(dom, action2, get_value) {
effect(() => {
var payload = untrack(() => action2(dom, get_value == null ? void 0 : get_value()) || {});
if (get_value && (payload == null ? void 0 : payload.update)) {
var inited = false;
var prev = (
/** @type {any} */
{}
);
render_effect(() => {
var value = get_value();
deep_read_state(value);
if (inited && safe_not_equal(prev, value)) {
prev = value;
payload.update(value);
}
});
inited = true;
}
if (payload == null ? void 0 : payload.destroy) {
return () => (
/** @type {Function} */
payload.destroy()
);
}
});
}
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 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;
};
}
const PUBLIC_VERSION = "5";
if (typeof window !== "undefined")
(window.__svelte || (window.__svelte = { v: /* @__PURE__ */ new Set() })).v.add(PUBLIC_VERSION);
class KojiEditor {
constructor(wrapper) {
__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;
}
insertAtCursor(textToInsert) {
this.editor.insertOrReplace(textToInsert);
}
replaceSelection(replacer) {
const { start, end } = this.editor.selection;
const substr = this.text.substring(start, end);
this.editor.insertOrReplace(replacer(substr));
}
markText(text) {
const allChars = this.wrapper.querySelectorAll(".token .char");
for (const char of allChars) {
if (char.textContent === text) {
char.classList.add("highlight-variant");
}
}
}
get text() {
return this.editor.value;
}
onchange(callback) {
this.editor.watch("requestedSrc", callback);
}
toggleClass(className) {
this.wrapper.classList.toggle(className);
}
}
class CodeMirrorEditor {
constructor(codeMirror) {
this.codeMirror = codeMirror;
this.codeMirror = codeMirror;
}
insertAtCursor(textToInsert) {
if (this.codeMirror.somethingSelected()) {
this.replaceSelection((_) => textToInsert);
} else {
const cursor = this.codeMirror.getCursor();
this.codeMirror.replaceRange(textToInsert, cursor);
}
}
replaceSelection(replacer) {
const selection = this.codeMirror.getSelection();
const replacedText = replacer(selection);
this.codeMirror.replaceSelection(replacedText);
}
markText(substr) {
if (!substr || !this.text.includes(substr)) return;
const occurrences = [];
let index2 = this.text.indexOf(substr);
while (index2 !== -1) {
occurrences.push(index2);
index2 = this.text.indexOf(substr, index2 + 1);
}
for (const index22 of occurrences) {
const textPos = this.codeMirror.posFromIndex(index22);
this.codeMirror.markText(
textPos,
this.codeMirror.posFromIndex(index22 + substr.length),
{
className: "highlight-variant"
}
);
}
}
get text() {
return this.codeMirror.getValue();
}
onchange(callback) {
this.codeMirror.on("change", callback);
}
toggleClass(className) {
this.codeMirror.getWrapperElement().classList.toggle(className);
}
}
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_click$1 = (_, editor, $$props) => {
if (editor) {
if ($$props.text instanceof Function) {
editor.replaceSelection($$props.text);
} else {
editor.insertAtCursor($$props.text);
}
}
};
var root = /* @__PURE__ */ template(`<button class="svelte-1xqxm3o"> </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();
button.__click = [on_click$1, editor, $$props];
var text_1 = child(button);
template_effect(() => {
set_attribute(button, "data-color", color());
set_text(text_1, display());
});
append($$anchor, button);
pop();
}
delegate(["click"]);
var on_dblclick = (_, shown) => set(shown, false);
var root_2 = /* @__PURE__ */ template(`<div class="panel svelte-sa4v07"><h3 class="svelte-sa4v07">頁注</h3> <!> <!> <!> <!> <!> <!> <!></div> <div class="panel svelte-sa4v07"><h3 class="svelte-sa4v07">音注</h3> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!></div> <div class="panel svelte-sa4v07"><h3 class="svelte-sa4v07">返点</h3> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!></div> <div class="panel svelte-sa4v07"><h3 class="svelte-sa4v07">註釋</h3> <!> <!> <!> <!> <!> <!> <!> <!></div>`, 1);
var on_click = (_, $$props) => {
$$props.editor.toggleClass("display-variant-highlight");
};
var root_1 = /* @__PURE__ */ template(`<div class="float-menu svelte-sa4v07"><button class="dragger svelte-sa4v07" title="ドラッグして移動、ダブルクリックして隠す">⠿</button> <div class="panels"><!> <div class="panel svelte-sa4v07"><h3 class="svelte-sa4v07">踊字</h3> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <h3 class="svelte-sa4v07">合字</h3> <!> <!> <!> <!> <!> <!> <!> <!></div> <div class="panel svelte-sa4v07"><h3 class="svelte-sa4v07"><button class="svelte-sa4v07">異體</button></h3> <!></div> <div class="panel svelte-sa4v07"><h3 class="svelte-sa4v07">其他</h3> <!> <!></div></div></div>`);
var on_click_1 = (_, shown) => set(shown, true);
var root_4 = /* @__PURE__ */ template(`<button class="show-button svelte-sa4v07" title="翻刻ツールボックスを開く"><img alt="Honkoku" class="svelte-sa4v07"></button>`);
function FloatMenu($$anchor, $$props) {
push($$props, true);
setContext("editor", $$props.editor);
let shown = state(false);
const VARIANTS = [
{
traditional: "卽",
simplified: "即",
color: "green"
},
{
traditional: "旣",
simplified: "既",
color: "green"
},
{
traditional: "槪",
simplified: "概",
color: "green"
},
{
traditional: "者",
simplified: "者",
color: "red"
},
{
traditional: "諸",
simplified: "諸",
color: "red"
},
{
traditional: "著",
simplified: "著",
color: "red"
},
{
traditional: "緖",
simplified: "緒",
color: "red"
},
{
traditional: "眞",
simplified: "真",
color: "blue"
},
{
traditional: "顚",
simplified: "顛",
color: "blue"
},
{
traditional: "敎",
simplified: "教",
color: "blue"
},
{
traditional: "神",
simplified: "神",
color: "blue"
},
{
traditional: "硏",
simplified: "研",
color: "blue"
}
];
let text = state(proxy($$props.editor.text));
$$props.editor.onchange(() => {
set(text, proxy($$props.editor.text));
});
user_effect(() => {
for (const { simplified } of VARIANTS) {
if (get(text).includes(simplified)) {
$$props.editor.markText(simplified);
}
}
});
var fragment = comment();
var node = first_child(fragment);
if_block(
node,
() => get(shown),
($$anchor2) => {
var div = root_1();
var button = child(div);
button.__dblclick = [on_dblclick, shown];
var div_1 = sibling(button, 2);
var node_1 = child(div_1);
if_block(node_1, () => $$props.platform === "honkoku", ($$anchor3) => {
var fragment_1 = root_2();
var div_2 = first_child(fragment_1);
var node_2 = sibling(child(div_2), 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_3 = sibling(div_2, 2);
var node_9 = sibling(child(div_3), 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_4 = sibling(div_3, 2);
var node_28 = sibling(child(div_4), 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_5 = sibling(div_4, 2);
var node_48 = sibling(child(div_5), 2);
InsertButton(node_48, {
color: "pink",
text: (t2) => `/${t2}()`,
display: "ルビー"
});
var node_49 = sibling(node_48, 2);
InsertButton(node_49, { color: "green", text: "。" });
var node_50 = sibling(node_49, 2);
InsertButton(node_50, { color: "green", text: "-" });
var node_51 = sibling(node_50, 2);
InsertButton(node_51, { color: "green", text: " ", display: "␣" });
var node_52 = sibling(node_51, 2);
InsertButton(node_52, { color: "green", text: " ", display: "▢" });
var node_53 = sibling(node_52, 2);
InsertButton(node_53, { color: "green", text: "◯" });
var node_54 = sibling(node_53, 2);
InsertButton(node_54, {
color: "blue",
text: (t2) => `《割書:${t2}|》`,
display: "割注"
});
var node_55 = sibling(node_54, 2);
InsertButton(node_55, {
color: "red",
text: (t2) => `【${t2}】`,
display: "注釈"
});
append($$anchor3, fragment_1);
});
var div_6 = sibling(node_1, 2);
var node_56 = sibling(child(div_6), 2);
InsertButton(node_56, { color: "green", text: "々" });
var node_57 = sibling(node_56, 2);
InsertButton(node_57, { color: "green", text: "ゝ" });
var node_58 = sibling(node_57, 2);
InsertButton(node_58, { color: "green", text: "ゞ" });
var node_59 = sibling(node_58, 2);
InsertButton(node_59, { color: "green", text: "ヽ" });
var node_60 = sibling(node_59, 2);
InsertButton(node_60, { color: "green", text: "ヾ" });
var node_61 = sibling(node_60, 2);
InsertButton(node_61, { color: "green", text: "〻" });
var node_62 = sibling(node_61, 2);
InsertButton(node_62, { color: "green", text: "〳" });
var node_63 = sibling(node_62, 2);
InsertButton(node_63, { color: "green", text: "〴" });
var node_64 = sibling(node_63, 2);
InsertButton(node_64, { color: "green", text: "〵" });
var node_65 = sibling(node_64, 2);
InsertButton(node_65, { color: "green", text: "〱" });
var node_66 = sibling(node_65, 2);
InsertButton(node_66, { color: "green", text: "〲" });
var node_67 = sibling(node_66, 4);
InsertButton(node_67, { color: "green", text: "〆" });
var node_68 = sibling(node_67, 2);
InsertButton(node_68, { color: "green", text: " ͡と" });
var node_69 = sibling(node_68, 2);
InsertButton(node_69, { color: "green", text: "ゟ" });
var node_70 = sibling(node_69, 2);
InsertButton(node_70, { color: "green", text: "𬼂" });
var node_71 = sibling(node_70, 2);
InsertButton(node_71, { color: "green", text: "𬻿" });
var node_72 = sibling(node_71, 2);
InsertButton(node_72, { color: "green", text: "ヿ" });
var node_73 = sibling(node_72, 2);
InsertButton(node_73, { color: "green", text: "𪜈" });
var node_74 = sibling(node_73, 2);
InsertButton(node_74, { color: "green", text: "𬼀" });
var div_7 = sibling(div_6, 2);
var h3 = child(div_7);
var button_1 = child(h3);
button_1.__click = [on_click, $$props];
var node_75 = sibling(h3, 2);
each(node_75, 17, () => VARIANTS, index, ($$anchor3, $$item) => {
let traditional = () => get($$item).traditional;
let simplified = () => get($$item).simplified;
let color = () => get($$item).color;
var display = /* @__PURE__ */ derived(() => `${traditional()}=${simplified()}`);
InsertButton($$anchor3, {
get color() {
return color();
},
get text() {
return traditional();
},
get display() {
return get(display);
}
});
});
var div_8 = sibling(div_7, 2);
var node_76 = sibling(child(div_8), 2);
InsertButton(node_76, { color: "green", display: "◌゙", text: "゙" });
var node_77 = sibling(node_76, 2);
InsertButton(node_77, { color: "green", display: "◌゚", text: "゚" });
action(div, ($$node, $$action_arg) => d($$node, $$action_arg), () => ({ handle: ".dragger", bounds: "body" }));
append($$anchor2, div);
},
($$anchor2) => {
var button_2 = root_4();
button_2.__click = [on_click_1, shown];
var img = child(button_2);
set_attribute(img, "src", "data:image/png;base64,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");
append($$anchor2, button_2);
}
);
append($$anchor, fragment);
pop();
}
delegate(["dblclick", "click"]);
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)));
clearInterval(interval);
}
if (retries > MAX_RETRIES) {
clearInterval(interval);
}
retries += 1;
},
500
);
} else {
set(editor, proxy(new KojiEditor(kojiWrapper)));
}
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)));
} else {
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)));
clearInterval(interval);
}
},
500
);
}
}
},
500
);
var fragment = comment();
var node = first_child(fragment);
if_block(node, () => get(editor) && platform, ($$anchor2) => {
FloatMenu($$anchor2, {
get editor() {
return get(editor);
},
platform
});
});
append($$anchor, fragment);
pop();
}
mount(App, {
target: (() => {
const app2 = document.createElement("div");
document.body.append(app2);
return app2;
})()
});
})();