From f929efc6c35176394186d878ea1be6487d216149 Mon Sep 17 00:00:00 2001 From: magicalastrogy Date: Tue, 28 Jul 2026 14:14:38 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E5=8D=A1=E8=A6=86=E7=9B=96=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- artifact/bundle.js | 2 +- artifact/bundle.js.map | 2 +- override_plan.md | 521 ++++++++++++++++ src/button.ts | 4 +- src/function/character_override/index.ts | 633 ++++++++++++++++++++ src/function/character_override/schema.ts | 186 ++++++ src/function/cleanup/chat_variables.ts | 2 +- src/function/function_call.ts | 4 +- src/function/initvar/variable_init.ts | 2 +- src/function/request/entry_comment_regex.ts | 3 + src/function/request/filter_entries.ts | 80 ++- src/function/request/filter_prompts.ts | 5 +- src/function/update/on_message_received.ts | 6 +- src/function/update_variables.ts | 2 +- src/main.ts | 118 +++- src/panel/CharacterOverride.vue | 389 ++++++++++++ src/panel/Compatibility.vue | 11 +- src/panel/Panel.vue | 2 + src/panel/Update.vue | 9 +- src/panel/component/OverrideBadge.vue | 41 ++ src/panel/component/Section.vue | 7 + src/panel/update/Method.vue | 3 +- src/panel/update/Prompt.vue | 24 +- src/panel/update/Request.vue | 4 + src/store.ts | 95 ++- tests/character_override_manager.test.ts | 603 +++++++++++++++++++ tests/character_override_schema.test.ts | 232 +++++++ tests/prompt_filter.test.ts | 175 ++++++ tests/setup.ts | 62 ++ 29 files changed, 3165 insertions(+), 62 deletions(-) create mode 100644 override_plan.md create mode 100644 src/function/character_override/index.ts create mode 100644 src/function/character_override/schema.ts create mode 100644 src/panel/CharacterOverride.vue create mode 100644 src/panel/component/OverrideBadge.vue create mode 100644 tests/character_override_manager.test.ts create mode 100644 tests/character_override_schema.test.ts diff --git a/artifact/bundle.js b/artifact/bundle.js index 1835a26..efdef6c 100644 --- a/artifact/bundle.js +++ b/artifact/bundle.js @@ -1,3 +1,3 @@ /*! For license information please see bundle.js.LICENSE.txt */ -import{klona as e}from'https://testingcf.jsdelivr.net/npm/klona/+esm';import{compare as t}from'https://testingcf.jsdelivr.net/npm/compare-versions/+esm';import{default as n}from'https://testingcf.jsdelivr.net/npm/json5/+esm';import{jsonrepair as a}from'https://testingcf.jsdelivr.net/npm/jsonrepair/+esm';import*as r from'https://testingcf.jsdelivr.net/npm/mathjs/+esm';var o={332(e,t,n){n.r(t),n.d(t,{default:()=>i});var a=n(354),r=n.n(a),o=n(314),s=n.n(o)()(r());s.push([e.id,'.mvu-button-wrap[data-v-d190cd26]{display:flex;flex-wrap:wrap;gap:0.5rem 0.6rem;align-items:center}.mvu-button-wrap[data-v-d190cd26] .menu_button{box-sizing:border-box;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;justify-content:flex-start;padding:0.35rem 0.6rem;min-height:unset;height:2.05rem;line-height:1.1}\n','',{version:3,sources:['webpack://./src/panel/Button.vue'],names:[],mappings:'AAkCA,kCACI,YAAa,CACb,cAAe,CACf,iBAAkB,CAClB,kBACJ,CAEA,+CACI,qBAAsB,CACtB,eAAgB,CAChB,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,0BAA2B,CAC3B,sBAAuB,CACvB,gBAAiB,CACjB,cAAe,CACf,eACJ',sourcesContent:['\n\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.inline-drawer-content[data-v-900b7576]{flex-direction:column;gap:0.75rem;padding-top:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/Panel.vue\"],\"names\":[],\"mappings\":\"AA+BA,wCACI,qBAAsB,CACtB,WAAY,CACZ,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-details[data-v-47f2b2e0]{border:1px dashed var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.5rem 0.7rem;background-color:rgba(0,0,0,0.06);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 70%,transparent)}.mvu-details__summary[data-v-47f2b2e0]{cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;opacity:0.95}.mvu-details__content[data-v-47f2b2e0]{margin-top:0.5rem;display:flex;flex-direction:column;gap:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Detail.vue\"],\"names\":[],\"mappings\":\"AAcA,8BACI,+DAAoE,CACpE,kBAAmB,CACnB,qBAAsB,CACtB,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,cAAe,CACf,wBAAiB,CAAjB,gBAAiB,CACjB,eAAgB,CAChB,YACJ,CAEA,uCACI,iBAAkB,CAClB,YAAa,CACb,qBAAsB,CACtB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field[data-v-1bd30ada]{padding:0.45rem 0.6rem;gap:0.25rem;border:1px solid color-mix(in srgb,var(--SmartThemeBorderColor,rgba(45,45,45,1)) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 55%,transparent)}.mvu-field__label[data-v-1bd30ada]{display:inline-flex;align-items:center;gap:0.35rem;font-weight:600;opacity:0.95}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Field.vue\"],\"names\":[],\"mappings\":\"AAeA,4BACI,sBAAuB,CACvB,WAAY,CACZ,iGAAwG,CACxG,kBAAmB,CACnB,mGAKJ,CAEA,mCACI,mBAAoB,CACpB,kBAAmB,CACnB,WAAY,CACZ,eAAgB,CAChB,YACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-help-icon[data-v-2eeacd15]{cursor:pointer}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/HelpIcon.vue\"],\"names\":[],\"mappings\":\"AAiBA,gCACI,cACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-model-select[data-v-7f080574]{display:flex;flex-direction:column;gap:0.5rem}.mvu-model-select__row[data-v-7f080574]{width:100%}.mvu-model-select__row--controls[data-v-7f080574]{display:grid;grid-template-columns:1fr auto;gap:0.5rem;align-items:center}.mvu-model-select__btn[data-v-7f080574]{white-space:nowrap;text-align:left;padding:0.35rem 0.6rem;min-height:unset;height:2.05rem;line-height:1.1}@media (max-width:520px){.mvu-model-select__row--controls[data-v-7f080574]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/ModelSelect.vue\"],\"names\":[],\"mappings\":\"AAyHA,mCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,wCACI,UACJ,CAEA,kDACI,YAAa,CACb,8BAA+B,CAC/B,UAAW,CACX,kBACJ,CAEA,wCACI,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,gBAAiB,CACjB,cAAe,CACf,eACJ,CAEA,yBACI,kDACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-range-number[data-v-48562df7]{display:grid;grid-template-columns:1fr 7.5rem;gap:0.5rem;align-items:center}.mvu-range-number__range[data-v-48562df7]{width:100%}.mvu-range-number__number[data-v-48562df7]{text-align:left;padding-top:0.3rem;padding-bottom:0.3rem;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 33%,transparent)}@media (max-width:420px){.mvu-range-number[data-v-48562df7]{grid-template-columns:1fr 6.5rem}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/RangeNumber.vue\"],\"names\":[],\"mappings\":\"AA2CA,mCACI,YAAa,CACb,gCAAiC,CACjC,UAAW,CACX,kBACJ,CAEA,0CACI,UACJ,CAEA,2CACI,eAAgB,CAChB,kBAAmB,CACnB,qBAAsB,CACtB,mGAKJ,CAEA,yBACI,mCACI,gCACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-section[data-v-2432cb82]{border:1px solid var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.6rem 0.75rem;gap:0.45rem;background-color:rgba(0,0,0,0.08);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 75%,transparent)}.mvu-section__content[data-v-2432cb82]{gap:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Section.vue\"],\"names\":[],\"mappings\":\"AAmBA,8BACI,8DAAmE,CACnE,kBAAmB,CACnB,sBAAuB,CACvB,WAAY,CACZ,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-warning[data-v-7327cadd]{margin-top:0.5rem;padding:0.55rem 0.7rem;border:1px solid color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeEmColor,#fff3cd) 15%,transparent);color:var(--SmartThemeEmColor,#856404);display:grid;grid-template-columns:auto 1fr;-moz-column-gap:0.5rem;column-gap:0.5rem;align-items:center}.mvu-warning__icon[data-v-7327cadd]{line-height:1}.mvu-warning__text[data-v-7327cadd]{word-break:break-word}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Method.vue\"],\"names\":[],\"mappings\":\"AA6BA,8BACI,iBAAkB,CAClB,sBAAuB,CACvB,oFAAwF,CACxF,kBAAmB,CACnB,oFAAwF,CACxF,sCAAwC,CACxC,YAAa,CACb,8BAA+B,CAC/B,sBAAkB,CAAlB,iBAAkB,CAClB,kBACJ,CAEA,oCACI,aACJ,CAEA,oCACI,qBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-regex-error[data-v-6bdd3d8e]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;word-break:break-word}.mvu-regex-actions[data-v-6bdd3d8e]{display:flex;padding:0 0.6rem 0.45rem}.mvu-regex-actions__button[data-v-6bdd3d8e]{min-height:2rem;white-space:normal}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Prompt.vue\"],\"names\":[],\"mappings\":\"AAuPA,kCACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,qBACJ,CAEA,oCACI,YAAa,CACb,wBACJ,CAEA,4CACI,eAAgB,CAChB,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field-grid[data-v-cc34ff96]{display:flex;flex-direction:column;gap:0.5rem}.mvu-api-profile-controls[data-v-cc34ff96]{display:grid;grid-template-columns:1fr 1fr;gap:0.5rem}.mvu-api-profile-actions[data-v-cc34ff96]{display:flex;flex-wrap:wrap;gap:0.5rem}.mvu-note[data-v-cc34ff96]{opacity:0.85;color:var(--SmartThemeEmColor,inherit)}@media (max-width:520px){.mvu-api-profile-controls[data-v-cc34ff96]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Source.vue\"],\"names\":[],\"mappings\":\"AAqWA,iCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,2CACI,YAAa,CACb,6BAA8B,CAC9B,UACJ,CAEA,0CACI,YAAa,CACb,cAAe,CACf,UACJ,CAEA,2BACI,YAAa,CACb,sCACJ,CAEA,yBACI,2CACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","/* unplugin-vue-components disabled */// style-loader: Adds some css to the DOM by adding a \\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-character-override__metadata[data-v-da38954a]{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0.25rem 0.7rem;margin:0;padding:0.35rem 0.55rem;border-radius:8px;background-color:rgba(0,0,0,0.08)}.mvu-character-override__metadata dt[data-v-da38954a]{font-weight:600;opacity:0.82}.mvu-character-override__metadata dd[data-v-da38954a]{min-width:0;margin:0;overflow-wrap:anywhere}.mvu-character-override__notice[data-v-da38954a]{padding:0.45rem 0.6rem;border:1px solid color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 35%,transparent);border-radius:8px;background-color:color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 10%,transparent);overflow-wrap:anywhere}.mvu-character-override__notice--warning[data-v-da38954a]{border-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 40%,transparent);background-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 12%,transparent)}.mvu-character-override__fieldset[data-v-da38954a]{min-inline-size:0;margin:0;padding:0;border:0;display:flex;flex-direction:column;gap:0.55rem}.mvu-character-override__fieldset[data-v-da38954a]:disabled{opacity:0.6}.mvu-character-override__group[data-v-da38954a]{display:flex;flex-direction:column;gap:0.45rem;padding-top:0.1rem}.mvu-character-override__group-title[data-v-da38954a]{padding:0 0.15rem}.mvu-character-override__values[data-v-da38954a]{display:flex;flex-wrap:wrap;gap:0.15rem 0.75rem;font-size:calc(var(--mainFontSize,1rem) * 0.86);line-height:1.35;opacity:0.82;overflow-wrap:anywhere}.mvu-character-override__regex-error[data-v-da38954a]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;overflow-wrap:anywhere}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/CharacterOverride.vue\"],\"names\":[],\"mappings\":\"AAyTA,mDACI,YAAa,CACb,+CAAiD,CACjD,kBAAmB,CACnB,QAAS,CACT,uBAAwB,CACxB,iBAAkB,CAClB,iCACJ,CAEA,sDACI,eAAgB,CAChB,YACJ,CAEA,sDACI,WAAY,CACZ,QAAS,CACT,sBACJ,CAEA,iDACI,sBAAuB,CACvB,uFAA2F,CAC3F,iBAAkB,CAClB,uFAA2F,CAC3F,sBACJ,CAEA,0DACI,gFAAoF,CACpF,oFACJ,CAEA,mDACI,iBAAkB,CAClB,QAAS,CACT,SAAU,CACV,QAAS,CACT,YAAa,CACb,qBAAsB,CACtB,WACJ,CAEA,4DACI,WACJ,CAEA,gDACI,YAAa,CACb,qBAAsB,CACtB,WAAY,CACZ,kBACJ,CAEA,sDACI,iBACJ,CAEA,iDACI,YAAa,CACb,cAAe,CACf,mBAAoB,CACpB,+CAAiD,CACjD,gBAAiB,CACjB,YAAa,CACb,sBACJ,CAEA,sDACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,sBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.inline-drawer-content[data-v-c25d208a]{flex-direction:column;gap:0.75rem;padding-top:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/Panel.vue\"],\"names\":[],\"mappings\":\"AAiCA,wCACI,qBAAsB,CACtB,WAAY,CACZ,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-details[data-v-47f2b2e0]{border:1px dashed var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.5rem 0.7rem;background-color:rgba(0,0,0,0.06);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 70%,transparent)}.mvu-details__summary[data-v-47f2b2e0]{cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;opacity:0.95}.mvu-details__content[data-v-47f2b2e0]{margin-top:0.5rem;display:flex;flex-direction:column;gap:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Detail.vue\"],\"names\":[],\"mappings\":\"AAcA,8BACI,+DAAoE,CACpE,kBAAmB,CACnB,qBAAsB,CACtB,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,cAAe,CACf,wBAAiB,CAAjB,gBAAiB,CACjB,eAAgB,CAChB,YACJ,CAEA,uCACI,iBAAkB,CAClB,YAAa,CACb,qBAAsB,CACtB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field[data-v-1bd30ada]{padding:0.45rem 0.6rem;gap:0.25rem;border:1px solid color-mix(in srgb,var(--SmartThemeBorderColor,rgba(45,45,45,1)) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 55%,transparent)}.mvu-field__label[data-v-1bd30ada]{display:inline-flex;align-items:center;gap:0.35rem;font-weight:600;opacity:0.95}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Field.vue\"],\"names\":[],\"mappings\":\"AAeA,4BACI,sBAAuB,CACvB,WAAY,CACZ,iGAAwG,CACxG,kBAAmB,CACnB,mGAKJ,CAEA,mCACI,mBAAoB,CACpB,kBAAmB,CACnB,WAAY,CACZ,eAAgB,CAChB,YACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-help-icon[data-v-2eeacd15]{cursor:pointer}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/HelpIcon.vue\"],\"names\":[],\"mappings\":\"AAiBA,gCACI,cACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-model-select[data-v-7f080574]{display:flex;flex-direction:column;gap:0.5rem}.mvu-model-select__row[data-v-7f080574]{width:100%}.mvu-model-select__row--controls[data-v-7f080574]{display:grid;grid-template-columns:1fr auto;gap:0.5rem;align-items:center}.mvu-model-select__btn[data-v-7f080574]{white-space:nowrap;text-align:left;padding:0.35rem 0.6rem;min-height:unset;height:2.05rem;line-height:1.1}@media (max-width:520px){.mvu-model-select__row--controls[data-v-7f080574]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/ModelSelect.vue\"],\"names\":[],\"mappings\":\"AAyHA,mCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,wCACI,UACJ,CAEA,kDACI,YAAa,CACb,8BAA+B,CAC/B,UAAW,CACX,kBACJ,CAEA,wCACI,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,gBAAiB,CACjB,cAAe,CACf,eACJ,CAEA,yBACI,kDACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-override-badge[data-v-36dfb169]{display:inline-flex;flex:0 0 auto;align-items:center;padding:0.08rem 0.38rem;border:1px solid currentColor;border-radius:999px;font-size:calc(var(--mainFontSize,1rem) * 0.76);font-weight:600;line-height:1.25;white-space:nowrap}.mvu-override-badge--override[data-v-36dfb169]{color:var(--SmartThemeEmColor,#d39e00);background-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 12%,transparent)}.mvu-override-badge--additive[data-v-36dfb169]{color:var(--SmartThemeQuoteColor,#6ba7ff);background-color:color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 12%,transparent)}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/OverrideBadge.vue\"],\"names\":[],\"mappings\":\"AAkBA,qCACI,mBAAoB,CACpB,aAAc,CACd,kBAAmB,CACnB,uBAAwB,CACxB,6BAA8B,CAC9B,mBAAoB,CACpB,+CAAiD,CACjD,eAAgB,CAChB,gBAAiB,CACjB,kBACJ,CAEA,+CACI,sCAAwC,CACxC,oFACJ,CAEA,+CACI,yCAA2C,CAC3C,uFACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-range-number[data-v-48562df7]{display:grid;grid-template-columns:1fr 7.5rem;gap:0.5rem;align-items:center}.mvu-range-number__range[data-v-48562df7]{width:100%}.mvu-range-number__number[data-v-48562df7]{text-align:left;padding-top:0.3rem;padding-bottom:0.3rem;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 33%,transparent)}@media (max-width:420px){.mvu-range-number[data-v-48562df7]{grid-template-columns:1fr 6.5rem}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/RangeNumber.vue\"],\"names\":[],\"mappings\":\"AA2CA,mCACI,YAAa,CACb,gCAAiC,CACjC,UAAW,CACX,kBACJ,CAEA,0CACI,UACJ,CAEA,2CACI,eAAgB,CAChB,kBAAmB,CACnB,qBAAsB,CACtB,mGAKJ,CAEA,yBACI,mCACI,gCACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-section[data-v-ab897094]{border:1px solid var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.6rem 0.75rem;gap:0.45rem;background-color:rgba(0,0,0,0.08);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 75%,transparent)}.mvu-section__content[data-v-ab897094]{gap:0.5rem}.mvu-section__title[data-v-ab897094]{display:flex;flex-wrap:wrap;align-items:center;gap:0.3rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Section.vue\"],\"names\":[],\"mappings\":\"AAmBA,8BACI,8DAAmE,CACnE,kBAAmB,CACnB,sBAAuB,CACvB,WAAY,CACZ,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,UACJ,CAEA,qCACI,YAAa,CACb,cAAe,CACf,kBAAmB,CACnB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-warning[data-v-353598ca]{margin-top:0.5rem;padding:0.55rem 0.7rem;border:1px solid color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeEmColor,#fff3cd) 15%,transparent);color:var(--SmartThemeEmColor,#856404);display:grid;grid-template-columns:auto 1fr;-moz-column-gap:0.5rem;column-gap:0.5rem;align-items:center}.mvu-warning__icon[data-v-353598ca]{line-height:1}.mvu-warning__text[data-v-353598ca]{word-break:break-word}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Method.vue\"],\"names\":[],\"mappings\":\"AA8BA,8BACI,iBAAkB,CAClB,sBAAuB,CACvB,oFAAwF,CACxF,kBAAmB,CACnB,oFAAwF,CACxF,sCAAwC,CACxC,YAAa,CACb,8BAA+B,CAC/B,sBAAkB,CAAlB,iBAAkB,CAClB,kBACJ,CAEA,oCACI,aACJ,CAEA,oCACI,qBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-regex-error[data-v-2a348845]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;word-break:break-word}.mvu-regex-actions[data-v-2a348845]{display:flex;padding:0 0.6rem 0.45rem}.mvu-regex-actions__button[data-v-2a348845]{min-height:2rem;white-space:normal}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Prompt.vue\"],\"names\":[],\"mappings\":\"AA6QA,kCACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,qBACJ,CAEA,oCACI,YAAa,CACb,wBACJ,CAEA,4CACI,eAAgB,CAChB,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field-grid[data-v-cc34ff96]{display:flex;flex-direction:column;gap:0.5rem}.mvu-api-profile-controls[data-v-cc34ff96]{display:grid;grid-template-columns:1fr 1fr;gap:0.5rem}.mvu-api-profile-actions[data-v-cc34ff96]{display:flex;flex-wrap:wrap;gap:0.5rem}.mvu-note[data-v-cc34ff96]{opacity:0.85;color:var(--SmartThemeEmColor,inherit)}@media (max-width:520px){.mvu-api-profile-controls[data-v-cc34ff96]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Source.vue\"],\"names\":[],\"mappings\":\"AAqWA,iCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,2CACI,YAAa,CACb,6BAA8B,CAC9B,UACJ,CAEA,0CACI,YAAa,CACb,cAAe,CACf,UACJ,CAEA,2BACI,YAAa,CACb,sCACJ,CAEA,yBACI,2CACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","/* unplugin-vue-components disabled */// style-loader: Adds some css to the DOM by adding a diff --git a/src/panel/Compatibility.vue b/src/panel/Compatibility.vue index dfa8283..49057ee 100644 --- a/src/panel/Compatibility.vue +++ b/src/panel/Compatibility.vue @@ -6,15 +6,21 @@ + 显示老旧功能 - - sandas不视为user消息 + + sendas 不视为 user 消息 + @@ -23,6 +29,7 @@ + + diff --git a/src/panel/component/Section.vue b/src/panel/component/Section.vue index 73daeca..bf19605 100644 --- a/src/panel/component/Section.vue +++ b/src/panel/component/Section.vue @@ -33,4 +33,11 @@ defineProps<{ label: string }>(); .mvu-section__content { gap: 0.5rem; } + +.mvu-section__title { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 0.3rem; +} diff --git a/src/panel/update/Method.vue b/src/panel/update/Method.vue index 72a948d..b9185d1 100644 --- a/src/panel/update/Method.vue +++ b/src/panel/update/Method.vue @@ -3,7 +3,8 @@ + const blacklist_regex_error = computed(() => getRegexError(store.settings.额外模型解析配置.世界书条目黑名单正则) ); +const has_active_character_whitelist = computed(() => { + const value = store.get_character_settings_override('额外模型解析配置.世界书条目白名单正则'); + return typeof value === 'string' && compileEntryCommentRegex(value).regex !== undefined; +}); +const has_active_character_blacklist = computed(() => { + const value = store.get_character_settings_override('额外模型解析配置.世界书条目黑名单正则'); + return typeof value === 'string' && compileEntryCommentRegex(value).regex !== undefined; +}); function ensureValidPresetSelection() { if (store.settings.额外模型解析配置.破限方案 !== '使用其他预设') { @@ -164,9 +175,10 @@ function showLastFilteredEntriesPopup() { - + + @@ -178,6 +190,7 @@ function showLastFilteredEntriesPopup() { + ` @@ -195,6 +208,15 @@ function showLastFilteredEntriesPopup() { }); } +function getFilterSources(entry: unknown): string { + const sources = _.get(entry, 'sources'); + if (!Array.isArray(sources)) { + return '—'; + } + const labels = sources.filter((source): source is string => typeof source === 'string'); + return labels.length > 0 ? labels.join('、') : '—'; +} + watch(available_preset_names, ensureValidPresetSelection, { immediate: true }); watch( () => store.settings.额外模型解析配置.破限方案, diff --git a/src/panel/update/Request.vue b/src/panel/update/Request.vue index 952d486..bb82a47 100644 --- a/src/panel/update/Request.vue +++ b/src/panel/update/Request.vue @@ -32,6 +32,9 @@ + 启用 @@ -45,6 +48,7 @@ import Checkbox from '@/panel/component/Checkbox.vue'; import Detail from '@/panel/component/Detail.vue'; import Field from '@/panel/component/Field.vue'; import HelpIcon from '@/panel/component/HelpIcon.vue'; +import OverrideBadge from '@/panel/component/OverrideBadge.vue'; import RangeNumber from '@/panel/component/RangeNumber.vue'; import Select from '@/panel/component/Select.vue'; import request_method_help from '@/panel/update/request_method.md'; diff --git a/src/store.ts b/src/store.ts index 75f1eb1..2d31815 100644 --- a/src/store.ts +++ b/src/store.ts @@ -1,8 +1,16 @@ import { migrateExtraModelApiProfiles } from '@/function/update/extra_model_api_profiles'; +import { + CharacterSettingsOverride, + CharacterSettingsOverridePath, + getCharacterSettingsOverrideValue, + hasActiveCharacterSettingsOverride, + hasOwnCharacterSettingsOverride, +} from '@/function/character_override/schema'; import { is_jest_environment } from '@/jest'; import { registerAsUniqueScript } from '@util/script'; +import { klona } from 'klona'; import { defineStore } from 'pinia'; -import { ref, toRaw, watch } from 'vue'; +import { computed, ref, toRaw, watch } from 'vue'; import * as z from 'zod'; const ExtraModelApiProfile = z @@ -107,7 +115,6 @@ const OldSettings = z 兼容性: { ...legacy, 更新到聊天变量, - sandas不视为user消息: false, ...existing_compatibility_settings, }, }); @@ -205,9 +212,16 @@ const NewSettings = z .object({ 更新到聊天变量: z.boolean().default(false), 显示老旧功能: z.boolean().default(false), - sandas不视为user消息: z.boolean().default(false), + sendas不视为user消息: z.boolean().optional(), + sandas不视为user消息: z.boolean().optional(), }) .loose() + .transform(({ sendas不视为user消息, sandas不视为user消息, ...data }) => ({ + ...data, + 更新到聊天变量: data.更新到聊天变量, + 显示老旧功能: data.显示老旧功能, + sendas不视为user消息: sendas不视为user消息 ?? sandas不视为user消息 ?? false, + })) .prefault({}), internal: z .object({ @@ -234,6 +248,36 @@ const NewSettings = z const Settings = z.union([OldSettings, NewSettings]).catch(() => NewSettings.parse({})); +export type MvuSettings = z.infer; + +export type CharacterSettingsState = { + status: 'loading' | 'unbound' | 'ready' | 'error'; + character_name: string; + worldbook_name: string | null; + entry_uid: number | null; + expected_content: string | null; + draft: CharacterSettingsOverride; + is_valid: boolean; + revision: number; + has_pending_save: boolean; + is_saving: boolean; +}; + +function createCharacterSettingsState(): CharacterSettingsState { + return { + status: 'loading', + character_name: '', + worldbook_name: null, + entry_uid: null, + expected_content: null, + draft: {}, + is_valid: true, + revision: 0, + has_pending_save: false, + is_saving: false, + }; +} + const Runtimes = z .object({ unsupported_warnings: z.string().default(''), @@ -246,6 +290,7 @@ const Runtimes = z world: z.string(), comment: z.string(), reason: z.enum(['白名单', '黑名单']), + sources: z.array(z.enum(['用户全局配置', '角色卡配置'])).default([]), }) ) .default([]), @@ -271,6 +316,44 @@ export const useDataStore = defineStore('MVU变量框架', () => { settings.value = Settings.parse(_.get(SillyTavern.extensionSettings, 'mvu_settings', {})); }; + const character_settings = ref(createCharacterSettingsState()); + const effective_settings = computed(() => { + const result = klona(settings.value); + if (!character_settings.value.is_valid) { + return result; + } + + const draft = character_settings.value.draft; + if (_.has(draft, '更新方式')) { + result.更新方式 = draft.更新方式!; + } + if (_.has(draft, '额外模型解析配置.启用自动请求')) { + result.额外模型解析配置.启用自动请求 = draft.额外模型解析配置!.启用自动请求!; + } + if (_.has(draft, '兼容性.更新到聊天变量')) { + result.兼容性.更新到聊天变量 = draft.兼容性!.更新到聊天变量!; + } + if (_.has(draft, '兼容性.sendas不视为user消息')) { + result.兼容性.sendas不视为user消息 = draft.兼容性!.sendas不视为user消息!; + } + return result; + }); + const has_character_settings_override = (path: CharacterSettingsOverridePath) => + character_settings.value.is_valid && + hasOwnCharacterSettingsOverride(character_settings.value.draft, path); + const get_character_settings_override = (path: CharacterSettingsOverridePath) => + character_settings.value.is_valid + ? getCharacterSettingsOverrideValue(character_settings.value.draft, path) + : undefined; + const is_character_settings_override_active = computed( + () => + character_settings.value.is_valid && + hasActiveCharacterSettingsOverride(character_settings.value.draft) + ); + const resetCharacterSettings = () => { + character_settings.value = createCharacterSettingsState(); + }; + const runtimes = ref(Runtimes.parse({})); watch( () => runtimes.value.is_during_extra_analysis, @@ -308,6 +391,12 @@ export const useDataStore = defineStore('MVU变量框架', () => { return { settings, _reload_settings, + character_settings, + effective_settings, + has_character_settings_override, + get_character_settings_override, + is_character_settings_override_active, + resetCharacterSettings, runtimes, resetRuntimes, versions, diff --git a/tests/character_override_manager.test.ts b/tests/character_override_manager.test.ts new file mode 100644 index 0000000..1bab967 --- /dev/null +++ b/tests/character_override_manager.test.ts @@ -0,0 +1,603 @@ +import { + flushCharacterSettingsOverrideSave, + initCharacterSettingsOverride, + setCharacterSettingsOverride, +} from '@/function/character_override'; +import { CHARACTER_SETTINGS_OVERRIDE_ENTRY_NAME } from '@/function/character_override/schema'; +import { useDataStore } from '@/store'; +import { klona } from 'klona'; + +type TestWorldbook = { + entries: Record>; + originalData?: { entries: Record[] }; +}; + +function makeRawEntry( + uid: number, + content: string, + { + comment = CHARACTER_SETTINGS_OVERRIDE_ENTRY_NAME, + disable = true, + displayIndex = uid, + }: { comment?: string; disable?: boolean; displayIndex?: number } = {} +): SillyTavern.FlattenedWorldInfoEntry & Record { + return { + uid, + displayIndex, + comment, + disable, + constant: false, + selective: false, + key: [], + selectiveLogic: 0, + keysecondary: [], + scanDepth: null, + vectorized: false, + position: 1, + role: 0, + depth: 4, + order: 100, + content, + useProbability: true, + probability: 100, + excludeRecursion: false, + preventRecursion: false, + delayUntilRecursion: false, + sticky: null, + cooldown: null, + delay: null, + }; +} + +describe('character settings override manager', () => { + let worldbook: TestWorldbook; + let stop: (() => void | Promise) | undefined; + + beforeEach(() => { + worldbook = { entries: {}, originalData: { entries: [] } }; + jest.spyOn(console, 'error').mockImplementation(() => undefined); + (globalThis as any).toastr = { + warning: jest.fn(), + info: jest.fn(), + error: jest.fn(), + }; + (globalThis as any).getCharWorldbookNames.mockReturnValue({ + primary: 'Character Book', + additional: [], + }); + (SillyTavern.loadWorldInfo as jest.Mock).mockImplementation(async () => klona(worldbook)); + (SillyTavern.loadWorldInfo as jest.Mock).mockClear(); + (SillyTavern.saveWorldInfo as jest.Mock).mockClear(); + (SillyTavern.saveWorldInfo as jest.Mock).mockImplementation( + async (name: string, data: TestWorldbook) => { + worldbook = klona(data); + await eventEmit(tavern_events.WORLDINFO_UPDATED, name, klona(data)); + } + ); + (SillyTavern.callGenericPopup as jest.Mock).mockResolvedValue( + SillyTavern.POPUP_RESULT.AFFIRMATIVE + ); + (SillyTavern.callGenericPopup as jest.Mock).mockClear(); + (SillyTavern.reloadWorldInfoEditor as jest.Mock).mockClear(); + }); + + afterEach(async () => { + await stop?.(); + stop = undefined; + jest.restoreAllMocks(); + jest.clearAllTimers(); + }); + + test('loads the first closed matching entry in display order and warns about duplicates', async () => { + worldbook.entries = { + 1: makeRawEntry(1, JSON.stringify({ 更新方式: '随AI输出' }), { + displayIndex: 20, + }), + 2: makeRawEntry(2, JSON.stringify({ 更新方式: '额外模型解析' }), { + comment: ' [CONFIG_OVERRIDE] ', + displayIndex: 10, + }), + }; + + stop = await initCharacterSettingsOverride(); + useDataStore().should_enable = true; + const store = useDataStore(); + + expect(store.character_settings.entry_uid).toBe(2); + expect(store.character_settings.draft.更新方式).toBe('额外模型解析'); + expect((globalThis as any).toastr.warning).toHaveBeenCalled(); + }); + + test('does not let a stale initial load overwrite a worldbook update received during init', async () => { + const stale = { + entries: { + 1: makeRawEntry(1, JSON.stringify({ 更新方式: '随AI输出' })), + }, + originalData: { entries: [] }, + }; + const external = { + entries: { + 1: makeRawEntry(1, JSON.stringify({ 更新方式: '额外模型解析' })), + }, + originalData: { entries: [] }, + }; + let release_initial_load!: () => void; + let mark_initial_load_started!: () => void; + const initial_load_started = new Promise(resolve => { + mark_initial_load_started = resolve; + }); + const initial_load_gate = new Promise(resolve => { + release_initial_load = resolve; + }); + (SillyTavern.loadWorldInfo as jest.Mock).mockImplementationOnce(async () => { + mark_initial_load_started(); + await initial_load_gate; + return klona(stale); + }); + + const init_promise = initCharacterSettingsOverride(); + await initial_load_started; + await eventEmit(tavern_events.WORLDINFO_UPDATED, 'Character Book', klona(external)); + release_initial_load(); + stop = await init_promise; + + expect(useDataStore().character_settings.draft.更新方式).toBe('额外模型解析'); + }); + + test('treats invalid content as absent but keeps the source snapshot so the UI can repair it', async () => { + worldbook.entries = { + 7: makeRawEntry(7, '{invalid'), + }; + + stop = await initCharacterSettingsOverride(); + const store = useDataStore(); + + expect(store.character_settings.is_valid).toBe(false); + expect(store.character_settings.draft).toEqual({}); + expect(store.character_settings.entry_uid).toBe(7); + expect(store.character_settings.expected_content).toBe('{invalid'); + + setCharacterSettingsOverride('更新方式', '额外模型解析'); + expect(store.effective_settings.更新方式).toBe('额外模型解析'); + await flushCharacterSettingsOverrideSave(); + + expect(store.character_settings.is_valid).toBe(true); + expect(JSON.parse(worldbook.entries[7].content).更新方式).toBe('额外模型解析'); + }); + + test('preserves recoverable passthrough fields when repairing an invalid known field', async () => { + worldbook.entries = { + 7: makeRawEntry( + 7, + JSON.stringify({ + 更新方式: 'invalid', + custom_top_level: { kept: true }, + 兼容性: { + 更新到聊天变量: 'invalid', + custom_compatibility: 42, + }, + }) + ), + }; + + stop = await initCharacterSettingsOverride(); + expect(useDataStore().character_settings.is_valid).toBe(false); + + setCharacterSettingsOverride('更新方式', '额外模型解析'); + await flushCharacterSettingsOverrideSave(); + + expect(JSON.parse(worldbook.entries[7].content)).toMatchObject({ + 更新方式: '额外模型解析', + custom_top_level: { kept: true }, + 兼容性: { custom_compatibility: 42 }, + }); + }); + + test('creates a closed schema-bearing entry on first edit and updates runtime immediately', async () => { + stop = await initCharacterSettingsOverride(); + const store = useDataStore(); + + setCharacterSettingsOverride('兼容性.更新到聊天变量', true); + expect(store.effective_settings.兼容性.更新到聊天变量).toBe(true); + expect( + store.character_settings.has_pending_save || store.character_settings.is_saving + ).toBe(true); + + await flushCharacterSettingsOverrideSave(); + + const [entry] = Object.values(worldbook.entries); + const document = JSON.parse(entry.content); + expect(entry.comment).toBe(CHARACTER_SETTINGS_OVERRIDE_ENTRY_NAME); + expect(entry.disable).toBe(true); + expect(document.兼容性.更新到聊天变量).toBe(true); + expect(Object.keys(document).at(-1)).toBe('schema'); + expect(SillyTavern.saveWorldInfo).toHaveBeenCalledWith( + 'Character Book', + expect.any(Object), + true + ); + }); + + test('preserves passthrough fields and keeps a schema-only entry after clearing the last override', async () => { + worldbook.entries = { + 3: makeRawEntry( + 3, + JSON.stringify({ + 更新方式: '额外模型解析', + custom: { kept: true }, + schema: { old: true }, + }) + ), + }; + stop = await initCharacterSettingsOverride(); + + setCharacterSettingsOverride('更新方式', undefined); + await flushCharacterSettingsOverrideSave(); + + const document = JSON.parse(worldbook.entries[3].content); + expect(document.custom).toEqual({ kept: true }); + expect(document).not.toHaveProperty('更新方式'); + expect(Object.keys(document).at(-1)).toBe('schema'); + expect(useDataStore().is_character_settings_override_active).toBe(false); + }); + + test('reloads the latest external config when a conflict is declined', async () => { + worldbook.entries = { + 4: makeRawEntry(4, JSON.stringify({ 更新方式: '随AI输出' })), + }; + stop = await initCharacterSettingsOverride(); + worldbook.entries[4].content = JSON.stringify({ + 兼容性: { 更新到聊天变量: true }, + }); + (SillyTavern.callGenericPopup as jest.Mock).mockResolvedValue( + SillyTavern.POPUP_RESULT.NEGATIVE + ); + const save_count = (SillyTavern.saveWorldInfo as jest.Mock).mock.calls.length; + + setCharacterSettingsOverride('更新方式', '额外模型解析'); + await flushCharacterSettingsOverrideSave(); + + const store = useDataStore(); + expect(SillyTavern.callGenericPopup).toHaveBeenCalled(); + expect(store.character_settings.draft).toEqual({ + 兼容性: { 更新到聊天变量: true }, + }); + expect(SillyTavern.saveWorldInfo).toHaveBeenCalledTimes(save_count); + }); + + test('overwrites the latest entry after a conflict is confirmed', async () => { + worldbook.entries = { + 5: makeRawEntry(5, JSON.stringify({ 更新方式: '随AI输出' })), + }; + stop = await initCharacterSettingsOverride(); + worldbook.entries[5].content = JSON.stringify({ + 兼容性: { 更新到聊天变量: true }, + }); + + setCharacterSettingsOverride('更新方式', '额外模型解析'); + await flushCharacterSettingsOverrideSave(); + + expect(SillyTavern.callGenericPopup).toHaveBeenCalled(); + expect(JSON.parse(worldbook.entries[5].content).更新方式).toBe('额外模型解析'); + }); + + test('reloads the worldbook after conflict confirmation so unrelated changes are preserved', async () => { + worldbook.entries = { + 5: makeRawEntry(5, JSON.stringify({ 更新方式: '随AI输出' })), + 9: makeRawEntry(9, 'unrelated-before', { + comment: 'unrelated', + disable: false, + }), + }; + stop = await initCharacterSettingsOverride(); + worldbook.entries[5].content = JSON.stringify({ + 兼容性: { 更新到聊天变量: true }, + }); + (SillyTavern.callGenericPopup as jest.Mock).mockImplementation(async () => { + worldbook.entries[9].content = 'unrelated-during-popup'; + return SillyTavern.POPUP_RESULT.AFFIRMATIVE; + }); + + setCharacterSettingsOverride('更新方式', '额外模型解析'); + await flushCharacterSettingsOverrideSave(); + + expect(worldbook.entries[9].content).toBe('unrelated-during-popup'); + expect(JSON.parse(worldbook.entries[5].content).更新方式).toBe('额外模型解析'); + }); + + test('keeps a failed save pending and retries it on the next flush', async () => { + stop = await initCharacterSettingsOverride(); + (SillyTavern.saveWorldInfo as jest.Mock).mockRejectedValueOnce( + new Error('temporary save failure') + ); + + setCharacterSettingsOverride('更新方式', '额外模型解析'); + await flushCharacterSettingsOverrideSave(); + + const store = useDataStore(); + expect(store.character_settings.has_pending_save).toBe(true); + expect(store.effective_settings.更新方式).toBe('额外模型解析'); + expect(Object.keys(worldbook.entries)).toHaveLength(0); + + await flushCharacterSettingsOverrideSave(); + + expect(store.character_settings.has_pending_save).toBe(false); + expect(JSON.parse(Object.values(worldbook.entries)[0].content).更新方式).toBe( + '额外模型解析' + ); + }); + + test('normalizes string ids and repairs a missing originalData entry', async () => { + const entry = makeRawEntry(8, JSON.stringify({ 更新方式: '随AI输出' })); + (entry as any).uid = '8'; + worldbook.entries = { 8: entry }; + worldbook.originalData = { entries: [] }; + stop = await initCharacterSettingsOverride(); + + setCharacterSettingsOverride('更新方式', '额外模型解析'); + await flushCharacterSettingsOverrideSave(); + + expect(useDataStore().character_settings.entry_uid).toBe(8); + expect(worldbook.originalData?.entries).toEqual([ + expect.objectContaining({ + id: 8, + comment: CHARACTER_SETTINGS_OVERRIDE_ENTRY_NAME, + enabled: false, + }), + ]); + }); + + test('updates originalData entries identified by uid while preserving passthrough fields', async () => { + worldbook.entries = { + 8: makeRawEntry(8, JSON.stringify({ 更新方式: '随AI输出' })), + }; + worldbook.originalData = { + entries: [ + { + uid: '8', + comment: 'old', + content: 'old', + disable: false, + custom: 'kept', + }, + ], + }; + stop = await initCharacterSettingsOverride(); + + setCharacterSettingsOverride('更新方式', '额外模型解析'); + await flushCharacterSettingsOverrideSave(); + + expect(worldbook.originalData.entries[0]).toMatchObject({ + uid: '8', + comment: CHARACTER_SETTINGS_OVERRIDE_ENTRY_NAME, + enabled: false, + disable: true, + custom: 'kept', + }); + }); + + test('serializes saves without letting an older result replace a newer draft', async () => { + stop = await initCharacterSettingsOverride(); + let release_first_save!: () => void; + let mark_first_save_started!: () => void; + const first_save_started = new Promise(resolve => { + mark_first_save_started = resolve; + }); + const first_save_gate = new Promise(resolve => { + release_first_save = resolve; + }); + (SillyTavern.saveWorldInfo as jest.Mock) + .mockImplementationOnce(async (name: string, data: TestWorldbook) => { + mark_first_save_started(); + await first_save_gate; + worldbook = klona(data); + await eventEmit(tavern_events.WORLDINFO_UPDATED, name, klona(data)); + }) + .mockImplementation(async (name: string, data: TestWorldbook) => { + worldbook = klona(data); + await eventEmit(tavern_events.WORLDINFO_UPDATED, name, klona(data)); + }); + + setCharacterSettingsOverride('更新方式', '额外模型解析'); + await first_save_started; + setCharacterSettingsOverride('额外模型解析配置.启用自动请求', false); + release_first_save(); + await flushCharacterSettingsOverrideSave(); + + const [entry] = Object.values(worldbook.entries); + const document = JSON.parse(entry.content); + expect(document.更新方式).toBe('额外模型解析'); + expect(document.额外模型解析配置.启用自动请求).toBe(false); + expect(useDataStore().character_settings.draft).toMatchObject({ + 更新方式: '额外模型解析', + 额外模型解析配置: { 启用自动请求: false }, + }); + expect(SillyTavern.saveWorldInfo).toHaveBeenCalledTimes(2); + expect(SillyTavern.reloadWorldInfoEditor).toHaveBeenLastCalledWith('Character Book'); + }); + + test('flush waits for a newer save loop spawned after an older revision fails', async () => { + stop = await initCharacterSettingsOverride(); + let reject_first_save!: () => void; + let mark_first_save_started!: () => void; + let release_second_save!: () => void; + let mark_second_save_started!: () => void; + const first_save_started = new Promise(resolve => { + mark_first_save_started = resolve; + }); + const first_save_gate = new Promise((_resolve, reject) => { + reject_first_save = () => reject(new Error('first revision failed')); + }); + const second_save_started = new Promise(resolve => { + mark_second_save_started = resolve; + }); + const second_save_gate = new Promise(resolve => { + release_second_save = resolve; + }); + (SillyTavern.saveWorldInfo as jest.Mock) + .mockImplementationOnce(async () => { + mark_first_save_started(); + await first_save_gate; + }) + .mockImplementationOnce(async (name: string, data: TestWorldbook) => { + mark_second_save_started(); + await second_save_gate; + worldbook = klona(data); + await eventEmit(tavern_events.WORLDINFO_UPDATED, name, klona(data)); + }); + + setCharacterSettingsOverride('更新方式', '额外模型解析'); + await first_save_started; + setCharacterSettingsOverride('额外模型解析配置.启用自动请求', false); + reject_first_save(); + + let flush_completed = false; + const flush_promise = flushCharacterSettingsOverrideSave().then(() => { + flush_completed = true; + }); + await second_save_started; + await Promise.resolve(); + expect(flush_completed).toBe(false); + + release_second_save(); + await flush_promise; + + expect(JSON.parse(Object.values(worldbook.entries)[0].content)).toMatchObject({ + 更新方式: '额外模型解析', + 额外模型解析配置: { 启用自动请求: false }, + }); + }); + + test('waits for a pending save before a controller is stopped', async () => { + stop = await initCharacterSettingsOverride(); + let release_save!: () => void; + let mark_save_started!: () => void; + const save_started = new Promise(resolve => { + mark_save_started = resolve; + }); + const save_gate = new Promise(resolve => { + release_save = resolve; + }); + (SillyTavern.saveWorldInfo as jest.Mock).mockImplementationOnce( + async (name: string, data: TestWorldbook) => { + mark_save_started(); + await save_gate; + worldbook = klona(data); + await eventEmit(tavern_events.WORLDINFO_UPDATED, name, klona(data)); + } + ); + + setCharacterSettingsOverride('更新方式', '额外模型解析'); + await save_started; + let stop_completed = false; + const stop_promise = Promise.resolve(stop()).then(() => { + stop_completed = true; + }); + stop = undefined; + await Promise.resolve(); + expect(stop_completed).toBe(false); + + release_save(); + await stop_promise; + expect(stop_completed).toBe(true); + expect(JSON.parse(Object.values(worldbook.entries)[0].content).更新方式).toBe( + '额外模型解析' + ); + }); + + test('retries a failed pending save while stopping the controller', async () => { + stop = await initCharacterSettingsOverride(); + (SillyTavern.saveWorldInfo as jest.Mock) + .mockRejectedValueOnce(new Error('initial save failure')) + .mockRejectedValueOnce(new Error('first stop retry failure')); + + setCharacterSettingsOverride('更新方式', '额外模型解析'); + await flushCharacterSettingsOverrideSave(); + expect(useDataStore().character_settings.has_pending_save).toBe(true); + + await stop(); + stop = undefined; + + expect(SillyTavern.saveWorldInfo).toHaveBeenCalledTimes(3); + expect(JSON.parse(Object.values(worldbook.entries)[0].content).更新方式).toBe( + '额外模型解析' + ); + }); + + test('reloads WORLDINFO_UPDATED only when there is no pending save', async () => { + worldbook.entries = { + 6: makeRawEntry(6, JSON.stringify({ 更新方式: '随AI输出' })), + }; + stop = await initCharacterSettingsOverride(); + useDataStore().should_enable = false; + const external = klona(worldbook); + external.entries[6].content = JSON.stringify({ 更新方式: '额外模型解析' }); + + await eventEmit(tavern_events.WORLDINFO_UPDATED, 'Character Book', external); + expect(useDataStore().character_settings.draft.更新方式).toBe('额外模型解析'); + + setCharacterSettingsOverride('额外模型解析配置.世界书条目白名单正则', 'character-rule'); + const second_external = klona(external); + second_external.entries[6].content = JSON.stringify({ 更新方式: '随AI输出' }); + worldbook = klona(second_external); + await eventEmit(tavern_events.WORLDINFO_UPDATED, 'Character Book', second_external); + + expect(useDataStore().character_settings.draft.额外模型解析配置?.世界书条目白名单正则).toBe( + 'character-rule' + ); + (SillyTavern.callGenericPopup as jest.Mock).mockResolvedValue( + SillyTavern.POPUP_RESULT.NEGATIVE + ); + await flushCharacterSettingsOverrideSave(); + }); + + test('does not apply a fallback event reload if an edit becomes pending while loading', async () => { + worldbook.entries = { + 6: makeRawEntry(6, JSON.stringify({ 更新方式: '随AI输出' })), + }; + stop = await initCharacterSettingsOverride(); + let release_reload!: () => void; + let mark_reload_started!: () => void; + const reload_started = new Promise(resolve => { + mark_reload_started = resolve; + }); + const reload_gate = new Promise(resolve => { + release_reload = resolve; + }); + (SillyTavern.loadWorldInfo as jest.Mock).mockImplementationOnce(async () => { + mark_reload_started(); + await reload_gate; + return klona(worldbook); + }); + + const event_promise = eventEmit( + tavern_events.WORLDINFO_UPDATED, + 'Character Book', + undefined as any + ); + await reload_started; + setCharacterSettingsOverride('额外模型解析配置.世界书条目白名单正则', 'pending-rule'); + release_reload(); + await event_promise; + + expect(useDataStore().character_settings.draft.额外模型解析配置?.世界书条目白名单正则).toBe( + 'pending-rule' + ); + await flushCharacterSettingsOverrideSave(); + }); + + test('disables character editing state when no primary worldbook is bound', async () => { + (globalThis as any).getCharWorldbookNames.mockReturnValue({ + primary: null, + additional: [], + }); + + stop = await initCharacterSettingsOverride(); + const save_count = (SillyTavern.saveWorldInfo as jest.Mock).mock.calls.length; + + expect(useDataStore().character_settings.status).toBe('unbound'); + setCharacterSettingsOverride('更新方式', '额外模型解析'); + await flushCharacterSettingsOverrideSave(); + expect(SillyTavern.saveWorldInfo).toHaveBeenCalledTimes(save_count); + }); +}); diff --git a/tests/character_override_schema.test.ts b/tests/character_override_schema.test.ts new file mode 100644 index 0000000..e56c2ba --- /dev/null +++ b/tests/character_override_schema.test.ts @@ -0,0 +1,232 @@ +import { + CharacterSettingsOverrideSchema, + getCharacterSettingsOverrideJsonSchema, + hasActiveCharacterSettingsOverride, + parseCharacterSettingsOverrideContent, + recoverCharacterSettingsOverridePassthrough, + serializeCharacterSettingsOverride, +} from '@/function/character_override/schema'; +import { useDataStore } from '@/store'; +import { nextTick } from 'vue'; + +describe('CharacterSettingsOverride schema', () => { + test('accepts and preserves passthrough fields at every supported object level', () => { + const parsed = CharacterSettingsOverrideSchema.parse({ + 更新方式: '额外模型解析', + custom_top_level: { version: 1 }, + 额外模型解析配置: { + 启用自动请求: false, + custom_extra_model: 'kept', + }, + 兼容性: { + 更新到聊天变量: true, + custom_compatibility: 42, + }, + }); + + expect(parsed).toMatchObject({ + custom_top_level: { version: 1 }, + 额外模型解析配置: { + custom_extra_model: 'kept', + }, + 兼容性: { + custom_compatibility: 42, + }, + }); + }); + + test('loads a valid document without requiring the embedded schema', () => { + expect( + parseCharacterSettingsOverrideContent( + JSON.stringify({ + 更新方式: '额外模型解析', + 兼容性: { sendas不视为user消息: true }, + }) + ) + ).toEqual({ + 更新方式: '额外模型解析', + 兼容性: { sendas不视为user消息: true }, + }); + }); + + test('rejects invalid JSON and invalid known fields', () => { + expect(() => parseCharacterSettingsOverrideContent('{')).toThrow(); + expect(() => + parseCharacterSettingsOverrideContent(JSON.stringify({ 更新方式: 'invalid' })) + ).toThrow(); + }); + + test('recovers only passthrough fields from a document with invalid known fields', () => { + expect( + recoverCharacterSettingsOverridePassthrough( + JSON.stringify({ + 更新方式: 'invalid', + custom_top_level: { kept: true }, + 额外模型解析配置: { + 启用自动请求: 'invalid', + custom_extra_model: 'kept', + }, + 兼容性: { + 更新到聊天变量: 'invalid', + custom_compatibility: 42, + }, + schema: { stale: true }, + }) + ) + ).toEqual({ + custom_top_level: { kept: true }, + 额外模型解析配置: { custom_extra_model: 'kept' }, + 兼容性: { custom_compatibility: 42 }, + }); + }); + + test('serializes schema last and removes empty known regex values', () => { + const serialized = serializeCharacterSettingsOverride({ + passthrough: true, + 额外模型解析配置: { + 世界书条目白名单正则: ' ', + custom: 'kept', + }, + }); + const document = JSON.parse(serialized); + + expect(Object.keys(document).at(-1)).toBe('schema'); + expect(document.额外模型解析配置).toEqual({ custom: 'kept' }); + expect(document.schema.title).toBe('CharacterSettingsOverride'); + }); + + test('replaces any passthrough schema value and still serializes schema last', () => { + const document = JSON.parse( + serializeCharacterSettingsOverride({ + 更新方式: '随AI输出', + schema: { stale: true }, + }) + ); + + expect(document.schema).not.toHaveProperty('stale'); + expect(document.schema.title).toBe('CharacterSettingsOverride'); + expect(Object.keys(document).at(-1)).toBe('schema'); + }); + + test('generates loose JSON Schema objects from the runtime schema', () => { + const schema = getCharacterSettingsOverrideJsonSchema(); + + expect(schema).toMatchObject({ + $schema: 'https://json-schema.org/draft/2020-12/schema', + title: 'CharacterSettingsOverride', + type: 'object', + additionalProperties: true, + }); + expect(_.get(schema, 'properties.额外模型解析配置.additionalProperties')).toBe(true); + expect(_.get(schema, 'properties.兼容性.additionalProperties')).toBe(true); + }); + + test('only valid non-empty character regex rules mark an otherwise empty config active', () => { + expect(hasActiveCharacterSettingsOverride({})).toBe(false); + expect( + hasActiveCharacterSettingsOverride({ + 额外模型解析配置: { 世界书条目白名单正则: '[' }, + }) + ).toBe(false); + expect( + hasActiveCharacterSettingsOverride({ + 额外模型解析配置: { 世界书条目白名单正则: '角色|地点' }, + }) + ).toBe(true); + expect(hasActiveCharacterSettingsOverride({ 更新方式: '随AI输出' })).toBe(true); + }); +}); + +describe('global settings migration and effective settings', () => { + beforeEach(() => { + (SillyTavern as any).extensionSettings = {}; + }); + + test('migrates the historical sandas key to canonical sendas', () => { + (SillyTavern as any).extensionSettings = { + mvu_settings: { + 兼容性: { + sandas不视为user消息: true, + unknown: 'kept', + }, + }, + }; + const store = useDataStore(); + + expect(store.settings.兼容性.sendas不视为user消息).toBe(true); + expect(store.settings.兼容性).not.toHaveProperty('sandas不视为user消息'); + expect(store.settings.兼容性).toHaveProperty('unknown', 'kept'); + }); + + test('prefers the canonical sendas key when both spellings exist', () => { + (SillyTavern as any).extensionSettings = { + mvu_settings: { + 兼容性: { + sendas不视为user消息: false, + sandas不视为user消息: true, + }, + }, + }; + const store = useDataStore(); + + expect(store.settings.兼容性.sendas不视为user消息).toBe(false); + expect(store.settings.兼容性).not.toHaveProperty('sandas不视为user消息'); + }); + + test('persists only the canonical sendas key after the next settings change', async () => { + (SillyTavern as any).extensionSettings = { + mvu_settings: { + 兼容性: { + sandas不视为user消息: true, + }, + }, + }; + const store = useDataStore(); + + store.settings.通知.MVU框架加载成功 = false; + await nextTick(); + + expect(SillyTavern.extensionSettings.mvu_settings.兼容性).toMatchObject({ + sendas不视为user消息: true, + }); + expect(SillyTavern.extensionSettings.mvu_settings.兼容性).not.toHaveProperty( + 'sandas不视为user消息' + ); + }); + + test('merges only supported ordinary character fields into effective settings', () => { + const store = useDataStore(); + store.settings.更新方式 = '随AI输出'; + store.settings.额外模型解析配置.启用自动请求 = true; + store.settings.兼容性.更新到聊天变量 = false; + store.settings.兼容性.sendas不视为user消息 = false; + store.character_settings.draft = { + 更新方式: '额外模型解析', + 额外模型解析配置: { + 启用自动请求: false, + 世界书条目白名单正则: 'character-only', + }, + 兼容性: { + 更新到聊天变量: true, + sendas不视为user消息: true, + }, + unsupported: 'ignored at runtime', + }; + + expect(store.effective_settings.更新方式).toBe('额外模型解析'); + expect(store.effective_settings.额外模型解析配置.启用自动请求).toBe(false); + expect(store.effective_settings.兼容性.更新到聊天变量).toBe(true); + expect(store.effective_settings.兼容性.sendas不视为user消息).toBe(true); + expect(store.effective_settings.额外模型解析配置.世界书条目白名单正则).toBe(''); + expect(store.effective_settings).not.toHaveProperty('unsupported'); + }); + + test('presence, rather than value difference, controls override badges', () => { + const store = useDataStore(); + store.settings.更新方式 = '随AI输出'; + store.character_settings.draft = { 更新方式: '随AI输出' }; + + expect(store.has_character_settings_override('更新方式')).toBe(true); + expect(store.is_character_settings_override_active).toBe(true); + }); +}); diff --git a/tests/prompt_filter.test.ts b/tests/prompt_filter.test.ts index 5137f32..7960a66 100644 --- a/tests/prompt_filter.test.ts +++ b/tests/prompt_filter.test.ts @@ -17,6 +17,7 @@ describe('filterEntries', () => { store.settings.额外模型解析配置.应答格式 = '聊天消息'; store.settings.额外模型解析配置.世界书条目白名单正则 = ''; store.settings.额外模型解析配置.世界书条目黑名单正则 = ''; + store.resetCharacterSettings(); store.runtimes.unsupported_warnings = ''; store.runtimes.is_during_extra_analysis = false; @@ -239,6 +240,7 @@ describe('filterEntries', () => { world: 'PlotWorld', comment: '地点B设定', reason: '白名单', + sources: ['用户全局配置'], }, ]); expect(consoleLogSpy).toHaveBeenCalledWith(ENTRY_COMMENT_FILTER_LOG_TITLE, [ @@ -247,6 +249,7 @@ describe('filterEntries', () => { world: 'PlotWorld', comment: '地点B设定', reason: '白名单', + sources: ['用户全局配置'], }, ]); }); @@ -305,12 +308,14 @@ describe('filterEntries', () => { world: 'PlotWorld', comment: '地点设定', reason: '黑名单', + sources: ['用户全局配置'], }, { lore: 'globalLore', world: 'PlotWorld', comment: '物品设定', reason: '白名单', + sources: ['用户全局配置'], }, ]); }); @@ -325,6 +330,7 @@ describe('filterEntries', () => { world: 'OldWorld', comment: 'old', reason: '黑名单', + sources: ['用户全局配置'], }, ]; store.settings.额外模型解析配置.世界书条目白名单正则 = '角色'; @@ -458,4 +464,173 @@ describe('filterEntries', () => { { timeOut: 5000 } ); }); + + test('combines global and character whitelist regexes with OR and records both sources on failure', async () => { + const store = useDataStore(); + + store.runtimes.is_during_extra_analysis = true; + store.settings.额外模型解析配置.世界书条目白名单正则 = '全局允许'; + store.character_settings.draft = { + 额外模型解析配置: { + 世界书条目白名单正则: '角色允许', + }, + }; + store.character_settings.is_valid = true; + + const lores = { + globalLore: [ + makeEntry('PlotWorld', '[mvu_plot]'), + makeEntry('PlotWorld', '全局允许条目'), + makeEntry('PlotWorld', '角色允许条目'), + makeEntry('PlotWorld', '其他条目'), + ], + characterLore: [makeEntry('WorldA', '[mvu_update]')], + chatLore: [], + personaLore: [], + }; + + mockGetLorebookEntries.mockResolvedValue(cloneEntries(lores.characterLore)); + + await filterEntries(lores); + + expect(lores.globalLore).toEqual([ + makeEntry('PlotWorld', '全局允许条目'), + makeEntry('PlotWorld', '角色允许条目'), + ]); + expect(store.runtimes.上次世界书条目过滤结果).toEqual([ + { + lore: 'globalLore', + world: 'PlotWorld', + comment: '其他条目', + reason: '白名单', + sources: ['用户全局配置', '角色卡配置'], + }, + ]); + }); + + test('combines global and character blacklist regexes with OR and records only matching sources', async () => { + const store = useDataStore(); + + store.runtimes.is_during_extra_analysis = true; + store.settings.额外模型解析配置.世界书条目黑名单正则 = '全局禁用|共同禁用'; + store.character_settings.draft = { + 额外模型解析配置: { + 世界书条目黑名单正则: '角色禁用|共同禁用', + }, + }; + store.character_settings.is_valid = true; + + const lores = { + globalLore: [ + makeEntry('PlotWorld', '[mvu_plot]'), + makeEntry('PlotWorld', '保留条目'), + makeEntry('PlotWorld', '全局禁用条目'), + makeEntry('PlotWorld', '角色禁用条目'), + makeEntry('PlotWorld', '共同禁用条目'), + ], + characterLore: [makeEntry('WorldA', '[mvu_update]')], + chatLore: [], + personaLore: [], + }; + + mockGetLorebookEntries.mockResolvedValue(cloneEntries(lores.characterLore)); + + await filterEntries(lores); + + expect(lores.globalLore).toEqual([makeEntry('PlotWorld', '保留条目')]); + expect(store.runtimes.上次世界书条目过滤结果).toEqual([ + { + lore: 'globalLore', + world: 'PlotWorld', + comment: '全局禁用条目', + reason: '黑名单', + sources: ['用户全局配置'], + }, + { + lore: 'globalLore', + world: 'PlotWorld', + comment: '角色禁用条目', + reason: '黑名单', + sources: ['角色卡配置'], + }, + { + lore: 'globalLore', + world: 'PlotWorld', + comment: '共同禁用条目', + reason: '黑名单', + sources: ['用户全局配置', '角色卡配置'], + }, + ]); + }); + + test('ignores character regexes while character settings are invalid', async () => { + const store = useDataStore(); + + store.runtimes.is_during_extra_analysis = true; + store.settings.额外模型解析配置.世界书条目白名单正则 = '全局允许'; + store.character_settings.draft = { + 额外模型解析配置: { + 世界书条目白名单正则: '角色允许', + 世界书条目黑名单正则: '[', + }, + }; + store.character_settings.is_valid = false; + + const lores = { + globalLore: [ + makeEntry('PlotWorld', '[mvu_plot]'), + makeEntry('PlotWorld', '全局允许条目'), + makeEntry('PlotWorld', '角色允许条目'), + ], + characterLore: [makeEntry('WorldA', '[mvu_update]')], + chatLore: [], + personaLore: [], + }; + + mockGetLorebookEntries.mockResolvedValue(cloneEntries(lores.characterLore)); + + await filterEntries(lores); + + expect(lores.globalLore).toEqual([makeEntry('PlotWorld', '全局允许条目')]); + expect((globalThis as any).toastr.warning).not.toHaveBeenCalledWith( + expect.stringContaining('角色卡配置'), + '[MVU]世界书条目过滤正则无效', + expect.anything() + ); + }); + + test('identifies the configuration source of each invalid regex warning', async () => { + const store = useDataStore(); + + store.runtimes.is_during_extra_analysis = true; + store.settings.额外模型解析配置.世界书条目白名单正则 = '['; + store.character_settings.draft = { + 额外模型解析配置: { + 世界书条目黑名单正则: '(', + }, + }; + store.character_settings.is_valid = true; + + const lores = { + globalLore: [makeEntry('PlotWorld', '[mvu_plot]'), makeEntry('PlotWorld', '条目')], + characterLore: [makeEntry('WorldA', '[mvu_update]')], + chatLore: [], + personaLore: [], + }; + + mockGetLorebookEntries.mockResolvedValue(cloneEntries(lores.characterLore)); + + await filterEntries(lores); + + expect((globalThis as any).toastr.warning).toHaveBeenCalledWith( + expect.stringContaining('用户全局配置的白名单正则无效'), + '[MVU]世界书条目过滤正则无效', + { timeOut: 5000 } + ); + expect((globalThis as any).toastr.warning).toHaveBeenCalledWith( + expect.stringContaining('角色卡配置的黑名单正则无效'), + '[MVU]世界书条目过滤正则无效', + { timeOut: 5000 } + ); + }); }); diff --git a/tests/setup.ts b/tests/setup.ts index 10148a1..d0a7e3d 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -15,6 +15,53 @@ import { watch } from 'vue'; saveSettingsDebounced: jest.fn(), saveChat: jest.fn().mockResolvedValue(undefined), callGenericPopup: jest.fn().mockResolvedValue(undefined), + POPUP_TYPE: { + TEXT: 1, + CONFIRM: 2, + }, + POPUP_RESULT: { + AFFIRMATIVE: 1, + NEGATIVE: 0, + CANCELLED: -1, + }, + loadWorldInfo: jest.fn().mockResolvedValue({ entries: {} }), + saveWorldInfo: jest.fn().mockResolvedValue(undefined), + reloadWorldInfoEditor: jest.fn(), + convertCharacterBook: jest.fn((book: any) => { + const entry = book.entries[0]; + return { + entries: { + [entry.id]: { + uid: entry.id, + displayIndex: entry.extensions?.display_index ?? 0, + comment: entry.comment, + disable: !entry.enabled, + constant: entry.constant, + selective: entry.selective, + key: entry.keys, + keysecondary: entry.secondary_keys, + selectiveLogic: 0, + scanDepth: null, + vectorized: false, + position: 1, + role: 0, + depth: 4, + order: entry.insertion_order, + content: entry.content, + useProbability: true, + probability: 100, + excludeRecursion: false, + preventRecursion: false, + delayUntilRecursion: false, + sticky: null, + cooldown: null, + delay: null, + }, + }, + originalData: book, + }; + }), + getCharacterCardFields: jest.fn().mockReturnValue({ name: 'Test Character' }), ToolManager: { isToolCallingSupported: jest.fn().mockReturnValue(true), registerFunctionTool: jest.fn(), @@ -58,6 +105,8 @@ const __eventHandlers = new Map unknown>>( GENERATION_ENDED: 'GENERATION_ENDED', MESSAGE_SENT: 'MESSAGE_SENT', GENERATION_STARTED: 'GENERATION_STARTED', + WORLDINFO_UPDATED: 'WORLDINFO_UPDATED', + CHAT_CHANGED: 'CHAT_CHANGED', }; // Ensure each test runs with a fresh Pinia instance @@ -86,6 +135,18 @@ beforeEach(() => { handler(TEST_SCRIPT_ID); } }); +(globalThis as any).eventRemoveListener = jest.fn( + (event: string, handler: (...args: unknown[]) => unknown) => { + const handlers = __eventHandlers.get(event); + if (!handlers) { + return; + } + const index = handlers.indexOf(handler); + if (index !== -1) { + handlers.splice(index, 1); + } + } +); (globalThis as any).eventEmit = jest.fn(async (event: string, ...args: unknown[]) => { const handlers = __eventHandlers.get(event) ?? []; for (const handler of handlers) { @@ -103,6 +164,7 @@ beforeEach(() => { (globalThis as any).setChatMessage = jest.fn(); (globalThis as any).setChatMessages = jest.fn(); (globalThis as any).getCurrentCharPrimaryLorebook = jest.fn(); +(globalThis as any).getCharWorldbookNames = jest.fn(() => ({ primary: null, additional: [] })); (globalThis as any).getAvailableLorebooks = jest.fn(); (globalThis as any).substitudeMacros = jest.fn(input => input); (globalThis as any).insertOrAssignVariables = jest.fn(); From 1ce9364221b9feea2bc65c890c462354e2d05c8f Mon Sep 17 00:00:00 2001 From: magicalastrogy Date: Tue, 28 Jul 2026 21:06:22 +0800 Subject: [PATCH 2/6] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E4=B8=AD?= =?UTF-8?q?=E8=8B=B1=E6=96=87=E7=95=8C=E9=9D=A2=E6=9C=AC=E5=9C=B0=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- artifact/bundle.js | 2 +- artifact/bundle.js.map | 2 +- package.json | 2 + src/button.ts | 126 +++- src/function/character_override/index.ts | 90 ++- src/function/character_override/schema.ts | 3 +- src/function/cleanup/index.ts | 3 +- src/function/cleanup/legacy_chat.ts | 48 +- src/function/cleanup/restore_variables.ts | 11 +- src/function/function_call.ts | 23 +- src/function/initvar/variable_init.ts | 59 +- src/function/is_extra_model_supported.ts | 3 +- src/function/is_function_calling_supported.ts | 6 +- src/function/notification/index.ts | 32 +- src/function/request/entry_comment_regex.ts | 6 +- src/function/request/filter_entries.ts | 29 +- .../update/extra_model_api_profiles.ts | 26 +- src/function/update/extra_model_preset.ts | 12 +- src/function/update/invoke_extra_model.ts | 43 +- src/function/update/on_message_received.ts | 9 +- src/function/update_variables.ts | 124 ++- src/i18n/index.ts | 80 ++ src/i18n/messages/common.ts | 36 + src/i18n/messages/panel.ts | 671 +++++++++++++++++ src/i18n/messages/runtime.ts | 706 ++++++++++++++++++ src/i18n/messages/types.ts | 11 + src/main.ts | 17 +- src/panel/Button.vue | 6 +- src/panel/CharacterOverride.vue | 240 ++++-- src/panel/Cleanup.vue | 14 +- src/panel/Compatibility.vue | 21 +- src/panel/Notification.vue | 12 +- src/panel/Panel.vue | 4 +- src/panel/Update.vue | 11 +- src/panel/Version.vue | 9 +- src/panel/compatibility_sandas_message.en.md | 1 + src/panel/compatibility_sandas_message.md | 1 - .../compatibility_sandas_message.zh-CN.md | 1 + src/panel/component/HelpIcon.vue | 4 +- src/panel/component/ModelSelect.vue | 17 +- src/panel/component/OverrideBadge.vue | 5 +- src/panel/component/Select.vue | 16 +- src/panel/index.ts | 5 +- src/panel/update/Method.vue | 22 +- src/panel/update/Prompt.vue | 238 ++++-- src/panel/update/Request.vue | 48 +- src/panel/update/Source.vue | 128 ++-- src/panel/update/prompt_break.en.md | 34 + src/panel/update/prompt_break.md | 26 - src/panel/update/prompt_break.zh-CN.md | 26 + src/panel/update/prompt_toolcall.en.md | 19 + src/panel/update/prompt_toolcall.md | 15 - src/panel/update/prompt_toolcall.zh-CN.md | 15 + src/panel/update/request_method.en.md | 44 ++ src/panel/update/request_method.md | 42 -- src/panel/update/request_method.zh-CN.md | 39 + src/panel/update_method.en.md | 26 + src/panel/update_method.md | 22 - src/panel/update_method.zh-CN.md | 22 + tests/i18n.test.ts | 156 ++++ tests/setup.ts | 7 + tests/template.test.ts | 14 +- util/common.ts | 20 +- webpack.config.ts | 4 + yarn.lock | 61 +- 65 files changed, 3003 insertions(+), 572 deletions(-) create mode 100644 src/i18n/index.ts create mode 100644 src/i18n/messages/common.ts create mode 100644 src/i18n/messages/panel.ts create mode 100644 src/i18n/messages/runtime.ts create mode 100644 src/i18n/messages/types.ts create mode 100644 src/panel/compatibility_sandas_message.en.md delete mode 100644 src/panel/compatibility_sandas_message.md create mode 100644 src/panel/compatibility_sandas_message.zh-CN.md create mode 100644 src/panel/update/prompt_break.en.md delete mode 100644 src/panel/update/prompt_break.md create mode 100644 src/panel/update/prompt_break.zh-CN.md create mode 100644 src/panel/update/prompt_toolcall.en.md delete mode 100644 src/panel/update/prompt_toolcall.md create mode 100644 src/panel/update/prompt_toolcall.zh-CN.md create mode 100644 src/panel/update/request_method.en.md delete mode 100644 src/panel/update/request_method.md create mode 100644 src/panel/update/request_method.zh-CN.md create mode 100644 src/panel/update_method.en.md delete mode 100644 src/panel/update_method.md create mode 100644 src/panel/update_method.zh-CN.md create mode 100644 tests/i18n.test.ts diff --git a/artifact/bundle.js b/artifact/bundle.js index efdef6c..e214af9 100644 --- a/artifact/bundle.js +++ b/artifact/bundle.js @@ -1,3 +1,3 @@ /*! For license information please see bundle.js.LICENSE.txt */ -import{klona as e}from'https://testingcf.jsdelivr.net/npm/klona/+esm';import{debounce as t}from'https://testingcf.jsdelivr.net/npm/perfect-debounce/+esm';import{createHooks as n}from'https://testingcf.jsdelivr.net/npm/hookable/+esm';import'https://testingcf.jsdelivr.net/npm/birpc/+esm';import{compare as a}from'https://testingcf.jsdelivr.net/npm/compare-versions/+esm';import{default as r}from'https://testingcf.jsdelivr.net/npm/json5/+esm';import{jsonrepair as o}from'https://testingcf.jsdelivr.net/npm/jsonrepair/+esm';import*as s from'https://testingcf.jsdelivr.net/npm/mathjs/+esm';var i={332(e,t,n){n.r(t),n.d(t,{default:()=>i});var a=n(354),r=n.n(a),o=n(314),s=n.n(o)()(r());s.push([e.id,'.mvu-button-wrap[data-v-d190cd26]{display:flex;flex-wrap:wrap;gap:0.5rem 0.6rem;align-items:center}.mvu-button-wrap[data-v-d190cd26] .menu_button{box-sizing:border-box;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;justify-content:flex-start;padding:0.35rem 0.6rem;min-height:unset;height:2.05rem;line-height:1.1}\n','',{version:3,sources:['webpack://./src/panel/Button.vue'],names:[],mappings:'AAkCA,kCACI,YAAa,CACb,cAAe,CACf,iBAAkB,CAClB,kBACJ,CAEA,+CACI,qBAAsB,CACtB,eAAgB,CAChB,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,0BAA2B,CAC3B,sBAAuB,CACvB,gBAAiB,CACjB,cAAe,CACf,eACJ',sourcesContent:['\n\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-character-override__metadata[data-v-da38954a]{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0.25rem 0.7rem;margin:0;padding:0.35rem 0.55rem;border-radius:8px;background-color:rgba(0,0,0,0.08)}.mvu-character-override__metadata dt[data-v-da38954a]{font-weight:600;opacity:0.82}.mvu-character-override__metadata dd[data-v-da38954a]{min-width:0;margin:0;overflow-wrap:anywhere}.mvu-character-override__notice[data-v-da38954a]{padding:0.45rem 0.6rem;border:1px solid color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 35%,transparent);border-radius:8px;background-color:color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 10%,transparent);overflow-wrap:anywhere}.mvu-character-override__notice--warning[data-v-da38954a]{border-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 40%,transparent);background-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 12%,transparent)}.mvu-character-override__fieldset[data-v-da38954a]{min-inline-size:0;margin:0;padding:0;border:0;display:flex;flex-direction:column;gap:0.55rem}.mvu-character-override__fieldset[data-v-da38954a]:disabled{opacity:0.6}.mvu-character-override__group[data-v-da38954a]{display:flex;flex-direction:column;gap:0.45rem;padding-top:0.1rem}.mvu-character-override__group-title[data-v-da38954a]{padding:0 0.15rem}.mvu-character-override__values[data-v-da38954a]{display:flex;flex-wrap:wrap;gap:0.15rem 0.75rem;font-size:calc(var(--mainFontSize,1rem) * 0.86);line-height:1.35;opacity:0.82;overflow-wrap:anywhere}.mvu-character-override__regex-error[data-v-da38954a]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;overflow-wrap:anywhere}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/CharacterOverride.vue\"],\"names\":[],\"mappings\":\"AAyTA,mDACI,YAAa,CACb,+CAAiD,CACjD,kBAAmB,CACnB,QAAS,CACT,uBAAwB,CACxB,iBAAkB,CAClB,iCACJ,CAEA,sDACI,eAAgB,CAChB,YACJ,CAEA,sDACI,WAAY,CACZ,QAAS,CACT,sBACJ,CAEA,iDACI,sBAAuB,CACvB,uFAA2F,CAC3F,iBAAkB,CAClB,uFAA2F,CAC3F,sBACJ,CAEA,0DACI,gFAAoF,CACpF,oFACJ,CAEA,mDACI,iBAAkB,CAClB,QAAS,CACT,SAAU,CACV,QAAS,CACT,YAAa,CACb,qBAAsB,CACtB,WACJ,CAEA,4DACI,WACJ,CAEA,gDACI,YAAa,CACb,qBAAsB,CACtB,WAAY,CACZ,kBACJ,CAEA,sDACI,iBACJ,CAEA,iDACI,YAAa,CACb,cAAe,CACf,mBAAoB,CACpB,+CAAiD,CACjD,gBAAiB,CACjB,YAAa,CACb,sBACJ,CAEA,sDACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,sBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.inline-drawer-content[data-v-c25d208a]{flex-direction:column;gap:0.75rem;padding-top:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/Panel.vue\"],\"names\":[],\"mappings\":\"AAiCA,wCACI,qBAAsB,CACtB,WAAY,CACZ,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-details[data-v-47f2b2e0]{border:1px dashed var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.5rem 0.7rem;background-color:rgba(0,0,0,0.06);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 70%,transparent)}.mvu-details__summary[data-v-47f2b2e0]{cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;opacity:0.95}.mvu-details__content[data-v-47f2b2e0]{margin-top:0.5rem;display:flex;flex-direction:column;gap:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Detail.vue\"],\"names\":[],\"mappings\":\"AAcA,8BACI,+DAAoE,CACpE,kBAAmB,CACnB,qBAAsB,CACtB,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,cAAe,CACf,wBAAiB,CAAjB,gBAAiB,CACjB,eAAgB,CAChB,YACJ,CAEA,uCACI,iBAAkB,CAClB,YAAa,CACb,qBAAsB,CACtB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field[data-v-1bd30ada]{padding:0.45rem 0.6rem;gap:0.25rem;border:1px solid color-mix(in srgb,var(--SmartThemeBorderColor,rgba(45,45,45,1)) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 55%,transparent)}.mvu-field__label[data-v-1bd30ada]{display:inline-flex;align-items:center;gap:0.35rem;font-weight:600;opacity:0.95}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Field.vue\"],\"names\":[],\"mappings\":\"AAeA,4BACI,sBAAuB,CACvB,WAAY,CACZ,iGAAwG,CACxG,kBAAmB,CACnB,mGAKJ,CAEA,mCACI,mBAAoB,CACpB,kBAAmB,CACnB,WAAY,CACZ,eAAgB,CAChB,YACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-help-icon[data-v-2eeacd15]{cursor:pointer}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/HelpIcon.vue\"],\"names\":[],\"mappings\":\"AAiBA,gCACI,cACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-model-select[data-v-7f080574]{display:flex;flex-direction:column;gap:0.5rem}.mvu-model-select__row[data-v-7f080574]{width:100%}.mvu-model-select__row--controls[data-v-7f080574]{display:grid;grid-template-columns:1fr auto;gap:0.5rem;align-items:center}.mvu-model-select__btn[data-v-7f080574]{white-space:nowrap;text-align:left;padding:0.35rem 0.6rem;min-height:unset;height:2.05rem;line-height:1.1}@media (max-width:520px){.mvu-model-select__row--controls[data-v-7f080574]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/ModelSelect.vue\"],\"names\":[],\"mappings\":\"AAyHA,mCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,wCACI,UACJ,CAEA,kDACI,YAAa,CACb,8BAA+B,CAC/B,UAAW,CACX,kBACJ,CAEA,wCACI,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,gBAAiB,CACjB,cAAe,CACf,eACJ,CAEA,yBACI,kDACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-override-badge[data-v-36dfb169]{display:inline-flex;flex:0 0 auto;align-items:center;padding:0.08rem 0.38rem;border:1px solid currentColor;border-radius:999px;font-size:calc(var(--mainFontSize,1rem) * 0.76);font-weight:600;line-height:1.25;white-space:nowrap}.mvu-override-badge--override[data-v-36dfb169]{color:var(--SmartThemeEmColor,#d39e00);background-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 12%,transparent)}.mvu-override-badge--additive[data-v-36dfb169]{color:var(--SmartThemeQuoteColor,#6ba7ff);background-color:color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 12%,transparent)}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/OverrideBadge.vue\"],\"names\":[],\"mappings\":\"AAkBA,qCACI,mBAAoB,CACpB,aAAc,CACd,kBAAmB,CACnB,uBAAwB,CACxB,6BAA8B,CAC9B,mBAAoB,CACpB,+CAAiD,CACjD,eAAgB,CAChB,gBAAiB,CACjB,kBACJ,CAEA,+CACI,sCAAwC,CACxC,oFACJ,CAEA,+CACI,yCAA2C,CAC3C,uFACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-range-number[data-v-48562df7]{display:grid;grid-template-columns:1fr 7.5rem;gap:0.5rem;align-items:center}.mvu-range-number__range[data-v-48562df7]{width:100%}.mvu-range-number__number[data-v-48562df7]{text-align:left;padding-top:0.3rem;padding-bottom:0.3rem;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 33%,transparent)}@media (max-width:420px){.mvu-range-number[data-v-48562df7]{grid-template-columns:1fr 6.5rem}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/RangeNumber.vue\"],\"names\":[],\"mappings\":\"AA2CA,mCACI,YAAa,CACb,gCAAiC,CACjC,UAAW,CACX,kBACJ,CAEA,0CACI,UACJ,CAEA,2CACI,eAAgB,CAChB,kBAAmB,CACnB,qBAAsB,CACtB,mGAKJ,CAEA,yBACI,mCACI,gCACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-section[data-v-ab897094]{border:1px solid var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.6rem 0.75rem;gap:0.45rem;background-color:rgba(0,0,0,0.08);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 75%,transparent)}.mvu-section__content[data-v-ab897094]{gap:0.5rem}.mvu-section__title[data-v-ab897094]{display:flex;flex-wrap:wrap;align-items:center;gap:0.3rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Section.vue\"],\"names\":[],\"mappings\":\"AAmBA,8BACI,8DAAmE,CACnE,kBAAmB,CACnB,sBAAuB,CACvB,WAAY,CACZ,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,UACJ,CAEA,qCACI,YAAa,CACb,cAAe,CACf,kBAAmB,CACnB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-warning[data-v-353598ca]{margin-top:0.5rem;padding:0.55rem 0.7rem;border:1px solid color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeEmColor,#fff3cd) 15%,transparent);color:var(--SmartThemeEmColor,#856404);display:grid;grid-template-columns:auto 1fr;-moz-column-gap:0.5rem;column-gap:0.5rem;align-items:center}.mvu-warning__icon[data-v-353598ca]{line-height:1}.mvu-warning__text[data-v-353598ca]{word-break:break-word}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Method.vue\"],\"names\":[],\"mappings\":\"AA8BA,8BACI,iBAAkB,CAClB,sBAAuB,CACvB,oFAAwF,CACxF,kBAAmB,CACnB,oFAAwF,CACxF,sCAAwC,CACxC,YAAa,CACb,8BAA+B,CAC/B,sBAAkB,CAAlB,iBAAkB,CAClB,kBACJ,CAEA,oCACI,aACJ,CAEA,oCACI,qBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-regex-error[data-v-2a348845]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;word-break:break-word}.mvu-regex-actions[data-v-2a348845]{display:flex;padding:0 0.6rem 0.45rem}.mvu-regex-actions__button[data-v-2a348845]{min-height:2rem;white-space:normal}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Prompt.vue\"],\"names\":[],\"mappings\":\"AA6QA,kCACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,qBACJ,CAEA,oCACI,YAAa,CACb,wBACJ,CAEA,4CACI,eAAgB,CAChB,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field-grid[data-v-cc34ff96]{display:flex;flex-direction:column;gap:0.5rem}.mvu-api-profile-controls[data-v-cc34ff96]{display:grid;grid-template-columns:1fr 1fr;gap:0.5rem}.mvu-api-profile-actions[data-v-cc34ff96]{display:flex;flex-wrap:wrap;gap:0.5rem}.mvu-note[data-v-cc34ff96]{opacity:0.85;color:var(--SmartThemeEmColor,inherit)}@media (max-width:520px){.mvu-api-profile-controls[data-v-cc34ff96]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Source.vue\"],\"names\":[],\"mappings\":\"AAqWA,iCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,2CACI,YAAa,CACb,6BAA8B,CAC9B,UACJ,CAEA,0CACI,YAAa,CACb,cAAe,CACf,UACJ,CAEA,2BACI,YAAa,CACb,sCACJ,CAEA,yBACI,2CACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","/* unplugin-vue-components disabled */// style-loader: Adds some css to the DOM by adding a \\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-character-override__metadata[data-v-6b9e648a]{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0.25rem 0.7rem;margin:0;padding:0.35rem 0.55rem;border-radius:8px;background-color:rgba(0,0,0,0.08)}.mvu-character-override__metadata dt[data-v-6b9e648a]{font-weight:600;opacity:0.82}.mvu-character-override__metadata dd[data-v-6b9e648a]{min-width:0;margin:0;overflow-wrap:anywhere}.mvu-character-override__notice[data-v-6b9e648a]{padding:0.45rem 0.6rem;border:1px solid color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 35%,transparent);border-radius:8px;background-color:color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 10%,transparent);overflow-wrap:anywhere}.mvu-character-override__notice--warning[data-v-6b9e648a]{border-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 40%,transparent);background-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 12%,transparent)}.mvu-character-override__fieldset[data-v-6b9e648a]{min-inline-size:0;margin:0;padding:0;border:0;display:flex;flex-direction:column;gap:0.55rem}.mvu-character-override__fieldset[data-v-6b9e648a]:disabled{opacity:0.6}.mvu-character-override__group[data-v-6b9e648a]{display:flex;flex-direction:column;gap:0.45rem;padding-top:0.1rem}.mvu-character-override__group-title[data-v-6b9e648a]{padding:0 0.15rem}.mvu-character-override__values[data-v-6b9e648a]{display:flex;flex-wrap:wrap;gap:0.15rem 0.75rem;font-size:calc(var(--mainFontSize,1rem) * 0.86);line-height:1.35;opacity:0.82;overflow-wrap:anywhere}.mvu-character-override__regex-error[data-v-6b9e648a]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;overflow-wrap:anywhere}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/CharacterOverride.vue\"],\"names\":[],\"mappings\":\"AA6YA,mDACI,YAAa,CACb,+CAAiD,CACjD,kBAAmB,CACnB,QAAS,CACT,uBAAwB,CACxB,iBAAkB,CAClB,iCACJ,CAEA,sDACI,eAAgB,CAChB,YACJ,CAEA,sDACI,WAAY,CACZ,QAAS,CACT,sBACJ,CAEA,iDACI,sBAAuB,CACvB,uFAA2F,CAC3F,iBAAkB,CAClB,uFAA2F,CAC3F,sBACJ,CAEA,0DACI,gFAAoF,CACpF,oFACJ,CAEA,mDACI,iBAAkB,CAClB,QAAS,CACT,SAAU,CACV,QAAS,CACT,YAAa,CACb,qBAAsB,CACtB,WACJ,CAEA,4DACI,WACJ,CAEA,gDACI,YAAa,CACb,qBAAsB,CACtB,WAAY,CACZ,kBACJ,CAEA,sDACI,iBACJ,CAEA,iDACI,YAAa,CACb,cAAe,CACf,mBAAoB,CACpB,+CAAiD,CACjD,gBAAiB,CACjB,YAAa,CACb,sBACJ,CAEA,sDACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,sBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.inline-drawer-content[data-v-7a58cca8]{flex-direction:column;gap:0.75rem;padding-top:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/Panel.vue\"],\"names\":[],\"mappings\":\"AAmCA,wCACI,qBAAsB,CACtB,WAAY,CACZ,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-details[data-v-47f2b2e0]{border:1px dashed var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.5rem 0.7rem;background-color:rgba(0,0,0,0.06);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 70%,transparent)}.mvu-details__summary[data-v-47f2b2e0]{cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;opacity:0.95}.mvu-details__content[data-v-47f2b2e0]{margin-top:0.5rem;display:flex;flex-direction:column;gap:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Detail.vue\"],\"names\":[],\"mappings\":\"AAcA,8BACI,+DAAoE,CACpE,kBAAmB,CACnB,qBAAsB,CACtB,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,cAAe,CACf,wBAAiB,CAAjB,gBAAiB,CACjB,eAAgB,CAChB,YACJ,CAEA,uCACI,iBAAkB,CAClB,YAAa,CACb,qBAAsB,CACtB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field[data-v-1bd30ada]{padding:0.45rem 0.6rem;gap:0.25rem;border:1px solid color-mix(in srgb,var(--SmartThemeBorderColor,rgba(45,45,45,1)) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 55%,transparent)}.mvu-field__label[data-v-1bd30ada]{display:inline-flex;align-items:center;gap:0.35rem;font-weight:600;opacity:0.95}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Field.vue\"],\"names\":[],\"mappings\":\"AAeA,4BACI,sBAAuB,CACvB,WAAY,CACZ,iGAAwG,CACxG,kBAAmB,CACnB,mGAKJ,CAEA,mCACI,mBAAoB,CACpB,kBAAmB,CACnB,WAAY,CACZ,eAAgB,CAChB,YACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-help-icon[data-v-39f85504]{cursor:pointer}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/HelpIcon.vue\"],\"names\":[],\"mappings\":\"AAmBA,gCACI,cACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-model-select[data-v-7be8f900]{display:flex;flex-direction:column;gap:0.5rem}.mvu-model-select__row[data-v-7be8f900]{width:100%}.mvu-model-select__row--controls[data-v-7be8f900]{display:grid;grid-template-columns:1fr auto;gap:0.5rem;align-items:center}.mvu-model-select__btn[data-v-7be8f900]{white-space:nowrap;text-align:left;padding:0.35rem 0.6rem;min-height:unset;height:2.05rem;line-height:1.1}@media (max-width:520px){.mvu-model-select__row--controls[data-v-7be8f900]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/ModelSelect.vue\"],\"names\":[],\"mappings\":\"AAgIA,mCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,wCACI,UACJ,CAEA,kDACI,YAAa,CACb,8BAA+B,CAC/B,UAAW,CACX,kBACJ,CAEA,wCACI,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,gBAAiB,CACjB,cAAe,CACf,eACJ,CAEA,yBACI,kDACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-override-badge[data-v-370dc8eb]{display:inline-flex;flex:0 0 auto;align-items:center;padding:0.08rem 0.38rem;border:1px solid currentColor;border-radius:999px;font-size:calc(var(--mainFontSize,1rem) * 0.76);font-weight:600;line-height:1.25;white-space:nowrap}.mvu-override-badge--override[data-v-370dc8eb]{color:var(--SmartThemeEmColor,#d39e00);background-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 12%,transparent)}.mvu-override-badge--additive[data-v-370dc8eb]{color:var(--SmartThemeQuoteColor,#6ba7ff);background-color:color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 12%,transparent)}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/OverrideBadge.vue\"],\"names\":[],\"mappings\":\"AAqBA,qCACI,mBAAoB,CACpB,aAAc,CACd,kBAAmB,CACnB,uBAAwB,CACxB,6BAA8B,CAC9B,mBAAoB,CACpB,+CAAiD,CACjD,eAAgB,CAChB,gBAAiB,CACjB,kBACJ,CAEA,+CACI,sCAAwC,CACxC,oFACJ,CAEA,+CACI,yCAA2C,CAC3C,uFACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-range-number[data-v-48562df7]{display:grid;grid-template-columns:1fr 7.5rem;gap:0.5rem;align-items:center}.mvu-range-number__range[data-v-48562df7]{width:100%}.mvu-range-number__number[data-v-48562df7]{text-align:left;padding-top:0.3rem;padding-bottom:0.3rem;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 33%,transparent)}@media (max-width:420px){.mvu-range-number[data-v-48562df7]{grid-template-columns:1fr 6.5rem}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/RangeNumber.vue\"],\"names\":[],\"mappings\":\"AA2CA,mCACI,YAAa,CACb,gCAAiC,CACjC,UAAW,CACX,kBACJ,CAEA,0CACI,UACJ,CAEA,2CACI,eAAgB,CAChB,kBAAmB,CACnB,qBAAsB,CACtB,mGAKJ,CAEA,yBACI,mCACI,gCACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-section[data-v-ab897094]{border:1px solid var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.6rem 0.75rem;gap:0.45rem;background-color:rgba(0,0,0,0.08);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 75%,transparent)}.mvu-section__content[data-v-ab897094]{gap:0.5rem}.mvu-section__title[data-v-ab897094]{display:flex;flex-wrap:wrap;align-items:center;gap:0.3rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Section.vue\"],\"names\":[],\"mappings\":\"AAmBA,8BACI,8DAAmE,CACnE,kBAAmB,CACnB,sBAAuB,CACvB,WAAY,CACZ,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,UACJ,CAEA,qCACI,YAAa,CACb,cAAe,CACf,kBAAmB,CACnB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-warning[data-v-58f80c4e]{margin-top:0.5rem;padding:0.55rem 0.7rem;border:1px solid color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeEmColor,#fff3cd) 15%,transparent);color:var(--SmartThemeEmColor,#856404);display:grid;grid-template-columns:auto 1fr;-moz-column-gap:0.5rem;column-gap:0.5rem;align-items:center}.mvu-warning__icon[data-v-58f80c4e]{line-height:1}.mvu-warning__text[data-v-58f80c4e]{word-break:break-word}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Method.vue\"],\"names\":[],\"mappings\":\"AA4CA,8BACI,iBAAkB,CAClB,sBAAuB,CACvB,oFAAwF,CACxF,kBAAmB,CACnB,oFAAwF,CACxF,sCAAwC,CACxC,YAAa,CACb,8BAA+B,CAC/B,sBAAkB,CAAlB,iBAAkB,CAClB,kBACJ,CAEA,oCACI,aACJ,CAEA,oCACI,qBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-regex-error[data-v-76e5a413]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;word-break:break-word}.mvu-regex-actions[data-v-76e5a413]{display:flex;padding:0 0.6rem 0.45rem}.mvu-regex-actions__button[data-v-76e5a413]{min-height:2rem;white-space:normal}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Prompt.vue\"],\"names\":[],\"mappings\":\"AA6WA,kCACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,qBACJ,CAEA,oCACI,YAAa,CACb,wBACJ,CAEA,4CACI,eAAgB,CAChB,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field-grid[data-v-52beed98]{display:flex;flex-direction:column;gap:0.5rem}.mvu-api-profile-controls[data-v-52beed98]{display:grid;grid-template-columns:1fr 1fr;gap:0.5rem}.mvu-api-profile-actions[data-v-52beed98]{display:flex;flex-wrap:wrap;gap:0.5rem}.mvu-note[data-v-52beed98]{opacity:0.85;color:var(--SmartThemeEmColor,inherit)}@media (max-width:520px){.mvu-api-profile-controls[data-v-52beed98]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Source.vue\"],\"names\":[],\"mappings\":\"AA6XA,iCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,2CACI,YAAa,CACb,6BAA8B,CAC9B,UACJ,CAEA,0CACI,YAAa,CACb,cAAe,CACf,UACJ,CAEA,2BACI,YAAa,CACb,sCACJ,CAEA,yBACI,2CACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","/* unplugin-vue-components disabled */// style-loader: Adds some css to the DOM by adding a \n'],sourceRoot:''}]);const s=i},751(e,t,n){n.r(t),n.d(t,{default:()=>s});var a=n(354),r=n.n(a),o=n(314),i=n.n(o)()(r());i.push([e.id,'.mvu-character-override__metadata[data-v-6b9e648a]{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0.25rem 0.7rem;margin:0;padding:0.35rem 0.55rem;border-radius:8px;background-color:rgba(0,0,0,0.08)}.mvu-character-override__metadata dt[data-v-6b9e648a]{font-weight:600;opacity:0.82}.mvu-character-override__metadata dd[data-v-6b9e648a]{min-width:0;margin:0;overflow-wrap:anywhere}.mvu-character-override__notice[data-v-6b9e648a]{padding:0.45rem 0.6rem;border:1px solid color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 35%,transparent);border-radius:8px;background-color:color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 10%,transparent);overflow-wrap:anywhere}.mvu-character-override__notice--warning[data-v-6b9e648a]{border-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 40%,transparent);background-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 12%,transparent)}.mvu-character-override__fieldset[data-v-6b9e648a]{min-inline-size:0;margin:0;padding:0;border:0;display:flex;flex-direction:column;gap:0.55rem}.mvu-character-override__fieldset[data-v-6b9e648a]:disabled{opacity:0.6}.mvu-character-override__group[data-v-6b9e648a]{display:flex;flex-direction:column;gap:0.45rem;padding-top:0.1rem}.mvu-character-override__group-title[data-v-6b9e648a]{padding:0 0.15rem}.mvu-character-override__values[data-v-6b9e648a]{display:flex;flex-wrap:wrap;gap:0.15rem 0.75rem;font-size:calc(var(--mainFontSize,1rem) * 0.86);line-height:1.35;opacity:0.82;overflow-wrap:anywhere}.mvu-character-override__regex-error[data-v-6b9e648a]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;overflow-wrap:anywhere}\n','',{version:3,sources:['webpack://./src/panel/CharacterOverride.vue'],names:[],mappings:'AA6YA,mDACI,YAAa,CACb,+CAAiD,CACjD,kBAAmB,CACnB,QAAS,CACT,uBAAwB,CACxB,iBAAkB,CAClB,iCACJ,CAEA,sDACI,eAAgB,CAChB,YACJ,CAEA,sDACI,WAAY,CACZ,QAAS,CACT,sBACJ,CAEA,iDACI,sBAAuB,CACvB,uFAA2F,CAC3F,iBAAkB,CAClB,uFAA2F,CAC3F,sBACJ,CAEA,0DACI,gFAAoF,CACpF,oFACJ,CAEA,mDACI,iBAAkB,CAClB,QAAS,CACT,SAAU,CACV,QAAS,CACT,YAAa,CACb,qBAAsB,CACtB,WACJ,CAEA,4DACI,WACJ,CAEA,gDACI,YAAa,CACb,qBAAsB,CACtB,WAAY,CACZ,kBACJ,CAEA,sDACI,iBACJ,CAEA,iDACI,YAAa,CACb,cAAe,CACf,mBAAoB,CACpB,+CAAiD,CACjD,gBAAiB,CACjB,YAAa,CACb,sBACJ,CAEA,sDACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,sBACJ',sourcesContent:['\n\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-character-override__metadata[data-v-6b9e648a]{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0.25rem 0.7rem;margin:0;padding:0.35rem 0.55rem;border-radius:8px;background-color:rgba(0,0,0,0.08)}.mvu-character-override__metadata dt[data-v-6b9e648a]{font-weight:600;opacity:0.82}.mvu-character-override__metadata dd[data-v-6b9e648a]{min-width:0;margin:0;overflow-wrap:anywhere}.mvu-character-override__notice[data-v-6b9e648a]{padding:0.45rem 0.6rem;border:1px solid color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 35%,transparent);border-radius:8px;background-color:color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 10%,transparent);overflow-wrap:anywhere}.mvu-character-override__notice--warning[data-v-6b9e648a]{border-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 40%,transparent);background-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 12%,transparent)}.mvu-character-override__fieldset[data-v-6b9e648a]{min-inline-size:0;margin:0;padding:0;border:0;display:flex;flex-direction:column;gap:0.55rem}.mvu-character-override__fieldset[data-v-6b9e648a]:disabled{opacity:0.6}.mvu-character-override__group[data-v-6b9e648a]{display:flex;flex-direction:column;gap:0.45rem;padding-top:0.1rem}.mvu-character-override__group-title[data-v-6b9e648a]{padding:0 0.15rem}.mvu-character-override__values[data-v-6b9e648a]{display:flex;flex-wrap:wrap;gap:0.15rem 0.75rem;font-size:calc(var(--mainFontSize,1rem) * 0.86);line-height:1.35;opacity:0.82;overflow-wrap:anywhere}.mvu-character-override__regex-error[data-v-6b9e648a]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;overflow-wrap:anywhere}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/CharacterOverride.vue\"],\"names\":[],\"mappings\":\"AA6YA,mDACI,YAAa,CACb,+CAAiD,CACjD,kBAAmB,CACnB,QAAS,CACT,uBAAwB,CACxB,iBAAkB,CAClB,iCACJ,CAEA,sDACI,eAAgB,CAChB,YACJ,CAEA,sDACI,WAAY,CACZ,QAAS,CACT,sBACJ,CAEA,iDACI,sBAAuB,CACvB,uFAA2F,CAC3F,iBAAkB,CAClB,uFAA2F,CAC3F,sBACJ,CAEA,0DACI,gFAAoF,CACpF,oFACJ,CAEA,mDACI,iBAAkB,CAClB,QAAS,CACT,SAAU,CACV,QAAS,CACT,YAAa,CACb,qBAAsB,CACtB,WACJ,CAEA,4DACI,WACJ,CAEA,gDACI,YAAa,CACb,qBAAsB,CACtB,WAAY,CACZ,kBACJ,CAEA,sDACI,iBACJ,CAEA,iDACI,YAAa,CACb,cAAe,CACf,mBAAoB,CACpB,+CAAiD,CACjD,gBAAiB,CACjB,YAAa,CACb,sBACJ,CAEA,sDACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,sBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.inline-drawer-content[data-v-7a58cca8]{flex-direction:column;gap:0.75rem;padding-top:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/Panel.vue\"],\"names\":[],\"mappings\":\"AAmCA,wCACI,qBAAsB,CACtB,WAAY,CACZ,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-details[data-v-47f2b2e0]{border:1px dashed var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.5rem 0.7rem;background-color:rgba(0,0,0,0.06);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 70%,transparent)}.mvu-details__summary[data-v-47f2b2e0]{cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;opacity:0.95}.mvu-details__content[data-v-47f2b2e0]{margin-top:0.5rem;display:flex;flex-direction:column;gap:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Detail.vue\"],\"names\":[],\"mappings\":\"AAcA,8BACI,+DAAoE,CACpE,kBAAmB,CACnB,qBAAsB,CACtB,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,cAAe,CACf,wBAAiB,CAAjB,gBAAiB,CACjB,eAAgB,CAChB,YACJ,CAEA,uCACI,iBAAkB,CAClB,YAAa,CACb,qBAAsB,CACtB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field[data-v-1bd30ada]{padding:0.45rem 0.6rem;gap:0.25rem;border:1px solid color-mix(in srgb,var(--SmartThemeBorderColor,rgba(45,45,45,1)) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 55%,transparent)}.mvu-field__label[data-v-1bd30ada]{display:inline-flex;align-items:center;gap:0.35rem;font-weight:600;opacity:0.95}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Field.vue\"],\"names\":[],\"mappings\":\"AAeA,4BACI,sBAAuB,CACvB,WAAY,CACZ,iGAAwG,CACxG,kBAAmB,CACnB,mGAKJ,CAEA,mCACI,mBAAoB,CACpB,kBAAmB,CACnB,WAAY,CACZ,eAAgB,CAChB,YACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-help-icon[data-v-39f85504]{cursor:pointer}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/HelpIcon.vue\"],\"names\":[],\"mappings\":\"AAmBA,gCACI,cACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-model-select[data-v-7be8f900]{display:flex;flex-direction:column;gap:0.5rem}.mvu-model-select__row[data-v-7be8f900]{width:100%}.mvu-model-select__row--controls[data-v-7be8f900]{display:grid;grid-template-columns:1fr auto;gap:0.5rem;align-items:center}.mvu-model-select__btn[data-v-7be8f900]{white-space:nowrap;text-align:left;padding:0.35rem 0.6rem;min-height:unset;height:2.05rem;line-height:1.1}@media (max-width:520px){.mvu-model-select__row--controls[data-v-7be8f900]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/ModelSelect.vue\"],\"names\":[],\"mappings\":\"AAgIA,mCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,wCACI,UACJ,CAEA,kDACI,YAAa,CACb,8BAA+B,CAC/B,UAAW,CACX,kBACJ,CAEA,wCACI,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,gBAAiB,CACjB,cAAe,CACf,eACJ,CAEA,yBACI,kDACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-override-badge[data-v-370dc8eb]{display:inline-flex;flex:0 0 auto;align-items:center;padding:0.08rem 0.38rem;border:1px solid currentColor;border-radius:999px;font-size:calc(var(--mainFontSize,1rem) * 0.76);font-weight:600;line-height:1.25;white-space:nowrap}.mvu-override-badge--override[data-v-370dc8eb]{color:var(--SmartThemeEmColor,#d39e00);background-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 12%,transparent)}.mvu-override-badge--additive[data-v-370dc8eb]{color:var(--SmartThemeQuoteColor,#6ba7ff);background-color:color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 12%,transparent)}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/OverrideBadge.vue\"],\"names\":[],\"mappings\":\"AAqBA,qCACI,mBAAoB,CACpB,aAAc,CACd,kBAAmB,CACnB,uBAAwB,CACxB,6BAA8B,CAC9B,mBAAoB,CACpB,+CAAiD,CACjD,eAAgB,CAChB,gBAAiB,CACjB,kBACJ,CAEA,+CACI,sCAAwC,CACxC,oFACJ,CAEA,+CACI,yCAA2C,CAC3C,uFACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-range-number[data-v-48562df7]{display:grid;grid-template-columns:1fr 7.5rem;gap:0.5rem;align-items:center}.mvu-range-number__range[data-v-48562df7]{width:100%}.mvu-range-number__number[data-v-48562df7]{text-align:left;padding-top:0.3rem;padding-bottom:0.3rem;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 33%,transparent)}@media (max-width:420px){.mvu-range-number[data-v-48562df7]{grid-template-columns:1fr 6.5rem}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/RangeNumber.vue\"],\"names\":[],\"mappings\":\"AA2CA,mCACI,YAAa,CACb,gCAAiC,CACjC,UAAW,CACX,kBACJ,CAEA,0CACI,UACJ,CAEA,2CACI,eAAgB,CAChB,kBAAmB,CACnB,qBAAsB,CACtB,mGAKJ,CAEA,yBACI,mCACI,gCACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-section[data-v-ab897094]{border:1px solid var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.6rem 0.75rem;gap:0.45rem;background-color:rgba(0,0,0,0.08);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 75%,transparent)}.mvu-section__content[data-v-ab897094]{gap:0.5rem}.mvu-section__title[data-v-ab897094]{display:flex;flex-wrap:wrap;align-items:center;gap:0.3rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Section.vue\"],\"names\":[],\"mappings\":\"AAmBA,8BACI,8DAAmE,CACnE,kBAAmB,CACnB,sBAAuB,CACvB,WAAY,CACZ,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,UACJ,CAEA,qCACI,YAAa,CACb,cAAe,CACf,kBAAmB,CACnB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-warning[data-v-58f80c4e]{margin-top:0.5rem;padding:0.55rem 0.7rem;border:1px solid color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeEmColor,#fff3cd) 15%,transparent);color:var(--SmartThemeEmColor,#856404);display:grid;grid-template-columns:auto 1fr;-moz-column-gap:0.5rem;column-gap:0.5rem;align-items:center}.mvu-warning__icon[data-v-58f80c4e]{line-height:1}.mvu-warning__text[data-v-58f80c4e]{word-break:break-word}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Method.vue\"],\"names\":[],\"mappings\":\"AA4CA,8BACI,iBAAkB,CAClB,sBAAuB,CACvB,oFAAwF,CACxF,kBAAmB,CACnB,oFAAwF,CACxF,sCAAwC,CACxC,YAAa,CACb,8BAA+B,CAC/B,sBAAkB,CAAlB,iBAAkB,CAClB,kBACJ,CAEA,oCACI,aACJ,CAEA,oCACI,qBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-regex-error[data-v-76e5a413]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;word-break:break-word}.mvu-regex-actions[data-v-76e5a413]{display:flex;padding:0 0.6rem 0.45rem}.mvu-regex-actions__button[data-v-76e5a413]{min-height:2rem;white-space:normal}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Prompt.vue\"],\"names\":[],\"mappings\":\"AA6WA,kCACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,qBACJ,CAEA,oCACI,YAAa,CACb,wBACJ,CAEA,4CACI,eAAgB,CAChB,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field-grid[data-v-52beed98]{display:flex;flex-direction:column;gap:0.5rem}.mvu-api-profile-controls[data-v-52beed98]{display:grid;grid-template-columns:1fr 1fr;gap:0.5rem}.mvu-api-profile-actions[data-v-52beed98]{display:flex;flex-wrap:wrap;gap:0.5rem}.mvu-note[data-v-52beed98]{opacity:0.85;color:var(--SmartThemeEmColor,inherit)}@media (max-width:520px){.mvu-api-profile-controls[data-v-52beed98]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Source.vue\"],\"names\":[],\"mappings\":\"AA6XA,iCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,2CACI,YAAa,CACb,6BAA8B,CAC9B,UACJ,CAEA,0CACI,YAAa,CACb,cAAe,CACf,UACJ,CAEA,2BACI,YAAa,CACb,sCACJ,CAEA,yBACI,2CACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","/* unplugin-vue-components disabled */// style-loader: Adds some css to the DOM by adding a \\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-character-override__metadata[data-v-ac919d4c]{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0.25rem 0.7rem;margin:0;padding:0.35rem 0.55rem;border-radius:8px;background-color:rgba(0,0,0,0.08)}.mvu-character-override__metadata dt[data-v-ac919d4c]{font-weight:600;opacity:0.82}.mvu-character-override__metadata dd[data-v-ac919d4c]{min-width:0;margin:0;overflow-wrap:anywhere}.mvu-character-override__fieldset[data-v-ac919d4c]{min-inline-size:0;margin:0;padding:0;border:0;display:flex;flex-direction:column;gap:0.45rem}.mvu-character-override__fieldset[data-v-ac919d4c]:disabled{opacity:0.6}.mvu-character-override__group[data-v-ac919d4c]{display:flex;flex-direction:column;gap:0.3rem;padding-top:0.1rem}.mvu-character-override__group-title[data-v-ac919d4c]{padding:0 0.15rem}.mvu-character-override__select-field.mvu-field[data-v-ac919d4c]{flex-flow:row nowrap;align-items:center;gap:0.4rem;padding:0.3rem 0.5rem}.mvu-character-override__select-field>.text_pole[data-v-ac919d4c]{flex:1 1 auto;width:auto;min-width:0;margin:0}.mvu-character-override__regex-error[data-v-ac919d4c]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;overflow-wrap:anywhere}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/CharacterOverride.vue\"],\"names\":[],\"mappings\":\"AAsMA,mDACI,YAAa,CACb,+CAAiD,CACjD,kBAAmB,CACnB,QAAS,CACT,uBAAwB,CACxB,iBAAkB,CAClB,iCACJ,CAEA,sDACI,eAAgB,CAChB,YACJ,CAEA,sDACI,WAAY,CACZ,QAAS,CACT,sBACJ,CAEA,mDACI,iBAAkB,CAClB,QAAS,CACT,SAAU,CACV,QAAS,CACT,YAAa,CACb,qBAAsB,CACtB,WACJ,CAEA,4DACI,WACJ,CAEA,gDACI,YAAa,CACb,qBAAsB,CACtB,UAAW,CACX,kBACJ,CAEA,sDACI,iBACJ,CAEA,iEACI,oBAAqB,CACrB,kBAAmB,CACnB,UAAW,CACX,qBACJ,CAEA,kEACI,aAAc,CACd,UAAW,CACX,WAAY,CACZ,QACJ,CAEA,sDACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,sBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.inline-drawer-content[data-v-7a58cca8]{flex-direction:column;gap:0.75rem;padding-top:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/Panel.vue\"],\"names\":[],\"mappings\":\"AAmCA,wCACI,qBAAsB,CACtB,WAAY,CACZ,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-details[data-v-3a7b912a]{border:1px dashed var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.5rem 0.7rem;background-color:rgba(0,0,0,0.06);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 70%,transparent)}.mvu-details__summary[data-v-3a7b912a]{cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;opacity:0.95}.mvu-details__title-suffix[data-v-3a7b912a]{display:inline-flex;align-items:center;margin-inline-start:0.35rem;vertical-align:middle}.mvu-details__content[data-v-3a7b912a]{margin-top:0.5rem;display:flex;flex-direction:column;gap:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Detail.vue\"],\"names\":[],\"mappings\":\"AAwBA,8BACI,+DAAoE,CACpE,kBAAmB,CACnB,qBAAsB,CACtB,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,cAAe,CACf,wBAAiB,CAAjB,gBAAiB,CACjB,eAAgB,CAChB,YACJ,CAEA,4CACI,mBAAoB,CACpB,kBAAmB,CACnB,2BAA4B,CAC5B,qBACJ,CAEA,uCACI,iBAAkB,CAClB,YAAa,CACb,qBAAsB,CACtB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field[data-v-1bd30ada]{padding:0.45rem 0.6rem;gap:0.25rem;border:1px solid color-mix(in srgb,var(--SmartThemeBorderColor,rgba(45,45,45,1)) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 55%,transparent)}.mvu-field__label[data-v-1bd30ada]{display:inline-flex;align-items:center;gap:0.35rem;font-weight:600;opacity:0.95}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Field.vue\"],\"names\":[],\"mappings\":\"AAeA,4BACI,sBAAuB,CACvB,WAAY,CACZ,iGAAwG,CACxG,kBAAmB,CACnB,mGAKJ,CAEA,mCACI,mBAAoB,CACpB,kBAAmB,CACnB,WAAY,CACZ,eAAgB,CAChB,YACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-help-icon[data-v-7a641daa]{cursor:pointer}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/HelpIcon.vue\"],\"names\":[],\"mappings\":\"AAoBA,gCACI,cACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-model-select[data-v-7be8f900]{display:flex;flex-direction:column;gap:0.5rem}.mvu-model-select__row[data-v-7be8f900]{width:100%}.mvu-model-select__row--controls[data-v-7be8f900]{display:grid;grid-template-columns:1fr auto;gap:0.5rem;align-items:center}.mvu-model-select__btn[data-v-7be8f900]{white-space:nowrap;text-align:left;padding:0.35rem 0.6rem;min-height:unset;height:2.05rem;line-height:1.1}@media (max-width:520px){.mvu-model-select__row--controls[data-v-7be8f900]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/ModelSelect.vue\"],\"names\":[],\"mappings\":\"AAgIA,mCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,wCACI,UACJ,CAEA,kDACI,YAAa,CACb,8BAA+B,CAC/B,UAAW,CACX,kBACJ,CAEA,wCACI,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,gBAAiB,CACjB,cAAe,CACf,eACJ,CAEA,yBACI,kDACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-override-badge[data-v-14bdab4e]{display:inline-flex;flex:0 1 auto;align-items:center;max-width:100%;padding:0.08rem 0.38rem;border:1px solid currentColor;border-radius:999px;font-size:calc(var(--mainFontSize,1rem) * 0.76);font-weight:600;line-height:1.25;text-align:center;overflow-wrap:anywhere}.mvu-override-badge--override[data-v-14bdab4e]{color:var(--SmartThemeEmColor,#d39e00);background-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 12%,transparent)}.mvu-override-badge--additive[data-v-14bdab4e]{color:var(--SmartThemeQuoteColor,#6ba7ff);background-color:color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 12%,transparent)}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/OverrideBadge.vue\"],\"names\":[],\"mappings\":\"AAuBA,qCACI,mBAAoB,CACpB,aAAc,CACd,kBAAmB,CACnB,cAAe,CACf,uBAAwB,CACxB,6BAA8B,CAC9B,mBAAoB,CACpB,+CAAiD,CACjD,eAAgB,CAChB,gBAAiB,CACjB,iBAAkB,CAClB,sBACJ,CAEA,+CACI,sCAAwC,CACxC,oFACJ,CAEA,+CACI,yCAA2C,CAC3C,uFACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-range-number[data-v-48562df7]{display:grid;grid-template-columns:1fr 7.5rem;gap:0.5rem;align-items:center}.mvu-range-number__range[data-v-48562df7]{width:100%}.mvu-range-number__number[data-v-48562df7]{text-align:left;padding-top:0.3rem;padding-bottom:0.3rem;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 33%,transparent)}@media (max-width:420px){.mvu-range-number[data-v-48562df7]{grid-template-columns:1fr 6.5rem}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/RangeNumber.vue\"],\"names\":[],\"mappings\":\"AA2CA,mCACI,YAAa,CACb,gCAAiC,CACjC,UAAW,CACX,kBACJ,CAEA,0CACI,UACJ,CAEA,2CACI,eAAgB,CAChB,kBAAmB,CACnB,qBAAsB,CACtB,mGAKJ,CAEA,yBACI,mCACI,gCACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-section[data-v-ab897094]{border:1px solid var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.6rem 0.75rem;gap:0.45rem;background-color:rgba(0,0,0,0.08);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 75%,transparent)}.mvu-section__content[data-v-ab897094]{gap:0.5rem}.mvu-section__title[data-v-ab897094]{display:flex;flex-wrap:wrap;align-items:center;gap:0.3rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Section.vue\"],\"names\":[],\"mappings\":\"AAmBA,8BACI,8DAAmE,CACnE,kBAAmB,CACnB,sBAAuB,CACvB,WAAY,CACZ,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,UACJ,CAEA,qCACI,YAAa,CACb,cAAe,CACf,kBAAmB,CACnB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-warning[data-v-58f80c4e]{margin-top:0.5rem;padding:0.55rem 0.7rem;border:1px solid color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeEmColor,#fff3cd) 15%,transparent);color:var(--SmartThemeEmColor,#856404);display:grid;grid-template-columns:auto 1fr;-moz-column-gap:0.5rem;column-gap:0.5rem;align-items:center}.mvu-warning__icon[data-v-58f80c4e]{line-height:1}.mvu-warning__text[data-v-58f80c4e]{word-break:break-word}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Method.vue\"],\"names\":[],\"mappings\":\"AA4CA,8BACI,iBAAkB,CAClB,sBAAuB,CACvB,oFAAwF,CACxF,kBAAmB,CACnB,oFAAwF,CACxF,sCAAwC,CACxC,YAAa,CACb,8BAA+B,CAC/B,sBAAkB,CAAlB,iBAAkB,CAClB,kBACJ,CAEA,oCACI,aACJ,CAEA,oCACI,qBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-regex-error[data-v-d3d7b06a]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;word-break:break-word}.mvu-regex-actions[data-v-d3d7b06a]{display:flex;padding:0 0.6rem 0.45rem}.mvu-regex-actions__button[data-v-d3d7b06a]{min-height:2rem;white-space:normal}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Prompt.vue\"],\"names\":[],\"mappings\":\"AA6WA,kCACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,qBACJ,CAEA,oCACI,YAAa,CACb,wBACJ,CAEA,4CACI,eAAgB,CAChB,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field-grid[data-v-52beed98]{display:flex;flex-direction:column;gap:0.5rem}.mvu-api-profile-controls[data-v-52beed98]{display:grid;grid-template-columns:1fr 1fr;gap:0.5rem}.mvu-api-profile-actions[data-v-52beed98]{display:flex;flex-wrap:wrap;gap:0.5rem}.mvu-note[data-v-52beed98]{opacity:0.85;color:var(--SmartThemeEmColor,inherit)}@media (max-width:520px){.mvu-api-profile-controls[data-v-52beed98]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Source.vue\"],\"names\":[],\"mappings\":\"AA6XA,iCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,2CACI,YAAa,CACb,6BAA8B,CAC9B,UACJ,CAEA,0CACI,YAAa,CACb,cAAe,CACf,UACJ,CAEA,2BACI,YAAa,CACb,sCACJ,CAEA,yBACI,2CACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","/* unplugin-vue-components disabled */// style-loader: Adds some css to the DOM by adding a \n'],sourceRoot:''}]);const l=i},126(e,t,n){n.r(t),n.d(t,{default:()=>l});var a=n(354),r=n.n(a),o=n(314),i=n.n(o)()(r());i.push([e.id,'.mvu-character-override__metadata[data-v-ac919d4c]{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0.25rem 0.7rem;margin:0;padding:0.35rem 0.55rem;border-radius:8px;background-color:rgba(0,0,0,0.08)}.mvu-character-override__metadata dt[data-v-ac919d4c]{font-weight:600;opacity:0.82}.mvu-character-override__metadata dd[data-v-ac919d4c]{min-width:0;margin:0;overflow-wrap:anywhere}.mvu-character-override__fieldset[data-v-ac919d4c]{min-inline-size:0;margin:0;padding:0;border:0;display:flex;flex-direction:column;gap:0.45rem}.mvu-character-override__fieldset[data-v-ac919d4c]:disabled{opacity:0.6}.mvu-character-override__group[data-v-ac919d4c]{display:flex;flex-direction:column;gap:0.3rem;padding-top:0.1rem}.mvu-character-override__group-title[data-v-ac919d4c]{padding:0 0.15rem}.mvu-character-override__select-field.mvu-field[data-v-ac919d4c]{flex-flow:row nowrap;align-items:center;gap:0.4rem;padding:0.3rem 0.5rem}.mvu-character-override__select-field>.text_pole[data-v-ac919d4c]{flex:1 1 auto;width:auto;min-width:0;margin:0}.mvu-character-override__regex-error[data-v-ac919d4c]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;overflow-wrap:anywhere}\n','',{version:3,sources:['webpack://./src/panel/CharacterOverride.vue'],names:[],mappings:'AAsMA,mDACI,YAAa,CACb,+CAAiD,CACjD,kBAAmB,CACnB,QAAS,CACT,uBAAwB,CACxB,iBAAkB,CAClB,iCACJ,CAEA,sDACI,eAAgB,CAChB,YACJ,CAEA,sDACI,WAAY,CACZ,QAAS,CACT,sBACJ,CAEA,mDACI,iBAAkB,CAClB,QAAS,CACT,SAAU,CACV,QAAS,CACT,YAAa,CACb,qBAAsB,CACtB,WACJ,CAEA,4DACI,WACJ,CAEA,gDACI,YAAa,CACb,qBAAsB,CACtB,UAAW,CACX,kBACJ,CAEA,sDACI,iBACJ,CAEA,iEACI,oBAAqB,CACrB,kBAAmB,CACnB,UAAW,CACX,qBACJ,CAEA,kEACI,aAAc,CACd,UAAW,CACX,WAAY,CACZ,QACJ,CAEA,sDACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,sBACJ',sourcesContent:['\n\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-character-override__metadata[data-v-ac919d4c]{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0.25rem 0.7rem;margin:0;padding:0.35rem 0.55rem;border-radius:8px;background-color:rgba(0,0,0,0.08)}.mvu-character-override__metadata dt[data-v-ac919d4c]{font-weight:600;opacity:0.82}.mvu-character-override__metadata dd[data-v-ac919d4c]{min-width:0;margin:0;overflow-wrap:anywhere}.mvu-character-override__fieldset[data-v-ac919d4c]{min-inline-size:0;margin:0;padding:0;border:0;display:flex;flex-direction:column;gap:0.45rem}.mvu-character-override__fieldset[data-v-ac919d4c]:disabled{opacity:0.6}.mvu-character-override__group[data-v-ac919d4c]{display:flex;flex-direction:column;gap:0.3rem;padding-top:0.1rem}.mvu-character-override__group-title[data-v-ac919d4c]{padding:0 0.15rem}.mvu-character-override__select-field.mvu-field[data-v-ac919d4c]{flex-flow:row nowrap;align-items:center;gap:0.4rem;padding:0.3rem 0.5rem}.mvu-character-override__select-field>.text_pole[data-v-ac919d4c]{flex:1 1 auto;width:auto;min-width:0;margin:0}.mvu-character-override__regex-error[data-v-ac919d4c]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;overflow-wrap:anywhere}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/CharacterOverride.vue\"],\"names\":[],\"mappings\":\"AAsMA,mDACI,YAAa,CACb,+CAAiD,CACjD,kBAAmB,CACnB,QAAS,CACT,uBAAwB,CACxB,iBAAkB,CAClB,iCACJ,CAEA,sDACI,eAAgB,CAChB,YACJ,CAEA,sDACI,WAAY,CACZ,QAAS,CACT,sBACJ,CAEA,mDACI,iBAAkB,CAClB,QAAS,CACT,SAAU,CACV,QAAS,CACT,YAAa,CACb,qBAAsB,CACtB,WACJ,CAEA,4DACI,WACJ,CAEA,gDACI,YAAa,CACb,qBAAsB,CACtB,UAAW,CACX,kBACJ,CAEA,sDACI,iBACJ,CAEA,iEACI,oBAAqB,CACrB,kBAAmB,CACnB,UAAW,CACX,qBACJ,CAEA,kEACI,aAAc,CACd,UAAW,CACX,WAAY,CACZ,QACJ,CAEA,sDACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,sBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.inline-drawer-content[data-v-7a58cca8]{flex-direction:column;gap:0.75rem;padding-top:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/Panel.vue\"],\"names\":[],\"mappings\":\"AAmCA,wCACI,qBAAsB,CACtB,WAAY,CACZ,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-details[data-v-3a7b912a]{border:1px dashed var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.5rem 0.7rem;background-color:rgba(0,0,0,0.06);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 70%,transparent)}.mvu-details__summary[data-v-3a7b912a]{cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;opacity:0.95}.mvu-details__title-suffix[data-v-3a7b912a]{display:inline-flex;align-items:center;margin-inline-start:0.35rem;vertical-align:middle}.mvu-details__content[data-v-3a7b912a]{margin-top:0.5rem;display:flex;flex-direction:column;gap:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Detail.vue\"],\"names\":[],\"mappings\":\"AAwBA,8BACI,+DAAoE,CACpE,kBAAmB,CACnB,qBAAsB,CACtB,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,cAAe,CACf,wBAAiB,CAAjB,gBAAiB,CACjB,eAAgB,CAChB,YACJ,CAEA,4CACI,mBAAoB,CACpB,kBAAmB,CACnB,2BAA4B,CAC5B,qBACJ,CAEA,uCACI,iBAAkB,CAClB,YAAa,CACb,qBAAsB,CACtB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field[data-v-1bd30ada]{padding:0.45rem 0.6rem;gap:0.25rem;border:1px solid color-mix(in srgb,var(--SmartThemeBorderColor,rgba(45,45,45,1)) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 55%,transparent)}.mvu-field__label[data-v-1bd30ada]{display:inline-flex;align-items:center;gap:0.35rem;font-weight:600;opacity:0.95}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Field.vue\"],\"names\":[],\"mappings\":\"AAeA,4BACI,sBAAuB,CACvB,WAAY,CACZ,iGAAwG,CACxG,kBAAmB,CACnB,mGAKJ,CAEA,mCACI,mBAAoB,CACpB,kBAAmB,CACnB,WAAY,CACZ,eAAgB,CAChB,YACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-help-icon[data-v-7a641daa]{cursor:pointer}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/HelpIcon.vue\"],\"names\":[],\"mappings\":\"AAoBA,gCACI,cACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-model-select[data-v-7be8f900]{display:flex;flex-direction:column;gap:0.5rem}.mvu-model-select__row[data-v-7be8f900]{width:100%}.mvu-model-select__row--controls[data-v-7be8f900]{display:grid;grid-template-columns:1fr auto;gap:0.5rem;align-items:center}.mvu-model-select__btn[data-v-7be8f900]{white-space:nowrap;text-align:left;padding:0.35rem 0.6rem;min-height:unset;height:2.05rem;line-height:1.1}@media (max-width:520px){.mvu-model-select__row--controls[data-v-7be8f900]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/ModelSelect.vue\"],\"names\":[],\"mappings\":\"AAgIA,mCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,wCACI,UACJ,CAEA,kDACI,YAAa,CACb,8BAA+B,CAC/B,UAAW,CACX,kBACJ,CAEA,wCACI,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,gBAAiB,CACjB,cAAe,CACf,eACJ,CAEA,yBACI,kDACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-override-badge[data-v-14bdab4e]{display:inline-flex;flex:0 1 auto;align-items:center;max-width:100%;padding:0.08rem 0.38rem;border:1px solid currentColor;border-radius:999px;font-size:calc(var(--mainFontSize,1rem) * 0.76);font-weight:600;line-height:1.25;text-align:center;overflow-wrap:anywhere}.mvu-override-badge--override[data-v-14bdab4e]{color:var(--SmartThemeEmColor,#d39e00);background-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 12%,transparent)}.mvu-override-badge--additive[data-v-14bdab4e]{color:var(--SmartThemeQuoteColor,#6ba7ff);background-color:color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 12%,transparent)}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/OverrideBadge.vue\"],\"names\":[],\"mappings\":\"AAuBA,qCACI,mBAAoB,CACpB,aAAc,CACd,kBAAmB,CACnB,cAAe,CACf,uBAAwB,CACxB,6BAA8B,CAC9B,mBAAoB,CACpB,+CAAiD,CACjD,eAAgB,CAChB,gBAAiB,CACjB,iBAAkB,CAClB,sBACJ,CAEA,+CACI,sCAAwC,CACxC,oFACJ,CAEA,+CACI,yCAA2C,CAC3C,uFACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-range-number[data-v-48562df7]{display:grid;grid-template-columns:1fr 7.5rem;gap:0.5rem;align-items:center}.mvu-range-number__range[data-v-48562df7]{width:100%}.mvu-range-number__number[data-v-48562df7]{text-align:left;padding-top:0.3rem;padding-bottom:0.3rem;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 33%,transparent)}@media (max-width:420px){.mvu-range-number[data-v-48562df7]{grid-template-columns:1fr 6.5rem}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/RangeNumber.vue\"],\"names\":[],\"mappings\":\"AA2CA,mCACI,YAAa,CACb,gCAAiC,CACjC,UAAW,CACX,kBACJ,CAEA,0CACI,UACJ,CAEA,2CACI,eAAgB,CAChB,kBAAmB,CACnB,qBAAsB,CACtB,mGAKJ,CAEA,yBACI,mCACI,gCACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-section[data-v-ab897094]{border:1px solid var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.6rem 0.75rem;gap:0.45rem;background-color:rgba(0,0,0,0.08);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 75%,transparent)}.mvu-section__content[data-v-ab897094]{gap:0.5rem}.mvu-section__title[data-v-ab897094]{display:flex;flex-wrap:wrap;align-items:center;gap:0.3rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Section.vue\"],\"names\":[],\"mappings\":\"AAmBA,8BACI,8DAAmE,CACnE,kBAAmB,CACnB,sBAAuB,CACvB,WAAY,CACZ,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,UACJ,CAEA,qCACI,YAAa,CACb,cAAe,CACf,kBAAmB,CACnB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-warning[data-v-58f80c4e]{margin-top:0.5rem;padding:0.55rem 0.7rem;border:1px solid color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeEmColor,#fff3cd) 15%,transparent);color:var(--SmartThemeEmColor,#856404);display:grid;grid-template-columns:auto 1fr;-moz-column-gap:0.5rem;column-gap:0.5rem;align-items:center}.mvu-warning__icon[data-v-58f80c4e]{line-height:1}.mvu-warning__text[data-v-58f80c4e]{word-break:break-word}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Method.vue\"],\"names\":[],\"mappings\":\"AA4CA,8BACI,iBAAkB,CAClB,sBAAuB,CACvB,oFAAwF,CACxF,kBAAmB,CACnB,oFAAwF,CACxF,sCAAwC,CACxC,YAAa,CACb,8BAA+B,CAC/B,sBAAkB,CAAlB,iBAAkB,CAClB,kBACJ,CAEA,oCACI,aACJ,CAEA,oCACI,qBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-regex-error[data-v-d3d7b06a]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;word-break:break-word}.mvu-regex-actions[data-v-d3d7b06a]{display:flex;padding:0 0.6rem 0.45rem}.mvu-regex-actions__button[data-v-d3d7b06a]{min-height:2rem;white-space:normal}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Prompt.vue\"],\"names\":[],\"mappings\":\"AA6WA,kCACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,qBACJ,CAEA,oCACI,YAAa,CACb,wBACJ,CAEA,4CACI,eAAgB,CAChB,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field-grid[data-v-52beed98]{display:flex;flex-direction:column;gap:0.5rem}.mvu-api-profile-controls[data-v-52beed98]{display:grid;grid-template-columns:1fr 1fr;gap:0.5rem}.mvu-api-profile-actions[data-v-52beed98]{display:flex;flex-wrap:wrap;gap:0.5rem}.mvu-note[data-v-52beed98]{opacity:0.85;color:var(--SmartThemeEmColor,inherit)}@media (max-width:520px){.mvu-api-profile-controls[data-v-52beed98]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Source.vue\"],\"names\":[],\"mappings\":\"AA6XA,iCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,2CACI,YAAa,CACb,6BAA8B,CAC9B,UACJ,CAEA,0CACI,YAAa,CACb,cAAe,CACf,UACJ,CAEA,2BACI,YAAa,CACb,sCACJ,CAEA,yBACI,2CACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","/* unplugin-vue-components disabled */// style-loader: Adds some css to the DOM by adding a \\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-character-override__metadata[data-v-ac919d4c]{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0.25rem 0.7rem;margin:0;padding:0.35rem 0.55rem;border-radius:8px;background-color:rgba(0,0,0,0.08)}.mvu-character-override__metadata dt[data-v-ac919d4c]{font-weight:600;opacity:0.82}.mvu-character-override__metadata dd[data-v-ac919d4c]{min-width:0;margin:0;overflow-wrap:anywhere}.mvu-character-override__fieldset[data-v-ac919d4c]{min-inline-size:0;margin:0;padding:0;border:0;display:flex;flex-direction:column;gap:0.45rem}.mvu-character-override__fieldset[data-v-ac919d4c]:disabled{opacity:0.6}.mvu-character-override__group[data-v-ac919d4c]{display:flex;flex-direction:column;gap:0.3rem;padding-top:0.1rem}.mvu-character-override__group-title[data-v-ac919d4c]{padding:0 0.15rem}.mvu-character-override__select-field.mvu-field[data-v-ac919d4c]{flex-flow:row nowrap;align-items:center;gap:0.4rem;padding:0.3rem 0.5rem}.mvu-character-override__select-field>.text_pole[data-v-ac919d4c]{flex:1 1 auto;width:auto;min-width:0;margin:0}.mvu-character-override__regex-error[data-v-ac919d4c]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;overflow-wrap:anywhere}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/CharacterOverride.vue\"],\"names\":[],\"mappings\":\"AAsMA,mDACI,YAAa,CACb,+CAAiD,CACjD,kBAAmB,CACnB,QAAS,CACT,uBAAwB,CACxB,iBAAkB,CAClB,iCACJ,CAEA,sDACI,eAAgB,CAChB,YACJ,CAEA,sDACI,WAAY,CACZ,QAAS,CACT,sBACJ,CAEA,mDACI,iBAAkB,CAClB,QAAS,CACT,SAAU,CACV,QAAS,CACT,YAAa,CACb,qBAAsB,CACtB,WACJ,CAEA,4DACI,WACJ,CAEA,gDACI,YAAa,CACb,qBAAsB,CACtB,UAAW,CACX,kBACJ,CAEA,sDACI,iBACJ,CAEA,iEACI,oBAAqB,CACrB,kBAAmB,CACnB,UAAW,CACX,qBACJ,CAEA,kEACI,aAAc,CACd,UAAW,CACX,WAAY,CACZ,QACJ,CAEA,sDACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,sBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.inline-drawer-content[data-v-7a58cca8]{flex-direction:column;gap:0.75rem;padding-top:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/Panel.vue\"],\"names\":[],\"mappings\":\"AAmCA,wCACI,qBAAsB,CACtB,WAAY,CACZ,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-details[data-v-3a7b912a]{border:1px dashed var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.5rem 0.7rem;background-color:rgba(0,0,0,0.06);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 70%,transparent)}.mvu-details__summary[data-v-3a7b912a]{cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;opacity:0.95}.mvu-details__title-suffix[data-v-3a7b912a]{display:inline-flex;align-items:center;margin-inline-start:0.35rem;vertical-align:middle}.mvu-details__content[data-v-3a7b912a]{margin-top:0.5rem;display:flex;flex-direction:column;gap:0.5rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Detail.vue\"],\"names\":[],\"mappings\":\"AAwBA,8BACI,+DAAoE,CACpE,kBAAmB,CACnB,qBAAsB,CACtB,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,cAAe,CACf,wBAAiB,CAAjB,gBAAiB,CACjB,eAAgB,CAChB,YACJ,CAEA,4CACI,mBAAoB,CACpB,kBAAmB,CACnB,2BAA4B,CAC5B,qBACJ,CAEA,uCACI,iBAAkB,CAClB,YAAa,CACb,qBAAsB,CACtB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field[data-v-1bd30ada]{padding:0.45rem 0.6rem;gap:0.25rem;border:1px solid color-mix(in srgb,var(--SmartThemeBorderColor,rgba(45,45,45,1)) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 55%,transparent)}.mvu-field__label[data-v-1bd30ada]{display:inline-flex;align-items:center;gap:0.35rem;font-weight:600;opacity:0.95}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Field.vue\"],\"names\":[],\"mappings\":\"AAeA,4BACI,sBAAuB,CACvB,WAAY,CACZ,iGAAwG,CACxG,kBAAmB,CACnB,mGAKJ,CAEA,mCACI,mBAAoB,CACpB,kBAAmB,CACnB,WAAY,CACZ,eAAgB,CAChB,YACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-help-icon[data-v-7a641daa]{cursor:pointer}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/HelpIcon.vue\"],\"names\":[],\"mappings\":\"AAoBA,gCACI,cACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-model-select[data-v-7be8f900]{display:flex;flex-direction:column;gap:0.5rem}.mvu-model-select__row[data-v-7be8f900]{width:100%}.mvu-model-select__row--controls[data-v-7be8f900]{display:grid;grid-template-columns:1fr auto;gap:0.5rem;align-items:center}.mvu-model-select__btn[data-v-7be8f900]{white-space:nowrap;text-align:left;padding:0.35rem 0.6rem;min-height:unset;height:2.05rem;line-height:1.1}@media (max-width:520px){.mvu-model-select__row--controls[data-v-7be8f900]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/ModelSelect.vue\"],\"names\":[],\"mappings\":\"AAgIA,mCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,wCACI,UACJ,CAEA,kDACI,YAAa,CACb,8BAA+B,CAC/B,UAAW,CACX,kBACJ,CAEA,wCACI,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,gBAAiB,CACjB,cAAe,CACf,eACJ,CAEA,yBACI,kDACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-override-badge[data-v-14bdab4e]{display:inline-flex;flex:0 1 auto;align-items:center;max-width:100%;padding:0.08rem 0.38rem;border:1px solid currentColor;border-radius:999px;font-size:calc(var(--mainFontSize,1rem) * 0.76);font-weight:600;line-height:1.25;text-align:center;overflow-wrap:anywhere}.mvu-override-badge--override[data-v-14bdab4e]{color:var(--SmartThemeEmColor,#d39e00);background-color:color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 12%,transparent)}.mvu-override-badge--additive[data-v-14bdab4e]{color:var(--SmartThemeQuoteColor,#6ba7ff);background-color:color-mix(in srgb,var(--SmartThemeQuoteColor,#6ba7ff) 12%,transparent)}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/OverrideBadge.vue\"],\"names\":[],\"mappings\":\"AAuBA,qCACI,mBAAoB,CACpB,aAAc,CACd,kBAAmB,CACnB,cAAe,CACf,uBAAwB,CACxB,6BAA8B,CAC9B,mBAAoB,CACpB,+CAAiD,CACjD,eAAgB,CAChB,gBAAiB,CACjB,iBAAkB,CAClB,sBACJ,CAEA,+CACI,sCAAwC,CACxC,oFACJ,CAEA,+CACI,yCAA2C,CAC3C,uFACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-range-number[data-v-48562df7]{display:grid;grid-template-columns:1fr 7.5rem;gap:0.5rem;align-items:center}.mvu-range-number__range[data-v-48562df7]{width:100%}.mvu-range-number__number[data-v-48562df7]{text-align:left;padding-top:0.3rem;padding-bottom:0.3rem;background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 33%,transparent)}@media (max-width:420px){.mvu-range-number[data-v-48562df7]{grid-template-columns:1fr 6.5rem}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/RangeNumber.vue\"],\"names\":[],\"mappings\":\"AA2CA,mCACI,YAAa,CACb,gCAAiC,CACjC,UAAW,CACX,kBACJ,CAEA,0CACI,UACJ,CAEA,2CACI,eAAgB,CAChB,kBAAmB,CACnB,qBAAsB,CACtB,mGAKJ,CAEA,yBACI,mCACI,gCACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-section[data-v-ab897094]{border:1px solid var(--SmartThemeBorderColor,rgba(45,45,45,1));border-radius:10px;padding:0.6rem 0.75rem;gap:0.45rem;background-color:rgba(0,0,0,0.08);background-color:color-mix(in srgb,var(--SmartThemeBlurTintColor,rgba(31,31,31,1)) 75%,transparent)}.mvu-section__content[data-v-ab897094]{gap:0.5rem}.mvu-section__title[data-v-ab897094]{display:flex;flex-wrap:wrap;align-items:center;gap:0.3rem}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/component/Section.vue\"],\"names\":[],\"mappings\":\"AAmBA,8BACI,8DAAmE,CACnE,kBAAmB,CACnB,sBAAuB,CACvB,WAAY,CACZ,iCAAqC,CACrC,mGAKJ,CAEA,uCACI,UACJ,CAEA,qCACI,YAAa,CACb,cAAe,CACf,kBAAmB,CACnB,UACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-warning[data-v-58f80c4e]{margin-top:0.5rem;padding:0.55rem 0.7rem;border:1px solid color-mix(in srgb,var(--SmartThemeEmColor,#d39e00) 35%,transparent);border-radius:10px;background-color:color-mix(in srgb,var(--SmartThemeEmColor,#fff3cd) 15%,transparent);color:var(--SmartThemeEmColor,#856404);display:grid;grid-template-columns:auto 1fr;-moz-column-gap:0.5rem;column-gap:0.5rem;align-items:center}.mvu-warning__icon[data-v-58f80c4e]{line-height:1}.mvu-warning__text[data-v-58f80c4e]{word-break:break-word}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Method.vue\"],\"names\":[],\"mappings\":\"AA4CA,8BACI,iBAAkB,CAClB,sBAAuB,CACvB,oFAAwF,CACxF,kBAAmB,CACnB,oFAAwF,CACxF,sCAAwC,CACxC,YAAa,CACb,8BAA+B,CAC/B,sBAAkB,CAAlB,iBAAkB,CAClB,kBACJ,CAEA,oCACI,aACJ,CAEA,oCACI,qBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-regex-error[data-v-d3d7b06a]{color:var(--SmartThemeQuoteColor,#ff6b6b);font-size:calc(var(--mainFontSize,1rem) * 0.9);line-height:1.35;word-break:break-word}.mvu-regex-actions[data-v-d3d7b06a]{display:flex;padding:0 0.6rem 0.45rem}.mvu-regex-actions__button[data-v-d3d7b06a]{min-height:2rem;white-space:normal}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Prompt.vue\"],\"names\":[],\"mappings\":\"AA6WA,kCACI,yCAA2C,CAC3C,8CAAgD,CAChD,gBAAiB,CACjB,qBACJ,CAEA,oCACI,YAAa,CACb,wBACJ,CAEA,4CACI,eAAgB,CAChB,kBACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mvu-field-grid[data-v-52beed98]{display:flex;flex-direction:column;gap:0.5rem}.mvu-api-profile-controls[data-v-52beed98]{display:grid;grid-template-columns:1fr 1fr;gap:0.5rem}.mvu-api-profile-actions[data-v-52beed98]{display:flex;flex-wrap:wrap;gap:0.5rem}.mvu-note[data-v-52beed98]{opacity:0.85;color:var(--SmartThemeEmColor,inherit)}@media (max-width:520px){.mvu-api-profile-controls[data-v-52beed98]{grid-template-columns:1fr}}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/panel/update/Source.vue\"],\"names\":[],\"mappings\":\"AA6XA,iCACI,YAAa,CACb,qBAAsB,CACtB,UACJ,CAEA,2CACI,YAAa,CACb,6BAA8B,CAC9B,UACJ,CAEA,0CACI,YAAa,CACb,cAAe,CACf,UACJ,CAEA,2BACI,YAAa,CACb,sCACJ,CAEA,yBACI,2CACI,yBACJ,CACJ\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","/* unplugin-vue-components disabled */// style-loader: Adds some css to the DOM by adding a
来源条目来源 世界书 原因配置来源 comment
${_.escape(entry.lore)} ${_.escape(entry.world)} ${_.escape(entry.reason)}${_.escape(getFilterSources(entry))} ${_.escape(entry.comment)}