{"version":3,"file":"AppContext-veZ83MQk.js","sources":["../../../../../node_modules/.pnpm/solid-js@1.8.15/node_modules/solid-js/store/dist/store.js","../../../../../node_modules/.pnpm/@solid-primitives+i18n@2.0.0_solid-js@1.8.15/node_modules/@solid-primitives/i18n/dist/index.js","../../../../../node_modules/.pnpm/@solid-primitives+storage@2.1.2_solid-js@1.8.15/node_modules/@solid-primitives/storage/dist/index.js","../../../../../src/locales/en.ts","../../../../../src/locales/zh.ts","../../../../../src/AppContext.tsx"],"sourcesContent":["import { $PROXY, $TRACK, getListener, batch, createSignal } from \"solid-js\";\n\nconst $RAW = Symbol(\"store-raw\"),\n $NODE = Symbol(\"store-node\"),\n $HAS = Symbol(\"store-has\"),\n $SELF = Symbol(\"store-self\");\nfunction wrap$1(value) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: (p = new Proxy(value, proxyTraps$1))\n });\n if (!Array.isArray(value)) {\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n Object.defineProperty(value, prop, {\n enumerable: desc[prop].enumerable,\n get: desc[prop].get.bind(p)\n });\n }\n }\n }\n }\n return p;\n}\nfunction isWrappable(obj) {\n let proto;\n return (\n obj != null &&\n typeof obj === \"object\" &&\n (obj[$PROXY] ||\n !(proto = Object.getPrototypeOf(obj)) ||\n proto === Object.prototype ||\n Array.isArray(obj))\n );\n}\nfunction unwrap(item, set = new Set()) {\n let result, unwrapped, v, prop;\n if ((result = item != null && item[$RAW])) return result;\n if (!isWrappable(item) || set.has(item)) return item;\n if (Array.isArray(item)) {\n if (Object.isFrozen(item)) item = item.slice(0);\n else set.add(item);\n for (let i = 0, l = item.length; i < l; i++) {\n v = item[i];\n if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;\n }\n } else {\n if (Object.isFrozen(item)) item = Object.assign({}, item);\n else set.add(item);\n const keys = Object.keys(item),\n desc = Object.getOwnPropertyDescriptors(item);\n for (let i = 0, l = keys.length; i < l; i++) {\n prop = keys[i];\n if (desc[prop].get) continue;\n v = item[prop];\n if ((unwrapped = unwrap(v, set)) !== v) item[prop] = unwrapped;\n }\n }\n return item;\n}\nfunction getNodes(target, symbol) {\n let nodes = target[symbol];\n if (!nodes)\n Object.defineProperty(target, symbol, {\n value: (nodes = Object.create(null))\n });\n return nodes;\n}\nfunction getNode(nodes, property, value) {\n if (nodes[property]) return nodes[property];\n const [s, set] = createSignal(value, {\n equals: false,\n internal: true\n });\n s.$ = set;\n return (nodes[property] = s);\n}\nfunction proxyDescriptor$1(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE)\n return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n return desc;\n}\nfunction trackSelf(target) {\n getListener() && getNode(getNodes(target, $NODE), $SELF)();\n}\nfunction ownKeys(target) {\n trackSelf(target);\n return Reflect.ownKeys(target);\n}\nconst proxyTraps$1 = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getNodes(target, $NODE);\n const tracked = nodes[property];\n let value = tracked ? tracked() : target[property];\n if (property === $NODE || property === $HAS || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n if (\n getListener() &&\n (typeof value !== \"function\" || target.hasOwnProperty(property)) &&\n !(desc && desc.get)\n )\n value = getNode(nodes, property, value)();\n }\n return isWrappable(value) ? wrap$1(value) : value;\n },\n has(target, property) {\n if (\n property === $RAW ||\n property === $PROXY ||\n property === $TRACK ||\n property === $NODE ||\n property === $HAS ||\n property === \"__proto__\"\n )\n return true;\n getListener() && getNode(getNodes(target, $HAS), property)();\n return property in target;\n },\n set() {\n return true;\n },\n deleteProperty() {\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor$1\n};\nfunction setProperty(state, property, value, deleting = false) {\n if (!deleting && state[property] === value) return;\n const prev = state[property],\n len = state.length;\n if (value === undefined) {\n delete state[property];\n if (state[$HAS] && state[$HAS][property] && prev !== undefined) state[$HAS][property].$();\n } else {\n state[property] = value;\n if (state[$HAS] && state[$HAS][property] && prev === undefined) state[$HAS][property].$();\n }\n let nodes = getNodes(state, $NODE),\n node;\n if ((node = getNode(nodes, property, prev))) node.$(() => value);\n if (Array.isArray(state) && state.length !== len) {\n for (let i = state.length; i < len; i++) (node = nodes[i]) && node.$();\n (node = getNode(nodes, \"length\", len)) && node.$(state.length);\n }\n (node = nodes[$SELF]) && node.$();\n}\nfunction mergeStoreNode(state, value) {\n const keys = Object.keys(value);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n setProperty(state, key, value[key]);\n }\n}\nfunction updateArray(current, next) {\n if (typeof next === \"function\") next = next(current);\n next = unwrap(next);\n if (Array.isArray(next)) {\n if (current === next) return;\n let i = 0,\n len = next.length;\n for (; i < len; i++) {\n const value = next[i];\n if (current[i] !== value) setProperty(current, i, value);\n }\n setProperty(current, \"length\", len);\n } else mergeStoreNode(current, next);\n}\nfunction updatePath(current, path, traversed = []) {\n let part,\n prev = current;\n if (path.length > 1) {\n part = path.shift();\n const partType = typeof part,\n isArray = Array.isArray(current);\n if (Array.isArray(part)) {\n for (let i = 0; i < part.length; i++) {\n updatePath(current, [part[i]].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"function\") {\n for (let i = 0; i < current.length; i++) {\n if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"object\") {\n const { from = 0, to = current.length - 1, by = 1 } = part;\n for (let i = from; i <= to; i += by) {\n updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (path.length > 1) {\n updatePath(current[part], path, [part].concat(traversed));\n return;\n }\n prev = current[part];\n traversed = [part].concat(traversed);\n }\n let value = path[0];\n if (typeof value === \"function\") {\n value = value(prev, traversed);\n if (value === prev) return;\n }\n if (part === undefined && value == undefined) return;\n value = unwrap(value);\n if (part === undefined || (isWrappable(prev) && isWrappable(value) && !Array.isArray(value))) {\n mergeStoreNode(prev, value);\n } else setProperty(current, part, value);\n}\nfunction createStore(...[store, options]) {\n const unwrappedStore = unwrap(store || {});\n const isArray = Array.isArray(unwrappedStore);\n const wrappedStore = wrap$1(unwrappedStore);\n function setStore(...args) {\n batch(() => {\n isArray && args.length === 1\n ? updateArray(unwrappedStore, args[0])\n : updatePath(unwrappedStore, args);\n });\n }\n return [wrappedStore, setStore];\n}\n\nfunction proxyDescriptor(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (\n !desc ||\n desc.get ||\n desc.set ||\n !desc.configurable ||\n property === $PROXY ||\n property === $NODE\n )\n return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n desc.set = v => (target[$PROXY][property] = v);\n return desc;\n}\nconst proxyTraps = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getNodes(target, $NODE);\n const tracked = nodes[property];\n let value = tracked ? tracked() : target[property];\n if (property === $NODE || property === $HAS || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n const isFunction = typeof value === \"function\";\n if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get))\n value = getNode(nodes, property, value)();\n else if (value != null && isFunction && value === Array.prototype[property]) {\n return (...args) => batch(() => Array.prototype[property].apply(receiver, args));\n }\n }\n return isWrappable(value) ? wrap(value) : value;\n },\n has(target, property) {\n if (\n property === $RAW ||\n property === $PROXY ||\n property === $TRACK ||\n property === $NODE ||\n property === $HAS ||\n property === \"__proto__\"\n )\n return true;\n getListener() && getNode(getNodes(target, $HAS), property)();\n return property in target;\n },\n set(target, property, value) {\n batch(() => setProperty(target, property, unwrap(value)));\n return true;\n },\n deleteProperty(target, property) {\n batch(() => setProperty(target, property, undefined, true));\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor\n};\nfunction wrap(value) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: (p = new Proxy(value, proxyTraps))\n });\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n const proto = Object.getPrototypeOf(value);\n const isClass =\n value !== null &&\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n proto !== Object.prototype;\n if (isClass) {\n const descriptors = Object.getOwnPropertyDescriptors(proto);\n keys.push(...Object.keys(descriptors));\n Object.assign(desc, descriptors);\n }\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (isClass && prop === \"constructor\") continue;\n if (desc[prop].get) {\n const get = desc[prop].get.bind(p);\n Object.defineProperty(value, prop, {\n get,\n configurable: true\n });\n }\n if (desc[prop].set) {\n const og = desc[prop].set,\n set = v => batch(() => og.call(p, v));\n Object.defineProperty(value, prop, {\n set,\n configurable: true\n });\n }\n }\n }\n return p;\n}\nfunction createMutable(state, options) {\n const unwrappedStore = unwrap(state || {});\n const wrappedStore = wrap(unwrappedStore);\n return wrappedStore;\n}\nfunction modifyMutable(state, modifier) {\n batch(() => modifier(unwrap(state)));\n}\n\nconst $ROOT = Symbol(\"store-root\");\nfunction applyState(target, parent, property, merge, key) {\n const previous = parent[property];\n if (target === previous) return;\n const isArray = Array.isArray(target);\n if (\n property !== $ROOT &&\n (!isWrappable(target) ||\n !isWrappable(previous) ||\n isArray !== Array.isArray(previous) ||\n (key && target[key] !== previous[key]))\n ) {\n setProperty(parent, property, target);\n return;\n }\n if (isArray) {\n if (\n target.length &&\n previous.length &&\n (!merge || (key && target[0] && target[0][key] != null))\n ) {\n let i, j, start, end, newEnd, item, newIndicesNext, keyVal;\n for (\n start = 0, end = Math.min(previous.length, target.length);\n start < end &&\n (previous[start] === target[start] ||\n (key && previous[start] && target[start] && previous[start][key] === target[start][key]));\n start++\n ) {\n applyState(target[start], previous, start, merge, key);\n }\n const temp = new Array(target.length),\n newIndices = new Map();\n for (\n end = previous.length - 1, newEnd = target.length - 1;\n end >= start &&\n newEnd >= start &&\n (previous[end] === target[newEnd] ||\n (key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]));\n end--, newEnd--\n ) {\n temp[newEnd] = previous[end];\n }\n if (start > newEnd || start > end) {\n for (j = start; j <= newEnd; j++) setProperty(previous, j, target[j]);\n for (; j < target.length; j++) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = target[j];\n keyVal = key && item ? item[key] : item;\n i = newIndices.get(keyVal);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(keyVal, j);\n }\n for (i = start; i <= end; i++) {\n item = previous[i];\n keyVal = key && item ? item[key] : item;\n j = newIndices.get(keyVal);\n if (j !== undefined && j !== -1) {\n temp[j] = previous[i];\n j = newIndicesNext[j];\n newIndices.set(keyVal, j);\n }\n }\n for (j = start; j < target.length; j++) {\n if (j in temp) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n } else setProperty(previous, j, target[j]);\n }\n } else {\n for (let i = 0, len = target.length; i < len; i++) {\n applyState(target[i], previous, i, merge, key);\n }\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n const targetKeys = Object.keys(target);\n for (let i = 0, len = targetKeys.length; i < len; i++) {\n applyState(target[targetKeys[i]], previous, targetKeys[i], merge, key);\n }\n const previousKeys = Object.keys(previous);\n for (let i = 0, len = previousKeys.length; i < len; i++) {\n if (target[previousKeys[i]] === undefined) setProperty(previous, previousKeys[i], undefined);\n }\n}\nfunction reconcile(value, options = {}) {\n const { merge, key = \"id\" } = options,\n v = unwrap(value);\n return state => {\n if (!isWrappable(state) || !isWrappable(v)) return v;\n const res = applyState(\n v,\n {\n [$ROOT]: state\n },\n $ROOT,\n merge,\n key\n );\n return res === undefined ? state : res;\n };\n}\nconst producers = new WeakMap();\nconst setterTraps = {\n get(target, property) {\n if (property === $RAW) return target;\n const value = target[property];\n let proxy;\n return isWrappable(value)\n ? producers.get(value) ||\n (producers.set(value, (proxy = new Proxy(value, setterTraps))), proxy)\n : value;\n },\n set(target, property, value) {\n setProperty(target, property, unwrap(value));\n return true;\n },\n deleteProperty(target, property) {\n setProperty(target, property, undefined, true);\n return true;\n }\n};\nfunction produce(fn) {\n return state => {\n if (isWrappable(state)) {\n let proxy;\n if (!(proxy = producers.get(state))) {\n producers.set(state, (proxy = new Proxy(state, setterTraps)));\n }\n fn(proxy);\n }\n return state;\n };\n}\n\nconst DEV = undefined;\n\nexport { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };\n","// src/index.ts\nvar isDict = (value) => value != null && (value = Object.getPrototypeOf(value), value === Array.prototype || value === Object.prototype);\nvar isRecordDict = (value) => value != null && Object.getPrototypeOf(value) === Object.prototype;\nfunction visitDict(flat_dict, dict, path) {\n for (const [key, value] of Object.entries(dict)) {\n const key_path = `${path}.${key}`;\n flat_dict[key_path] = value;\n isDict(value) && visitDict(flat_dict, value, key_path);\n }\n}\nfunction flatten(dict) {\n const flat_dict = { ...dict };\n for (const [key, value] of Object.entries(dict)) {\n isDict(value) && visitDict(flat_dict, value, key);\n }\n return flat_dict;\n}\nvar prefix = (dict, prefix2) => {\n prefix2 += \".\";\n const result = {};\n for (const [key, value] of Object.entries(dict)) {\n result[prefix2 + key] = value;\n }\n return result;\n};\nvar template = (source) => source;\nvar resolveTemplate = (string, args) => {\n if (args)\n for (const [key, value] of Object.entries(args))\n string = string.replace(new RegExp(`{{\\\\s*${key}\\\\s*}}`, \"g\"), value);\n return string;\n};\nvar identityResolveTemplate = (v) => v;\nfunction translator(dict, resolveTemplate2 = identityResolveTemplate) {\n return (path, ...args) => {\n if (path[0] === \".\")\n path = path.slice(1);\n const value = dict()?.[path];\n switch (typeof value) {\n case \"function\":\n return value(...args);\n case \"string\":\n return resolveTemplate2(value, args[0]);\n default:\n return value;\n }\n };\n}\nfunction scopedTranslator(translator2, scope) {\n return (path, ...args) => translator2(`${scope}.${path}`, ...args);\n}\nfunction chainedTranslator(init_dict, translate, path = \"\") {\n const result = { ...init_dict };\n for (const [key, value] of Object.entries(init_dict)) {\n const key_path = `${path}.${key}`;\n result[key] = isRecordDict(value) ? chainedTranslator(value, translate, key_path) : (...args) => translate(\n key_path,\n ...args\n );\n }\n return result;\n}\nvar proxyTranslator = (translate, path = \"\") => new Proxy(translate.bind(void 0, path), new Traps(translate, path));\nvar Traps = class {\n constructor(translate, path) {\n this.translate = translate;\n this.path = path;\n }\n get(target, prop) {\n if (typeof prop !== \"string\")\n return Reflect.get(target, prop);\n return proxyTranslator(this.translate, `${this.path}.${prop}`);\n }\n has(target, prop) {\n if (typeof prop !== \"string\")\n return Reflect.has(target, prop);\n return proxyTranslator(this.translate, `${this.path}.${prop}`) !== void 0;\n }\n getOwnPropertyDescriptor(target, prop) {\n if (typeof prop !== \"string\")\n return Reflect.getOwnPropertyDescriptor(target, prop);\n return {\n enumerable: true,\n get: () => proxyTranslator(this.translate, `${this.path}.${prop}`)\n };\n }\n};\n\nexport { chainedTranslator, flatten, identityResolveTemplate, prefix, proxyTranslator, resolveTemplate, scopedTranslator, template, translator };\n","import { createHydratableSignal } from '@solid-primitives/utils';\nimport { createSignal, onMount, onCleanup, createEffect, createUniqueId, untrack } from 'solid-js';\nimport { isServer } from 'solid-js/web';\nimport { reconcile } from 'solid-js/store';\n\nvar __require = /* @__PURE__ */ ((x) => typeof require !== \"undefined\" ? require : typeof Proxy !== \"undefined\" ? new Proxy(x, {\n get: (a, b) => (typeof require !== \"undefined\" ? require : a)[b]\n}) : x)(function(x) {\n if (typeof require !== \"undefined\")\n return require.apply(this, arguments);\n throw Error('Dynamic require of \"' + x + '\" is not supported');\n});\nfunction createStorage(props) {\n const [error, setError] = createSignal();\n const handleError = props?.throw ? (err, fallback) => {\n setError(err instanceof Error ? err : new Error(fallback));\n throw err;\n } : (err, fallback) => {\n setError(err instanceof Error ? err : new Error(fallback));\n };\n const apis = props?.api ? Array.isArray(props.api) ? props.api : [props.api] : [globalThis.localStorage].filter(Boolean);\n const prefix = props?.prefix ? `${props.prefix}.` : \"\";\n const signals = /* @__PURE__ */ new Map();\n const store = new Proxy(\n {},\n {\n get(_, key) {\n let node = signals.get(key);\n if (!node) {\n node = createSignal(void 0, { equals: false });\n signals.set(key, node);\n }\n node[0]();\n const value = apis.reduce(\n (result, api) => {\n if (result !== null || !api) {\n return result;\n }\n try {\n return api.getItem(`${prefix}${key}`);\n } catch (err) {\n handleError(err, `Error reading ${prefix}${key} from ${api[\"name\"]}`);\n return null;\n }\n },\n null\n );\n if (value !== null && props?.deserializer) {\n return props.deserializer(value, key, props.options);\n }\n return value;\n }\n }\n );\n const setter = (key, value, options) => {\n const filteredValue = props?.serializer ? props.serializer(value, key, options ?? props.options) : value;\n const apiKey = `${prefix}${key}`;\n apis.forEach((api) => {\n try {\n api.getItem(apiKey) !== filteredValue && api.setItem(apiKey, filteredValue);\n } catch (err) {\n handleError(err, `Error setting ${prefix}${key} to ${filteredValue} in ${api.name}`);\n }\n });\n const node = signals.get(key);\n node && node[1]();\n };\n const remove = (key) => apis.forEach((api) => {\n try {\n api.removeItem(`${prefix}${key}`);\n } catch (err) {\n handleError(err, `Error removing ${prefix}${key} from ${api.name}`);\n }\n });\n const clear = () => apis.forEach((api) => {\n try {\n api.clear();\n } catch (err) {\n handleError(err, `Error clearing ${api.name}`);\n }\n });\n const toJSON = () => {\n const result = {};\n const addValue = (key, value) => {\n if (!result.hasOwnProperty(key)) {\n const filteredValue = value && props?.deserializer ? props.deserializer(value, key, props.options) : value;\n if (filteredValue) {\n result[key] = filteredValue;\n }\n }\n };\n apis.forEach((api) => {\n if (typeof api.getAll === \"function\") {\n let values;\n try {\n values = api.getAll();\n } catch (err) {\n handleError(err, `Error getting all values from in ${api.name}`);\n }\n for (const key of values) {\n addValue(key, values[key]);\n }\n } else {\n let index = 0, key;\n try {\n while (key = api.key(index++)) {\n if (!result.hasOwnProperty(key)) {\n addValue(key, api.getItem(key));\n }\n }\n } catch (err) {\n handleError(err, `Error getting all values from ${api.name}`);\n }\n }\n });\n return result;\n };\n props?.sync !== false && onMount(() => {\n const listener = (ev) => {\n let changed = false;\n apis.forEach((api) => {\n try {\n if (api !== ev.storageArea && ev.key && ev.newValue !== api.getItem(ev.key)) {\n ev.newValue ? api.setItem(ev.key, ev.newValue) : api.removeItem(ev.key);\n changed = true;\n }\n } catch (err) {\n handleError(\n err,\n `Error synching api ${api.name} from storage event (${ev.key}=${ev.newValue})`\n );\n }\n });\n changed && ev.key && signals.get(ev.key)?.[1]();\n };\n if (\"addEventListener\" in globalThis) {\n globalThis.addEventListener(\"storage\", listener);\n onCleanup(() => globalThis.removeEventListener(\"storage\", listener));\n } else {\n apis.forEach((api) => api.addEventListener?.(\"storage\", listener));\n onCleanup(() => apis.forEach((api) => api.removeEventListener?.(\"storage\", listener)));\n }\n });\n return [\n store,\n setter,\n {\n clear,\n error,\n remove,\n toJSON\n }\n ];\n}\nfunction createAsyncStorage(props) {\n const [error, setError] = createSignal();\n const handleError = props?.throw ? (err, fallback) => {\n setError(err instanceof Error ? err : new Error(fallback));\n throw err;\n } : (err, fallback) => {\n setError(err instanceof Error ? err : new Error(fallback));\n };\n const apis = props?.api ? Array.isArray(props.api) ? props.api : [props.api] : [];\n const prefix = props?.prefix ? `${props.prefix}.` : \"\";\n const signals = /* @__PURE__ */ new Map();\n const store = new Proxy({}, {\n get(_, key) {\n let node = signals.get(key);\n if (!node) {\n node = createSignal(void 0, { equals: false });\n signals.set(key, node);\n }\n node[0]();\n return apis.reduce((result, api) => {\n if (result !== null || !api) {\n return result;\n }\n let value;\n try {\n value = api.getItem(`${prefix}${key}`);\n } catch (err) {\n handleError(err, `Error getting ${prefix}${key} from ${api.name}`);\n }\n if (value instanceof Promise) {\n return value.then(\n (newValue) => newValue && props?.deserializer ? props.deserializer(newValue, key, props.options) : newValue\n );\n }\n return value !== null && props?.deserializer ? Promise.resolve(props.deserializer(value, key, props.options)) : Promise.resolve(value);\n }, null);\n }\n });\n const setter = (key, value, options) => {\n const filteredValue = props?.serializer ? props.serializer(value, key, options ?? props.options) : value;\n return Promise.all(\n apis.map((api) => {\n try {\n api.setItem(`${prefix}${key}`, filteredValue, options ?? props?.options);\n } catch (err) {\n handleError(err, `Error setting ${prefix}${key} to ${filteredValue} in ${api.name}`);\n }\n })\n ).then(() => {\n const node = signals.get(key);\n node && node[1]();\n });\n };\n const remove = (key) => {\n Promise.all(\n apis.map((api) => {\n try {\n api.removeItem(`${prefix}${key}`);\n } catch (err) {\n handleError(err, `Error removing ${prefix}${key} from ${api.name}`);\n }\n })\n ).then(() => {\n const node = signals.get(key);\n node && node[1]();\n });\n };\n const clear = () => Promise.all(\n apis.map(async (api) => {\n let index = 0, key;\n while (key = await api.key(index++)) {\n try {\n await api.removeItem(key);\n } catch (err) {\n handleError(err, `Error removing ${key} from ${api.name} during clear()`);\n }\n }\n })\n ).then(() => {\n return;\n });\n const toJSON = async () => {\n const result = {};\n const addValue = (key, value) => {\n if (!result.hasOwnProperty(key)) {\n const filteredValue = value && props?.deserializer ? props.deserializer(value, key, props.options) : value;\n if (filteredValue) {\n result[key] = filteredValue;\n }\n }\n };\n await Promise.all(\n apis.map(async (api) => {\n if (typeof api.getAll === \"function\") {\n try {\n const values = await api.getAll();\n for (const key of values) {\n addValue(key, values[key]);\n }\n } catch (err) {\n handleError(err, `Error attempting to get all keys from ${api.name}`);\n }\n } else {\n let index = 0, key;\n try {\n while (key = await api.key(index++)) {\n addValue(key, await api.getItem(key));\n }\n } catch (err) {\n handleError(err, `Error attempting to get all keys from ${api.name}`);\n }\n }\n })\n );\n return result;\n };\n props?.sync !== false && onMount(() => {\n const listener = (ev) => {\n let changed = false;\n apis.forEach(async (api) => {\n try {\n if (api !== ev.storageArea && ev.key && ev.newValue !== await api.getItem(ev.key)) {\n ev.newValue ? api.setItem(ev.key, ev.newValue) : api.removeItem(ev.key);\n changed = true;\n }\n } catch (err) {\n handleError(err, \"Error attempting to sync on event\");\n }\n });\n changed && ev.key && signals.get(ev.key)?.[1]();\n };\n if (\"addEventListener\" in globalThis) {\n globalThis.addEventListener(\"storage\", listener);\n onCleanup(() => globalThis.removeEventListener(\"storage\", listener));\n } else {\n apis.forEach((api) => api.addEventListener?.(\"storage\", listener));\n onCleanup(() => apis.forEach((api) => api.removeEventListener?.(\"storage\", listener)));\n }\n });\n return [\n store,\n setter,\n {\n remove,\n clear,\n error,\n toJSON\n }\n ];\n}\nfunction createStorageSignal(key, initialValue, props) {\n const [error, setError] = createSignal();\n const apis = props?.api ? Array.isArray(props.api) ? props.api : [props.api] : [globalThis.localStorage].filter(Boolean);\n const prefix = props?.prefix ? `${props.prefix}.` : \"\";\n const read = () => apis.reduce((result, api) => {\n if (result !== null || !api) {\n return result;\n }\n let value = null;\n try {\n value = api.getItem(`${prefix}${key}`);\n } catch (err) {\n setError(\n err instanceof Error ? err : new Error(`Error reading ${prefix}${key} from ${api.name}`)\n );\n if (props?.throw) {\n throw err;\n }\n }\n if (value !== null && props?.deserializer) {\n return props.deserializer(value + \"\", key, props.options);\n }\n return value;\n }, null);\n const [accessor, setter] = createHydratableSignal(\n initialValue,\n () => read() ?? initialValue,\n props\n );\n createEffect(() => {\n const value = accessor();\n const filteredValue = props?.serializer ? props.serializer(value, key, props.options) : value + \"\";\n const apiKey = `${prefix}${key}`;\n try {\n if (value === null) {\n apis.forEach((api) => api.getItem(apiKey) !== null && api.removeItem(apiKey));\n } else {\n apis.forEach(\n (api) => api.getItem(apiKey) !== filteredValue && api.setItem(apiKey, filteredValue, props?.options)\n );\n }\n } catch (err) {\n setError(\n err instanceof Error ? err : new Error(`Error ${value === null ? \"removing\" : \"writing\"} value`)\n );\n if (props?.throw) {\n throw err;\n }\n }\n });\n const refetch = () => {\n const value = read();\n setter(value);\n };\n props?.sync !== false && onMount(() => {\n const listener = (ev) => {\n let changed = false;\n try {\n apis.forEach((api) => {\n if (api !== ev.storageArea && ev.key && ev.newValue !== api.getItem(ev.key)) {\n ev.newValue ? api.setItem(ev.key, ev.newValue) : api.removeItem(ev.key);\n changed = true;\n }\n });\n } catch (err) {\n setError(err instanceof Error ? err : new Error(\"Error synching api after event\"));\n if (props?.throw) {\n throw err;\n }\n }\n changed && refetch();\n };\n if (\"addEventListener\" in globalThis) {\n globalThis.addEventListener(\"storage\", listener);\n onCleanup(() => globalThis.removeEventListener(\"storage\", listener));\n } else {\n apis.forEach((api) => api.addEventListener?.(\"storage\", listener));\n onCleanup(() => apis.forEach((api) => api.removeEventListener?.(\"storage\", listener)));\n }\n });\n return [Object.assign(accessor, { error }), setter, refetch];\n}\nvar createLocalStorage = createStorage;\nvar createSessionStorage = (props) => createStorage({ ...props, api: globalThis.sessionStorage });\n\n// src/tools.ts\nvar addClearMethod = (storage) => {\n if (typeof storage.clear === \"function\") {\n return storage;\n }\n storage.clear = () => {\n let key;\n while (key = storage.key(0)) {\n storage.removeItem(key);\n }\n };\n return storage;\n};\n\n// src/cookies.ts\nvar cookiePropertyKeys = [\n \"domain\",\n \"expires\",\n \"path\",\n \"secure\",\n \"httpOnly\",\n \"maxAge\",\n \"sameSite\"\n];\nfunction serializeCookieOptions(options) {\n if (!options) {\n return \"\";\n }\n let memo = \"\";\n for (const key in options) {\n if (!cookiePropertyKeys.includes(key))\n continue;\n const value = options[key];\n memo += value instanceof Date ? `; ${key}=${value.toUTCString()}` : typeof value === \"boolean\" ? `; ${key}` : `; ${key}=${value}`;\n }\n return memo;\n}\nfunction deserializeCookieOptions(cookie, key) {\n return cookie.match(`(^|;)\\\\s*${key}\\\\s*=\\\\s*([^;]+)`)?.pop() ?? null;\n}\nvar useRequest;\ntry {\n useRequest = __require(\"solid-start/server\").useRequest;\n} catch (e) {\n useRequest = () => {\n console.warn(\n \"It seems you attempt to use cookieStorage on the server without having solid-start installed or use vite.\"\n );\n return {\n request: { headers: { get: () => \"\" } }\n };\n };\n}\nvar cookieStorage = addClearMethod({\n _read: isServer ? (options) => {\n const eventOrRequest = options?.getRequest?.() || useRequest();\n const request = eventOrRequest && (\"request\" in eventOrRequest ? eventOrRequest.request : eventOrRequest);\n let result = \"\";\n if (eventOrRequest.responseHeaders) {\n const responseHeaders = eventOrRequest.responseHeaders;\n result += responseHeaders.get(\"Set-Cookie\")?.split(\",\").map((cookie) => !cookie.match(/\\\\w*\\\\s*=\\\\s*[^;]+/)).join(\";\") ?? \"\";\n }\n return `${result};${request?.headers?.get(\"Cookie\") ?? \"\"}`;\n } : () => document.cookie,\n _write: isServer ? (key, value, options) => {\n if (options?.setCookie) {\n options?.setCookie?.(key, value, options);\n return;\n }\n const pageEvent = options?.getRequest?.() || useRequest();\n if (!pageEvent.responseHeaders)\n return;\n const responseHeaders = pageEvent.responseHeaders;\n const cookies = responseHeaders.get(\"Set-Cookie\")?.split(\",\").filter((cookie) => !cookie.match(`\\\\s*${key}\\\\s*=`)) ?? [];\n cookies.push(`${key}=${value}${serializeCookieOptions(options)}`);\n responseHeaders.set(\"Set-Cookie\", cookies.join(\",\"));\n } : (key, value, options) => {\n document.cookie = `${key}=${value}${serializeCookieOptions(options)}`;\n },\n getItem: (key, options) => deserializeCookieOptions(cookieStorage._read(options), key),\n setItem: (key, value, options) => {\n const oldValue = isServer ? cookieStorage.getItem(key, options) : null;\n cookieStorage._write(key, value, options);\n if (!isServer) {\n const storageEvent = Object.assign(new Event(\"storage\"), {\n key,\n oldValue,\n newValue: value,\n url: globalThis.document.URL,\n storageArea: cookieStorage\n });\n window.dispatchEvent(storageEvent);\n }\n },\n removeItem: (key, options) => {\n cookieStorage._write(key, \"deleted\", { ...options, expires: /* @__PURE__ */ new Date(0) });\n },\n key: (index, options) => {\n let key = null;\n let count = 0;\n cookieStorage._read(options).replace(/(?:^|;)\\s*(.+?)\\s*=\\s*[^;]+/g, (_, found) => {\n if (!key && found && count++ === index) {\n key = found;\n }\n return \"\";\n });\n return key;\n },\n getLength: (options) => {\n let length = 0;\n cookieStorage._read(options).replace(/(?:^|;)\\s*.+?\\s*=\\s*[^;]+/g, (found) => {\n length += found ? 1 : 0;\n return \"\";\n });\n return length;\n },\n get length() {\n return this.getLength();\n }\n});\nvar createCookieStorage = (props) => createStorage({ ...props, api: cookieStorage });\nfunction makePersisted(signal, options = {}) {\n const storage = options.storage || globalThis.localStorage;\n if (!storage) {\n return signal;\n }\n const storageOptions = options.storageOptions;\n const name = options.name || `storage-${createUniqueId()}`;\n const serialize = options.serialize || JSON.stringify.bind(JSON);\n const deserialize = options.deserialize || JSON.parse.bind(JSON);\n const init = storage.getItem(name, storageOptions);\n const set = typeof signal[0] === \"function\" ? (data) => signal[1](() => deserialize(data)) : (data) => signal[1](reconcile(deserialize(data)));\n let unchanged = true;\n if (init instanceof Promise)\n init.then((data) => unchanged && data && set(data));\n else if (init)\n set(init);\n return [\n signal[0],\n typeof signal[0] === \"function\" ? (value) => {\n const output = signal[1](value);\n if (value)\n storage.setItem(name, serialize(output), storageOptions);\n else\n storage.removeItem(name, storageOptions);\n unchanged = false;\n return output;\n } : (...args) => {\n signal[1](...args);\n const value = serialize(untrack(() => signal[0]));\n storage.setItem(name, value, storageOptions);\n unchanged = false;\n }\n ];\n}\n\nexport { addClearMethod, cookieStorage, createAsyncStorage, createCookieStorage, createLocalStorage, createSessionStorage, createStorage, createStorageSignal, makePersisted };\n","const en = {\n title: \"Title\",\n desc: \"Knowledge system based on Zeroth Order Logic, hub for Anti-AI\",\n home: \"Home\",\n search: \"Search\",\n close: \"Close\",\n abstract: \"Abstract\",\n content: \"Content\",\n displayName: \"Display Name\",\n titleLabel: \"Title\",\n add: \"Add Proposition +\",\n prove: \"Prove\",\n disprove: \"Disprove\",\n articles: \"Articles\",\n implies: \"Proofs\",\n knows: \"Knows\",\n reviews: \"Reviews\",\n save: \"Save\",\n about: \"About\",\n account: \"Account\",\n contact: \"Contact\",\n comment: \"Comment\",\n dashboard: \"Dashboard\",\n signout: \"Sign Out\",\n signin: \"Sign In\",\n add_proof: \"Add Your Proof\",\n show_more: \"Show More\",\n proposition: \"Proposition\",\n propositions: \"Propositions\",\n priori_proposition: \"Priori Proposition\",\n app: {\n title: \"Scixiv\",\n },\n proposition_form: {\n essence_label: \"Share new Knowledge\",\n details_placeholder: \"More details about your proposition...\",\n },\n dash: {\n edit_review: \"Edit Review\",\n my_blog: \"My Blog\",\n newArticle: \"New Blog Article\",\n writing: \"Writing\",\n publish: \"Publish\",\n },\n imply: {\n desc_propositions: \"Propositions that can prove this knowedge\",\n },\n};\n\nexport default en;\nexport type LangType = typeof en;\n","import type { LangType } from \"./en\";\n\nconst zh: LangType = {\n title: \"标题\",\n desc: \"思合符契,基于零阶逻辑的推理系统, 反AI智慧中心 \",\n home: \"主页\",\n search: \"搜索\",\n close: \"关闭\",\n abstract: \"摘要\",\n content: \"内容\",\n displayName: \"名称\",\n titleLabel: \"标题\",\n add: \"添加论点 +\",\n prove: \"证明\",\n disprove: \"证否\",\n articles: \"文章\",\n implies: \"论证\",\n knows: \"知识\",\n reviews: \"审议\",\n save: \"保存\",\n about: \"关于\",\n account: \"账户\",\n contact: \"联系\",\n comment: \"评论\",\n dashboard: \"面板\",\n signout: \"登出\",\n signin: \"登录\",\n add_proof: \"提出你的论证\",\n show_more: \"更多详情\",\n proposition: \"论点\",\n propositions: \"论点\",\n priori_proposition: \"先验命题\",\n app: {\n title: \"思合\",\n },\n proposition_form: {\n essence_label: \"分析新知识\",\n details_placeholder: \"详细说明...\",\n },\n dash: {\n edit_review: \"编辑审议\",\n my_blog: \"我的博客\",\n newArticle: \"创建博客文章\",\n writing: \"写作\",\n publish: \"发布\",\n },\n imply: {\n desc_propositions: \"证明这个知识所需的论点\",\n },\n};\n\nexport default zh;\n","import * as i18n from \"@solid-primitives/i18n\";\nimport * as storage from \"@solid-primitives/storage\";\nimport * as router from \"@solidjs/router\";\nimport {\n type ParentComponent,\n createContext,\n // createEffect,\n createResource,\n startTransition,\n useContext,\n} from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\nimport { getRequestEvent } from \"solid-js/web\";\n\n// en dictionary is loaded by default\nimport en_dict from \"~/locales/en\";\nimport zh_dict from \"~/locales/zh\";\n\ntype RawDictionary = typeof en_dict;\n\nexport type Locale = \"en\" | \"zh-cn\";\n\n/*\nfor validating of other dictionaries have same keys as en dictionary\nsome might be missing, but the shape should be the same\n*/\ntype DeepPartial = T extends Record\n ? { [K in keyof T]?: DeepPartial }\n : T;\n\nconst raw_dict_map: Record> = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-explicit-any\n en: en_dict, // en is loaded by default\n \"zh-cn\": zh_dict,\n};\n\nexport type Dictionary = i18n.Flatten;\n\nconst en_flat_dict: Dictionary = i18n.flatten(en_dict);\n\nasync function fetchDictionary(locale: Locale): Promise {\n if (locale === \"en\") return en_flat_dict;\n\n const dict = raw_dict_map[locale];\n const flat_dict = i18n.flatten(dict) as RawDictionary;\n return { ...en_flat_dict, ...flat_dict };\n}\n\n// Some browsers does not map correctly to some locale code\n// due to offering multiple locale code for similar language (e.g. tl and fil)\n// This object maps it to correct `langs` key\nconst LANG_ALIASES: Partial> = {\n // fil: \"tl\",\n};\n\nconst toLocale = (string: string): Locale | undefined =>\n string in raw_dict_map\n ? (string as Locale)\n : string in LANG_ALIASES\n ? (LANG_ALIASES[string] as Locale)\n : undefined;\n\ninterface Settings {\n locale: Locale;\n // dark: boolean;\n}\n\nfunction initialLocale(location: router.Location): Locale {\n \"use server\";\n let locale: Locale | undefined;\n\n locale = toLocale(location.query.locale);\n if (locale) return locale;\n\n // locale = toLocale(navigator.language.slice(0, 2));\n // if (locale) return locale;\n\n // locale = toLocale(navigator.language.toLocaleLowerCase());\n // if (locale) return locale;\n\n return process.env.LOCALE || \"en\";\n}\n\nfunction initialSettings(location: router.Location): Settings {\n return {\n locale: initialLocale(location),\n // dark: window.matchMedia(\"(prefers-color-scheme: dark)\").matches,\n };\n}\n\nfunction deserializeSettings(\n value: string,\n location: router.Location\n): Settings {\n const parsed = JSON.parse(value) as unknown;\n if (!parsed || typeof parsed !== \"object\") return initialSettings(location);\n\n return {\n locale:\n (\"locale\" in parsed &&\n typeof parsed.locale === \"string\" &&\n toLocale(parsed.locale)) ||\n initialLocale(location),\n // dark:\n // \"dark\" in parsed && typeof parsed.dark === \"boolean\"\n // ? parsed.dark\n // : false,\n };\n}\n\ninterface AppState {\n // get isDark(): boolean;\n // setDark(value: boolean): void;\n get locale(): Locale;\n setLocale(value: Locale): void;\n t: i18n.Translator;\n}\n\nconst AppContext = createContext({} as AppState);\n\nexport const useAppState = () => useContext(AppContext);\n\nexport const AppContextProvider: ParentComponent = (props) => {\n const location = router.useLocation();\n\n const now = new Date();\n const cookieOptions: storage.CookieOptions = {\n expires: new Date(now.getFullYear() + 1, now.getMonth(), now.getDate()),\n getRequest: getRequestEvent,\n };\n\n const [settings, set] = storage.makePersisted(\n createStore(initialSettings(location)),\n {\n storageOptions: cookieOptions,\n storage: storage.cookieStorage,\n deserialize: (value) => deserializeSettings(value, location),\n }\n );\n\n const locale = () => settings.locale;\n\n const [dict] = createResource(locale, fetchDictionary, {\n initialValue: en_flat_dict,\n });\n\n // createEffect(() => {\n // document.documentElement.lang = settings.locale;\n // });\n\n // createEffect(() => {\n // if (settings.dark) document.documentElement.classList.add(\"dark\");\n // else document.documentElement.classList.remove(\"dark\");\n // });\n\n const t = i18n.translator(dict, i18n.resolveTemplate);\n\n const state: AppState = {\n // get isDark() {\n // return settings.dark;\n // },\n // setDark(value) {\n // set(\"dark\", value);\n // },\n get locale() {\n return settings.locale;\n },\n setLocale(value) {\n void startTransition(() => {\n set(\"locale\", value);\n });\n },\n t,\n };\n\n return (\n {props.children}\n );\n};\n"],"names":["$RAW","Symbol","$NODE","$HAS","$SELF","wrap$1","value","p","$PROXY","Object","defineProperty","Proxy","proxyTraps$1","Array","isArray","keys","desc","getOwnPropertyDescriptors","i","l","length","prop","get","enumerable","bind","isWrappable","obj","proto","getPrototypeOf","prototype","unwrap","item","set","Set","result","unwrapped","v","has","isFrozen","slice","add","assign","getNodes","target","symbol","nodes","create","getNode","property","s","createSignal","equals","internal","$","proxyDescriptor$1","Reflect","getOwnPropertyDescriptor","configurable","writable","trackSelf","getListener","ownKeys","receiver","$TRACK","tracked","hasOwnProperty","deleteProperty","setProperty","state","deleting","prev","len","undefined","node","mergeStoreNode","key","updateArray","current","next","updatePath","path","traversed","part","shift","partType","concat","from","to","by","createStore","store","options","unwrappedStore","wrappedStore","setStore","args","batch","$ROOT","applyState","parent","merge","previous","j","start","end","newEnd","newIndicesNext","keyVal","Math","min","temp","newIndices","Map","targetKeys","previousKeys","reconcile","res","isDict","visitDict","flat_dict","dict","entries","key_path","flatten","resolveTemplate","string","replace","RegExp","identityResolveTemplate","translator","resolveTemplate2","__require","x","require","a","b","apply","arguments","Error","addClearMethod","storage","clear","removeItem","cookiePropertyKeys","serializeCookieOptions","memo","includes","Date","toUTCString","deserializeCookieOptions","cookie","match","pop","useRequest","console","warn","request","headers","cookieStorage","_read","document","_write","getItem","setItem","storageEvent","Event","oldValue","newValue","url","globalThis","URL","storageArea","window","dispatchEvent","expires","index","count","_","found","getLength","makePersisted","signal","localStorage","storageOptions","name","createUniqueId","serialize","JSON","stringify","deserialize","parse","init","data","unchanged","Promise","then","output","untrack","en","title","home","search","close","abstract","content","displayName","titleLabel","prove","disprove","articles","implies","knows","reviews","save","about","account","contact","comment","dashboard","signout","signin","add_proof","show_more","proposition","propositions","priori_proposition","app","proposition_form","essence_label","details_placeholder","dash","edit_review","my_blog","newArticle","writing","publish","imply","desc_propositions","zh","raw_dict_map","en_dict","zh_dict","fetchDictionary","locale","i18n","en_flat_dict","LANG_ALIASES","toLocale","initialSettings","location","initialLocale","deserializeSettings","parsed","AppContextProvider","props","now","cookieOptions","getFullYear","getMonth","getDate","getRequest","getRequestEvent","settings","initialValue","startTransition","t","_$createComponent","AppContext","Provider","children"],"mappings":"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","x_google_ignoreList":[0,1,2]}