@inpageedit/core 0.17.1 → 0.17.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/InPageEdit.js +1 -1
  2. package/dist/{PluginImagesUsed-D5O8t694.js → PluginImagesUsed-DWpe6M-r.js} +2 -2
  3. package/dist/{PluginImagesUsed-D5O8t694.js.map → PluginImagesUsed-DWpe6M-r.js.map} +1 -1
  4. package/dist/{PluginPrefSync-C8tb5SJJ.js → PluginPrefSync-CmVHL2wx.js} +2 -2
  5. package/dist/{PluginPrefSync-C8tb5SJJ.js.map → PluginPrefSync-CmVHL2wx.js.map} +1 -1
  6. package/dist/{PluginStoreApp-CeKtXL3p.js → PluginStoreApp-CmLstT3F.js} +2 -2
  7. package/dist/{PluginStoreApp-CeKtXL3p.js.map → PluginStoreApp-CmLstT3F.js.map} +1 -1
  8. package/dist/{PluginTemplatesUsed-DYv_lbHw.js → PluginTemplatesUsed-BjRYFXHz.js} +2 -2
  9. package/dist/{PluginTemplatesUsed-DYv_lbHw.js.map → PluginTemplatesUsed-BjRYFXHz.js.map} +1 -1
  10. package/dist/Promise.withResolvers-C4chhLB1.js.map +1 -1
  11. package/dist/core.js +2 -2
  12. package/dist/{index-h57rl1RH.js → index-BVMm7Dix.js} +2 -2
  13. package/dist/{index-h57rl1RH.js.map → index-BVMm7Dix.js.map} +1 -1
  14. package/dist/{index--IhZKYnh.js → index-BYgh1HkH.js} +2 -2
  15. package/dist/{index--IhZKYnh.js.map → index-BYgh1HkH.js.map} +1 -1
  16. package/dist/{index-DSh05RaI.js → index-BbvMbIgz.js} +3 -3
  17. package/dist/{index-DSh05RaI.js.map → index-BbvMbIgz.js.map} +1 -1
  18. package/dist/{index-Bf6ewNGZ.js → index-BlVSMvH-.js} +2 -2
  19. package/dist/{index-Bf6ewNGZ.js.map → index-BlVSMvH-.js.map} +1 -1
  20. package/dist/{index-qbW7-LUD.js → index-CUDVeUEv.js} +2 -2
  21. package/dist/{index-qbW7-LUD.js.map → index-CUDVeUEv.js.map} +1 -1
  22. package/dist/{index-CxjH0_fO.js → index-Ce-zc5RR.js} +2 -2
  23. package/dist/{index-CxjH0_fO.js.map → index-Ce-zc5RR.js.map} +1 -1
  24. package/dist/{index-Dp_n8QEV.js → index-CkSdNy0U.js} +2 -2
  25. package/dist/{index-Dp_n8QEV.js.map → index-CkSdNy0U.js.map} +1 -1
  26. package/dist/{index-QtXlz9l0.js → index-D-8cyCdX.js} +148 -125
  27. package/dist/index-D-8cyCdX.js.map +1 -0
  28. package/dist/{index-CaTtMzfu.js → index-DTU2DZU6.js} +14 -14
  29. package/dist/{index-CaTtMzfu.js.map → index-DTU2DZU6.js.map} +1 -1
  30. package/dist/{index-BuSA1t5R.js → index-Dfdy54gH.js} +2 -2
  31. package/dist/{index-BuSA1t5R.js.map → index-Dfdy54gH.js.map} +1 -1
  32. package/dist/{index-Mi3qr9J0.js → index-DvFkW8lL.js} +2 -2
  33. package/dist/{index-Mi3qr9J0.js.map → index-DvFkW8lL.js.map} +1 -1
  34. package/dist/{index-_Sydb5MZ.js → index-JvsrhizC.js} +3 -3
  35. package/dist/{index-_Sydb5MZ.js.map → index-JvsrhizC.js.map} +1 -1
  36. package/dist/{index-fa8d4Dv_.js → index-LvMaeDQn.js} +2 -2
  37. package/dist/{index-fa8d4Dv_.js.map → index-LvMaeDQn.js.map} +1 -1
  38. package/dist/index.d.ts +5858 -27237
  39. package/dist/index.js +2 -2
  40. package/dist/plugins/index.js +12 -12
  41. package/dist/services/index.js +1 -1
  42. package/lib/index.umd.js +11 -11
  43. package/lib/index.umd.js.map +1 -1
  44. package/package.json +2 -1
  45. package/dist/index-QtXlz9l0.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index-_Sydb5MZ.js","sources":["../../schemastery-form/dist/index.js","../../schemastery-form/dist/vue.js","../src/utils/vueReactivity.ts","../src/plugins/preferences-ui/components/PreferencesApp.vue","../src/plugins/preferences-ui/index.tsx"],"sourcesContent":["const L = '@charset \"UTF-8\";:host{display:block;font-family:var(--schema-font-family, ui-sans-serif, system-ui, -apple-system);color:var(--schema-color-fg, #111827)}*,*:before,*:after{box-sizing:border-box}.wrapper{display:block;background:var(--schema-color-bg, #ffffff)}.form{display:grid;gap:12px}.field{display:grid;gap:6px;padding:8px 10px;border:1px solid var(--schema-color-muted, #e5e7eb);border-radius:var(--schema-radius, 10px);background:var(--schema-surface, #fff)}.label{font-size:12px;color:var(--schema-color-muted-text, #6b7280)}.input,select,textarea{width:100%;padding:8px 10px;border-radius:8px;border:1px solid var(--schema-color-muted, #e5e7eb);background:var(--schema-input-bg, #fff);color:inherit}.checkbox{display:inline-flex;align-items:center;gap:8px}.helper{font-size:12px;color:var(--schema-color-muted-text, #6b7280)}.row{display:grid;gap:8px}.actions{display:flex;gap:8px}.btn{padding:6px 10px;border:1px solid var(--schema-color-muted, #e5e7eb);background:var(--schema-btn-bg, #f8fafc);border-radius:8px;cursor:pointer;color:var(--schema-color-fg)}.btn.primary{background:var(--schema-color-primary, #2563eb);color:#fff;border-color:transparent}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.danger{background:var(--schema-color-danger, #dc2626);color:#fff;border-color:transparent}.group{display:grid;gap:10px}.kv{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:center}.badge{display:inline-flex;padding:2px 6px;border-radius:999px;font-size:11px;background:var(--schema-badge-bg, #eef2ff);color:var(--schema-badge-fg, #4f46e5)}.hidden{display:none!important}.toolbar{display:flex;gap:6px}.schema-collection-row{position:relative;transition:transform var(--schema-collection-transition-duration, .25s) var(--schema-collection-transition-ease, ease),opacity var(--schema-collection-transition-duration, .25s) var(--schema-collection-transition-ease, ease)}.schema-collection-row.enter{opacity:0}.schema-collection-row.enter.enter-active{opacity:1}.schema-collection-row.leaving{opacity:0}.field.schema-type-array .group,.field.schema-type-array .group .row{position:relative}.keyshortcut-wrap{display:flex;gap:.5em;align-items:center}.keyshortcut-btn{padding:6px 8px;font-size:1em}.keyshortcut-btn.recording{background:var(--schema-color-primary, #2563eb);color:#fff;border-color:transparent;animation:keyshortcut-pulse .5s ease-in-out infinite}@keyframes keyshortcut-pulse{0%,to{opacity:1}50%{opacity:.6}}', K = {\n arrayAdd: \"+\",\n arrayMoveUp: \"↑\",\n arrayMoveDown: \"↓\",\n arrayRemove: \"×\",\n dictAdd: \"+\",\n dictRemove: \"×\",\n rootLabel: \"root\"\n}, y = (o, n) => {\n customElements.get(o) || customElements.define(o, n);\n}, ae = (o, n, s) => {\n if (!n.length) return;\n let e = o, t = null, i = null;\n for (let r = 0; r < n.length - 1; r++) {\n const c = n[r];\n let l = e?.[c];\n l == null ? (l = typeof n[r + 1] == \"number\" ? [] : {}, e[c] = l) : typeof l != \"object\" && (l = typeof n[r + 1] == \"number\" ? [] : {}, e[c] = l), t = e, i = c, e = l;\n }\n const a = n[n.length - 1];\n if (e == null || typeof e != \"object\") {\n const r = typeof a == \"number\" ? [] : {};\n if (t)\n t[i] = r, e = r;\n else\n return;\n }\n try {\n e[a] = s;\n } catch {\n try {\n const c = Array.isArray(e) ? e.slice() : { ...e };\n c[a] = s, t && (t[i] = c);\n } catch {\n }\n }\n}, M = (o) => o.map(String).join(\".\"), re = (o) => o.replace(/[^a-zA-Z0-9_-]/g, \"_\"), F = (o) => `schema_${re(M(o) || \"root\")}`, T = (o) => M(o), u = (o, ...n) => {\n const s = new Set(n);\n s.size && o.setAttribute(\"part\", Array.from(s).join(\" \"));\n}, oe = [\n \"wrapper\",\n \"form\",\n \"field\",\n \"field-intersect\",\n \"field-string\",\n \"field-number\",\n \"field-boolean\",\n \"field-date\",\n \"field-const\",\n \"field-array\",\n \"field-object\",\n \"field-tuple\",\n \"field-union\",\n \"field-dict\",\n \"field-label\",\n \"field-helper\",\n \"field-group\",\n \"field-row\",\n \"field-actions\",\n \"field-button\",\n \"field-button-primary\",\n \"field-button-danger\",\n \"field-button-secondary\",\n \"field-toolbar\",\n \"field-badge\",\n \"field-input\",\n \"field-input-text\",\n \"field-input-number\",\n \"field-input-date\",\n \"field-input-select\",\n \"field-input-textarea\",\n \"field-input-checkbox\",\n \"field-const-value\",\n \"collection-row\",\n \"field-checkbox\",\n \"field-checkbox-text\",\n \"field-toolbar-select\"\n].join(\" \");\nfunction O(o, n) {\n if (n == null) return n;\n switch (o) {\n case \"number\":\n case \"natural\":\n case \"percent\": {\n if (n === \"\") return;\n const s = Number(n);\n return Number.isNaN(s) ? void 0 : s;\n }\n case \"boolean\":\n return !!n;\n case \"date\": {\n if (!n) return;\n const s = new Date(n);\n return Number.isNaN(+s) ? void 0 : s;\n }\n default:\n return n;\n }\n}\nfunction z(o) {\n return typeof o == \"function\" && !!o?.type;\n}\nfunction V(o) {\n if (!o) throw new Error(\"schema is required\");\n if (z(o)) return o;\n try {\n const n = Schema.from(o);\n if (z(n)) return n;\n } catch {\n }\n if (o?.type) {\n const n = o.type;\n if (Schema[n]) return Schema[n](o.inner ?? o.list ?? o.dict);\n }\n throw new Error(\"无法从传入对象生成 Schemastery 实例,请传入 schema 或 schema.toJSON() 的结果。\");\n}\nfunction w(o) {\n return o?.meta ?? {};\n}\nfunction ce(o) {\n return o.length > 0 && o.every((n) => n?.type === \"const\");\n}\nfunction P(o) {\n if (!o) return;\n const n = o, s = n.meta || {};\n if (Object.prototype.hasOwnProperty.call(s, \"default\")) return s.default;\n const e = n.type;\n try {\n const t = o();\n if (t !== void 0) return t;\n } catch {\n }\n switch (e) {\n case \"string\":\n return \"\";\n case \"number\":\n case \"natural\":\n case \"percent\":\n return 0;\n case \"boolean\":\n return !1;\n case \"array\":\n return [];\n case \"tuple\":\n return [];\n case \"object\":\n return {};\n case \"dict\":\n return {};\n case \"union\": {\n const t = n.list || [];\n return t.length ? P(t[0]) : void 0;\n }\n case \"const\":\n return n.value;\n case \"date\":\n return;\n case \"intersect\": {\n const t = n.list || [], i = (r, c) => {\n if (Array.isArray(r) && Array.isArray(c)) return c.slice();\n if (r && c && typeof r == \"object\" && typeof c == \"object\") {\n const l = { ...r };\n for (const h of Object.keys(c))\n l[h] = h in l ? i(l[h], c[h]) : c[h];\n return l;\n }\n return c ?? r;\n };\n let a = {};\n for (const r of t) a = i(a, P(r));\n return a;\n }\n default:\n return;\n }\n}\nclass k extends HTMLElement {\n constructor() {\n super(), this._path = [], this._i18n = K, this.$root = this.attachShadow({ mode: \"open\" });\n const n = document.createElement(\"style\");\n n.textContent = L, this.$root.appendChild(n);\n }\n /** 初始化公共容器(带类名与 data-path) */\n makeFieldContainer(n, s) {\n const e = document.createElement(\"div\");\n if (e.className = `field schema-form-item schema-type-${n}`, e.setAttribute(\"data-path\", M(this._path)), u(e, \"field\", `field-${n}`), this._label) {\n const t = document.createElement(\"label\");\n t.className = \"label\", t.textContent = this._label, u(t, \"field-label\"), e.appendChild(t);\n }\n if (s && s !== this._label) {\n const t = document.createElement(\"div\");\n t.className = \"helper\", t.textContent = s, u(t, \"field-helper\"), e.appendChild(t);\n }\n return e;\n }\n /** 外部设置 schema/path/label/value */\n set schema(n) {\n this._schema = V(n), this.render();\n }\n get schema() {\n return this._schema;\n }\n set path(n) {\n this._path = n ?? [], this.render();\n }\n get path() {\n return this._path;\n }\n set label(n) {\n this._label = n, this.render();\n }\n get label() {\n return this._label;\n }\n set i18n(n) {\n n && (this._i18n = { ...this._i18n, ...n }), this.render();\n }\n get i18n() {\n return this._i18n;\n }\n setValue(n) {\n this._value = n, this.render();\n }\n getValue() {\n return this._value;\n }\n /** 触发变更事件(冒泡) */\n emitChange(n) {\n this._value = n, this.dispatchEvent(\n new CustomEvent(\"change\", {\n bubbles: !0,\n composed: !0,\n detail: { path: this._path, value: n }\n })\n );\n }\n}\nclass I extends k {\n static {\n this.recEnd = null;\n }\n render() {\n if (this.$input && this.$root.contains(this.$input)) {\n const i = !!this.$root.querySelector(\"label.label\");\n if (!(!!this._label && !i)) {\n const r = this._value ?? \"\";\n this.$input.value !== r && document.activeElement !== this.$input && (this.$input.value = r);\n return;\n }\n }\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"string\", n.description), e = document.createElement(\"input\");\n this.$input = e, e.className = \"input\", u(e, \"field-input\", \"field-input-text\"), e.type = \"text\", e.name = T(this._path), e.id = F(this._path), n?.pattern?.source && (e.pattern = n.pattern.source), n?.max != null && (e.maxLength = n.max), e.value = this._value ?? \"\", e.oninput = () => this.emitChange(O(\"string\", e.value));\n const t = s.querySelector(\"label.label\");\n if (t && (t.htmlFor = e.id), n.role === \"keyshortcut\") {\n const i = document.createElement(\"div\");\n i.className = \"keyshortcut-wrap\";\n const a = document.createElement(\"button\");\n a.type = \"button\", a.className = \"btn keyshortcut-btn\", a.title = \"Record shortcut\", a.textContent = \"⌨\";\n let r = null;\n const c = () => {\n r && (r(), r = null, a.classList.remove(\"recording\"), a.title = \"Record shortcut\", I.recEnd === c && (I.recEnd = null));\n };\n a.onclick = () => {\n if (r) {\n c();\n return;\n }\n I.recEnd?.(), I.recEnd = c, a.classList.add(\"recording\"), a.title = \"Press your keys! (Esc to cancel)\";\n const l = (h) => {\n if (h.preventDefault(), h.stopPropagation(), h.key === \"Escape\") {\n c();\n return;\n }\n const f = [];\n h.ctrlKey && f.push(\"ctrl\"), h.metaKey && f.push(\"meta\"), h.altKey && f.push(\"alt\"), h.shiftKey && f.push(\"shift\");\n const m = h.key.toLowerCase();\n if ([\"control\", \"meta\", \"alt\", \"shift\"].includes(m)) return;\n f.push(m);\n const d = f.join(\"-\"), p = e.value.trimEnd();\n p.toLowerCase().split(/\\s*,\\s*/).includes(d) || (e.value = p ? p.replace(/,+$/, \"\") + \", \" + d : d, this.emitChange(e.value)), c();\n };\n document.addEventListener(\"keydown\", l, { capture: !0 }), r = () => document.removeEventListener(\"keydown\", l, { capture: !0 });\n }, i.appendChild(e), i.appendChild(a), s.appendChild(i);\n } else\n s.appendChild(e);\n this.$root.appendChild(s);\n }\n}\ny(\"schema-form-string\", I);\nclass J extends k {\n render() {\n if (this.$input && this.$root.contains(this.$input)) {\n const a = !!this.$root.querySelector(\"label.label\");\n if (!(!!this._label && !a)) {\n const c = this._value ?? \"\";\n this.$input.value !== String(c) && document.activeElement !== this.$input && (this.$input.value = c);\n return;\n }\n }\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = this._schema?.type ?? \"number\", s = w(this._schema), e = this.makeFieldContainer(\"number\", s.description), t = document.createElement(\"input\");\n this.$input = t, t.className = \"input\", u(t, \"field-input\", \"field-input-number\"), t.name = T(this._path), t.id = F(this._path), s?.min != null && (t.min = String(s.min)), s?.max != null && (t.max = String(s.max)), s?.step != null && (t.step = String(s.step)), n === \"percent\" && !t.step && (t.step = \"0.01\"), t.value = this._value ?? \"\", t.oninput = () => this.emitChange(O(n, t.value));\n const i = e.querySelector(\"label.label\");\n i && (i.htmlFor = t.id), s.role === \"slider\" ? t.type = \"range\" : t.type = \"number\", e.appendChild(t), this.$root.appendChild(e);\n }\n}\ny(\"schema-form-number\", J);\nclass Y extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"boolean\", n.description), e = document.createElement(\"label\");\n e.className = \"checkbox\", u(e, \"field-checkbox\");\n const t = document.createElement(\"input\");\n t.type = \"checkbox\", t.checked = !!this._value, t.name = T(this._path), t.id = F(this._path), u(t, \"field-input\", \"field-input-checkbox\");\n const i = document.createElement(\"span\");\n i.textContent = n.description ?? this._label ?? \"\", u(i, \"field-checkbox-text\"), t.onchange = () => this.emitChange(t.checked);\n const a = s.querySelector(\"label.label\");\n a && (a.htmlFor = t.id), e.append(t, i), s.appendChild(e), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-boolean\", Y);\nfunction q(o) {\n return String(o).padStart(2, \"0\");\n}\nfunction D(o) {\n return `${o.getFullYear()}-${q(o.getMonth() + 1)}-${q(o.getDate())}`;\n}\nfunction R(o) {\n return `${q(o.getHours())}:${q(o.getMinutes())}`;\n}\nfunction j(o) {\n return `${D(o)}T${R(o)}`;\n}\nclass X extends k {\n render() {\n if (this.$input && this.$root.contains(this.$input)) {\n const a = !!this.$root.querySelector(\"label.label\");\n if (!(!!this._label && !a)) {\n const l = w(this._schema).role || \"date\";\n if (document.activeElement !== this.$input)\n if (this._value instanceof Date)\n l === \"date\" ? this.$input.value = D(this._value) : l === \"time\" ? this.$input.value = R(this._value) : l === \"datetime\" && (this.$input.value = j(this._value));\n else if (typeof this._value == \"string\" && l !== \"time\") {\n const h = new Date(this._value);\n isNaN(+h) || (l === \"date\" ? this.$input.value = D(h) : l === \"datetime\" && (this.$input.value = j(h)));\n } else this._value || (this.$input.value = \"\");\n return;\n }\n }\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"date\", n.description), e = document.createElement(\"input\");\n this.$input = e, e.className = \"input\", u(e, \"field-input\", \"field-input-date\");\n const t = n.role || \"date\";\n if (t === \"datetime\" ? e.type = \"datetime-local\" : t === \"time\" ? e.type = \"time\" : e.type = \"date\", e.name = T(this._path), e.id = F(this._path), this._value instanceof Date)\n t === \"date\" ? e.value = D(this._value) : t === \"time\" ? e.value = R(this._value) : t === \"datetime\" && (e.value = j(this._value));\n else if (typeof this._value == \"string\" && t !== \"time\") {\n const a = new Date(this._value);\n isNaN(+a) || (t === \"date\" ? e.value = D(a) : t === \"datetime\" && (e.value = j(a)));\n }\n e.oninput = () => {\n n.role;\n let a;\n if (!e.value)\n a = void 0;\n else {\n const r = new Date(e.value);\n a = Number.isNaN(+r) ? void 0 : r;\n }\n this.emitChange(a);\n };\n const i = s.querySelector(\"label.label\");\n i && (i.htmlFor = e.id), s.appendChild(e), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-date\", X);\nclass B extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this._schema.value;\n if (n.role === \"raw-html\") {\n if (s instanceof Node) {\n this.$root.append(s);\n return;\n } else if (typeof s == \"function\") {\n this.$root.append(s());\n return;\n } else if (typeof s == \"string\") {\n const a = document.createElement(\"div\");\n a.innerHTML = String(s), u(a, \"field-const-value\"), this.$root.appendChild(a);\n return;\n }\n }\n const e = this.makeFieldContainer(\"const\", n.description), t = document.createElement(\"section\");\n t.className = \"const content\", t.textContent = String(s), t.id = F(this._path), u(t, \"field-const-value\");\n const i = e.querySelector(\"label.label\");\n i && (i.htmlFor = t.id), e.appendChild(t), this.$root.appendChild(e);\n }\n}\ny(\"schema-form-const\", B);\nclass Z extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"intersect\", n.description);\n s.classList.remove(\"field\");\n const e = document.createElement(\"div\");\n e.classList.add(\"group\"), u(e, \"field-group\");\n const t = this._schema.list || [], i = t.length > 0 && t.every((r) => r?.type === \"object\"), a = (r, c) => {\n if (Array.isArray(r) && Array.isArray(c)) return c.slice();\n if (r && c && typeof r == \"object\" && typeof c == \"object\") {\n const l = { ...r };\n for (const h of Object.keys(c))\n l[h] = h in l ? a(l[h], c[h]) : c[h];\n return l;\n }\n return c ?? r;\n };\n if (i) {\n const r = this._value && typeof this._value == \"object\" ? this._value : {};\n t.forEach((c, l) => {\n const h = c?.meta?.description ?? \"\", f = A(c, this._path, r, h, this._i18n);\n f.addEventListener(\"change\", (m) => {\n m.stopPropagation();\n const d = a(this._value ?? {}, m.detail.value);\n this.emitChange(d);\n }), e.appendChild(f);\n });\n } else {\n const r = t[t.length - 1], c = A(r, this._path, this._value, this._label, this._i18n);\n c.addEventListener(\"change\", (l) => {\n l.stopPropagation(), this.emitChange(l.detail.value);\n }), e.appendChild(c);\n }\n s.appendChild(e), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-intersect\", Z);\nfunction le(o) {\n switch (o.type) {\n case \"intersect\":\n return \"schema-form-intersect\";\n case \"string\":\n return \"schema-form-string\";\n case \"number\":\n case \"natural\":\n case \"percent\":\n return \"schema-form-number\";\n case \"boolean\":\n return \"schema-form-boolean\";\n case \"date\":\n return \"schema-form-date\";\n case \"const\":\n return \"schema-form-const\";\n case \"array\":\n return \"schema-form-array\";\n case \"object\":\n return \"schema-form-object\";\n case \"tuple\":\n return \"schema-form-tuple\";\n case \"dict\":\n return \"schema-form-dict\";\n case \"union\": {\n const s = o.list || [];\n return s.length === 2 && s[0]?.type === \"is\" && s[0]?.constructor === Date && s[1]?.type === \"transform\" && (s[1]?.inner?.meta?.role === \"datetime\" || s[1]?.inner?.meta?.role === \"date\" || s[1]?.inner?.meta?.role === \"time\") ? \"schema-form-date\" : \"schema-form-union\";\n }\n default:\n return \"schema-form-string\";\n }\n}\nfunction A(o, n, s, e, t) {\n const i = le(o), a = document.createElement(i);\n return a.schema = o, a.path = n, a.label = e, t && (a.i18n = t), a.setValue?.(s), a.setAttribute(\"exportparts\", oe), a;\n}\nclass G extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"union\", n.description), e = this._schema.list || [];\n if (ce(e)) {\n const t = document.createElement(\"select\");\n t.className = \"input\", u(t, \"field-input\", \"field-input-select\"), t.name = T(this._path), t.id = F(this._path), e.forEach((a) => {\n const r = document.createElement(\"option\");\n r.value = String(a.value), r.textContent = String(a.meta?.description || a.value || a.type), this._value === a.value && (r.selected = !0), t.appendChild(r);\n }), t.onchange = () => this.emitChange(O(\"string\", t.value));\n const i = s.querySelector(\"label.label\");\n i && (i.htmlFor = t.id), s.appendChild(t);\n } else {\n const t = document.createElement(\"div\");\n t.className = \"toolbar\", u(t, \"field-toolbar\");\n const i = document.createElement(\"select\");\n i.className = \"input\", u(i, \"field-input\", \"field-input-select\", \"field-toolbar-select\"), i.name = T(this._path) + \".__type\", i.id = F(this._path) + \"__type\";\n let a = 0;\n e.forEach((h, f) => {\n const m = document.createElement(\"option\");\n m.value = String(f), m.textContent = String(h.meta?.description || h.value || h.type), i.appendChild(m);\n }), i.onchange = () => {\n a = Number(i.value);\n const h = e[a], f = P(h);\n this.emitChange(f), l();\n };\n const r = s.querySelector(\"label.label\");\n r && (r.htmlFor = i.id), t.appendChild(i), s.appendChild(t);\n const c = document.createElement(\"div\");\n c.className = \"group\", u(c, \"field-group\");\n const l = () => {\n c.innerHTML = \"\";\n const h = e[a], f = A(h, this._path, this._value, this._label);\n f instanceof B || (f.addEventListener(\"change\", (m) => {\n m.stopPropagation(), this.emitChange(m.detail.value);\n }), c.appendChild(f));\n };\n l(), s.appendChild(c);\n }\n this.$root.appendChild(s);\n }\n}\ny(\"schema-form-union\", G);\nclass Q extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"tuple\", n.description), e = document.createElement(\"div\");\n e.className = \"group\", u(e, \"field-group\");\n const t = Array.isArray(this._value) ? this._value : [];\n (this._schema.list || []).forEach((i, a) => {\n const r = A(\n i,\n [...this._path, a],\n t[a],\n `${this._label ?? \"\"}[${a}]`\n );\n r.addEventListener(\"change\", (c) => {\n c.stopPropagation();\n const l = Array.isArray(this._value) ? this._value.slice() : [];\n l[a] = c.detail.value, this.emitChange(l);\n }), e.appendChild(r);\n }), s.appendChild(e), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-tuple\", Q);\nclass W extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"object\", n.description), e = document.createElement(\"div\");\n e.className = \"group\", u(e, \"field-group\");\n const t = this._schema.dict || {};\n Object.keys(t).forEach((i) => {\n if (t[i]?.meta?.hidden) return;\n const a = (this._value ?? {})[i], r = A(t[i], [...this._path, i], a, i);\n r.addEventListener(\"change\", (c) => {\n c.stopPropagation();\n const l = { ...this._value ?? {} };\n l[i] = c.detail.value, this.emitChange(l);\n }), e.appendChild(r);\n }), s.appendChild(e), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-object\", W);\nclass H extends k {\n constructor() {\n super(...arguments), this._itemIds = [];\n }\n static {\n this._idCounter = 0;\n }\n generateItemId() {\n try {\n if (typeof crypto < \"u\" && typeof crypto.randomUUID == \"function\")\n return crypto.randomUUID();\n } catch {\n }\n return \"i\" + H._idCounter++;\n }\n ensureItemIds(n) {\n for (; this._itemIds.length < n; ) this._itemIds.push(this.generateItemId());\n this._itemIds.length > n && (this._itemIds.length = n);\n }\n // 采集当前行位置信息(用于 FLIP)\n capturePositions(n) {\n const s = {};\n return n.querySelectorAll(\".row\").forEach((e) => {\n const t = e.dataset.uid;\n t && (s[t] = e.getBoundingClientRect());\n }), s;\n }\n playFLIP(n, s) {\n Array.from(n.querySelectorAll(\".row\")).forEach((t) => {\n const i = t.dataset.uid;\n if (!i) return;\n const a = s[i];\n if (!a) return;\n const r = t.getBoundingClientRect(), c = a.left - r.left, l = a.top - r.top;\n (c || l) && (t.style.transition = \"none\", t.style.transform = `translate(${c}px, ${l}px)`, requestAnimationFrame(() => {\n t.style.transition = \"transform .25s ease\", t.style.transform = \"\";\n }));\n });\n }\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"array\", n.description), e = document.createElement(\"div\");\n e.className = \"group\", u(e, \"field-group\");\n const t = this._schema.inner, i = () => Array.isArray(this._value) ? this._value : [];\n this.ensureItemIds(i().length);\n const a = (l, h) => {\n e.innerHTML = \"\", i().forEach((m, d) => {\n const p = [...this._path, d], b = document.createElement(\"div\");\n b.className = \"row schema-collection-row\", u(b, \"field-row\", \"collection-row\");\n const _ = this._itemIds[d];\n b.dataset.uid = _, b.setAttribute(\"data-path\", M(p));\n const E = A(\n t,\n p,\n m,\n `${this._label ?? \"\"}[${d}]`\n );\n E.addEventListener(\"change\", ($) => {\n $.stopPropagation();\n const C = i().slice();\n C[d] = $.detail.value, this._value = C, this.emitChange(C);\n });\n const N = document.createElement(\"div\");\n N.className = \"actions\", u(N, \"field-actions\");\n const x = document.createElement(\"button\");\n x.type = \"button\", x.className = \"btn\", u(x, \"field-button\", \"field-button-secondary\"), x.textContent = this._i18n.arrayMoveUp ?? \"↑\", x.onclick = () => {\n if (d <= 0) return;\n const $ = this.capturePositions(e), C = i().slice();\n [C[d - 1], C[d]] = [C[d], C[d - 1]], [this._itemIds[d - 1], this._itemIds[d]] = [\n this._itemIds[d],\n this._itemIds[d - 1]\n ], this._value = C, a($), this.emitChange(C);\n };\n const v = document.createElement(\"button\");\n v.type = \"button\", v.className = \"btn\", u(v, \"field-button\", \"field-button-secondary\"), v.textContent = this._i18n.arrayMoveDown ?? \"↓\", v.onclick = () => {\n const $ = i();\n if (d >= $.length - 1) return;\n const C = this.capturePositions(e), S = $.slice();\n [S[d + 1], S[d]] = [S[d], S[d + 1]], [this._itemIds[d + 1], this._itemIds[d]] = [\n this._itemIds[d],\n this._itemIds[d + 1]\n ], this._value = S, a(C), this.emitChange(S);\n };\n const g = document.createElement(\"button\");\n g.type = \"button\", g.className = \"btn danger\", u(g, \"field-button\", \"field-button-danger\"), g.textContent = this._i18n.arrayRemove ?? \"×\", g.onclick = () => {\n b.classList.add(\"leaving\");\n const $ = 250;\n let C = !1;\n const S = () => {\n if (C) return;\n C = !0, clearTimeout(ne);\n const U = i().filter((de, ie) => ie !== d);\n this._itemIds.splice(d, 1);\n const se = this.capturePositions(e);\n this._value = U, a(se), this.emitChange(U);\n };\n b.addEventListener(\"transitionend\", S, { once: !0 });\n const ne = setTimeout(S, $ + 80);\n }, N.append(x, v, g), b.appendChild(E), b.appendChild(N), e.appendChild(b), h && h === _ && (b.classList.add(\"enter\"), requestAnimationFrame(() => {\n b.classList.add(\"enter-active\");\n }), requestAnimationFrame(() => {\n b.classList.remove(\"enter\");\n }));\n }), l && this.playFLIP(e, l);\n };\n a();\n const r = document.createElement(\"button\");\n r.type = \"button\", r.className = \"btn primary\", u(r, \"field-button\", \"field-button-primary\"), r.textContent = this._i18n.arrayAdd ?? \"+\", r.onclick = () => {\n const l = this.capturePositions(e), h = i().slice(), f = P(t);\n h.push(f);\n const m = this.generateItemId();\n this._itemIds.push(m), this._value = h, a(l, m), this.emitChange(h);\n };\n const c = document.createElement(\"div\");\n c.className = \"actions\", u(c, \"field-actions\"), c.appendChild(r), s.appendChild(e), s.appendChild(c), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-array\", H);\nclass ee extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"dict\", n.description), e = document.createElement(\"div\");\n e.className = \"group\", u(e, \"field-group\");\n const t = this._schema.inner, i = this._value ?? {}, a = (m) => `d_${m}`, r = () => {\n const m = {};\n return e.querySelectorAll(\".kv\").forEach((d) => {\n const p = d.dataset.uid;\n p && (m[p] = d.getBoundingClientRect());\n }), m;\n }, c = (m) => {\n e.querySelectorAll(\".kv\").forEach((d) => {\n const p = d.dataset.uid;\n if (!p) return;\n const b = m[p];\n if (!b) return;\n const _ = d.getBoundingClientRect(), E = b.left - _.left, N = b.top - _.top;\n (E || N) && (d.style.transition = \"none\", d.style.transform = `translate(${E}px, ${N}px)`, requestAnimationFrame(() => {\n d.style.transition = \"transform .25s ease\", d.style.transform = \"\";\n }));\n });\n }, l = (m, d) => {\n e.innerHTML = \"\", Object.keys(i).forEach((p) => {\n const b = [...this._path, p], _ = document.createElement(\"div\");\n _.className = \"kv schema-collection-row\", u(_, \"field-row\", \"collection-row\"), _.dataset.uid = a(p), _.setAttribute(\"data-path\", M(b));\n const E = document.createElement(\"input\");\n E.className = \"input\", u(E, \"field-input\", \"field-input-text\"), E.value = p, E.name = T(b) + \".__key\", E.id = F(b) + \"__key\";\n const N = A(t, b, i[p], `${this._label ?? \"\"}[${p}]`), x = document.createElement(\"button\");\n x.type = \"button\", x.className = \"btn danger\", u(x, \"field-button\", \"field-button-danger\"), x.textContent = this._i18n.dictRemove ?? \"×\", x.onclick = () => {\n const v = r();\n delete i[p];\n const g = { ...this._value ?? {} };\n delete g[p], this._value = g, l(v), this.emitChange(g);\n }, E.onchange = () => {\n const v = E.value.trim();\n if (!v || v === p || i[v] !== void 0) return;\n const g = r();\n i[v] = i[p], delete i[p];\n const $ = { ...this._value ?? {} };\n $[v] = $[p], delete $[p], this._value = $, l(g), this.emitChange($);\n }, N.addEventListener(\"change\", (v) => {\n v.stopPropagation();\n const g = { ...this._value ?? {} };\n g[p] = v.detail.value, this._value = g, this.emitChange(g);\n }), _.append(E, N, x), e.appendChild(_), d === p && (_.classList.add(\"enter\"), requestAnimationFrame(() => _.classList.add(\"enter-active\")), requestAnimationFrame(() => _.classList.remove(\"enter\")));\n }), m && c(m);\n };\n l();\n const h = document.createElement(\"button\");\n h.type = \"button\", h.className = \"btn primary\", u(h, \"field-button\", \"field-button-primary\"), h.textContent = this._i18n.dictAdd ?? \"+\", h.onclick = () => {\n let m = Object.keys(i).length + 1, d = `k${m}`;\n for (; i[d] !== void 0; ) d = `k${++m}`;\n const p = r();\n i[d] = P(t);\n const b = { ...this._value ?? {}, [d]: i[d] };\n this._value = b, l(p, d), this.emitChange(b);\n };\n const f = document.createElement(\"div\");\n f.className = \"actions\", u(f, \"field-actions\"), f.appendChild(h), s.appendChild(e), s.appendChild(f), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-dict\", ee);\nclass te extends HTMLElement {\n constructor() {\n super(), this._i18n = { ...K }, this._i18nCommitted = !1, this.$root = this.attachShadow({ mode: \"open\" });\n const n = document.createElement(\"style\");\n n.textContent = L, this.$root.appendChild(n);\n const s = document.createElement(\"div\");\n s.className = \"wrapper\", u(s, \"wrapper\");\n const e = document.createElement(\"form\");\n e.className = \"form\", u(e, \"form\"), s.appendChild(e), this.$root.appendChild(s), this.addEventListener(\"change\", (t) => {\n if (!t?.detail) return;\n const { path: i, value: a } = t.detail;\n Array.isArray(i) && i.length === 0 ? this._state = a : ae(this._state ?? (this._state = {}), i, a), this.dispatchEvent(\n new CustomEvent(\"form-change\", { detail: { path: i, value: a, state: this._state } })\n );\n });\n }\n // --- 对外 API ---\n set schema(n) {\n this._schema = V(n);\n try {\n this._state = this._schema(null, { autofix: !0 });\n } catch {\n this._state = P(this._schema);\n }\n this.render();\n }\n get schema() {\n return this._schema;\n }\n set schemaJSON(n) {\n this.schema = n;\n }\n get schemaJSON() {\n return this._schema?.toJSON?.();\n }\n setData(n, s = { validate: !0, autofix: !0 }) {\n if (!this._schema) throw new Error(\"请先设置 schema\");\n const e = s.validate ? this._schema(n ?? null, { autofix: s.autofix }) : n;\n this._state = e, this.render();\n }\n getData(n = { validate: !0, autofix: !0 }) {\n if (!this._schema) throw new Error(\"请先设置 schema\");\n const s = this._state;\n return n.validate ? this._schema(s ?? null, { autofix: n.autofix }) : s;\n }\n reset() {\n try {\n this._state = this._schema(null, { autofix: !0 });\n } catch {\n this._state = P(this._schema);\n }\n this.render();\n }\n refresh() {\n this.render();\n }\n // i18n 相关\n set i18n(n) {\n this._i18nCommitted || (this._i18n = { ...this._i18n, ...n }, this._i18nCommitted = !0, this.render());\n }\n get i18n() {\n return this._i18n;\n }\n render() {\n if (!this._schema) return;\n const n = this.$root.querySelector(\"form\");\n n.innerHTML = \"\";\n const s = A(\n this._schema,\n [],\n this._state,\n this._i18n.rootLabel,\n this._i18n\n );\n n.appendChild(s);\n }\n}\ny(\"schema-form\", te);\nfunction he(o, n) {\n const s = document.createElement(\"schema-form\");\n s.schema = o, n?.i18n && (s.i18n = n.i18n), n?.value && s.setData(n.value);\n const e = n?.onChange, t = () => {\n try {\n e?.(s.getData());\n } catch {\n }\n };\n return e && s.addEventListener(\"form-change\", t), {\n el: s,\n mount: (i) => {\n if (typeof i == \"string\") {\n const a = document.querySelector(i);\n if (!a) throw new Error(\"未找到挂载节点:\" + i);\n a.innerHTML = \"\", a.appendChild(s);\n }\n if (i instanceof HTMLElement)\n i.innerHTML = \"\", i.appendChild(s);\n else\n throw new Error(\"挂载节点必须是 HTMLElement 或 选择器字符串\");\n return s;\n },\n setData: (i, a) => s.setData(i, a),\n getData: (i) => s.getData(i),\n destroy: () => {\n e && s.removeEventListener(\"form-change\", t), s.remove();\n }\n };\n}\nfunction ue() {\n y(\"schema-form\", te), y(\"schema-form-string\", I), y(\"schema-form-number\", J), y(\"schema-form-boolean\", Y), y(\"schema-form-date\", X), y(\"schema-form-const\", B), y(\"schema-form-union\", G), y(\"schema-form-tuple\", Q), y(\"schema-form-object\", W), y(\"schema-form-array\", H), y(\"schema-form-dict\", ee), y(\"schema-form-intersect\", Z);\n}\nexport {\n K as DEFAULT_I18N,\n te as SchemaForm,\n he as createSchemasteryForm,\n ue as install\n};\n//# sourceMappingURL=index.js.map\n","import { defineComponent as p, mergeModels as m, useModel as v, useTemplateRef as D, onBeforeMount as M, onMounted as y, onBeforeUnmount as B, watch as d, nextTick as o, createElementBlock as C, openBlock as k, mergeProps as F } from \"vue\";\nimport { install as O } from \"./index.js\";\nconst x = /* @__PURE__ */ p({\n __name: \"SchemasteryFormVue\",\n props: /* @__PURE__ */ m({\n schema: {},\n value: {},\n validateOnChange: { type: Boolean, default: !1 }\n }, {\n schema: { required: !0 },\n schemaModifiers: {},\n value: { required: !1, default: {} },\n valueModifiers: {}\n }),\n emits: /* @__PURE__ */ m([\"change\"], [\"update:schema\", \"update:value\"]),\n setup(i, { expose: c, emit: h }) {\n const u = v(i, \"schema\"), r = v(i, \"value\"), g = h, a = D(\"elRef\");\n let n = !1, l = !1;\n const f = (e) => {\n if (l)\n return;\n const t = a.value, s = i.validateOnChange ? t.getData({ validate: !0 }) : e.detail.state;\n n = !0, r.value = s, o(() => {\n n = !1;\n }), g(\"change\", e.detail);\n };\n return M(() => {\n O();\n }), y(() => {\n const e = a.value;\n u.value && (e.schema = u.value), r.value !== void 0 && e.setData(r.value, { validate: !1, autofix: !0 }), e.addEventListener(\"form-change\", f);\n }), B(() => {\n a.value?.removeEventListener(\"form-change\", f);\n }), d(\n u,\n (e) => {\n n || a.value && e && a.value.schema !== e && (l = !0, a.value.schema = e, o(() => {\n l = !1;\n }));\n },\n { deep: !0, immediate: !0 }\n ), d(\n r,\n (e) => {\n if (n || !a.value || e === void 0) return;\n const t = a.value.getData({ validate: !1 });\n JSON.stringify(t) !== JSON.stringify(e) && (l = !0, a.value.setData(e, { validate: !1 }), o(() => {\n l = !1;\n }));\n },\n { deep: !0, immediate: !0 }\n ), c({\n /** 手动设置数据并可选择是否触发 v-model:data */\n setData(e, t) {\n const s = a.value;\n s.setData(e, { validate: !!t?.validate }), t?.emit && (r.value = s.getData({ validate: !!t?.validate }));\n },\n /** 获取数据 */\n getData(e) {\n return a.value.getData(e);\n },\n /** 设置 schema,并同步到 v-model:schema */\n setSchema(e, t = !0) {\n a.value.schema = e, t && (u.value = e);\n },\n refresh() {\n a.value.refresh();\n },\n reset() {\n a.value.reset();\n },\n /** 原生元素 */\n el: a\n }), (e, t) => (k(), C(\"schema-form\", F({\n ref_key: \"elRef\",\n ref: a\n }, e.$attrs), null, 16));\n }\n});\nexport {\n x as default\n};\n//# sourceMappingURL=vue.js.map\n","import { isRef, Ref, toRaw } from 'vue'\n\n\nexport function deepToRaw<T extends unknown = any>(v: T | Ref<T>, seen = new WeakMap()): T {\n // 处理 ref\n if (isRef(v)) {\n return deepToRaw(v.value, seen)\n }\n\n // 基础类型\n if (v === null || typeof v !== 'object') {\n return v\n }\n\n // 检查循环引用\n if (seen.has(v)) {\n return seen.get(v)\n }\n\n // 特殊内置对象\n if (v instanceof Date) {\n return new Date(v) as T\n }\n if (v instanceof RegExp) {\n return new RegExp(v) as T\n }\n if (v instanceof Map) {\n const cloned = new Map()\n seen.set(v, cloned)\n Array.from(v.entries()).forEach(([key, value]) => {\n cloned.set(key, deepToRaw(value, seen))\n })\n return cloned as T\n }\n if (v instanceof Set) {\n const cloned = new Set()\n seen.set(v, cloned)\n Array.from(v).forEach((value) => {\n cloned.add(deepToRaw(value, seen))\n })\n return cloned as T\n }\n\n // 数组\n if (Array.isArray(v)) {\n const result: any[] = []\n seen.set(v, result)\n for (const item of v) {\n result.push(deepToRaw(item, seen))\n }\n return result as T\n }\n\n // 普通对象 / reactive 对象\n const raw = toRaw(v) as Record<string | symbol, any>\n const out: Record<string | symbol, any> = {}\n seen.set(v, out)\n\n // 字符串键\n for (const k of Object.keys(raw)) {\n out[k] = deepToRaw(raw[k], seen)\n }\n\n // Symbol 键(可选)\n for (const k of Object.getOwnPropertySymbols(raw)) {\n out[k] = deepToRaw(raw[k], seen)\n }\n\n return out as T\n}\n","<template lang=\"pug\">\n#preferences-ui-app\n .tabbar\n .tabbar-tabs\n a.tab(\n v-for='tab in tabs',\n :key='tab.name',\n :class='{ active: activeCategoryName === tab.name }',\n @click='handleTabClick($event, tab.name)',\n :data-value='tab.name'\n ) {{ tab.label }}\n\n .tabbar-content\n .custom-render-container(\n ref='customRenderContainerRef',\n :key='activeCategoryName',\n v-if='activeCategory && activeCategory.customRenderer'\n )\n SchemaFormVue.auto-schema-form(\n v-if='autoGenerateForm && activeSchema',\n :key='activeCategoryName',\n :data-category='activeCategoryName',\n :schema='activeSchema',\n :value='value',\n @update:value='value = { ...value, ...$event }',\n :validate-on-change='false',\n :i18n='{ rootLabel: \"\" }'\n )\n\n details(v-if='DEV')\n pre(style='max-height: 20em; overflow: auto') {{ value }}\n</template>\n\n<script setup lang=\"ts\" vapor>\nimport {\n computed,\n nextTick,\n onMounted,\n onUnmounted,\n ref,\n shallowRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport { useIPE } from '@/utils/vueHooks'\nimport type {\n InPageEditPreferenceUIRegistryItem,\n InPageEditPreferenceUICategory,\n} from '../../../services/PreferencesService'\nimport SchemaFormVue from 'schemastery-form/vue'\nimport Schema from 'schemastery'\n\nconst ctx = useIPE()!\nconst DEV = import.meta.env.DEV\n\nconst registries = shallowRef<InPageEditPreferenceUIRegistryItem[]>([])\nconst tabs = ref<InPageEditPreferenceUICategory[]>([])\nconst activeCategoryName = ref('')\nconst activeCategory = computed(() => {\n return tabs.value.find((tab) => tab.name === activeCategoryName.value) || null\n})\nconst activeSchema = computed(() => {\n const filtered = registries.value\n .filter((reg) => reg.category === activeCategoryName.value)\n .map((reg) => reg.schema)\n if (filtered.length === 0) return null\n return Schema.intersect(filtered)\n})\n\nconst autoGenerateForm = computed(() => {\n if (!activeCategory.value) return true\n return typeof activeCategory.value.autoGenerateForm === 'boolean'\n ? activeCategory.value.autoGenerateForm\n : true\n})\n\nconst value = ref<any>({})\n\ndefineExpose({\n getValue() {\n return deepToRaw(value)\n },\n mergeValue(details: Record<string, unknown>) {\n console.info('request to update value', details)\n value.value = {\n ...value.value,\n ...details,\n }\n },\n selectTab(name: string) {\n activeCategoryName.value = name\n },\n})\n\nonMounted(async () => {\n ctx.inject(['preferences'], async (ctx) => {\n const all = await ctx.preferences.getAll()\n value.value = all\n tabs.value = ctx.preferences.getConfigCategories()\n registries.value = ctx.preferences.getConfigRegistries()\n activeCategoryName.value = tabs.value[0].name\n })\n})\n\nconst handleTabClick = (event: MouseEvent, name: string) => {\n event.preventDefault()\n activeCategoryName.value = name\n const target = event.currentTarget as HTMLAnchorElement\n if (target) {\n target.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' })\n }\n}\n\nconst customRenderContainerRef = useTemplateRef('customRenderContainerRef')\nconst unmountCallbacks = ref<Array<() => void>>([])\n\nonUnmounted(() => {\n // 组件卸载时调用所有注册的卸载回调\n unmountCallbacks.value.forEach((callback) => callback())\n unmountCallbacks.value = []\n})\n\nwatch(\n activeCategory,\n async (cat) => {\n // 调用之前注册的卸载回调\n unmountCallbacks.value.forEach((callback) => callback())\n unmountCallbacks.value = []\n\n await nextTick()\n const container = customRenderContainerRef.value\n if (!container) return\n container.innerText = ''\n if (cat && typeof cat.customRenderer === 'function') {\n let onMountedCallback: (container: HTMLElement) => void = noop\n const onMounted = (callback: (container: HTMLElement) => void) => {\n onMountedCallback = callback\n }\n const onUnmount = (callback: () => void) => {\n unmountCallbacks.value.push(callback)\n }\n const node = await cat.customRenderer({ ctx, onMounted, onUnmount })\n if (node) {\n container.appendChild(node)\n onMountedCallback?.(container)\n }\n }\n },\n { immediate: true, deep: false }\n)\n</script>\n\n<style scoped lang=\"scss\">\n.tabbar {\n .tabbar-tabs {\n --border-color: #efefef;\n --tab-color: #666;\n --active-color: #3366bb;\n display: flex;\n gap: 0.5em;\n border-bottom: 1px solid var(--border-color);\n margin-bottom: 1em;\n white-space: nowrap;\n overflow-x: auto;\n .tab {\n padding: 0.5em 1em;\n cursor: pointer;\n user-select: none;\n color: var(--tab-color);\n display: inline-block;\n transition:\n color 0.3s ease,\n box-shadow 0.3s ease;\n &.active {\n color: var(--active-color);\n box-shadow: inset 0 -0.15em 0 0 var(--active-color);\n }\n }\n }\n}\n\nschema-form {\n margin-bottom: 0.5em;\n --schema-radius: 6px;\n}\n</style>\n\n<style lang=\"scss\">\n#preferences-ui-app {\n .schema-form-item.field {\n border: 0;\n }\n}\n</style>\n","import { Inject, InPageEdit } from '@/InPageEdit'\nimport PreferencesApp from './components/PreferencesApp.vue'\nimport { CustomIPEModal } from '@/services/ModalService.js'\nimport type { App as VueApp } from 'vue'\n\ndeclare module '@/InPageEdit' {\n export interface InPageEdit {\n preferencesUI: PluginPreferencesUI\n }\n export interface Events {\n 'preferences-ui/modal-shown'(payload: { ctx: InPageEdit; modal: CustomIPEModal }): void\n 'preferences-ui/vue-app-mounted'(payload: {\n ctx: InPageEdit\n app: VueApp\n form: InstanceType<typeof PreferencesApp>\n }): void\n 'preferences-ui/modal-tab-changed'(payload: {\n ctx: InPageEdit\n category: string\n $tabContent: HTMLElement\n }): void\n 'preferences-ui/form-data-saved'(payload: {\n ctx: InPageEdit\n data: Record<string, unknown>\n }): void\n 'preferences-ui/modal-closed'(payload: { ctx: InPageEdit; modal: CustomIPEModal }): void\n }\n}\n\n@Inject(['preferences', 'modal', '$', '$$'])\nexport class PluginPreferencesUI extends BasePlugin {\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'preferences-ui')\n ctx.set('preferencesUI', this)\n const $ = ctx.$\n const $$ = ctx.$$\n\n ctx.preferences.defineCategory({\n name: 'general',\n label: $`prefs.general.label`,\n description: $`prefs.general.description`,\n autoGenerateForm: true,\n })\n\n ctx.preferences.defineCategory({\n name: 'editor',\n label: $`prefs.editor.label`,\n description: $`prefs.editor.description`,\n autoGenerateForm: true,\n })\n\n ctx.preferences.defineCategory({\n name: 'about',\n label: $$`prefs.about.label`,\n description: $$`prefs.about.description`,\n index: 99,\n customRenderer: () => {\n return (\n <section className=\"theme-ipe-prose\">\n <h2>✏️ InPageEdit NEXT</h2>\n <p>{$$`prefs.about.intro`}</p>\n <h3>{$$`prefs.about.portals.header`}</h3>\n <ul>\n <li>\n <a href={this.ctx.Endpoints.HOME_URL} target=\"_blank\">\n {$$`prefs.about.portals.officialwebsite`}\n </a>\n </li>\n <li>\n <a\n href={`${this.ctx.Endpoints.UPDATE_LOGS_URL}#${this.ctx.version.split('-')[0]}`}\n target=\"_blank\"\n >\n {$$`prefs.about.portals.updatelogs`}\n </a>\n </li>\n </ul>\n <h3>{$$`prefs.about.joinus.header`}</h3>\n <ul>\n <li>\n <strong>{$$`prefs.about.joinus.github`}</strong>:{' '}\n <a href={this.ctx.Endpoints.GITHUB_URL} target=\"_blank\">\n {`${this.ctx.Endpoints.GITHUB_OWNER}/${this.ctx.Endpoints.GITHUB_REPO}`}\n </a>\n </li>\n <li>\n <strong>{$$`prefs.about.joinus.qqgroup`}</strong>: {this.ctx.Endpoints.QQ_GROUP_ID}\n </li>\n </ul>\n <hr />\n <p style={{ textAlign: 'center' }}>{$$`prefs.about.copyright`}</p>\n <hr />\n </section>\n )\n },\n })\n\n ctx.inject(['toolbox'], (ctx) => {\n ctx.toolbox.addButton({\n id: 'preferences',\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n class=\"icon icon-tabler icons-tabler-filled icon-tabler-settings\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M14.647 4.081a.724 .724 0 0 0 1.08 .448c2.439 -1.485 5.23 1.305 3.745 3.744a.724 .724 0 0 0 .447 1.08c2.775 .673 2.775 4.62 0 5.294a.724 .724 0 0 0 -.448 1.08c1.485 2.439 -1.305 5.23 -3.744 3.745a.724 .724 0 0 0 -1.08 .447c-.673 2.775 -4.62 2.775 -5.294 0a.724 .724 0 0 0 -1.08 -.448c-2.439 1.485 -5.23 -1.305 -3.745 -3.744a.724 .724 0 0 0 -.447 -1.08c-2.775 -.673 -2.775 -4.62 0 -5.294a.724 .724 0 0 0 .448 -1.08c-1.485 -2.439 1.305 -5.23 3.744 -3.745a.722 .722 0 0 0 1.08 -.447c.673 -2.775 4.62 -2.775 5.294 0zm-2.647 4.919a3 3 0 1 0 0 6a3 3 0 0 0 0 -6z\" />\n </svg>\n ) as HTMLElement,\n tooltip: () => $`Configure Preferences`,\n group: 'group2',\n index: 99,\n onClick: () => this.showModal(),\n })\n\n this.addDisposeHandler((ctx) => {\n ctx.toolbox.removeButton('preferences')\n })\n })\n }\n\n protected async start(): Promise<void> {\n // TODO: 不要硬编码……\n import('./PluginPrefSync.js')\n .then(({ PluginPrefSync }) => {\n this.ctx.plugin(PluginPrefSync)\n })\n .catch(this.ctx.logger.warn)\n\n this.ctx.on('preferences/changed', (payload) => {\n this._form?.mergeValue?.(payload.input)\n })\n }\n\n protected stop(): Promise<void> | void {}\n\n _modal: CustomIPEModal | null = null\n _form: InstanceType<typeof PreferencesApp> | null = null\n showModal() {\n const { $ } = this.ctx\n if (this._modal && !this._modal.isDestroyed) {\n return this._modal\n }\n const modal = this.ctx.modal.show({\n className: 'ipe-preference compact-buttons',\n sizeClass: 'small',\n outSideClose: false,\n center: true,\n title: `${$`InPageEdit Preferences`} (${this.ctx.version})`,\n content: (\n <>\n <ProgressBar />\n </>\n ) as HTMLElement,\n })\n\n modal.get$window().classList.add('dialog')\n\n const root = (\n <div\n id=\"ipe-preferences-app\"\n style={{ minHeight: 'calc(85dvh - var(--ipe-modal-spacing) * 2)' }}\n ></div>\n )\n modal.setContent(root as HTMLElement)\n\n this.ctx.emit('preferences-ui/modal-shown', {\n ctx: this.ctx,\n modal,\n })\n\n const app = this.createPreferencesUIApp()\n const form = app.mount(root) as InstanceType<typeof PreferencesApp>\n this._form = form\n\n this.ctx.emit('preferences-ui/vue-app-mounted', {\n ctx: this.ctx,\n app,\n form,\n })\n\n modal.setButtons([\n {\n label: $`Close`,\n className: 'is-ghost',\n method: () => {\n modal.close()\n },\n },\n {\n label: $`Save`,\n className: 'is-primary is-ghost',\n method: async () => {\n const value = form.getValue()\n try {\n const ret = await this.ctx.preferences.setMany(value)\n this.logger.info('preferences saved', value, ret)\n } catch (error) {\n this.logger.error('failed to save preferences', error)\n }\n modal.close()\n this.ctx.modal.notify('success', {\n title: $`Preferences Saved`,\n content: <p>{$`Some settings may take effect after reloading the page.`}</p>,\n })\n },\n },\n ])\n\n this._modal = modal\n\n modal.on(modal.Event.Close, () => {\n this.logger.debug('preferences modal closed, vue app unmounting')\n app.unmount()\n this._modal = null\n this._form = null\n\n this.ctx.emit('preferences-ui/modal-closed', {\n ctx: this.ctx,\n modal,\n })\n })\n\n return modal\n }\n getCurrentModal() {\n return this._modal\n }\n closeCurrentModal() {\n return this._modal?.close()\n }\n async dispatchFormSave(form?: InstanceType<typeof PreferencesApp>) {\n form = form || this._form || undefined\n const value = form?.getValue()\n if (!value) {\n return false\n }\n this.ctx.preferences.setMany(value)\n return true\n }\n getCurrentFormValue() {\n return this._form?.getValue()\n }\n mergeFormValue(value: Record<string, unknown>) {\n this._form?.mergeValue?.(value)\n return !!this._form?.mergeValue\n }\n\n createPreferencesUIApp() {\n return createVueAppWithIPE(this.ctx, PreferencesApp)\n }\n}\n"],"names":["L","K","y","o","n","ae","e","r","l","a","c","M","re","F","T","u","oe","O","z","V","w","ce","P","h","k","I","f","m","d","p","J","Y","q","D","R","j","X","B","Z","A","le","s","G","Q","W","H","t","i","b","_","E","$","N","x","v","S","g","ne","U","de","ie","se","ee","te","ue","C","deepToRaw","seen","isRef","cloned","key","value","result","item","raw","toRaw","out","ctx","useIPE","DEV","registries","shallowRef","tabs","ref","activeCategoryName","activeCategory","computed","tab","activeSchema","filtered","reg","Schema","autoGenerateForm","__expose","details","name","onMounted","all","handleTabClick","event","target","customRenderContainerRef","useTemplateRef","unmountCallbacks","onUnmounted","callback","watch","cat","nextTick","container","onMountedCallback","noop","onUnmount","node","_PluginPreferencesUI_decorators","_init","_a","Inject","PluginPreferencesUI","BasePlugin","$$","jsxs","jsx","PluginPrefSync","payload","modal","Fragment","ProgressBar","root","app","form","ret","error","createVueAppWithIPE","PreferencesApp","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}
1
+ {"version":3,"file":"index-JvsrhizC.js","sources":["../../schemastery-form/dist/index.js","../../schemastery-form/dist/vue.js","../src/utils/vueReactivity.ts","../src/plugins/preferences-ui/components/PreferencesApp.vue","../src/plugins/preferences-ui/index.tsx"],"sourcesContent":["const L = '@charset \"UTF-8\";:host{display:block;font-family:var(--schema-font-family, ui-sans-serif, system-ui, -apple-system);color:var(--schema-color-fg, #111827)}*,*:before,*:after{box-sizing:border-box}.wrapper{display:block;background:var(--schema-color-bg, #ffffff)}.form{display:grid;gap:12px}.field{display:grid;gap:6px;padding:8px 10px;border:1px solid var(--schema-color-muted, #e5e7eb);border-radius:var(--schema-radius, 10px);background:var(--schema-surface, #fff)}.label{font-size:12px;color:var(--schema-color-muted-text, #6b7280)}.input,select,textarea{width:100%;padding:8px 10px;border-radius:8px;border:1px solid var(--schema-color-muted, #e5e7eb);background:var(--schema-input-bg, #fff);color:inherit}.checkbox{display:inline-flex;align-items:center;gap:8px}.helper{font-size:12px;color:var(--schema-color-muted-text, #6b7280)}.row{display:grid;gap:8px}.actions{display:flex;gap:8px}.btn{padding:6px 10px;border:1px solid var(--schema-color-muted, #e5e7eb);background:var(--schema-btn-bg, #f8fafc);border-radius:8px;cursor:pointer;color:var(--schema-color-fg)}.btn.primary{background:var(--schema-color-primary, #2563eb);color:#fff;border-color:transparent}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.danger{background:var(--schema-color-danger, #dc2626);color:#fff;border-color:transparent}.group{display:grid;gap:10px}.kv{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:center}.badge{display:inline-flex;padding:2px 6px;border-radius:999px;font-size:11px;background:var(--schema-badge-bg, #eef2ff);color:var(--schema-badge-fg, #4f46e5)}.hidden{display:none!important}.toolbar{display:flex;gap:6px}.schema-collection-row{position:relative;transition:transform var(--schema-collection-transition-duration, .25s) var(--schema-collection-transition-ease, ease),opacity var(--schema-collection-transition-duration, .25s) var(--schema-collection-transition-ease, ease)}.schema-collection-row.enter{opacity:0}.schema-collection-row.enter.enter-active{opacity:1}.schema-collection-row.leaving{opacity:0}.field.schema-type-array .group,.field.schema-type-array .group .row{position:relative}.keyshortcut-wrap{display:flex;gap:.5em;align-items:center}.keyshortcut-btn{padding:6px 8px;font-size:1em}.keyshortcut-btn.recording{background:var(--schema-color-primary, #2563eb);color:#fff;border-color:transparent;animation:keyshortcut-pulse .5s ease-in-out infinite}@keyframes keyshortcut-pulse{0%,to{opacity:1}50%{opacity:.6}}', K = {\n arrayAdd: \"+\",\n arrayMoveUp: \"↑\",\n arrayMoveDown: \"↓\",\n arrayRemove: \"×\",\n dictAdd: \"+\",\n dictRemove: \"×\",\n rootLabel: \"root\"\n}, y = (o, n) => {\n customElements.get(o) || customElements.define(o, n);\n}, ae = (o, n, s) => {\n if (!n.length) return;\n let e = o, t = null, i = null;\n for (let r = 0; r < n.length - 1; r++) {\n const c = n[r];\n let l = e?.[c];\n l == null ? (l = typeof n[r + 1] == \"number\" ? [] : {}, e[c] = l) : typeof l != \"object\" && (l = typeof n[r + 1] == \"number\" ? [] : {}, e[c] = l), t = e, i = c, e = l;\n }\n const a = n[n.length - 1];\n if (e == null || typeof e != \"object\") {\n const r = typeof a == \"number\" ? [] : {};\n if (t)\n t[i] = r, e = r;\n else\n return;\n }\n try {\n e[a] = s;\n } catch {\n try {\n const c = Array.isArray(e) ? e.slice() : { ...e };\n c[a] = s, t && (t[i] = c);\n } catch {\n }\n }\n}, M = (o) => o.map(String).join(\".\"), re = (o) => o.replace(/[^a-zA-Z0-9_-]/g, \"_\"), F = (o) => `schema_${re(M(o) || \"root\")}`, T = (o) => M(o), u = (o, ...n) => {\n const s = new Set(n);\n s.size && o.setAttribute(\"part\", Array.from(s).join(\" \"));\n}, oe = [\n \"wrapper\",\n \"form\",\n \"field\",\n \"field-intersect\",\n \"field-string\",\n \"field-number\",\n \"field-boolean\",\n \"field-date\",\n \"field-const\",\n \"field-array\",\n \"field-object\",\n \"field-tuple\",\n \"field-union\",\n \"field-dict\",\n \"field-label\",\n \"field-helper\",\n \"field-group\",\n \"field-row\",\n \"field-actions\",\n \"field-button\",\n \"field-button-primary\",\n \"field-button-danger\",\n \"field-button-secondary\",\n \"field-toolbar\",\n \"field-badge\",\n \"field-input\",\n \"field-input-text\",\n \"field-input-number\",\n \"field-input-date\",\n \"field-input-select\",\n \"field-input-textarea\",\n \"field-input-checkbox\",\n \"field-const-value\",\n \"collection-row\",\n \"field-checkbox\",\n \"field-checkbox-text\",\n \"field-toolbar-select\"\n].join(\" \");\nfunction O(o, n) {\n if (n == null) return n;\n switch (o) {\n case \"number\":\n case \"natural\":\n case \"percent\": {\n if (n === \"\") return;\n const s = Number(n);\n return Number.isNaN(s) ? void 0 : s;\n }\n case \"boolean\":\n return !!n;\n case \"date\": {\n if (!n) return;\n const s = new Date(n);\n return Number.isNaN(+s) ? void 0 : s;\n }\n default:\n return n;\n }\n}\nfunction z(o) {\n return typeof o == \"function\" && !!o?.type;\n}\nfunction V(o) {\n if (!o) throw new Error(\"schema is required\");\n if (z(o)) return o;\n try {\n const n = Schema.from(o);\n if (z(n)) return n;\n } catch {\n }\n if (o?.type) {\n const n = o.type;\n if (Schema[n]) return Schema[n](o.inner ?? o.list ?? o.dict);\n }\n throw new Error(\"无法从传入对象生成 Schemastery 实例,请传入 schema 或 schema.toJSON() 的结果。\");\n}\nfunction w(o) {\n return o?.meta ?? {};\n}\nfunction ce(o) {\n return o.length > 0 && o.every((n) => n?.type === \"const\");\n}\nfunction P(o) {\n if (!o) return;\n const n = o, s = n.meta || {};\n if (Object.prototype.hasOwnProperty.call(s, \"default\")) return s.default;\n const e = n.type;\n try {\n const t = o();\n if (t !== void 0) return t;\n } catch {\n }\n switch (e) {\n case \"string\":\n return \"\";\n case \"number\":\n case \"natural\":\n case \"percent\":\n return 0;\n case \"boolean\":\n return !1;\n case \"array\":\n return [];\n case \"tuple\":\n return [];\n case \"object\":\n return {};\n case \"dict\":\n return {};\n case \"union\": {\n const t = n.list || [];\n return t.length ? P(t[0]) : void 0;\n }\n case \"const\":\n return n.value;\n case \"date\":\n return;\n case \"intersect\": {\n const t = n.list || [], i = (r, c) => {\n if (Array.isArray(r) && Array.isArray(c)) return c.slice();\n if (r && c && typeof r == \"object\" && typeof c == \"object\") {\n const l = { ...r };\n for (const h of Object.keys(c))\n l[h] = h in l ? i(l[h], c[h]) : c[h];\n return l;\n }\n return c ?? r;\n };\n let a = {};\n for (const r of t) a = i(a, P(r));\n return a;\n }\n default:\n return;\n }\n}\nclass k extends HTMLElement {\n constructor() {\n super(), this._path = [], this._i18n = K, this.$root = this.attachShadow({ mode: \"open\" });\n const n = document.createElement(\"style\");\n n.textContent = L, this.$root.appendChild(n);\n }\n /** 初始化公共容器(带类名与 data-path) */\n makeFieldContainer(n, s) {\n const e = document.createElement(\"div\");\n if (e.className = `field schema-form-item schema-type-${n}`, e.setAttribute(\"data-path\", M(this._path)), u(e, \"field\", `field-${n}`), this._label) {\n const t = document.createElement(\"label\");\n t.className = \"label\", t.textContent = this._label, u(t, \"field-label\"), e.appendChild(t);\n }\n if (s && s !== this._label) {\n const t = document.createElement(\"div\");\n t.className = \"helper\", t.textContent = s, u(t, \"field-helper\"), e.appendChild(t);\n }\n return e;\n }\n /** 外部设置 schema/path/label/value */\n set schema(n) {\n this._schema = V(n), this.render();\n }\n get schema() {\n return this._schema;\n }\n set path(n) {\n this._path = n ?? [], this.render();\n }\n get path() {\n return this._path;\n }\n set label(n) {\n this._label = n, this.render();\n }\n get label() {\n return this._label;\n }\n set i18n(n) {\n n && (this._i18n = { ...this._i18n, ...n }), this.render();\n }\n get i18n() {\n return this._i18n;\n }\n setValue(n) {\n this._value = n, this.render();\n }\n getValue() {\n return this._value;\n }\n /** 触发变更事件(冒泡) */\n emitChange(n) {\n this._value = n, this.dispatchEvent(\n new CustomEvent(\"change\", {\n bubbles: !0,\n composed: !0,\n detail: { path: this._path, value: n }\n })\n );\n }\n}\nclass I extends k {\n static {\n this.recEnd = null;\n }\n render() {\n if (this.$input && this.$root.contains(this.$input)) {\n const i = !!this.$root.querySelector(\"label.label\");\n if (!(!!this._label && !i)) {\n const r = this._value ?? \"\";\n this.$input.value !== r && document.activeElement !== this.$input && (this.$input.value = r);\n return;\n }\n }\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"string\", n.description), e = document.createElement(\"input\");\n this.$input = e, e.className = \"input\", u(e, \"field-input\", \"field-input-text\"), e.type = \"text\", e.name = T(this._path), e.id = F(this._path), n?.pattern?.source && (e.pattern = n.pattern.source), n?.max != null && (e.maxLength = n.max), e.value = this._value ?? \"\", e.oninput = () => this.emitChange(O(\"string\", e.value));\n const t = s.querySelector(\"label.label\");\n if (t && (t.htmlFor = e.id), n.role === \"keyshortcut\") {\n const i = document.createElement(\"div\");\n i.className = \"keyshortcut-wrap\";\n const a = document.createElement(\"button\");\n a.type = \"button\", a.className = \"btn keyshortcut-btn\", a.title = \"Record shortcut\", a.textContent = \"⌨\";\n let r = null;\n const c = () => {\n r && (r(), r = null, a.classList.remove(\"recording\"), a.title = \"Record shortcut\", I.recEnd === c && (I.recEnd = null));\n };\n a.onclick = () => {\n if (r) {\n c();\n return;\n }\n I.recEnd?.(), I.recEnd = c, a.classList.add(\"recording\"), a.title = \"Press your keys! (Esc to cancel)\";\n const l = (h) => {\n if (h.preventDefault(), h.stopPropagation(), h.key === \"Escape\") {\n c();\n return;\n }\n const f = [];\n h.ctrlKey && f.push(\"ctrl\"), h.metaKey && f.push(\"meta\"), h.altKey && f.push(\"alt\"), h.shiftKey && f.push(\"shift\");\n const m = h.key.toLowerCase();\n if ([\"control\", \"meta\", \"alt\", \"shift\"].includes(m)) return;\n f.push(m);\n const d = f.join(\"-\"), p = e.value.trimEnd();\n p.toLowerCase().split(/\\s*,\\s*/).includes(d) || (e.value = p ? p.replace(/,+$/, \"\") + \", \" + d : d, this.emitChange(e.value)), c();\n };\n document.addEventListener(\"keydown\", l, { capture: !0 }), r = () => document.removeEventListener(\"keydown\", l, { capture: !0 });\n }, i.appendChild(e), i.appendChild(a), s.appendChild(i);\n } else\n s.appendChild(e);\n this.$root.appendChild(s);\n }\n}\ny(\"schema-form-string\", I);\nclass J extends k {\n render() {\n if (this.$input && this.$root.contains(this.$input)) {\n const a = !!this.$root.querySelector(\"label.label\");\n if (!(!!this._label && !a)) {\n const c = this._value ?? \"\";\n this.$input.value !== String(c) && document.activeElement !== this.$input && (this.$input.value = c);\n return;\n }\n }\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = this._schema?.type ?? \"number\", s = w(this._schema), e = this.makeFieldContainer(\"number\", s.description), t = document.createElement(\"input\");\n this.$input = t, t.className = \"input\", u(t, \"field-input\", \"field-input-number\"), t.name = T(this._path), t.id = F(this._path), s?.min != null && (t.min = String(s.min)), s?.max != null && (t.max = String(s.max)), s?.step != null && (t.step = String(s.step)), n === \"percent\" && !t.step && (t.step = \"0.01\"), t.value = this._value ?? \"\", t.oninput = () => this.emitChange(O(n, t.value));\n const i = e.querySelector(\"label.label\");\n i && (i.htmlFor = t.id), s.role === \"slider\" ? t.type = \"range\" : t.type = \"number\", e.appendChild(t), this.$root.appendChild(e);\n }\n}\ny(\"schema-form-number\", J);\nclass Y extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"boolean\", n.description), e = document.createElement(\"label\");\n e.className = \"checkbox\", u(e, \"field-checkbox\");\n const t = document.createElement(\"input\");\n t.type = \"checkbox\", t.checked = !!this._value, t.name = T(this._path), t.id = F(this._path), u(t, \"field-input\", \"field-input-checkbox\");\n const i = document.createElement(\"span\");\n i.textContent = n.description ?? this._label ?? \"\", u(i, \"field-checkbox-text\"), t.onchange = () => this.emitChange(t.checked);\n const a = s.querySelector(\"label.label\");\n a && (a.htmlFor = t.id), e.append(t, i), s.appendChild(e), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-boolean\", Y);\nfunction q(o) {\n return String(o).padStart(2, \"0\");\n}\nfunction D(o) {\n return `${o.getFullYear()}-${q(o.getMonth() + 1)}-${q(o.getDate())}`;\n}\nfunction R(o) {\n return `${q(o.getHours())}:${q(o.getMinutes())}`;\n}\nfunction j(o) {\n return `${D(o)}T${R(o)}`;\n}\nclass X extends k {\n render() {\n if (this.$input && this.$root.contains(this.$input)) {\n const a = !!this.$root.querySelector(\"label.label\");\n if (!(!!this._label && !a)) {\n const l = w(this._schema).role || \"date\";\n if (document.activeElement !== this.$input)\n if (this._value instanceof Date)\n l === \"date\" ? this.$input.value = D(this._value) : l === \"time\" ? this.$input.value = R(this._value) : l === \"datetime\" && (this.$input.value = j(this._value));\n else if (typeof this._value == \"string\" && l !== \"time\") {\n const h = new Date(this._value);\n isNaN(+h) || (l === \"date\" ? this.$input.value = D(h) : l === \"datetime\" && (this.$input.value = j(h)));\n } else this._value || (this.$input.value = \"\");\n return;\n }\n }\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"date\", n.description), e = document.createElement(\"input\");\n this.$input = e, e.className = \"input\", u(e, \"field-input\", \"field-input-date\");\n const t = n.role || \"date\";\n if (t === \"datetime\" ? e.type = \"datetime-local\" : t === \"time\" ? e.type = \"time\" : e.type = \"date\", e.name = T(this._path), e.id = F(this._path), this._value instanceof Date)\n t === \"date\" ? e.value = D(this._value) : t === \"time\" ? e.value = R(this._value) : t === \"datetime\" && (e.value = j(this._value));\n else if (typeof this._value == \"string\" && t !== \"time\") {\n const a = new Date(this._value);\n isNaN(+a) || (t === \"date\" ? e.value = D(a) : t === \"datetime\" && (e.value = j(a)));\n }\n e.oninput = () => {\n n.role;\n let a;\n if (!e.value)\n a = void 0;\n else {\n const r = new Date(e.value);\n a = Number.isNaN(+r) ? void 0 : r;\n }\n this.emitChange(a);\n };\n const i = s.querySelector(\"label.label\");\n i && (i.htmlFor = e.id), s.appendChild(e), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-date\", X);\nclass B extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this._schema.value;\n if (n.role === \"raw-html\") {\n if (s instanceof Node) {\n this.$root.append(s);\n return;\n } else if (typeof s == \"function\") {\n this.$root.append(s());\n return;\n } else if (typeof s == \"string\") {\n const a = document.createElement(\"div\");\n a.innerHTML = String(s), u(a, \"field-const-value\"), this.$root.appendChild(a);\n return;\n }\n }\n const e = this.makeFieldContainer(\"const\", n.description), t = document.createElement(\"section\");\n t.className = \"const content\", t.textContent = String(s), t.id = F(this._path), u(t, \"field-const-value\");\n const i = e.querySelector(\"label.label\");\n i && (i.htmlFor = t.id), e.appendChild(t), this.$root.appendChild(e);\n }\n}\ny(\"schema-form-const\", B);\nclass Z extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"intersect\", n.description);\n s.classList.remove(\"field\");\n const e = document.createElement(\"div\");\n e.classList.add(\"group\"), u(e, \"field-group\");\n const t = this._schema.list || [], i = t.length > 0 && t.every((r) => r?.type === \"object\"), a = (r, c) => {\n if (Array.isArray(r) && Array.isArray(c)) return c.slice();\n if (r && c && typeof r == \"object\" && typeof c == \"object\") {\n const l = { ...r };\n for (const h of Object.keys(c))\n l[h] = h in l ? a(l[h], c[h]) : c[h];\n return l;\n }\n return c ?? r;\n };\n if (i) {\n const r = this._value && typeof this._value == \"object\" ? this._value : {};\n t.forEach((c, l) => {\n const h = c?.meta?.description ?? \"\", f = A(c, this._path, r, h, this._i18n);\n f.addEventListener(\"change\", (m) => {\n m.stopPropagation();\n const d = a(this._value ?? {}, m.detail.value);\n this.emitChange(d);\n }), e.appendChild(f);\n });\n } else {\n const r = t[t.length - 1], c = A(r, this._path, this._value, this._label, this._i18n);\n c.addEventListener(\"change\", (l) => {\n l.stopPropagation(), this.emitChange(l.detail.value);\n }), e.appendChild(c);\n }\n s.appendChild(e), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-intersect\", Z);\nfunction le(o) {\n switch (o.type) {\n case \"intersect\":\n return \"schema-form-intersect\";\n case \"string\":\n return \"schema-form-string\";\n case \"number\":\n case \"natural\":\n case \"percent\":\n return \"schema-form-number\";\n case \"boolean\":\n return \"schema-form-boolean\";\n case \"date\":\n return \"schema-form-date\";\n case \"const\":\n return \"schema-form-const\";\n case \"array\":\n return \"schema-form-array\";\n case \"object\":\n return \"schema-form-object\";\n case \"tuple\":\n return \"schema-form-tuple\";\n case \"dict\":\n return \"schema-form-dict\";\n case \"union\": {\n const s = o.list || [];\n return s.length === 2 && s[0]?.type === \"is\" && s[0]?.constructor === Date && s[1]?.type === \"transform\" && (s[1]?.inner?.meta?.role === \"datetime\" || s[1]?.inner?.meta?.role === \"date\" || s[1]?.inner?.meta?.role === \"time\") ? \"schema-form-date\" : \"schema-form-union\";\n }\n default:\n return \"schema-form-string\";\n }\n}\nfunction A(o, n, s, e, t) {\n const i = le(o), a = document.createElement(i);\n return a.schema = o, a.path = n, a.label = e, t && (a.i18n = t), a.setValue?.(s), a.setAttribute(\"exportparts\", oe), a;\n}\nclass G extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"union\", n.description), e = this._schema.list || [];\n if (ce(e)) {\n const t = document.createElement(\"select\");\n t.className = \"input\", u(t, \"field-input\", \"field-input-select\"), t.name = T(this._path), t.id = F(this._path), e.forEach((a) => {\n const r = document.createElement(\"option\");\n r.value = String(a.value), r.textContent = String(a.meta?.description || a.value || a.type), this._value === a.value && (r.selected = !0), t.appendChild(r);\n }), t.onchange = () => this.emitChange(O(\"string\", t.value));\n const i = s.querySelector(\"label.label\");\n i && (i.htmlFor = t.id), s.appendChild(t);\n } else {\n const t = document.createElement(\"div\");\n t.className = \"toolbar\", u(t, \"field-toolbar\");\n const i = document.createElement(\"select\");\n i.className = \"input\", u(i, \"field-input\", \"field-input-select\", \"field-toolbar-select\"), i.name = T(this._path) + \".__type\", i.id = F(this._path) + \"__type\";\n let a = 0;\n e.forEach((h, f) => {\n const m = document.createElement(\"option\");\n m.value = String(f), m.textContent = String(h.meta?.description || h.value || h.type), i.appendChild(m);\n }), i.onchange = () => {\n a = Number(i.value);\n const h = e[a], f = P(h);\n this.emitChange(f), l();\n };\n const r = s.querySelector(\"label.label\");\n r && (r.htmlFor = i.id), t.appendChild(i), s.appendChild(t);\n const c = document.createElement(\"div\");\n c.className = \"group\", u(c, \"field-group\");\n const l = () => {\n c.innerHTML = \"\";\n const h = e[a], f = A(h, this._path, this._value, this._label);\n f instanceof B || (f.addEventListener(\"change\", (m) => {\n m.stopPropagation(), this.emitChange(m.detail.value);\n }), c.appendChild(f));\n };\n l(), s.appendChild(c);\n }\n this.$root.appendChild(s);\n }\n}\ny(\"schema-form-union\", G);\nclass Q extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"tuple\", n.description), e = document.createElement(\"div\");\n e.className = \"group\", u(e, \"field-group\");\n const t = Array.isArray(this._value) ? this._value : [];\n (this._schema.list || []).forEach((i, a) => {\n const r = A(\n i,\n [...this._path, a],\n t[a],\n `${this._label ?? \"\"}[${a}]`\n );\n r.addEventListener(\"change\", (c) => {\n c.stopPropagation();\n const l = Array.isArray(this._value) ? this._value.slice() : [];\n l[a] = c.detail.value, this.emitChange(l);\n }), e.appendChild(r);\n }), s.appendChild(e), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-tuple\", Q);\nclass W extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"object\", n.description), e = document.createElement(\"div\");\n e.className = \"group\", u(e, \"field-group\");\n const t = this._schema.dict || {};\n Object.keys(t).forEach((i) => {\n if (t[i]?.meta?.hidden) return;\n const a = (this._value ?? {})[i], r = A(t[i], [...this._path, i], a, i);\n r.addEventListener(\"change\", (c) => {\n c.stopPropagation();\n const l = { ...this._value ?? {} };\n l[i] = c.detail.value, this.emitChange(l);\n }), e.appendChild(r);\n }), s.appendChild(e), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-object\", W);\nclass H extends k {\n constructor() {\n super(...arguments), this._itemIds = [];\n }\n static {\n this._idCounter = 0;\n }\n generateItemId() {\n try {\n if (typeof crypto < \"u\" && typeof crypto.randomUUID == \"function\")\n return crypto.randomUUID();\n } catch {\n }\n return \"i\" + H._idCounter++;\n }\n ensureItemIds(n) {\n for (; this._itemIds.length < n; ) this._itemIds.push(this.generateItemId());\n this._itemIds.length > n && (this._itemIds.length = n);\n }\n // 采集当前行位置信息(用于 FLIP)\n capturePositions(n) {\n const s = {};\n return n.querySelectorAll(\".row\").forEach((e) => {\n const t = e.dataset.uid;\n t && (s[t] = e.getBoundingClientRect());\n }), s;\n }\n playFLIP(n, s) {\n Array.from(n.querySelectorAll(\".row\")).forEach((t) => {\n const i = t.dataset.uid;\n if (!i) return;\n const a = s[i];\n if (!a) return;\n const r = t.getBoundingClientRect(), c = a.left - r.left, l = a.top - r.top;\n (c || l) && (t.style.transition = \"none\", t.style.transform = `translate(${c}px, ${l}px)`, requestAnimationFrame(() => {\n t.style.transition = \"transform .25s ease\", t.style.transform = \"\";\n }));\n });\n }\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"array\", n.description), e = document.createElement(\"div\");\n e.className = \"group\", u(e, \"field-group\");\n const t = this._schema.inner, i = () => Array.isArray(this._value) ? this._value : [];\n this.ensureItemIds(i().length);\n const a = (l, h) => {\n e.innerHTML = \"\", i().forEach((m, d) => {\n const p = [...this._path, d], b = document.createElement(\"div\");\n b.className = \"row schema-collection-row\", u(b, \"field-row\", \"collection-row\");\n const _ = this._itemIds[d];\n b.dataset.uid = _, b.setAttribute(\"data-path\", M(p));\n const E = A(\n t,\n p,\n m,\n `${this._label ?? \"\"}[${d}]`\n );\n E.addEventListener(\"change\", ($) => {\n $.stopPropagation();\n const C = i().slice();\n C[d] = $.detail.value, this._value = C, this.emitChange(C);\n });\n const N = document.createElement(\"div\");\n N.className = \"actions\", u(N, \"field-actions\");\n const x = document.createElement(\"button\");\n x.type = \"button\", x.className = \"btn\", u(x, \"field-button\", \"field-button-secondary\"), x.textContent = this._i18n.arrayMoveUp ?? \"↑\", x.onclick = () => {\n if (d <= 0) return;\n const $ = this.capturePositions(e), C = i().slice();\n [C[d - 1], C[d]] = [C[d], C[d - 1]], [this._itemIds[d - 1], this._itemIds[d]] = [\n this._itemIds[d],\n this._itemIds[d - 1]\n ], this._value = C, a($), this.emitChange(C);\n };\n const v = document.createElement(\"button\");\n v.type = \"button\", v.className = \"btn\", u(v, \"field-button\", \"field-button-secondary\"), v.textContent = this._i18n.arrayMoveDown ?? \"↓\", v.onclick = () => {\n const $ = i();\n if (d >= $.length - 1) return;\n const C = this.capturePositions(e), S = $.slice();\n [S[d + 1], S[d]] = [S[d], S[d + 1]], [this._itemIds[d + 1], this._itemIds[d]] = [\n this._itemIds[d],\n this._itemIds[d + 1]\n ], this._value = S, a(C), this.emitChange(S);\n };\n const g = document.createElement(\"button\");\n g.type = \"button\", g.className = \"btn danger\", u(g, \"field-button\", \"field-button-danger\"), g.textContent = this._i18n.arrayRemove ?? \"×\", g.onclick = () => {\n b.classList.add(\"leaving\");\n const $ = 250;\n let C = !1;\n const S = () => {\n if (C) return;\n C = !0, clearTimeout(ne);\n const U = i().filter((de, ie) => ie !== d);\n this._itemIds.splice(d, 1);\n const se = this.capturePositions(e);\n this._value = U, a(se), this.emitChange(U);\n };\n b.addEventListener(\"transitionend\", S, { once: !0 });\n const ne = setTimeout(S, $ + 80);\n }, N.append(x, v, g), b.appendChild(E), b.appendChild(N), e.appendChild(b), h && h === _ && (b.classList.add(\"enter\"), requestAnimationFrame(() => {\n b.classList.add(\"enter-active\");\n }), requestAnimationFrame(() => {\n b.classList.remove(\"enter\");\n }));\n }), l && this.playFLIP(e, l);\n };\n a();\n const r = document.createElement(\"button\");\n r.type = \"button\", r.className = \"btn primary\", u(r, \"field-button\", \"field-button-primary\"), r.textContent = this._i18n.arrayAdd ?? \"+\", r.onclick = () => {\n const l = this.capturePositions(e), h = i().slice(), f = P(t);\n h.push(f);\n const m = this.generateItemId();\n this._itemIds.push(m), this._value = h, a(l, m), this.emitChange(h);\n };\n const c = document.createElement(\"div\");\n c.className = \"actions\", u(c, \"field-actions\"), c.appendChild(r), s.appendChild(e), s.appendChild(c), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-array\", H);\nclass ee extends k {\n render() {\n this.$root.innerHTML = `<style>${L}</style>`;\n const n = w(this._schema), s = this.makeFieldContainer(\"dict\", n.description), e = document.createElement(\"div\");\n e.className = \"group\", u(e, \"field-group\");\n const t = this._schema.inner, i = this._value ?? {}, a = (m) => `d_${m}`, r = () => {\n const m = {};\n return e.querySelectorAll(\".kv\").forEach((d) => {\n const p = d.dataset.uid;\n p && (m[p] = d.getBoundingClientRect());\n }), m;\n }, c = (m) => {\n e.querySelectorAll(\".kv\").forEach((d) => {\n const p = d.dataset.uid;\n if (!p) return;\n const b = m[p];\n if (!b) return;\n const _ = d.getBoundingClientRect(), E = b.left - _.left, N = b.top - _.top;\n (E || N) && (d.style.transition = \"none\", d.style.transform = `translate(${E}px, ${N}px)`, requestAnimationFrame(() => {\n d.style.transition = \"transform .25s ease\", d.style.transform = \"\";\n }));\n });\n }, l = (m, d) => {\n e.innerHTML = \"\", Object.keys(i).forEach((p) => {\n const b = [...this._path, p], _ = document.createElement(\"div\");\n _.className = \"kv schema-collection-row\", u(_, \"field-row\", \"collection-row\"), _.dataset.uid = a(p), _.setAttribute(\"data-path\", M(b));\n const E = document.createElement(\"input\");\n E.className = \"input\", u(E, \"field-input\", \"field-input-text\"), E.value = p, E.name = T(b) + \".__key\", E.id = F(b) + \"__key\";\n const N = A(t, b, i[p], `${this._label ?? \"\"}[${p}]`), x = document.createElement(\"button\");\n x.type = \"button\", x.className = \"btn danger\", u(x, \"field-button\", \"field-button-danger\"), x.textContent = this._i18n.dictRemove ?? \"×\", x.onclick = () => {\n const v = r();\n delete i[p];\n const g = { ...this._value ?? {} };\n delete g[p], this._value = g, l(v), this.emitChange(g);\n }, E.onchange = () => {\n const v = E.value.trim();\n if (!v || v === p || i[v] !== void 0) return;\n const g = r();\n i[v] = i[p], delete i[p];\n const $ = { ...this._value ?? {} };\n $[v] = $[p], delete $[p], this._value = $, l(g), this.emitChange($);\n }, N.addEventListener(\"change\", (v) => {\n v.stopPropagation();\n const g = { ...this._value ?? {} };\n g[p] = v.detail.value, this._value = g, this.emitChange(g);\n }), _.append(E, N, x), e.appendChild(_), d === p && (_.classList.add(\"enter\"), requestAnimationFrame(() => _.classList.add(\"enter-active\")), requestAnimationFrame(() => _.classList.remove(\"enter\")));\n }), m && c(m);\n };\n l();\n const h = document.createElement(\"button\");\n h.type = \"button\", h.className = \"btn primary\", u(h, \"field-button\", \"field-button-primary\"), h.textContent = this._i18n.dictAdd ?? \"+\", h.onclick = () => {\n let m = Object.keys(i).length + 1, d = `k${m}`;\n for (; i[d] !== void 0; ) d = `k${++m}`;\n const p = r();\n i[d] = P(t);\n const b = { ...this._value ?? {}, [d]: i[d] };\n this._value = b, l(p, d), this.emitChange(b);\n };\n const f = document.createElement(\"div\");\n f.className = \"actions\", u(f, \"field-actions\"), f.appendChild(h), s.appendChild(e), s.appendChild(f), this.$root.appendChild(s);\n }\n}\ny(\"schema-form-dict\", ee);\nclass te extends HTMLElement {\n constructor() {\n super(), this._i18n = { ...K }, this._i18nCommitted = !1, this.$root = this.attachShadow({ mode: \"open\" });\n const n = document.createElement(\"style\");\n n.textContent = L, this.$root.appendChild(n);\n const s = document.createElement(\"div\");\n s.className = \"wrapper\", u(s, \"wrapper\");\n const e = document.createElement(\"form\");\n e.className = \"form\", u(e, \"form\"), s.appendChild(e), this.$root.appendChild(s), this.addEventListener(\"change\", (t) => {\n if (!t?.detail) return;\n const { path: i, value: a } = t.detail;\n Array.isArray(i) && i.length === 0 ? this._state = a : ae(this._state ?? (this._state = {}), i, a), this.dispatchEvent(\n new CustomEvent(\"form-change\", { detail: { path: i, value: a, state: this._state } })\n );\n });\n }\n // --- 对外 API ---\n set schema(n) {\n this._schema = V(n);\n try {\n this._state = this._schema(null, { autofix: !0 });\n } catch {\n this._state = P(this._schema);\n }\n this.render();\n }\n get schema() {\n return this._schema;\n }\n set schemaJSON(n) {\n this.schema = n;\n }\n get schemaJSON() {\n return this._schema?.toJSON?.();\n }\n setData(n, s = { validate: !0, autofix: !0 }) {\n if (!this._schema) throw new Error(\"请先设置 schema\");\n const e = s.validate ? this._schema(n ?? null, { autofix: s.autofix }) : n;\n this._state = e, this.render();\n }\n getData(n = { validate: !0, autofix: !0 }) {\n if (!this._schema) throw new Error(\"请先设置 schema\");\n const s = this._state;\n return n.validate ? this._schema(s ?? null, { autofix: n.autofix }) : s;\n }\n reset() {\n try {\n this._state = this._schema(null, { autofix: !0 });\n } catch {\n this._state = P(this._schema);\n }\n this.render();\n }\n refresh() {\n this.render();\n }\n // i18n 相关\n set i18n(n) {\n this._i18nCommitted || (this._i18n = { ...this._i18n, ...n }, this._i18nCommitted = !0, this.render());\n }\n get i18n() {\n return this._i18n;\n }\n render() {\n if (!this._schema) return;\n const n = this.$root.querySelector(\"form\");\n n.innerHTML = \"\";\n const s = A(\n this._schema,\n [],\n this._state,\n this._i18n.rootLabel,\n this._i18n\n );\n n.appendChild(s);\n }\n}\ny(\"schema-form\", te);\nfunction he(o, n) {\n const s = document.createElement(\"schema-form\");\n s.schema = o, n?.i18n && (s.i18n = n.i18n), n?.value && s.setData(n.value);\n const e = n?.onChange, t = () => {\n try {\n e?.(s.getData());\n } catch {\n }\n };\n return e && s.addEventListener(\"form-change\", t), {\n el: s,\n mount: (i) => {\n if (typeof i == \"string\") {\n const a = document.querySelector(i);\n if (!a) throw new Error(\"未找到挂载节点:\" + i);\n a.innerHTML = \"\", a.appendChild(s);\n }\n if (i instanceof HTMLElement)\n i.innerHTML = \"\", i.appendChild(s);\n else\n throw new Error(\"挂载节点必须是 HTMLElement 或 选择器字符串\");\n return s;\n },\n setData: (i, a) => s.setData(i, a),\n getData: (i) => s.getData(i),\n destroy: () => {\n e && s.removeEventListener(\"form-change\", t), s.remove();\n }\n };\n}\nfunction ue() {\n y(\"schema-form\", te), y(\"schema-form-string\", I), y(\"schema-form-number\", J), y(\"schema-form-boolean\", Y), y(\"schema-form-date\", X), y(\"schema-form-const\", B), y(\"schema-form-union\", G), y(\"schema-form-tuple\", Q), y(\"schema-form-object\", W), y(\"schema-form-array\", H), y(\"schema-form-dict\", ee), y(\"schema-form-intersect\", Z);\n}\nexport {\n K as DEFAULT_I18N,\n te as SchemaForm,\n he as createSchemasteryForm,\n ue as install\n};\n//# sourceMappingURL=index.js.map\n","import { defineComponent as p, mergeModels as m, useModel as v, useTemplateRef as D, onBeforeMount as M, onMounted as y, onBeforeUnmount as B, watch as d, nextTick as o, createElementBlock as C, openBlock as k, mergeProps as F } from \"vue\";\nimport { install as O } from \"./index.js\";\nconst x = /* @__PURE__ */ p({\n __name: \"SchemasteryFormVue\",\n props: /* @__PURE__ */ m({\n schema: {},\n value: {},\n validateOnChange: { type: Boolean, default: !1 }\n }, {\n schema: { required: !0 },\n schemaModifiers: {},\n value: { required: !1, default: {} },\n valueModifiers: {}\n }),\n emits: /* @__PURE__ */ m([\"change\"], [\"update:schema\", \"update:value\"]),\n setup(i, { expose: c, emit: h }) {\n const u = v(i, \"schema\"), r = v(i, \"value\"), g = h, a = D(\"elRef\");\n let n = !1, l = !1;\n const f = (e) => {\n if (l)\n return;\n const t = a.value, s = i.validateOnChange ? t.getData({ validate: !0 }) : e.detail.state;\n n = !0, r.value = s, o(() => {\n n = !1;\n }), g(\"change\", e.detail);\n };\n return M(() => {\n O();\n }), y(() => {\n const e = a.value;\n u.value && (e.schema = u.value), r.value !== void 0 && e.setData(r.value, { validate: !1, autofix: !0 }), e.addEventListener(\"form-change\", f);\n }), B(() => {\n a.value?.removeEventListener(\"form-change\", f);\n }), d(\n u,\n (e) => {\n n || a.value && e && a.value.schema !== e && (l = !0, a.value.schema = e, o(() => {\n l = !1;\n }));\n },\n { deep: !0, immediate: !0 }\n ), d(\n r,\n (e) => {\n if (n || !a.value || e === void 0) return;\n const t = a.value.getData({ validate: !1 });\n JSON.stringify(t) !== JSON.stringify(e) && (l = !0, a.value.setData(e, { validate: !1 }), o(() => {\n l = !1;\n }));\n },\n { deep: !0, immediate: !0 }\n ), c({\n /** 手动设置数据并可选择是否触发 v-model:data */\n setData(e, t) {\n const s = a.value;\n s.setData(e, { validate: !!t?.validate }), t?.emit && (r.value = s.getData({ validate: !!t?.validate }));\n },\n /** 获取数据 */\n getData(e) {\n return a.value.getData(e);\n },\n /** 设置 schema,并同步到 v-model:schema */\n setSchema(e, t = !0) {\n a.value.schema = e, t && (u.value = e);\n },\n refresh() {\n a.value.refresh();\n },\n reset() {\n a.value.reset();\n },\n /** 原生元素 */\n el: a\n }), (e, t) => (k(), C(\"schema-form\", F({\n ref_key: \"elRef\",\n ref: a\n }, e.$attrs), null, 16));\n }\n});\nexport {\n x as default\n};\n//# sourceMappingURL=vue.js.map\n","import { isRef, Ref, toRaw } from 'vue'\n\n\nexport function deepToRaw<T extends unknown = any>(v: T | Ref<T>, seen = new WeakMap()): T {\n // 处理 ref\n if (isRef(v)) {\n return deepToRaw(v.value, seen)\n }\n\n // 基础类型\n if (v === null || typeof v !== 'object') {\n return v\n }\n\n // 检查循环引用\n if (seen.has(v)) {\n return seen.get(v)\n }\n\n // 特殊内置对象\n if (v instanceof Date) {\n return new Date(v) as T\n }\n if (v instanceof RegExp) {\n return new RegExp(v) as T\n }\n if (v instanceof Map) {\n const cloned = new Map()\n seen.set(v, cloned)\n Array.from(v.entries()).forEach(([key, value]) => {\n cloned.set(key, deepToRaw(value, seen))\n })\n return cloned as T\n }\n if (v instanceof Set) {\n const cloned = new Set()\n seen.set(v, cloned)\n Array.from(v).forEach((value) => {\n cloned.add(deepToRaw(value, seen))\n })\n return cloned as T\n }\n\n // 数组\n if (Array.isArray(v)) {\n const result: any[] = []\n seen.set(v, result)\n for (const item of v) {\n result.push(deepToRaw(item, seen))\n }\n return result as T\n }\n\n // 普通对象 / reactive 对象\n const raw = toRaw(v) as Record<string | symbol, any>\n const out: Record<string | symbol, any> = {}\n seen.set(v, out)\n\n // 字符串键\n for (const k of Object.keys(raw)) {\n out[k] = deepToRaw(raw[k], seen)\n }\n\n // Symbol 键(可选)\n for (const k of Object.getOwnPropertySymbols(raw)) {\n out[k] = deepToRaw(raw[k], seen)\n }\n\n return out as T\n}\n","<template lang=\"pug\">\n#preferences-ui-app\n .tabbar\n .tabbar-tabs\n a.tab(\n v-for='tab in tabs',\n :key='tab.name',\n :class='{ active: activeCategoryName === tab.name }',\n @click='handleTabClick($event, tab.name)',\n :data-value='tab.name'\n ) {{ tab.label }}\n\n .tabbar-content\n .custom-render-container(\n ref='customRenderContainerRef',\n :key='activeCategoryName',\n v-if='activeCategory && activeCategory.customRenderer'\n )\n SchemaFormVue.auto-schema-form(\n v-if='autoGenerateForm && activeSchema',\n :key='activeCategoryName',\n :data-category='activeCategoryName',\n :schema='activeSchema',\n :value='value',\n @update:value='value = { ...value, ...$event }',\n :validate-on-change='false',\n :i18n='{ rootLabel: \"\" }'\n )\n\n details(v-if='DEV')\n pre(style='max-height: 20em; overflow: auto') {{ value }}\n</template>\n\n<script setup lang=\"ts\" vapor>\nimport {\n computed,\n nextTick,\n onMounted,\n onUnmounted,\n ref,\n shallowRef,\n useTemplateRef,\n watch,\n} from 'vue'\nimport { useIPE } from '@/utils/vueHooks'\nimport type {\n InPageEditPreferenceUIRegistryItem,\n InPageEditPreferenceUICategory,\n} from '../../../services/PreferencesService'\nimport SchemaFormVue from 'schemastery-form/vue'\nimport Schema from 'schemastery'\n\nconst ctx = useIPE()!\nconst DEV = import.meta.env.DEV\n\nconst registries = shallowRef<InPageEditPreferenceUIRegistryItem[]>([])\nconst tabs = ref<InPageEditPreferenceUICategory[]>([])\nconst activeCategoryName = ref('')\nconst activeCategory = computed(() => {\n return tabs.value.find((tab) => tab.name === activeCategoryName.value) || null\n})\nconst activeSchema = computed(() => {\n const filtered = registries.value\n .filter((reg) => reg.category === activeCategoryName.value)\n .map((reg) => reg.schema)\n if (filtered.length === 0) return null\n return Schema.intersect(filtered)\n})\n\nconst autoGenerateForm = computed(() => {\n if (!activeCategory.value) return true\n return typeof activeCategory.value.autoGenerateForm === 'boolean'\n ? activeCategory.value.autoGenerateForm\n : true\n})\n\nconst value = ref<any>({})\n\ndefineExpose({\n getValue() {\n return deepToRaw(value)\n },\n mergeValue(details: Record<string, unknown>) {\n console.info('request to update value', details)\n value.value = {\n ...value.value,\n ...details,\n }\n },\n selectTab(name: string) {\n activeCategoryName.value = name\n },\n})\n\nonMounted(async () => {\n ctx.inject(['preferences'], async (ctx) => {\n const all = await ctx.preferences.getAll()\n value.value = all\n tabs.value = ctx.preferences.getConfigCategories()\n registries.value = ctx.preferences.getConfigRegistries()\n activeCategoryName.value = tabs.value[0].name\n })\n})\n\nconst handleTabClick = (event: MouseEvent, name: string) => {\n event.preventDefault()\n activeCategoryName.value = name\n const target = event.currentTarget as HTMLAnchorElement\n if (target) {\n target.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' })\n }\n}\n\nconst customRenderContainerRef = useTemplateRef('customRenderContainerRef')\nconst unmountCallbacks = ref<Array<() => void>>([])\n\nonUnmounted(() => {\n // 组件卸载时调用所有注册的卸载回调\n unmountCallbacks.value.forEach((callback) => callback())\n unmountCallbacks.value = []\n})\n\nwatch(\n activeCategory,\n async (cat) => {\n // 调用之前注册的卸载回调\n unmountCallbacks.value.forEach((callback) => callback())\n unmountCallbacks.value = []\n\n await nextTick()\n const container = customRenderContainerRef.value\n if (!container) return\n container.innerText = ''\n if (cat && typeof cat.customRenderer === 'function') {\n let onMountedCallback: (container: HTMLElement) => void = noop\n const onMounted = (callback: (container: HTMLElement) => void) => {\n onMountedCallback = callback\n }\n const onUnmount = (callback: () => void) => {\n unmountCallbacks.value.push(callback)\n }\n const node = await cat.customRenderer({ ctx, onMounted, onUnmount })\n if (node) {\n container.appendChild(node)\n onMountedCallback?.(container)\n }\n }\n },\n { immediate: true, deep: false }\n)\n</script>\n\n<style scoped lang=\"scss\">\n.tabbar {\n .tabbar-tabs {\n --border-color: #efefef;\n --tab-color: #666;\n --active-color: #3366bb;\n display: flex;\n gap: 0.5em;\n border-bottom: 1px solid var(--border-color);\n margin-bottom: 1em;\n white-space: nowrap;\n overflow-x: auto;\n .tab {\n padding: 0.5em 1em;\n cursor: pointer;\n user-select: none;\n color: var(--tab-color);\n display: inline-block;\n transition:\n color 0.3s ease,\n box-shadow 0.3s ease;\n &.active {\n color: var(--active-color);\n box-shadow: inset 0 -0.15em 0 0 var(--active-color);\n }\n }\n }\n}\n\nschema-form {\n margin-bottom: 0.5em;\n --schema-radius: 6px;\n}\n</style>\n\n<style lang=\"scss\">\n#preferences-ui-app {\n .schema-form-item.field {\n border: 0;\n }\n}\n</style>\n","import { Inject, InPageEdit } from '@/InPageEdit'\nimport PreferencesApp from './components/PreferencesApp.vue'\nimport { CustomIPEModal } from '@/services/ModalService.js'\nimport type { App as VueApp } from 'vue'\n\ndeclare module '@/InPageEdit' {\n export interface InPageEdit {\n preferencesUI: PluginPreferencesUI\n }\n export interface Events {\n 'preferences-ui/modal-shown'(payload: { ctx: InPageEdit; modal: CustomIPEModal }): void\n 'preferences-ui/vue-app-mounted'(payload: {\n ctx: InPageEdit\n app: VueApp\n form: InstanceType<typeof PreferencesApp>\n }): void\n 'preferences-ui/modal-tab-changed'(payload: {\n ctx: InPageEdit\n category: string\n $tabContent: HTMLElement\n }): void\n 'preferences-ui/form-data-saved'(payload: {\n ctx: InPageEdit\n data: Record<string, unknown>\n }): void\n 'preferences-ui/modal-closed'(payload: { ctx: InPageEdit; modal: CustomIPEModal }): void\n }\n}\n\n@Inject(['preferences', 'modal', '$', '$$'])\nexport class PluginPreferencesUI extends BasePlugin {\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'preferences-ui')\n ctx.set('preferencesUI', this)\n const $ = ctx.$\n const $$ = ctx.$$\n\n ctx.preferences.defineCategory({\n name: 'general',\n label: $`prefs.general.label`,\n description: $`prefs.general.description`,\n autoGenerateForm: true,\n })\n\n ctx.preferences.defineCategory({\n name: 'editor',\n label: $`prefs.editor.label`,\n description: $`prefs.editor.description`,\n autoGenerateForm: true,\n })\n\n ctx.preferences.defineCategory({\n name: 'about',\n label: $$`prefs.about.label`,\n description: $$`prefs.about.description`,\n index: 99,\n customRenderer: () => {\n return (\n <section className=\"theme-ipe-prose\">\n <h2>✏️ InPageEdit NEXT</h2>\n <p>{$$`prefs.about.intro`}</p>\n <h3>{$$`prefs.about.portals.header`}</h3>\n <ul>\n <li>\n <a href={this.ctx.Endpoints.HOME_URL} target=\"_blank\">\n {$$`prefs.about.portals.officialwebsite`}\n </a>\n </li>\n <li>\n <a\n href={`${this.ctx.Endpoints.UPDATE_LOGS_URL}#${this.ctx.version.split('-')[0]}`}\n target=\"_blank\"\n >\n {$$`prefs.about.portals.updatelogs`}\n </a>\n </li>\n </ul>\n <h3>{$$`prefs.about.joinus.header`}</h3>\n <ul>\n <li>\n <strong>{$$`prefs.about.joinus.github`}</strong>:{' '}\n <a href={this.ctx.Endpoints.GITHUB_URL} target=\"_blank\">\n {`${this.ctx.Endpoints.GITHUB_OWNER}/${this.ctx.Endpoints.GITHUB_REPO}`}\n </a>\n </li>\n <li>\n <strong>{$$`prefs.about.joinus.qqgroup`}</strong>: {this.ctx.Endpoints.QQ_GROUP_ID}\n </li>\n </ul>\n <hr />\n <p style={{ textAlign: 'center' }}>{$$`prefs.about.copyright`}</p>\n <hr />\n </section>\n )\n },\n })\n\n ctx.inject(['toolbox'], (ctx) => {\n ctx.toolbox.addButton({\n id: 'preferences',\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n class=\"icon icon-tabler icons-tabler-filled icon-tabler-settings\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M14.647 4.081a.724 .724 0 0 0 1.08 .448c2.439 -1.485 5.23 1.305 3.745 3.744a.724 .724 0 0 0 .447 1.08c2.775 .673 2.775 4.62 0 5.294a.724 .724 0 0 0 -.448 1.08c1.485 2.439 -1.305 5.23 -3.744 3.745a.724 .724 0 0 0 -1.08 .447c-.673 2.775 -4.62 2.775 -5.294 0a.724 .724 0 0 0 -1.08 -.448c-2.439 1.485 -5.23 -1.305 -3.745 -3.744a.724 .724 0 0 0 -.447 -1.08c-2.775 -.673 -2.775 -4.62 0 -5.294a.724 .724 0 0 0 .448 -1.08c-1.485 -2.439 1.305 -5.23 3.744 -3.745a.722 .722 0 0 0 1.08 -.447c.673 -2.775 4.62 -2.775 5.294 0zm-2.647 4.919a3 3 0 1 0 0 6a3 3 0 0 0 0 -6z\" />\n </svg>\n ) as HTMLElement,\n tooltip: () => $`Configure Preferences`,\n group: 'group2',\n index: 99,\n onClick: () => this.showModal(),\n })\n\n this.addDisposeHandler((ctx) => {\n ctx.toolbox.removeButton('preferences')\n })\n })\n }\n\n protected async start(): Promise<void> {\n // TODO: 不要硬编码……\n import('./PluginPrefSync.js')\n .then(({ PluginPrefSync }) => {\n this.ctx.plugin(PluginPrefSync)\n })\n .catch(this.ctx.logger.warn)\n\n this.ctx.on('preferences/changed', (payload) => {\n this._form?.mergeValue?.(payload.input)\n })\n }\n\n protected stop(): Promise<void> | void {}\n\n _modal: CustomIPEModal | null = null\n _form: InstanceType<typeof PreferencesApp> | null = null\n showModal() {\n const { $ } = this.ctx\n if (this._modal && !this._modal.isDestroyed) {\n return this._modal\n }\n const modal = this.ctx.modal.show({\n className: 'ipe-preference compact-buttons',\n sizeClass: 'small',\n outSideClose: false,\n center: true,\n title: `${$`InPageEdit Preferences`} (${this.ctx.version})`,\n content: (\n <>\n <ProgressBar />\n </>\n ) as HTMLElement,\n })\n\n modal.get$window().classList.add('dialog')\n\n const root = (\n <div\n id=\"ipe-preferences-app\"\n style={{ minHeight: 'calc(85dvh - var(--ipe-modal-spacing) * 2)' }}\n ></div>\n )\n modal.setContent(root as HTMLElement)\n\n this.ctx.emit('preferences-ui/modal-shown', {\n ctx: this.ctx,\n modal,\n })\n\n const app = this.createPreferencesUIApp()\n const form = app.mount(root) as InstanceType<typeof PreferencesApp>\n this._form = form\n\n this.ctx.emit('preferences-ui/vue-app-mounted', {\n ctx: this.ctx,\n app,\n form,\n })\n\n modal.setButtons([\n {\n label: $`Close`,\n className: 'is-ghost',\n method: () => {\n modal.close()\n },\n },\n {\n label: $`Save`,\n className: 'is-primary is-ghost',\n method: async () => {\n const value = form.getValue()\n try {\n const ret = await this.ctx.preferences.setMany(value)\n this.logger.info('preferences saved', value, ret)\n } catch (error) {\n this.logger.error('failed to save preferences', error)\n }\n modal.close()\n this.ctx.modal.notify('success', {\n title: $`Preferences Saved`,\n content: <p>{$`Some settings may take effect after reloading the page.`}</p>,\n })\n },\n },\n ])\n\n this._modal = modal\n\n modal.on(modal.Event.Close, () => {\n this.logger.debug('preferences modal closed, vue app unmounting')\n app.unmount()\n this._modal = null\n this._form = null\n\n this.ctx.emit('preferences-ui/modal-closed', {\n ctx: this.ctx,\n modal,\n })\n })\n\n return modal\n }\n getCurrentModal() {\n return this._modal\n }\n closeCurrentModal() {\n return this._modal?.close()\n }\n async dispatchFormSave(form?: InstanceType<typeof PreferencesApp>) {\n form = form || this._form || undefined\n const value = form?.getValue()\n if (!value) {\n return false\n }\n this.ctx.preferences.setMany(value)\n return true\n }\n getCurrentFormValue() {\n return this._form?.getValue()\n }\n mergeFormValue(value: Record<string, unknown>) {\n this._form?.mergeValue?.(value)\n return !!this._form?.mergeValue\n }\n\n createPreferencesUIApp() {\n return createVueAppWithIPE(this.ctx, PreferencesApp)\n }\n}\n"],"names":["L","K","y","o","n","ae","e","r","l","a","c","M","re","F","T","u","oe","O","z","V","w","ce","P","h","k","I","f","m","d","p","J","Y","q","D","R","j","X","B","Z","A","le","s","G","Q","W","H","t","i","b","_","E","$","N","x","v","S","g","ne","U","de","ie","se","ee","te","ue","C","deepToRaw","seen","isRef","cloned","key","value","result","item","raw","toRaw","out","ctx","useIPE","DEV","registries","shallowRef","tabs","ref","activeCategoryName","activeCategory","computed","tab","activeSchema","filtered","reg","Schema","autoGenerateForm","__expose","details","name","onMounted","all","handleTabClick","event","target","customRenderContainerRef","useTemplateRef","unmountCallbacks","onUnmounted","callback","watch","cat","nextTick","container","onMountedCallback","noop","onUnmount","node","_PluginPreferencesUI_decorators","_init","_a","Inject","PluginPreferencesUI","BasePlugin","$$","jsxs","jsx","PluginPrefSync","payload","modal","Fragment","ProgressBar","root","app","form","ret","error","createVueAppWithIPE","PreferencesApp","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { j as a, P as S } from "./Promise.withResolvers-C4chhLB1.js";
2
- import { R as E, a as j, S as k } from "./index-CaTtMzfu.js";
2
+ import { R as E, a as j, S as k } from "./index-DTU2DZU6.js";
3
3
  import { BasePlugin as q } from "./core.js";
4
4
  import { T as F } from "./index-z_qDGCMT.js";
5
5
  import { C as v } from "./CheckBox-Dx3r3LQz.js";
@@ -177,4 +177,4 @@ R(g, 1, h);
177
177
  export {
178
178
  h as PluginQuickMove
179
179
  };
180
- //# sourceMappingURL=index-fa8d4Dv_.js.map
180
+ //# sourceMappingURL=index-LvMaeDQn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-fa8d4Dv_.js","sources":["../src/plugins/quick-move/index.tsx"],"sourcesContent":["import { Inject, InPageEdit, Schema } from '@/InPageEdit'\nimport { IPEModal } from '@inpageedit/modal'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickMove: PluginQuickMove\n }\n interface Events {\n 'quick-move/init-options'(payload: {\n ctx: InPageEdit\n options: Partial<QuickMoveOptions>\n }): void\n 'quick-move/show-modal'(payload: { ctx: InPageEdit; modal: IPEModal }): void\n 'quick-move/submit'(payload: {\n ctx: InPageEdit\n modal: IPEModal\n payload: MovePageOptions\n }): void\n }\n interface PreferencesMap {\n 'quickMove.reason': string\n }\n}\n\nexport interface MovePageOptions {\n from: string\n to: string\n reason?: string\n movetalk?: boolean\n movesubpages?: boolean\n noredirect?: boolean\n}\nexport interface QuickMoveOptions extends Partial<MovePageOptions> {\n lockFromField?: boolean\n lockToField?: boolean\n}\n\n@RegisterPreferences(\n Schema.object({\n 'quickMove.reason': Schema.string().default('[IPE-NEXT] Quick move'),\n })\n .description('Quick move options')\n .extra('category', 'editor')\n)\n@Inject(['modal', 'wiki', '$'])\nexport class PluginQuickMove extends BasePlugin {\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'quick-move')\n ctx.set('quickMove', this)\n }\n\n protected start(): Promise<void> | void {\n this.ctx.inject(['toolbox'], (ctx) => {\n this.injectToolbox(ctx)\n })\n }\n\n private injectToolbox(ctx: InPageEdit) {\n const $ = ctx.$\n const curPageName = window.mw?.config.get('wgPageName') || ''\n const canEdit = window.mw?.config.get('wgIsProbablyEditable')\n ctx.toolbox.addButton({\n id: 'quick-move',\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-forms\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M12 3a3 3 0 0 0 -3 3v12a3 3 0 0 0 3 3\" />\n <path d=\"M6 3a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3\" />\n <path d=\"M13 7h7a1 1 0 0 1 1 1v8a1 1 0 0 1 -1 1h-7\" />\n <path d=\"M5 7h-1a1 1 0 0 0 -1 1v8a1 1 0 0 0 1 1h1\" />\n <path d=\"M17 12h.01\" />\n <path d=\"M13 12h.01\" />\n </svg>\n ),\n tooltip: () => $`Quick Move`,\n group: 'group1',\n index: 1,\n onClick: () => {\n this.showModal(\n canEdit\n ? {\n lockFromField: true,\n from: curPageName,\n }\n : {}\n )\n },\n })\n }\n\n async showModal(options?: Partial<QuickMoveOptions>) {\n const { $ } = this.ctx\n const reason = await this.ctx.preferences.get('quickMove.reason')\n const modal = this.ctx.modal\n .createObject({\n title: $`Quick Move`,\n content: (<ProgressBar />) as HTMLElement,\n className: 'quick-move compact-buttons',\n sizeClass: 'smallToMedium',\n center: true,\n })\n .init()\n\n let formRef: HTMLFormElement | null = null\n modal.setContent(\n (\n <form\n ref={(el) => (formRef = el)}\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n }}\n onSubmit={(e) => {\n e.preventDefault()\n formRef?.checkValidity()\n if (!formRef?.reportValidity()) {\n return\n }\n const formData = new FormData(formRef!)\n const options = {\n from: formData.get('from')?.toString().trim()!,\n to: formData.get('to')?.toString().trim()!,\n reason: (formData.get('reason') as string) || '',\n movetalk: formData.get('movetalk') === 'on',\n movesubpages: formData.get('movesubpages') === 'on',\n noredirect: formData.get('noredirect') === 'on',\n }\n if (!options.from || !options.to) {\n this.ctx.modal.notify('error', {\n title: $`Failed to move`,\n content: 'From and to are required.',\n })\n return\n }\n this.ctx.emit('quick-move/submit', { ctx: this.ctx, modal, payload: options })\n modal.setLoadingState(true)\n this.movePage(options)\n .then(() => {\n location.reload()\n })\n .catch((error) => {\n modal.setLoadingState(false)\n this.ctx.modal.notify('error', {\n title: $`Failed to move`,\n content: error instanceof Error ? error.message : String(error),\n })\n })\n }}\n >\n <TwinSwapInput\n inputs={[\n {\n label: $`Move from`,\n name: 'from',\n value: options?.from,\n required: true,\n },\n {\n label: $`Move to`,\n name: 'to',\n value: options?.to,\n required: true,\n },\n ]}\n />\n <div>\n <CheckBox name=\"movetalk\" id=\"movetalk\" checked={options?.movetalk}>\n {$`Move talk page`}\n </CheckBox>\n </div>\n <div>\n <CheckBox name=\"movesubpages\" id=\"movesubpages\" checked={options?.movesubpages}>\n {$`Move subpages (up to 100)`}\n </CheckBox>\n </div>\n {this.ctx.wiki.hasRight('suppressredirect') && (\n <div>\n <CheckBox name=\"noredirect\" id=\"noredirect\" checked={options?.noredirect}>\n {$`Move without leaving a redirect`}\n </CheckBox>\n </div>\n )}\n <InputBox\n label={$`Reason`}\n id=\"reason\"\n name=\"reason\"\n value={options?.reason ?? reason ?? ''}\n />\n </form>\n ) as HTMLElement\n )\n\n modal.setButtons([\n {\n label: $`Move`,\n className: 'is-primary is-ghost',\n method: () => {\n formRef?.dispatchEvent(new Event('submit'))\n },\n },\n ])\n\n return modal.show()\n }\n\n async movePage(options: MovePageOptions) {\n const { from, to, reason = '', ...rest } = options\n\n if (!from || !to) {\n throw new Error('From and to titles are required.')\n }\n if (from === to) {\n throw new Error('From and to titles cannot be the same.')\n }\n\n const wikiPage = await this.ctx.wikiPage.newFromTitle(from)\n return wikiPage.moveTo(to, reason, rest)\n }\n}\n"],"names":["_PluginQuickMove_decorators","_init","_a","RegisterPreferences","Schema","Inject","PluginQuickMove","BasePlugin","ctx","$","curPageName","canEdit","jsxs","jsx","options","reason","modal","ProgressBar","formRef","el","e","formData","error","TwinSwapInput","CheckBox","InputBox","from","to","rest","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}
1
+ {"version":3,"file":"index-LvMaeDQn.js","sources":["../src/plugins/quick-move/index.tsx"],"sourcesContent":["import { Inject, InPageEdit, Schema } from '@/InPageEdit'\nimport { IPEModal } from '@inpageedit/modal'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickMove: PluginQuickMove\n }\n interface Events {\n 'quick-move/init-options'(payload: {\n ctx: InPageEdit\n options: Partial<QuickMoveOptions>\n }): void\n 'quick-move/show-modal'(payload: { ctx: InPageEdit; modal: IPEModal }): void\n 'quick-move/submit'(payload: {\n ctx: InPageEdit\n modal: IPEModal\n payload: MovePageOptions\n }): void\n }\n interface PreferencesMap {\n 'quickMove.reason': string\n }\n}\n\nexport interface MovePageOptions {\n from: string\n to: string\n reason?: string\n movetalk?: boolean\n movesubpages?: boolean\n noredirect?: boolean\n}\nexport interface QuickMoveOptions extends Partial<MovePageOptions> {\n lockFromField?: boolean\n lockToField?: boolean\n}\n\n@RegisterPreferences(\n Schema.object({\n 'quickMove.reason': Schema.string().default('[IPE-NEXT] Quick move'),\n })\n .description('Quick move options')\n .extra('category', 'editor')\n)\n@Inject(['modal', 'wiki', '$'])\nexport class PluginQuickMove extends BasePlugin {\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'quick-move')\n ctx.set('quickMove', this)\n }\n\n protected start(): Promise<void> | void {\n this.ctx.inject(['toolbox'], (ctx) => {\n this.injectToolbox(ctx)\n })\n }\n\n private injectToolbox(ctx: InPageEdit) {\n const $ = ctx.$\n const curPageName = window.mw?.config.get('wgPageName') || ''\n const canEdit = window.mw?.config.get('wgIsProbablyEditable')\n ctx.toolbox.addButton({\n id: 'quick-move',\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-forms\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M12 3a3 3 0 0 0 -3 3v12a3 3 0 0 0 3 3\" />\n <path d=\"M6 3a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3\" />\n <path d=\"M13 7h7a1 1 0 0 1 1 1v8a1 1 0 0 1 -1 1h-7\" />\n <path d=\"M5 7h-1a1 1 0 0 0 -1 1v8a1 1 0 0 0 1 1h1\" />\n <path d=\"M17 12h.01\" />\n <path d=\"M13 12h.01\" />\n </svg>\n ),\n tooltip: () => $`Quick Move`,\n group: 'group1',\n index: 1,\n onClick: () => {\n this.showModal(\n canEdit\n ? {\n lockFromField: true,\n from: curPageName,\n }\n : {}\n )\n },\n })\n }\n\n async showModal(options?: Partial<QuickMoveOptions>) {\n const { $ } = this.ctx\n const reason = await this.ctx.preferences.get('quickMove.reason')\n const modal = this.ctx.modal\n .createObject({\n title: $`Quick Move`,\n content: (<ProgressBar />) as HTMLElement,\n className: 'quick-move compact-buttons',\n sizeClass: 'smallToMedium',\n center: true,\n })\n .init()\n\n let formRef: HTMLFormElement | null = null\n modal.setContent(\n (\n <form\n ref={(el) => (formRef = el)}\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n }}\n onSubmit={(e) => {\n e.preventDefault()\n formRef?.checkValidity()\n if (!formRef?.reportValidity()) {\n return\n }\n const formData = new FormData(formRef!)\n const options = {\n from: formData.get('from')?.toString().trim()!,\n to: formData.get('to')?.toString().trim()!,\n reason: (formData.get('reason') as string) || '',\n movetalk: formData.get('movetalk') === 'on',\n movesubpages: formData.get('movesubpages') === 'on',\n noredirect: formData.get('noredirect') === 'on',\n }\n if (!options.from || !options.to) {\n this.ctx.modal.notify('error', {\n title: $`Failed to move`,\n content: 'From and to are required.',\n })\n return\n }\n this.ctx.emit('quick-move/submit', { ctx: this.ctx, modal, payload: options })\n modal.setLoadingState(true)\n this.movePage(options)\n .then(() => {\n location.reload()\n })\n .catch((error) => {\n modal.setLoadingState(false)\n this.ctx.modal.notify('error', {\n title: $`Failed to move`,\n content: error instanceof Error ? error.message : String(error),\n })\n })\n }}\n >\n <TwinSwapInput\n inputs={[\n {\n label: $`Move from`,\n name: 'from',\n value: options?.from,\n required: true,\n },\n {\n label: $`Move to`,\n name: 'to',\n value: options?.to,\n required: true,\n },\n ]}\n />\n <div>\n <CheckBox name=\"movetalk\" id=\"movetalk\" checked={options?.movetalk}>\n {$`Move talk page`}\n </CheckBox>\n </div>\n <div>\n <CheckBox name=\"movesubpages\" id=\"movesubpages\" checked={options?.movesubpages}>\n {$`Move subpages (up to 100)`}\n </CheckBox>\n </div>\n {this.ctx.wiki.hasRight('suppressredirect') && (\n <div>\n <CheckBox name=\"noredirect\" id=\"noredirect\" checked={options?.noredirect}>\n {$`Move without leaving a redirect`}\n </CheckBox>\n </div>\n )}\n <InputBox\n label={$`Reason`}\n id=\"reason\"\n name=\"reason\"\n value={options?.reason ?? reason ?? ''}\n />\n </form>\n ) as HTMLElement\n )\n\n modal.setButtons([\n {\n label: $`Move`,\n className: 'is-primary is-ghost',\n method: () => {\n formRef?.dispatchEvent(new Event('submit'))\n },\n },\n ])\n\n return modal.show()\n }\n\n async movePage(options: MovePageOptions) {\n const { from, to, reason = '', ...rest } = options\n\n if (!from || !to) {\n throw new Error('From and to titles are required.')\n }\n if (from === to) {\n throw new Error('From and to titles cannot be the same.')\n }\n\n const wikiPage = await this.ctx.wikiPage.newFromTitle(from)\n return wikiPage.moveTo(to, reason, rest)\n }\n}\n"],"names":["_PluginQuickMove_decorators","_init","_a","RegisterPreferences","Schema","Inject","PluginQuickMove","BasePlugin","ctx","$","curPageName","canEdit","jsxs","jsx","options","reason","modal","ProgressBar","formRef","el","e","formData","error","TwinSwapInput","CheckBox","InputBox","from","to","rest","__decoratorStart","__decorateElement","__runInitializers"],"mappings":";;;;;;;;;;;;;;;;;GAAAA,GAAAC,GAAAC;AAqCAF,IAAA,CAACG;AAAA,EACCC,EAAO,OAAO;AAAA,IACZ,oBAAoBA,EAAO,OAAA,EAAS,QAAQ,uBAAuB;AAAA,EAAA,CACpE,EACE,YAAY,oBAAoB,EAChC,MAAM,YAAY,QAAQ;AAC/B,GACCC,EAAO,CAAC,SAAS,QAAQ,GAAG,CAAC,CAAA;AACvB,MAAMC,WAAwBJ,IAAAK,GAAW;AAAA,EAC9C,YAAmBC,GAAiB;AAClC,UAAMA,GAAK,CAAA,GAAI,YAAY,GADV,KAAA,MAAAA,GAEjBA,EAAI,IAAI,aAAa,IAAI;AAAA,EAC3B;AAAA,EAEU,QAA8B;AACtC,SAAK,IAAI,OAAO,CAAC,SAAS,GAAG,CAACA,MAAQ;AACpC,WAAK,cAAcA,CAAG;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EAEQ,cAAcA,GAAiB;AACrC,UAAMC,IAAID,EAAI,GACRE,IAAc,OAAO,IAAI,OAAO,IAAI,YAAY,KAAK,IACrDC,IAAU,OAAO,IAAI,OAAO,IAAI,sBAAsB;AAC5D,IAAAH,EAAI,QAAQ,UAAU;AAAA,MACpB,IAAI;AAAA,MACJ,MACEI,gBAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,OAAM;AAAA,UACN,QAAO;AAAA,UACP,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,QAAO;AAAA,UACP,gBAAa;AAAA,UACb,kBAAe;AAAA,UACf,mBAAgB;AAAA,UAChB,OAAM;AAAA,UAEN,UAAA;AAAA,YAAA,gBAAAC,EAAC,UAAK,QAAO,QAAO,GAAE,iBAAgB,MAAK,QAAO;AAAA,YAClD,gBAAAA,EAAC,QAAA,EAAK,GAAE,wCAAA,CAAwC;AAAA,YAChD,gBAAAA,EAAC,QAAA,EAAK,GAAE,uCAAA,CAAuC;AAAA,YAC/C,gBAAAA,EAAC,QAAA,EAAK,GAAE,4CAAA,CAA4C;AAAA,YACpD,gBAAAA,EAAC,QAAA,EAAK,GAAE,2CAAA,CAA2C;AAAA,YACnD,gBAAAA,EAAC,QAAA,EAAK,GAAE,aAAA,CAAa;AAAA,YACrB,gBAAAA,EAAC,QAAA,EAAK,GAAE,aAAA,CAAa;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGzB,SAAS,MAAMJ;AAAA,MACf,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS,MAAM;AACb,aAAK;AAAA,UACHE,IACI;AAAA,YACE,eAAe;AAAA,YACf,MAAMD;AAAA,UAAA,IAER,CAAA;AAAA,QAAC;AAAA,MAET;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EAEA,MAAM,UAAUI,GAAqC;AACnD,UAAM,EAAE,GAAAL,MAAM,KAAK,KACbM,IAAS,MAAM,KAAK,IAAI,YAAY,IAAI,kBAAkB,GAC1DC,IAAQ,KAAK,IAAI,MACpB,aAAa;AAAA,MACZ,OAAOP;AAAA,MACP,2BAAWQ,GAAA,EAAY;AAAA,MACvB,WAAW;AAAA,MACX,WAAW;AAAA,MACX,QAAQ;AAAA,IAAA,CACT,EACA,KAAA;AAEH,QAAIC,IAAkC;AACtC,WAAAF,EAAM;AAAA,MAEFJ,gBAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAK,CAACO,MAAQD,IAAUC;AAAA,UACxB,OAAO;AAAA,YACL,SAAS;AAAA,YACT,eAAe;AAAA,YACf,KAAK;AAAA,UAAA;AAAA,UAEP,UAAU,CAACC,MAAM;AAGf,gBAFAA,EAAE,eAAA,GACFF,GAAS,cAAA,GACL,CAACA,GAAS;AACZ;AAEF,kBAAMG,IAAW,IAAI,SAASH,CAAQ,GAChCJ,IAAU;AAAA,cACd,MAAMO,EAAS,IAAI,MAAM,GAAG,SAAA,EAAW,KAAA;AAAA,cACvC,IAAIA,EAAS,IAAI,IAAI,GAAG,SAAA,EAAW,KAAA;AAAA,cACnC,QAASA,EAAS,IAAI,QAAQ,KAAgB;AAAA,cAC9C,UAAUA,EAAS,IAAI,UAAU,MAAM;AAAA,cACvC,cAAcA,EAAS,IAAI,cAAc,MAAM;AAAA,cAC/C,YAAYA,EAAS,IAAI,YAAY,MAAM;AAAA,YAAA;AAE7C,gBAAI,CAACP,EAAQ,QAAQ,CAACA,EAAQ,IAAI;AAChC,mBAAK,IAAI,MAAM,OAAO,SAAS;AAAA,gBAC7B,OAAOL;AAAA,gBACP,SAAS;AAAA,cAAA,CACV;AACD;AAAA,YACF;AACA,iBAAK,IAAI,KAAK,qBAAqB,EAAE,KAAK,KAAK,KAAK,OAAAO,GAAO,SAASF,EAAAA,CAAS,GAC7EE,EAAM,gBAAgB,EAAI,GAC1B,KAAK,SAASF,CAAO,EAClB,KAAK,MAAM;AACV,uBAAS,OAAA;AAAA,YACX,CAAC,EACA,MAAM,CAACQ,MAAU;AAChB,cAAAN,EAAM,gBAAgB,EAAK,GAC3B,KAAK,IAAI,MAAM,OAAO,SAAS;AAAA,gBAC7B,OAAOP;AAAA,gBACP,SAASa,aAAiB,QAAQA,EAAM,UAAU,OAAOA,CAAK;AAAA,cAAA,CAC/D;AAAA,YACH,CAAC;AAAA,UACL;AAAA,UAEA,UAAA;AAAA,YAAA,gBAAAT;AAAA,cAACU;AAAA,cAAA;AAAA,gBACC,QAAQ;AAAA,kBACN;AAAA,oBACE,OAAOd;AAAA,oBACP,MAAM;AAAA,oBACN,OAAOK,GAAS;AAAA,oBAChB,UAAU;AAAA,kBAAA;AAAA,kBAEZ;AAAA,oBACE,OAAOL;AAAA,oBACP,MAAM;AAAA,oBACN,OAAOK,GAAS;AAAA,oBAChB,UAAU;AAAA,kBAAA;AAAA,gBACZ;AAAA,cACF;AAAA,YAAA;AAAA,YAEF,gBAAAD,EAAC,OAAA,EACC,UAAA,gBAAAA,EAACW,GAAA,EAAS,MAAK,YAAW,IAAG,YAAW,SAASV,GAAS,UACvD,UAAAL,kBAAA,CACH,GACF;AAAA,YACA,gBAAAI,EAAC,OAAA,EACC,UAAA,gBAAAA,EAACW,GAAA,EAAS,MAAK,gBAAe,IAAG,gBAAe,SAASV,GAAS,cAC/D,UAAAL,6BAAA,CACH,GACF;AAAA,YACC,KAAK,IAAI,KAAK,SAAS,kBAAkB,uBACvC,OAAA,EACC,UAAA,gBAAAI,EAACW,GAAA,EAAS,MAAK,cAAa,IAAG,cAAa,SAASV,GAAS,YAC3D,8CACH,EAAA,CACF;AAAA,YAEF,gBAAAD;AAAA,cAACY;AAAA,cAAA;AAAA,gBACC,OAAOhB;AAAA,gBACP,IAAG;AAAA,gBACH,MAAK;AAAA,gBACL,OAAOK,GAAS,UAAUC,KAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACtC;AAAA,QAAA;AAAA,MAAA;AAAA,IACF,GAIJC,EAAM,WAAW;AAAA,MACf;AAAA,QACE,OAAOP;AAAA,QACP,WAAW;AAAA,QACX,QAAQ,MAAM;AACZ,UAAAS,GAAS,cAAc,IAAI,MAAM,QAAQ,CAAC;AAAA,QAC5C;AAAA,MAAA;AAAA,IACF,CACD,GAEMF,EAAM,KAAA;AAAA,EACf;AAAA,EAEA,MAAM,SAASF,GAA0B;AACvC,UAAM,EAAE,MAAAY,GAAM,IAAAC,GAAI,QAAAZ,IAAS,IAAI,GAAGa,MAASd;AAE3C,QAAI,CAACY,KAAQ,CAACC;AACZ,YAAM,IAAI,MAAM,kCAAkC;AAEpD,QAAID,MAASC;AACX,YAAM,IAAI,MAAM,wCAAwC;AAI1D,YADiB,MAAM,KAAK,IAAI,SAAS,aAAaD,CAAI,GAC1C,OAAOC,GAAIZ,GAAQa,CAAI;AAAA,EACzC;AACF;AAzLO3B,IAAA4B,EAAA3B,CAAA;AAAMI,IAANwB,2BARP9B,GAQaM,CAAA;AAANyB,EAAA9B,GAAA,GAAMK,CAAA;"}