@emotionalamo/plugin-extratheme 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -20
- package/README.zh-CN.md +10 -18
- package/dist/client/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# ExtraTheme · 主题增强
|
|
4
4
|
|
|
5
|
-
> `@
|
|
5
|
+
> `@emotionalamo/plugin-extratheme` — a global theme-enhancement plugin for NocoBase 2.x.
|
|
6
6
|
|
|
7
7
|
Extends theming **beyond the native theme editor** (which only exposes antd tokens):
|
|
8
8
|
custom page **background** (image upload / URL / gradient presets / solid color, with
|
|
@@ -127,35 +127,27 @@ src/
|
|
|
127
127
|
locale/ zh-CN + en-US
|
|
128
128
|
```
|
|
129
129
|
|
|
130
|
-
Shared logic is TDD'd with vitest under `src/shared/__tests__/` (
|
|
130
|
+
Shared logic is TDD'd with vitest under `src/shared/__tests__/` (100+ cases, incl. security).
|
|
131
131
|
|
|
132
132
|
---
|
|
133
133
|
|
|
134
|
-
## Develop
|
|
134
|
+
## Develop
|
|
135
135
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
yarn build @amo/plugin-extratheme
|
|
139
|
-
|
|
140
|
-
# run the shared tests (point vitest at the shared files explicitly, from the root)
|
|
141
|
-
yarn vitest run packages/plugins/@amo/plugin-extratheme/src/shared/__tests__
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
First-time registration in the container (the `@amo` scope is not auto-discovered by
|
|
145
|
-
prefix, and the new collection needs a sync):
|
|
136
|
+
The framework-agnostic core lives in `src/shared/` and is unit-tested with vitest.
|
|
137
|
+
Build with the NocoBase toolchain and run the shared tests:
|
|
146
138
|
|
|
147
139
|
```bash
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
npx nocobase pm enable @amo/plugin-extratheme && \
|
|
151
|
-
yarn nocobase db:sync'
|
|
140
|
+
yarn build @emotionalamo/plugin-extratheme
|
|
141
|
+
yarn vitest run src/shared/__tests__
|
|
152
142
|
```
|
|
153
143
|
|
|
154
|
-
|
|
155
|
-
|
|
144
|
+
Register + enable it in your NocoBase app (a non-`@nocobase` scope isn't auto-discovered
|
|
145
|
+
by prefix, and the new collection needs a one-time DB sync):
|
|
156
146
|
|
|
157
147
|
```bash
|
|
158
|
-
|
|
148
|
+
yarn pm add @emotionalamo/plugin-extratheme
|
|
149
|
+
yarn pm enable @emotionalamo/plugin-extratheme
|
|
150
|
+
yarn nocobase db:sync
|
|
159
151
|
```
|
|
160
152
|
|
|
161
153
|
---
|
package/README.zh-CN.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# ExtraTheme · 主题增强
|
|
4
4
|
|
|
5
|
-
> `@
|
|
5
|
+
> `@emotionalamo/plugin-extratheme` —— 面向 NocoBase 2.x 的全局主题增强插件。
|
|
6
6
|
|
|
7
7
|
在**原生主题编辑器(只能改 antd token)之外**扩展主题能力:自定义页面**背景**(图片上传 /
|
|
8
8
|
URL / 渐变预设 / 纯色,支持铺满 / 适应 / 拉伸 / 平铺)、表面**透明度**、**毛玻璃**
|
|
@@ -111,33 +111,25 @@ src/
|
|
|
111
111
|
locale/ zh-CN + en-US
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
共享逻辑用 vitest TDD,位于 `src/shared/__tests__/`(
|
|
114
|
+
共享逻辑用 vitest TDD,位于 `src/shared/__tests__/`(100+ 用例,含安全用例)。
|
|
115
115
|
|
|
116
116
|
---
|
|
117
117
|
|
|
118
|
-
##
|
|
118
|
+
## 开发
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
# 构建(在 monorepo 根目录)
|
|
122
|
-
yarn build @amo/plugin-extratheme
|
|
123
|
-
|
|
124
|
-
# 跑共享测试(从根目录显式指向 shared 目录)
|
|
125
|
-
yarn vitest run packages/plugins/@amo/plugin-extratheme/src/shared/__tests__
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
首次在容器里注册(`@amo` 作用域不会按前缀自动发现,新集合也需要同步):
|
|
120
|
+
框架无关的核心在 `src/shared/`,用 vitest 单测。用 NocoBase 工具链构建并跑共享测试:
|
|
129
121
|
|
|
130
122
|
```bash
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
npx nocobase pm enable @amo/plugin-extratheme && \
|
|
134
|
-
yarn nocobase db:sync'
|
|
123
|
+
yarn build @emotionalamo/plugin-extratheme
|
|
124
|
+
yarn vitest run src/shared/__tests__
|
|
135
125
|
```
|
|
136
126
|
|
|
137
|
-
|
|
127
|
+
在你的 NocoBase 应用里注册并启用(非 `@nocobase` 作用域不会按前缀自动发现,新集合需要一次性同步):
|
|
138
128
|
|
|
139
129
|
```bash
|
|
140
|
-
|
|
130
|
+
yarn pm add @emotionalamo/plugin-extratheme
|
|
131
|
+
yarn pm enable @emotionalamo/plugin-extratheme
|
|
132
|
+
yarn nocobase db:sync
|
|
141
133
|
```
|
|
142
134
|
|
|
143
135
|
---
|
package/dist/client/index.js
CHANGED
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react-i18next"),require("react"),require("antd"),require("@nocobase/client")):"function"==typeof define&&define.amd?define("@emotionalamo/plugin-extratheme",["react-i18next","react","antd","@nocobase/client"],t):"object"==typeof exports?exports["@emotionalamo/plugin-extratheme"]=t(require("react-i18next"),require("react"),require("antd"),require("@nocobase/client")):e["@emotionalamo/plugin-extratheme"]=t(e["react-i18next"],e.react,e.antd,e["@nocobase/client"])}(self,function(e,t,r,n){return function(){"use strict";var a={342:function(e){e.exports=n},59:function(e){e.exports=r},155:function(e){e.exports=t},953:function(t){t.exports=e}},o={};function l(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return a[e](r,r.exports,l),r.exports}l.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(t,{a:t}),t},l.d=function(e,t){for(var r in t)l.o(t,r)&&!l.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.g.importScripts&&(i=l.g.location+"");var i,c=l.g.document;if(!i&&c&&(c.currentScript&&"SCRIPT"===c.currentScript.tagName.toUpperCase()&&(i=c.currentScript.src),!i)){var u=c.getElementsByTagName("script");if(u.length)for(var s=u.length-1;s>-1&&(!i||!/^http(s?):/.test(i));)i=u[s--].src}if(!i)throw Error("Automatic publicPath is not supported in this browser");l.p=i.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/");var f={};return!function(){var e="",t="u">typeof document?document.currentScript:null;if(t&&t.src){var r=t.src.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"");r.indexOf("/static/plugins/@emotionalamo/plugin-extratheme/dist/client/")>=0&&(e=r.replace(/\/[^\/]+$/,"/"))}if(!e){var n=window.__webpack_public_path__||"";n&&("/"!==n.charAt(n.length-1)&&(n+="/"),e=n+"static/plugins/@emotionalamo/plugin-extratheme/dist/client/")}if(!e){var a=window.__nocobase_modern_client_prefix__||"v",o="/"+(a=String(a).replace(/^\/+|\/+$/g,"")||"v")+"/";if(!(e=window.__nocobase_public_path__||"")&&window.location&&window.location.pathname){var i=window.location.pathname||"/",c=i.indexOf(o);e=c>=0?i.slice(0,c+1):"/"}e&&(e=e.replace(RegExp("/"+a+"/?$"),"/")),e||(e="/"),"/"!==e.charAt(e.length-1)&&(e+="/"),e+="static/plugins/@emotionalamo/plugin-extratheme/dist/client/"}l.p=e}(),!function(){l.r(f),l.d(f,{default:function(){return eP}});var e=l(342),t=JSON.parse('{"ExtraTheme":"主题增强","主题增强":"主题增强","工作区外观":"工作区外观","登录页外观":"登录页外观","总开关":"总开关","背景":"背景","类型":"类型","纯色":"纯色","渐变":"渐变","图片":"图片","背景颜色":"背景颜色","渐变预设":"渐变预设","自定义":"自定义","角度":"角度","自定义色标":"自定义色标","图片 URL":"图片 URL","需公网可读":"需公网可读","上传":"上传","铺法":"铺法","铺满":"铺满","适应":"适应","拉伸":"拉伸","平铺":"平铺","暗化遮罩":"暗化遮罩","内容区卡片":"内容区卡片","卡片不透明度":"卡片不透明度","背景模糊":"背景模糊","浅色描边":"浅色描边","风格":"风格","实色":"实色","毛玻璃":"毛玻璃","不透明度":"不透明度","文字颜色":"文字颜色","深色":"深色","浅色":"浅色","登录卡片":"登录卡片","圆角":"圆角","投影":"投影","顶部导航栏":"顶部导航栏","侧边导航栏":"侧边导航栏","颜色由主题编辑器管理,这里只叠加透明度与模糊。":"颜色由主题编辑器管理,这里只叠加透明度与模糊。","滚动条":"滚动条","显示方式":"显示方式","始终显示":"始终显示","始终隐藏":"始终隐藏","“始终显示”为常驻细滚动条;“始终隐藏”完全隐藏滚动条(内容仍可滚动)。":"“始终显示”为常驻细滚动条;“始终隐藏”完全隐藏滚动条(内容仍可滚动)。","全局字体":"全局字体","字体":"字体","自定义字体":"自定义字体","字体预览":"预览","字体来源":"字体来源","系统字体":"系统字体","上传字体":"上传字体","上传字体文件":"上传字体文件","选择字体文件":"选择字体文件","字体名称":"字体名称","已上传":"已上传","重新上传":"重新上传","移除":"移除","提示:字体需系统已安装才生效;“无衬线/系统默认”通常与本机默认字体一致,选“楷体/宋体”等可看到明显变化。":"提示:字体需系统已安装才生效;“无衬线/系统默认”通常与本机默认字体一致,选“楷体/宋体”等可看到明显变化。","提示:上传字体对所有访问者生效,无需本机安装;中文字体文件较大,建议使用 woff2 或先做子集化以加快加载。":"提示:上传字体对所有访问者生效,无需本机安装;中文字体文件较大,建议使用 woff2 或先做子集化以加快加载。","上传成功":"上传成功","上传失败":"上传失败","已保存并应用":"已保存并应用","保存失败":"保存失败","保存并应用":"保存并应用","重置本组":"重置本组","实时预览":"实时预览","提示:默认关闭,开启总开关并保存后才生效;关闭插件或关闭开关立即恢复原生外观。":"提示:默认关闭,开启总开关并保存后才生效;关闭插件或关闭开关立即恢复原生外观。","概览":"概览","数据":"数据","设置":"设置","菜单":"菜单","订单":"订单","报表":"报表","内容卡片":"内容卡片","欢迎登录":"欢迎登录","登录":"登录"}'),r=JSON.parse('{"ExtraTheme":"ExtraTheme","主题增强":"ExtraTheme","工作区外观":"Workspace","登录页外观":"Sign-in page","总开关":"Enable","背景":"Background","类型":"Type","纯色":"Solid","渐变":"Gradient","图片":"Image","背景颜色":"Background color","渐变预设":"Preset","自定义":"Custom","角度":"Angle","自定义色标":"Custom stops","图片 URL":"Image URL","需公网可读":"Must be public","上传":"Upload","铺法":"Fit","铺满":"Cover","适应":"Contain","拉伸":"Stretch","平铺":"Repeat","暗化遮罩":"Dim","内容区卡片":"Content cards","卡片不透明度":"Card opacity","背景模糊":"Blur","浅色描边":"Light border","风格":"Style","实色":"Solid","毛玻璃":"Frosted","不透明度":"Opacity","文字颜色":"Text color","深色":"Dark","浅色":"Light","登录卡片":"Login card","圆角":"Radius","投影":"Shadow","顶部导航栏":"Top navigation","侧边导航栏":"Side navigation","颜色由主题编辑器管理,这里只叠加透明度与模糊。":"Color is managed by the theme editor — here you only add opacity and blur.","滚动条":"Scrollbar","显示方式":"Display","始终显示":"Always show","始终隐藏":"Always hide","“始终显示”为常驻细滚动条;“始终隐藏”完全隐藏滚动条(内容仍可滚动)。":"“Always show” is a persistent slim scrollbar; “Always hide” removes the scrollbar (content still scrolls).","全局字体":"Global font","字体":"Font","自定义字体":"Custom font","字体预览":"Preview","字体来源":"Font source","系统字体":"System font","上传字体":"Upload font","上传字体文件":"Upload font file","选择字体文件":"Choose font file","字体名称":"Font name","已上传":"Uploaded","重新上传":"Replace","移除":"Remove","提示:字体需系统已安装才生效;“无衬线/系统默认”通常与本机默认字体一致,选“楷体/宋体”等可看到明显变化。":"The font must be installed on the viewer\'s system. “Sans / System default” usually matches the OS default — pick e.g. Kaiti / Songti to see a clear change.","提示:上传字体对所有访问者生效,无需本机安装;中文字体文件较大,建议使用 woff2 或先做子集化以加快加载。":"An uploaded font works for every viewer without a local install. CJK font files are large — prefer woff2 or subset the font to speed up loading.","上传成功":"Uploaded","上传失败":"Upload failed","已保存并应用":"Saved and applied","保存失败":"Save failed","保存并应用":"Save & apply","重置本组":"Reset","实时预览":"Live preview","提示:默认关闭,开启总开关并保存后才生效;关闭插件或关闭开关立即恢复原生外观。":"Off by default — turn on the switch and save to apply; disabling the plugin or the switch restores the native look instantly.","概览":"Overview","数据":"Data","设置":"Settings","菜单":"Menu","订单":"Orders","报表":"Reports","内容卡片":"Content card","欢迎登录":"Welcome back","登录":"Sign in"}');function n(e){var t=(e||"").replace(/[;{}<>\\/*]/g,"").replace(/[\r\n\t]+/g," ").trim();return(t.match(/"/g)||[]).length%2&&(t=t.replace(/"/g,"")),(t.match(/'/g)||[]).length%2&&(t=t.replace(/'/g,"")),t.slice(0,200)}function a(e){var t;return({woff2:"woff2",woff:"woff",ttf:"truetype",otf:"opentype",ttc:"truetype"})[((null==(t=(e||"").split("?")[0].split("#")[0].match(/\.([a-z0-9]+)$/i))?void 0:t[1])||"").toLowerCase()]||""}var o=/^data:[\w.+-]+\/[\w.+-]+;base64,[A-Za-z0-9+/=]+$/;function i(e){var t=e||"";return o.test(t)?t:t.replace(/["')(;{}<>\\]/g,"").replace(/\s+/g,"").slice(0,2e3)}function c(e,t){var r=(e||"").replace("#","");3===r.length&&(r=r.split("").map(function(e){return e+e}).join(""));var n=parseInt(r.slice(0,2),16),a=parseInt(r.slice(2,4),16),o=parseInt(r.slice(4,6),16);return"rgba(".concat(n,",").concat(a,",").concat(o,",").concat(t,")")}function u(e){var t=(e||"").trim();return/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t)||/^(rgb|rgba|hsl|hsla)\(\s*[\d.,%\s/]+\)$/i.test(t)||/^[a-z]+$/i.test(t)?t:"transparent"}function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=Number(e);return Number.isFinite(r)?r:t}function p(e,t){var r=function(e){var t=(e||"").trim(),r=t.match(/^rgba?\(\s*([\d.]+)[\s,]+([\d.]+)[\s,]+([\d.]+)/i);if(r)return[Math.round(+r[1]),Math.round(+r[2]),Math.round(+r[3])];var n=t.replace("#","");return(3===n.length&&(n=n.split("").map(function(e){return e+e}).join("")),/^[0-9a-f]{6}$/i.test(n))?[parseInt(n.slice(0,2),16),parseInt(n.slice(2,4),16),parseInt(n.slice(4,6),16)]:null}(e);return r?"rgba(".concat(r[0],",").concat(r[1],",").concat(r[2],",").concat(s(t),")"):"transparent"}function d(e){var t,r={image:"transparent",size:"auto",repeat:"no-repeat",position:"center"};if(!e||"none"===e.type)return r;if("color"===e.type)return{image:u(e.color),size:"auto",repeat:"no-repeat",position:"center"};if("gradient"===e.type){var n=(e.gradient.colors||[]).map(u).join(",");return{image:"linear-gradient(".concat(s(e.gradient.angle),"deg,").concat(n,")"),size:"cover",repeat:"no-repeat",position:"center"}}var a=i((null==(t=e.image)?void 0:t.url)||"");if(!a)return r;var o=e.image.fit;return{image:'url("'.concat(a,'")'),size:"repeat"===o?"auto":"stretch"===o?"100% 100%":"contain"===o?"contain":"cover",repeat:"repeat"===o?"repeat":"no-repeat",position:"center"}}var b=["woff2","woff","truetype","opentype"];function m(e,t){return t.split(",").map(function(t){return"".concat(e," ").concat(t.trim())}).join(",")}function g(e){var t=s(e);return"backdrop-filter:blur(".concat(t,"px);-webkit-backdrop-filter:blur(").concat(t,"px);")}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var h={晴空:["#e0f2fe","#ede9fe"],暖阳:["#fff7ed","#ffedd5","#fed7aa"],极光:["#c7d2fe","#a7f3d0","#fbcfe8"],海洋:["#cffafe","#bae6fd","#a5b4fc"],薄荷:["#d1fae5","#a7f3d0"],樱粉:["#fce7f3","#fbcfe8","#ddd6fe"],深夜:["#1e293b","#0f172a"]},v=[{label:"系统默认",value:""},{label:"无衬线(苹方/雅黑)",value:'"PingFang SC","Microsoft YaHei","Hiragino Sans GB","Segoe UI",Roboto,system-ui,sans-serif'},{label:"思源黑体",value:'"Source Han Sans SC","Noto Sans CJK SC","PingFang SC","Microsoft YaHei",sans-serif'},{label:"衬线(宋体)",value:'"Songti SC","Noto Serif CJK SC","SimSun",Georgia,"Times New Roman",serif'},{label:"楷体",value:'"Kaiti SC","STKaiti","KaiTi","Noto Serif CJK SC",serif'},{label:"圆体",value:'"Yuanti SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif'},{label:"等宽(代码)",value:'"SF Mono","JetBrains Mono","Fira Code",Consolas,"Courier New",monospace'}],w={enabled:!1,background:{type:"gradient",color:"#eef2f7",gradient:{preset:"晴空",angle:135,colors:h["晴空"]},image:{url:"",fit:"cover",position:"center"},dim:0},card:{glass:!0,opacity:72,blur:12,border:!0},header:{enabled:!1,style:"frosted",color:"#ffffff",opacity:90,blur:14,text:"dark"},sider:{enabled:!1,style:"frosted",color:"#ffffff",opacity:86,blur:16,text:"dark"},font:{enabled:!1,source:"system",family:v[1].value,upload:{url:"",name:"",format:""}},scrollbar:{enabled:!1,mode:"always"}},E={enabled:!1,background:{type:"gradient",color:"#1e293b",gradient:{preset:"暖阳",angle:135,colors:h["暖阳"]},image:{url:"",fit:"cover",position:"center"},dim:15},card:{glass:!0,opacity:70,blur:18,radius:18,shadow:!0}};function S(e){return null!=e&&(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"&&!Array.isArray(e)}function x(e,t){if(!S(e))return void 0===t?e:t;var r=Array.isArray(e)?function(e){if(Array.isArray(e))return y(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e){if(e){if("string"==typeof e)return y(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return y(e,void 0)}}(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}():function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},e),n=!0,a=!1,o=void 0;try{for(var l,i=Object.keys(e)[Symbol.iterator]();!(n=(l=i.next()).done);n=!0){var c=l.value;S(e[c])?r[c]=x(e[c],null==t?void 0:t[c]):t&&void 0!==t[c]&&(r[c]=t[c])}}catch(e){a=!0,o=e}finally{try{n||null==i.return||i.return()}finally{if(a)throw o}}return r}function O(e){return{app:x(w,null==e?void 0:e.app),login:x(E,null==e?void 0:e.login)}}function k(e,t,r,n,a,o,l){try{var i=e[o](l),c=i.value}catch(e){r(e);return}i.done?t(c):Promise.resolve(c).then(n,a)}function C(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var j="extra-theme-style",P="EXTRA_THEME_CACHE",T=function(){var e;function t(e,r){if(!(this instanceof t))throw TypeError("Cannot call a class as a function");C(this,"request",void 0),C(this,"selectors",void 0),this.request=e,this.selectors=r}return e=[{key:"start",value:function(){var e=this;try{var t=localStorage.getItem(P);t&&this.apply(O(JSON.parse(t)))}catch(e){}this.refresh(),window.addEventListener("extra-theme:changed",function(){return e.refresh()})}},{key:"refresh",value:function(){var e;return(e=function(){var e,t,r,n,a;return function(e,t){var r,n,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(o=0)),o;)try{if(r=1,n&&(a=2&u[0]?n.return:u[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,u[1])).done)return a;switch(n=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,n=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){o.label=u[1];break}if(6===u[0]&&o.label<a[1]){o.label=a[1],a=u;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(u);break}a[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],n=0}finally{r=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),[4,this.request({url:"extraTheme:getPublic",method:"get"})];case 1:a=O(null!=(e=null!=(t=null==(n=o.sent())||null==(r=n.data)?void 0:r.data)?t:null==n?void 0:n.data)?e:{});try{localStorage.setItem(P,JSON.stringify(a))}catch(e){}return this.apply(a),[3,3];case 2:return o.sent(),[3,3];case 3:return[2]}})},function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function l(e){k(o,n,a,l,i,"next",e)}function i(e){k(o,n,a,l,i,"throw",e)}l(void 0)})}).call(this)}},{key:"apply",value:function(e){var t,r=document.body;if(r){r.classList.toggle("extra-theme-app-on",!!((o=e.app).enabled||o.header.enabled||o.sider.enabled||(null==(l=o.font)?void 0:l.enabled)||(null==(u=o.scrollbar)?void 0:u.enabled))),r.classList.toggle("extra-theme-login-on",!!(null==(t=e.login)?void 0:t.enabled));var o,l,u,f,y=document.getElementById(j);y||((y=document.createElement("style")).id=j,document.head.appendChild(y)),y.textContent=(f=this.selectors,(function(e,t){var r,o,l="body.extra-theme-app-on",u=[];if(e.enabled&&(u.push("".concat(l,"{").concat(function(e){var t=d(e),r=t.image,n=s(e.dim);if(n>0&&"none"!==e.type){var a=c("#000000",n/100);r="linear-gradient(".concat(a,",").concat(a,"),").concat(t.image)}return"background:".concat(r,"!important;")+"background-size:".concat(t.size,"!important;")+"background-repeat:".concat(t.repeat,"!important;")+"background-position:".concat(t.position,"!important;")+"background-attachment:fixed!important;"}(e.background),"}")),u.push("".concat(l," .ant-layout-sider-children{top:auto!important;bottom:0!important;}")),u.push("".concat(m(l,t.content),"{background:transparent!important;}")),u.push("".concat(m(l,t.card+" div:not([class]):not([id])"),"{background-color:transparent!important;}")),e.card.glass&&e.card.blur>0&&u.push("".concat(m(l,t.card),",").concat(l," .code-block{").concat(g(e.card.blur),"}"))),e.header.enabled){var f=p(e.header.color,e.header.opacity/100),y="frosted"===e.header.style&&e.header.blur>0?g(e.header.blur):"";u.push("".concat(l," .ant-layout-header,").concat(l," .ant-pro-layout-header{background:").concat(f,"!important;").concat(y,"}"))}var h=e.font;if(null==h?void 0:h.enabled){if("upload"===h.source&&(null==(o=h.upload)?void 0:o.url)){var v=n(h.upload.name||"").replace(/["']/g,"")||"ExtraTheme Font",w=i(h.upload.url),E=b.includes(h.upload.format)?h.upload.format:a(h.upload.url);w&&(u.push('@font-face{font-family:"'.concat(v,'";src:url("').concat(w,'")').concat(E?' format("'.concat(E,'")'):"",";font-display:swap;}")),u.push("".concat(l,'{font-family:"').concat(v,'"!important;}')))}else if("upload"!==h.source){var S=n(h.family||"");S&&u.push("".concat(l,"{font-family:").concat(S,"!important;}"))}}if(e.sider.enabled){var x=p(e.sider.color,e.sider.opacity/100),O="frosted"===e.sider.style&&e.sider.blur>0?g(e.sider.blur):"";u.push("".concat(l," .ant-layout-sider{background:transparent!important;}")+"".concat(l," .ant-layout-sider-children{background:").concat(x,"!important;border-right:none!important;").concat(O,"}")+"".concat(l," .ant-layout-sider .ant-menu{background:transparent!important;border-inline-end:none!important;}")+"".concat(l," .ant-layout-sider .ant-menu::-webkit-scrollbar{width:6px;height:6px;}")+"".concat(l," .ant-layout-sider .ant-menu::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.18);border-radius:4px;}")+"".concat(l," .ant-layout-sider .ant-menu::-webkit-scrollbar-track{background:transparent;}"))}return(null==(r=e.scrollbar)?void 0:r.enabled)&&("hidden"===e.scrollbar.mode?u.push("".concat(l," ::-webkit-scrollbar,").concat(l,"::-webkit-scrollbar{display:none;width:0;height:0;}")+"".concat(l,",").concat(l," *{scrollbar-width:none;-ms-overflow-style:none;}")):u.push("".concat(l," ::-webkit-scrollbar,").concat(l,"::-webkit-scrollbar{width:10px;height:10px;}")+"".concat(l," ::-webkit-scrollbar-thumb,").concat(l,"::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.22);border-radius:8px;border:2px solid transparent;background-clip:content-box;}")+"".concat(l," ::-webkit-scrollbar-thumb:hover,").concat(l,"::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,0.4);background-clip:content-box;}")+"".concat(l," ::-webkit-scrollbar-track,").concat(l,"::-webkit-scrollbar-track{background:transparent;}"))),u.join("\n")})(e.app,f.app).trim())}}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(t.prototype,e),t}(),_={app:{appRoot:".ant-layout",header:".ant-layout-header",sider:".ant-layout-sider",card:".ant-card",content:'.ant-pro-layout-content,.ant-pro-layout-container,.ant-layout-content,.ant-page-header,[class*="nb-subpages-slot"],[class*="nb-subpages-slot"]>div'},login:{loginRoot:".ant-layout",loginCard:".ant-card"}},I=l(155),B=l.n(I),A=l(59);function z(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}var F={Table:{colorBgContainer:"#ffffff"},Input:{colorBgContainer:"#ffffff"},InputNumber:{colorBgContainer:"#ffffff"},Select:{colorBgContainer:"#ffffff"},TreeSelect:{colorBgContainer:"#ffffff"},Cascader:{colorBgContainer:"#ffffff"},Mentions:{colorBgContainer:"#ffffff"},DatePicker:{colorBgContainer:"#ffffff"}},R=["colorBgContainer","colorBgLayout","fontFamily"],U=l(953),D="@amo/plugin-extratheme";function M(){var e=(0,U.useTranslation)([D,"client"]).t;return function(t,r){return e(t,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({ns:D},r))}}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function N(e,t,r,n,a,o,l){try{var i=e[o](l),c=i.value}catch(e){r(e);return}i.done?t(c):Promise.resolve(c).then(n,a)}function $(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function l(e){N(o,n,a,l,i,"next",e)}function i(e){N(o,n,a,l,i,"throw",e)}l(void 0)})}}function q(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function W(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function H(e){return function(e){if(Array.isArray(e))return L(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||J(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function J(e,t){if(e){if("string"==typeof e)return L(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return L(e,t)}}function K(e,t){var r,n,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(o=0)),o;)try{if(r=1,n&&(a=2&u[0]?n.return:u[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,u[1])).done)return a;switch(n=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,n=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){o.label=u[1];break}if(6===u[0]&&o.label<a[1]){o.label=a[1],a=u;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(u);break}a[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],n=0}finally{r=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}function G(e){var t;return"string"==typeof e?e:(null==e||null==(t=e.toHexString)?void 0:t.call(e))||"#ffffff"}var Y=function(e){var t=e.label,r=e.value,n=e.children;return B().createElement("div",{style:{marginBottom:14}},B().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:7}},B().createElement("span",{style:{fontSize:12.5,color:"#475569"}},t),null!=r&&B().createElement("span",{style:{fontSize:12,fontWeight:600,color:"#6d5ae6",fontVariantNumeric:"tabular-nums"}},r)),n)},V=function(e){var t=e.title,r=e.right,n=e.children,a=e.first;return B().createElement("div",{style:{marginTop:18*!a,paddingTop:16*!a,borderTop:a?"none":"1px solid rgba(0,0,0,0.05)"}},t&&B().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:12}},B().createElement("span",{style:{fontSize:12.5,fontWeight:700,color:"#0f172a"}},t),r),n)},X=function(e){var t=e.title,r=e.right,n=e.children,a=e.style;return B().createElement("div",{style:q({flex:"1 1 300px",minWidth:280,background:"#fff",borderRadius:14,border:"1px solid rgba(15,23,42,0.08)",boxShadow:"0 1px 3px rgba(15,23,42,0.04)",padding:"16px 20px 20px",alignSelf:"stretch"},a)},B().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:16,paddingBottom:13,borderBottom:"1px solid rgba(15,23,42,0.07)"}},B().createElement("b",{style:{fontSize:14,letterSpacing:.2,color:"#0f172a"}},t),r),n)},Z=function(e){return e?{}:{opacity:.4,pointerEvents:"none",filter:"grayscale(0.4)"}},Q=function(e){var t,r=e.bg,n=e.onChange,a=e.uploadImage,o=e.first,l=M(),i=function(e){return n(q({},r,e))},c=Object.keys(h),u=!c.includes(r.gradient.preset);return B().createElement(V,{title:l("背景"),first:o},B().createElement(Y,{label:l("类型")},B().createElement(A.Segmented,{block:!0,size:"small",value:r.type,onChange:function(e){return i({type:e})},options:[{label:l("纯色"),value:"color"},{label:l("渐变"),value:"gradient"},{label:l("图片"),value:"image"}]})),"color"===r.type&&B().createElement(Y,{label:l("背景颜色")},B().createElement(A.ColorPicker,{value:r.color,onChangeComplete:function(e){return i({color:G(e)})},showText:!0,disabledAlpha:!0})),"gradient"===r.type&&B().createElement(B().Fragment,null,B().createElement(Y,{label:l("渐变预设")},B().createElement(A.Select,{style:{width:"100%"},value:u?"__custom__":r.gradient.preset,onChange:function(e){"__custom__"===e?i({gradient:W(q({},r.gradient),{preset:"自定义"})}):i({gradient:W(q({},r.gradient),{preset:e,colors:h[e]})})},options:H(c.map(function(e){return{label:e,value:e}})).concat([{label:l("自定义"),value:"__custom__"}])})),B().createElement(Y,{label:l("角度"),value:"".concat(r.gradient.angle,"\xb0")},B().createElement(A.Slider,{min:0,max:360,value:r.gradient.angle,onChange:function(e){return i({gradient:W(q({},r.gradient),{angle:e})})}})),u&&B().createElement(Y,{label:l("自定义色标")},B().createElement("div",{style:{display:"flex",gap:8}},B().createElement(A.ColorPicker,{disabledAlpha:!0,value:r.gradient.colors[0]||"#ffffff",onChangeComplete:function(e){return i({gradient:W(q({},r.gradient),{colors:[G(e),r.gradient.colors[1]||"#ffffff"]})})}}),B().createElement(A.ColorPicker,{disabledAlpha:!0,value:r.gradient.colors[1]||"#ffffff",onChangeComplete:function(e){return i({gradient:W(q({},r.gradient),{colors:[r.gradient.colors[0]||"#ffffff",G(e)]})})}})))),"image"===r.type&&B().createElement(B().Fragment,null,B().createElement(Y,{label:l("图片 URL")},B().createElement(A.Input,{value:r.image.url,placeholder:"https://…",onChange:function(e){return i({image:W(q({},r.image),{url:e.target.value})})},addonAfter:a?B().createElement(A.Upload,{showUploadList:!1,beforeUpload:function(e){return $(function(){var t;return K(this,function(n){switch(n.label){case 0:return[4,a(e)];case 1:return(t=n.sent())&&i({image:W(q({},r.image),{url:t})}),[2,!1]}})})()}},B().createElement("span",{style:{cursor:"pointer"}},l("上传"))):null})),(t=r.image.url||"",!!/^https?:/i.test(t)&&(/[?&](X-Amz-(Signature|Expires|Credential)|OSSAccessKeyId|q-signature|q-sign-time)=/i.test(t)||/[?&](Signature|sig)=/i.test(t)&&/[?&](Expires|se)=/i.test(t))&&B().createElement("div",{style:{margin:"-4px 0 12px",padding:"8px 10px",borderRadius:8,background:"#fff7ed",border:"1px solid #fed7aa",fontSize:11.5,color:"#c2410c",lineHeight:1.6}},l("⚠ 当前图片是临时签名链接,过期后会 403 失效。请点上方“上传”重新选择图片,将改为内联存储,永不过期。"))),B().createElement(Y,{label:l("铺法")},B().createElement(A.Segmented,{block:!0,size:"small",value:r.image.fit,onChange:function(e){return i({image:W(q({},r.image),{fit:e})})},options:[{label:l("铺满"),value:"cover"},{label:l("适应"),value:"contain"},{label:l("拉伸"),value:"stretch"},{label:l("平铺"),value:"repeat"}]}))),B().createElement(Y,{label:l("暗化遮罩"),value:"".concat(r.dim,"%")},B().createElement(A.Slider,{min:0,max:80,value:r.dim,onChange:function(e){return i({dim:e})}})))},ee=function(e){var t=e.card,r=e.onChange,n=M(),a=function(e){return r(q({},t,e))};return B().createElement(V,{title:n("内容区卡片"),right:B().createElement(A.Switch,{size:"small",checked:t.glass,onChange:function(e){return a({glass:e})}})},B().createElement("div",{style:Z(t.glass)},B().createElement(Y,{label:n("卡片不透明度"),value:"".concat(t.opacity,"%")},B().createElement(A.Slider,{min:10,max:100,value:t.opacity,onChange:function(e){return a({opacity:e})}})),B().createElement(Y,{label:n("背景模糊"),value:"".concat(t.blur,"px")},B().createElement(A.Slider,{min:0,max:40,value:t.blur,onChange:function(e){return a({blur:e})}})),B().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"}},B().createElement("span",{style:{fontSize:12.5,color:"#475569"}},n("浅色描边")),B().createElement(A.Switch,{size:"small",checked:t.border,onChange:function(e){return a({border:e})}}))))},et=function(e){var t=e.scrollbar,r=e.onChange,n=M(),a=function(e){return r(q({},t,e))};return B().createElement(V,{title:n("滚动条"),right:B().createElement(A.Switch,{size:"small",checked:t.enabled,onChange:function(e){return a({enabled:e})}})},B().createElement("div",{style:Z(t.enabled)},B().createElement(Y,{label:n("显示方式")},B().createElement(A.Segmented,{block:!0,size:"small",value:t.mode,onChange:function(e){return a({mode:e})},options:[{label:n("始终显示"),value:"always"},{label:n("始终隐藏"),value:"hidden"}]})),B().createElement("div",{style:{fontSize:11,color:"#94a3b8",marginTop:2,lineHeight:1.6}},n("“始终显示”为常驻细滚动条;“始终隐藏”完全隐藏滚动条(内容仍可滚动)。"))))},er=function(e){var t=e.nav,r=e.onChange,n=M(),a=function(e){return r(q({},t,e))};return B().createElement(V,{first:!0},B().createElement(Y,{label:n("背景颜色")},B().createElement(A.ColorPicker,{value:t.color,onChangeComplete:function(e){return a({color:G(e)})},showText:!0,disabledAlpha:!0})),B().createElement(Y,{label:n("风格")},B().createElement(A.Segmented,{block:!0,size:"small",value:t.style,onChange:function(e){return a({style:e})},options:[{label:n("实色"),value:"solid"},{label:n("毛玻璃"),value:"frosted"}]})),B().createElement(Y,{label:n("不透明度"),value:"".concat(t.opacity,"%")},B().createElement(A.Slider,{min:0,max:100,value:t.opacity,onChange:function(e){return a({opacity:e})}})),B().createElement(Y,{label:n("背景模糊"),value:"".concat(t.blur,"px")},B().createElement(A.Slider,{min:0,max:40,value:t.blur,disabled:"frosted"!==t.style,onChange:function(e){return a({blur:e})}})))},en=function(e){var t,r=e.font,n=e.onChange,a=e.uploadFont,o=M(),l=function(e){return n(q({},r,e))},i=v.some(function(e){return e.value===r.family}),c=function(e){if(Array.isArray(e))return e}(t=B().useState(!i))||function(e){var t,r,n=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(t=n.next()).done)&&(a.push(t.value),2!==a.length);o=!0);}catch(e){l=!0,r=e}finally{try{o||null==n.return||n.return()}finally{if(l)throw r}}return a}}(t)||J(t,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),u=c[0],s=c[1],f=B().useRef(r.family);B().useEffect(function(){r.family!==f.current&&(f.current=r.family,s(!v.some(function(e){return e.value===r.family})))},[r.family]);var p=function(e){f.current=e,l({family:e})},d=u||!i,b=r.upload;B().useEffect(function(){var e=window.FontFace;if("upload"===r.source&&(null==b?void 0:b.url)&&(null==b?void 0:b.name)&&e&&document.fonts)try{new e(b.name,'url("'.concat(b.url,'")')).load().then(function(e){return document.fonts.add(e)}).catch(function(){})}catch(e){}},[r.source,null==b?void 0:b.url,null==b?void 0:b.name]);var m=function(e){return $(function(){var t;return K(this,function(o){switch(o.label){case 0:if(!a)return[3,2];return[4,a(e)];case 1:(t=o.sent()).url&&n(W(q({},r),{upload:t})),o.label=2;case 2:return[2,!1]}})})()},g="upload"===r.source&&(null==b?void 0:b.url)?'"'.concat(b.name,'"'):r.family||void 0;return B().createElement(V,{first:!0},B().createElement(Y,{label:o("字体来源")},B().createElement(A.Segmented,{block:!0,size:"small",value:r.source,onChange:function(e){return l({source:e})},options:[{label:o("系统字体"),value:"system"},{label:o("上传字体"),value:"upload"}]})),"system"===r.source?B().createElement(B().Fragment,null,B().createElement(Y,{label:o("字体")},B().createElement(A.Select,{style:{width:"100%"},value:d?"__custom__":r.family,onChange:function(e){"__custom__"===e?s(!0):(s(!1),p(e))},options:H(v.map(function(e){return{label:e.label,value:e.value}})).concat([{label:o("自定义"),value:"__custom__"}])})),d&&B().createElement(Y,{label:o("自定义字体")},B().createElement(A.Input,{value:r.family,placeholder:'"Font Name", sans-serif',onChange:function(e){return p(e.target.value)}}))):(null==b?void 0:b.url)?B().createElement(B().Fragment,null,B().createElement(Y,{label:o("字体名称")},B().createElement(A.Input,{value:b.name,placeholder:"Custom Font",onChange:function(e){var t;return t={name:e.target.value},n(W(q({},r),{upload:q({},r.upload,t)}))}})),B().createElement("div",{style:{display:"flex",gap:12,alignItems:"center",marginBottom:14}},B().createElement("span",{style:{fontSize:12,color:"#16a34a"}},o("已上传"),b.format?" \xb7 ".concat(b.format):""),B().createElement(A.Upload,{showUploadList:!1,accept:".ttf,.otf,.woff,.woff2",beforeUpload:m},B().createElement(A.Button,{type:"link",size:"small",style:{padding:0}},o("重新上传"))),B().createElement(A.Button,{type:"link",size:"small",danger:!0,style:{padding:0},onClick:function(){return n(W(q({},r),{upload:{url:"",name:"",format:""}}))}},o("移除")))):B().createElement(Y,{label:o("上传字体文件")},B().createElement(A.Upload,{showUploadList:!1,accept:".ttf,.otf,.woff,.woff2",beforeUpload:m},B().createElement(A.Button,{size:"small"},o("选择字体文件")))),B().createElement("div",{style:{marginTop:12,padding:"14px 16px",borderRadius:10,background:"#f8fafc",border:"1px solid rgba(15,23,42,0.06)",fontFamily:g}},B().createElement("div",{style:{fontSize:19,fontWeight:700,color:"#0f172a",lineHeight:1.4}},o("字体预览")," Aa 永和"),B().createElement("div",{style:{fontSize:13,color:"#475569",marginTop:5}},"中文示例文本 \xb7 The quick brown fox \xb7 0123456789")),B().createElement("div",{style:{fontSize:11,color:"#94a3b8",marginTop:8,lineHeight:1.6}},o("upload"===r.source?"提示:上传字体对所有访问者生效,无需本机安装;中文字体文件较大,建议使用 woff2 或先做子集化以加快加载。":"提示:字体需系统已安装才生效;“无衬线/系统默认”通常与本机默认字体一致,选“楷体/宋体”等可看到明显变化。")))},ea=function(e){var t=e.app,r=e.onChange,n=e.uploadImage,a=e.uploadFont,o=M(),l={flex:"0 0 auto"};return B().createElement("div",{style:{display:"flex",gap:20,flexWrap:"wrap",alignItems:"stretch"}},B().createElement(X,{title:o("工作区外观"),right:B().createElement(A.Switch,{checked:t.enabled,onChange:function(e){return r(W(q({},t),{enabled:e}))}})},B().createElement("div",{style:Z(t.enabled)},B().createElement(Q,{first:!0,bg:t.background,onChange:function(e){return r(W(q({},t),{background:e}))},uploadImage:n}),B().createElement(ee,{card:t.card,onChange:function(e){return r(W(q({},t),{card:e}))}})),B().createElement(et,{scrollbar:t.scrollbar,onChange:function(e){return r(W(q({},t),{scrollbar:e}))}})),B().createElement("div",{style:{flex:"1 1 300px",minWidth:280,display:"flex",flexDirection:"column",gap:20}},B().createElement(X,{style:l,title:o("顶部导航栏"),right:B().createElement(A.Switch,{checked:t.header.enabled,onChange:function(e){return r(W(q({},t),{header:W(q({},t.header),{enabled:e})}))}})},B().createElement("div",{style:Z(t.header.enabled)},B().createElement(er,{nav:t.header,onChange:function(e){return r(W(q({},t),{header:e}))}}))),B().createElement(X,{style:l,title:o("侧边导航栏"),right:B().createElement(A.Switch,{checked:t.sider.enabled,onChange:function(e){return r(W(q({},t),{sider:W(q({},t.sider),{enabled:e})}))}})},B().createElement("div",{style:Z(t.sider.enabled)},B().createElement(er,{nav:t.sider,onChange:function(e){return r(W(q({},t),{sider:e}))}})))),B().createElement(X,{title:o("全局字体"),right:B().createElement(A.Switch,{checked:t.font.enabled,onChange:function(e){return r(W(q({},t),{font:W(q({},t.font),{enabled:e})}))}})},B().createElement("div",{style:Z(t.font.enabled)},B().createElement(en,{font:t.font,onChange:function(e){return r(W(q({},t),{font:e}))},uploadFont:a}))))};function eo(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function el(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function ei(e){var t=d(e),r=t.image;if(e.dim>0&&"none"!==e.type){var n=c("#000000",e.dim/100);r="linear-gradient(".concat(n,",").concat(n,"),").concat(t.image)}return{background:r,backgroundSize:t.size,backgroundRepeat:t.repeat,backgroundPosition:t.position}}function ec(e){var t="frosted"===e.style&&e.blur>0?"blur(".concat(e.blur,"px)"):void 0;return{background:p(e.color,e.opacity/100),backdropFilter:t,WebkitBackdropFilter:t,color:"light"===e.text?"#f8fafc":"#1f2733"}}var eu={position:"relative",height:300,borderRadius:12,overflow:"hidden",border:"1px solid rgba(0,0,0,0.08)",boxShadow:"0 8px 30px rgba(0,0,0,0.12)"},es=function(e){var t=e.scope,r=e.app,n=e.login,a=M();if("app"===t){var o,l=r.enabled&&r.card.glass?{flex:1,borderRadius:10,padding:12,background:c("#ffffff",r.card.opacity/100),backdropFilter:r.card.blur>0?"blur(".concat(r.card.blur,"px)"):void 0,WebkitBackdropFilter:r.card.blur>0?"blur(".concat(r.card.blur,"px)"):void 0,border:r.card.border?"1px solid rgba(255,255,255,0.5)":"1px solid transparent",color:"#1f2733",fontSize:12}:{flex:1,borderRadius:10,padding:12,background:"#fff",border:"1px solid rgba(0,0,0,0.06)",color:"#1f2733",fontSize:12},i={background:"#fff",border:"1px solid rgba(0,0,0,0.12)",borderRadius:6},u=(null==(o=r.font)?void 0:o.enabled)&&r.font.family?r.font.family:void 0;return B().createElement("div",{style:eo(el(eo({},eu),{fontFamily:u}),r.enabled?ei(r.background):{background:"#f0f2f5"})},B().createElement("div",{style:eo({height:40,display:"flex",alignItems:"center",padding:"0 14px",fontWeight:700,fontSize:13},r.header.enabled?ec(r.header):{background:"#fff",color:"#1f2733"})},"NocoBase",B().createElement("span",{style:{marginLeft:"auto",display:"flex",gap:14,fontWeight:500,opacity:.85}},B().createElement("span",null,a("概览")),B().createElement("span",null,a("数据")),B().createElement("span",null,a("设置")))),B().createElement("div",{style:{display:"flex",height:"calc(100% - 40px)"}},B().createElement("div",{style:eo({width:92,padding:10,display:"flex",flexDirection:"column",gap:8,fontSize:12},r.sider.enabled?ec(r.sider):{background:"#fff",color:"#1f2733"})},B().createElement("div",{style:{fontWeight:700}},a("菜单")),B().createElement("div",{style:{opacity:.8}},a("概览")),B().createElement("div",{style:{opacity:.8}},a("订单")),B().createElement("div",{style:{opacity:.8}},a("报表"))),B().createElement("div",{style:{flex:1,padding:12,display:"flex",flexDirection:"column",gap:10}},B().createElement("div",{style:el(eo({},l),{display:"flex",flexDirection:"column",gap:6})},B().createElement("span",null,a("内容卡片")," A"),B().createElement("div",{style:el(eo({},i),{height:22})}),B().createElement("div",{style:el(eo({},i),{overflow:"hidden"})},B().createElement("div",{style:{height:16,borderBottom:"1px solid rgba(0,0,0,0.07)"}}),B().createElement("div",{style:{height:16}}))),B().createElement("div",{style:{display:"flex",gap:10,flex:1}},B().createElement("div",{style:l},"B"),B().createElement("div",{style:l},"C")))))}var s=n.card,f={width:220,padding:"22px 20px",borderRadius:s.radius,background:c("#ffffff",s.opacity/100),backdropFilter:s.glass&&s.blur>0?"blur(".concat(s.blur,"px)"):void 0,WebkitBackdropFilter:s.glass&&s.blur>0?"blur(".concat(s.blur,"px)"):void 0,boxShadow:s.shadow?"0 24px 70px rgba(15,23,42,0.28)":"none",color:"#1f2733",textAlign:"center"},p={height:30,borderRadius:8,background:"rgba(255,255,255,0.6)",border:"1px solid rgba(0,0,0,0.1)",margin:"8px 0"};return B().createElement("div",{style:eo(el(eo({},eu),{display:"flex",alignItems:"center",justifyContent:"center"}),n.enabled?ei(n.background):{background:"#f0f2f5"})},B().createElement("div",{style:f},B().createElement("div",{style:{fontWeight:800,fontSize:16,marginBottom:4}},"NocoBase"),B().createElement("div",{style:{fontSize:11,opacity:.7,marginBottom:10}},a("欢迎登录")),B().createElement("div",{style:p}),B().createElement("div",{style:p}),B().createElement("div",{style:{height:32,borderRadius:8,background:"#6d5ae6",color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:12,marginTop:6}},a("登录"))))};function ef(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function ep(e,t,r,n,a,o,l){try{var i=e[o](l),c=i.value}catch(e){r(e);return}i.done?t(c):Promise.resolve(c).then(n,a)}function ed(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function l(e){ep(o,n,a,l,i,"next",e)}function i(e){ep(o,n,a,l,i,"throw",e)}l(void 0)})}}function eb(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function em(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function eg(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(r=a.next()).done)&&(o.push(r.value),!t||o.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw n}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ef(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ef(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ey(e,t){var r,n,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(o=0)),o;)try{if(r=1,n&&(a=2&u[0]?n.return:u[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,u[1])).done)return a;switch(n=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,n=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){o.label=u[1];break}if(6===u[0]&&o.label<a[1]){o.label=a[1],a=u;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(u);break}a[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],n=0}finally{r=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}var eh="amo-extratheme";function ev(e){return new Promise(function(t,r){var n=new FileReader;n.onerror=function(){return r(n.error||Error("read failed"))},n.onload=function(){var a,o=String(n.result||""),l=o.indexOf(","),i=l>=0?o.slice(l+1):"";if(!i)return r(Error("empty"));var c=e.type||({png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",avif:"image/avif",bmp:"image/bmp",svg:"image/svg+xml",woff2:"font/woff2",woff:"font/woff",ttf:"font/ttf",otf:"font/otf",ttc:"font/collection"})[((null==(a=(e.name||"").split("?")[0].split("#")[0].match(/\.([a-z0-9]+)$/i))?void 0:a[1])||"").toLowerCase()]||"application/octet-stream";t("data:".concat(c,";base64,").concat(i))},n.readAsDataURL(e)})}var ew=function(){var t=M(),r=(0,e.useAPIClient)(),o=(0,e.useGlobalTheme)(),l=o.setTheme,i=o.theme,u=eg((0,I.useState)(function(){return O({})}),2),s=u[0],f=u[1],p=eg((0,I.useState)(!0),2),d=p[0],b=p[1],m=eg((0,I.useState)(!1),2),g=m[0],y=m[1];return((0,I.useEffect)(function(){var e=!0;return ed(function(){var t,n,a,o;return ey(this,function(l){switch(l.label){case 0:return l.trys.push([0,2,3,4]),[4,r.request({url:"extraTheme:getPublic",method:"get"})];case 1:return o=null!=(t=null==(a=l.sent())||null==(n=a.data)?void 0:n.data)?t:{},e&&f(O(o)),[3,4];case 2:return l.sent(),[3,4];case 3:return e&&b(!1),[7];case 4:return[2]}})})(),function(){e=!1}},[r]),d)?B().createElement("div",{style:{padding:60,textAlign:"center"}},B().createElement(A.Spin,null)):B().createElement("div",{style:{padding:4,width:"100%"}},B().createElement(ea,{app:s.app,onChange:function(e){return f(em(eb({},s),{app:e}))},uploadImage:function(e){return ed(function(){var r;return ey(this,function(n){switch(n.label){case 0:if(n.trys.push([0,2,,3]),e.size>1048576)return A.message.error(t("图片过大,上限 1MB。背景图会内联进主题配置,请压缩后再上传(推荐 WebP,≤400KB)。")),[2,""];return[4,ev(e)];case 1:return r=n.sent(),e.size>409600&&A.message.warning(t("图片较大,已内联进配置;建议压缩到 400KB 以内。")),A.message.success(t("已内联,不依赖存储、永不过期")),[2,r];case 2:return n.sent(),A.message.error(t("上传失败")),[2,""];case 3:return[2]}})})()},uploadFont:function(e){return ed(function(){var r,n,o,l;return ey(this,function(i){switch(i.label){case 0:r={url:"",name:"",format:""},i.label=1;case 1:if(i.trys.push([1,3,,4]),e.size>1048576)return A.message.error(t("字体文件过大,上限 1MB。字体会内联进主题配置,请使用子集化后的 woff2。")),[2,r];return[4,ev(e)];case 2:return n=i.sent(),o=(e.name||"Custom Font").replace(/\.[^.]+$/,"")||"Custom Font",l=a(e.name),A.message.success(t("已内联,不依赖存储、永不过期")),[2,{url:n,name:o,format:l}];case 3:return i.sent(),A.message.error(t("上传失败")),[2,r];case 4:return[2]}})})()}}),B().createElement(A.Space,{style:{marginTop:20}},B().createElement(A.Button,{type:"primary",loading:g,onClick:function(){return ed(function(){return ey(this,function(a){switch(a.label){case 0:y(!0),a.label=1;case 1:return a.trys.push([1,4,5,6]),[4,r.request({url:"extraTheme:set",method:"post",data:{scope:"app",config:s.app}})];case 2:var o;return a.sent(),[4,(o=s.app,ed(function(){var t,a,u,s,f,p,d,b,m,g,y;return ey(this,function(h){switch(h.label){case 0:a=t=function(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};arguments.length>2&&void 0!==arguments[2]&&arguments[2];var a=z({},r),o=!0,l=!1,i=void 0;try{for(var u,s=R[Symbol.iterator]();!(o=(u=s.next()).done);o=!0){var f=u.value;delete a[f]}}catch(e){l=!0,i=e}finally{try{o||null==s.return||s.return()}finally{if(l)throw i}}a.colorBgElevated="#ffffff",e.enabled&&(a.colorBgLayout="transparent",e.card.glass&&(a.colorBgContainer=c("#ffffff",e.card.opacity/100)));var p=e.font;if(null==p?void 0:p.enabled){if("upload"===p.source&&(null==(t=p.upload)?void 0:t.url)){var d=n(p.upload.name||"").replace(/["']/g,"");d&&(a.fontFamily='"'.concat(d,'"'))}else if("upload"!==p.source){var b=n(p.family||"");b&&(a.fontFamily=b)}}return{name:"Modern",token:a,components:z({},F),cssVar:!0}}(o,(null==i?void 0:i.token)||(null===e.defaultTheme||void 0===e.defaultTheme?void 0:e.defaultTheme.token)||{},(null===e.defaultTheme||void 0===e.defaultTheme?void 0:e.defaultTheme.token)||{}),h.label=1;case 1:return h.trys.push([1,9,,10]),[4,r.resource("themeConfig").list({filter:{uid:eh},pageSize:1})];case 2:if(b=null==(d=null==(p=h.sent())||null==(s=p.data)||null==(u=s.data)?void 0:u[0])?void 0:d.id,(null==d||null==(f=d.config)?void 0:f.name)&&(a=em(eb({},t),{name:d.config.name})),!d)return[3,4];return[4,r.resource("themeConfig").update({filterByTk:b,values:{config:a,default:!0,optional:!0}})];case 3:return h.sent(),[3,6];case 4:return[4,r.resource("themeConfig").create({values:{config:a,optional:!0,isBuiltIn:!1,uid:eh,default:!0}})];case 5:b=null==(y=h.sent())||null==(g=y.data)||null==(m=g.data)?void 0:m.id,h.label=6;case 6:if(null==b)return[3,8];return[4,r.resource("users").updateTheme({values:{themeId:b}})];case 7:h.sent(),h.label=8;case 8:return[3,10];case 9:return h.sent(),[3,10];case 10:try{null==l||l(a)}catch(e){}return[2]}})})())];case 3:return a.sent(),window.dispatchEvent(new Event("extra-theme:changed")),A.message.success(t("已保存并应用")),[3,6];case 4:return a.sent(),A.message.error(t("保存失败")),[3,6];case 5:return y(!1),[7];case 6:return[2]}})})()}},t("保存并应用")),B().createElement(A.Button,{onClick:function(){return f(em(eb({},s),{app:JSON.parse(JSON.stringify(w))}))}},t("重置本组"))),B().createElement("div",{style:{marginTop:24}},B().createElement("div",{style:{fontSize:12,color:"#94a3b8",marginBottom:8}},t("实时预览")),B().createElement(es,{scope:"app",app:s.app,login:s.login}),B().createElement("div",{style:{fontSize:11,color:"#94a3b8",marginTop:10,lineHeight:1.6}},t("提示:默认关闭,开启总开关并保存后才生效;关闭插件或关闭开关立即恢复原生外观。"))))};function eE(e,t,r,n,a,o,l){try{var i=e[o](l),c=i.value}catch(e){r(e);return}i.done?t(c):Promise.resolve(c).then(n,a)}function eS(e,t,r){return(eS=eC()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var a=new(Function.bind.apply(e,n));return r&&eO(a,r.prototype),a}).apply(null,arguments)}function ex(e){return(ex=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function eO(e,t){return(eO=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function ek(e){var t="function"==typeof Map?new Map:void 0;return(ek=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return eS(e,arguments,ex(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),eO(r,e)})(e)}function eC(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(eC=function(){return!!e})()}var ej="@amo/plugin-extratheme",eP=function(e){var n;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function a(){var e,t;if(!(this instanceof a))throw TypeError("Cannot call a class as a function");return e=a,t=arguments,e=ex(e),function(e,t){var r;if(t&&("object"==((r=t)&&"u">typeof Symbol&&r.constructor===Symbol?"symbol":typeof r)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,eC()?Reflect.construct(e,t||[],ex(this).constructor):e.apply(this,t))}return a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),e&&eO(a,e),n=[{key:"load",value:function(){var e;return(e=function(){var e;return function(e,t){var r,n,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(o=0)),o;)try{if(r=1,n&&(a=2&u[0]?n.return:u[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,u[1])).done)return a;switch(n=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,n=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){o.label=u[1];break}if(6===u[0]&&o.label<a[1]){o.label=a[1],a=u;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(u);break}a[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],n=0}finally{r=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(n){return e=this,this.app.i18n.addResources("zh-CN",ej,t),this.app.i18n.addResources("en-US",ej,r),new T(function(t){return e.app.apiClient.request(t)},_).start(),this.app.addComponents({ExtraThemeSettings:ew}),this.app.pluginSettingsManager.add("extra-theme",{title:this.app.i18n.t("主题增强",{ns:ej}),icon:"BgColorsOutlined",Component:"ExtraThemeSettings",aclSnippet:"pm.extra-theme",sort:500}),[2]})},function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function l(e){eE(o,n,a,l,i,"next",e)}function i(e){eE(o,n,a,l,i,"throw",e)}l(void 0)})}).call(this)}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(a.prototype,n),a}(ek(e.Plugin))}(),f}()});
|
|
10
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react-i18next"),require("react"),require("antd"),require("@nocobase/client")):"function"==typeof define&&define.amd?define("@emotionalamo/plugin-extratheme",["react-i18next","react","antd","@nocobase/client"],t):"object"==typeof exports?exports["@emotionalamo/plugin-extratheme"]=t(require("react-i18next"),require("react"),require("antd"),require("@nocobase/client")):e["@emotionalamo/plugin-extratheme"]=t(e["react-i18next"],e.react,e.antd,e["@nocobase/client"])}(self,function(e,t,r,n){return function(){"use strict";var a={342:function(e){e.exports=n},59:function(e){e.exports=r},155:function(e){e.exports=t},953:function(t){t.exports=e}},o={};function l(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return a[e](r,r.exports,l),r.exports}l.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(t,{a:t}),t},l.d=function(e,t){for(var r in t)l.o(t,r)&&!l.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.g.importScripts&&(i=l.g.location+"");var i,c=l.g.document;if(!i&&c&&(c.currentScript&&"SCRIPT"===c.currentScript.tagName.toUpperCase()&&(i=c.currentScript.src),!i)){var u=c.getElementsByTagName("script");if(u.length)for(var s=u.length-1;s>-1&&(!i||!/^http(s?):/.test(i));)i=u[s--].src}if(!i)throw Error("Automatic publicPath is not supported in this browser");l.p=i.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/");var f={};return!function(){var e="",t="u">typeof document?document.currentScript:null;if(t&&t.src){var r=t.src.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"");r.indexOf("/static/plugins/@emotionalamo/plugin-extratheme/dist/client/")>=0&&(e=r.replace(/\/[^\/]+$/,"/"))}if(!e){var n=window.__webpack_public_path__||"";n&&("/"!==n.charAt(n.length-1)&&(n+="/"),e=n+"static/plugins/@emotionalamo/plugin-extratheme/dist/client/")}if(!e){var a=window.__nocobase_modern_client_prefix__||"v",o="/"+(a=String(a).replace(/^\/+|\/+$/g,"")||"v")+"/";if(!(e=window.__nocobase_public_path__||"")&&window.location&&window.location.pathname){var i=window.location.pathname||"/",c=i.indexOf(o);e=c>=0?i.slice(0,c+1):"/"}e&&(e=e.replace(RegExp("/"+a+"/?$"),"/")),e||(e="/"),"/"!==e.charAt(e.length-1)&&(e+="/"),e+="static/plugins/@emotionalamo/plugin-extratheme/dist/client/"}l.p=e}(),!function(){l.r(f),l.d(f,{default:function(){return eP}});var e=l(342),t=JSON.parse('{"ExtraTheme":"主题增强","主题增强":"主题增强","工作区外观":"工作区外观","登录页外观":"登录页外观","总开关":"总开关","背景":"背景","类型":"类型","纯色":"纯色","渐变":"渐变","图片":"图片","背景颜色":"背景颜色","渐变预设":"渐变预设","自定义":"自定义","角度":"角度","自定义色标":"自定义色标","图片 URL":"图片 URL","需公网可读":"需公网可读","上传":"上传","铺法":"铺法","铺满":"铺满","适应":"适应","拉伸":"拉伸","平铺":"平铺","暗化遮罩":"暗化遮罩","内容区卡片":"内容区卡片","卡片不透明度":"卡片不透明度","背景模糊":"背景模糊","浅色描边":"浅色描边","风格":"风格","实色":"实色","毛玻璃":"毛玻璃","不透明度":"不透明度","文字颜色":"文字颜色","深色":"深色","浅色":"浅色","登录卡片":"登录卡片","圆角":"圆角","投影":"投影","顶部导航栏":"顶部导航栏","侧边导航栏":"侧边导航栏","颜色由主题编辑器管理,这里只叠加透明度与模糊。":"颜色由主题编辑器管理,这里只叠加透明度与模糊。","滚动条":"滚动条","显示方式":"显示方式","始终显示":"始终显示","始终隐藏":"始终隐藏","“始终显示”为常驻细滚动条;“始终隐藏”完全隐藏滚动条(内容仍可滚动)。":"“始终显示”为常驻细滚动条;“始终隐藏”完全隐藏滚动条(内容仍可滚动)。","全局字体":"全局字体","字体":"字体","自定义字体":"自定义字体","字体预览":"预览","字体来源":"字体来源","系统字体":"系统字体","上传字体":"上传字体","上传字体文件":"上传字体文件","选择字体文件":"选择字体文件","字体名称":"字体名称","已上传":"已上传","重新上传":"重新上传","移除":"移除","提示:字体需系统已安装才生效;“无衬线/系统默认”通常与本机默认字体一致,选“楷体/宋体”等可看到明显变化。":"提示:字体需系统已安装才生效;“无衬线/系统默认”通常与本机默认字体一致,选“楷体/宋体”等可看到明显变化。","提示:上传字体对所有访问者生效,无需本机安装;中文字体文件较大,建议使用 woff2 或先做子集化以加快加载。":"提示:上传字体对所有访问者生效,无需本机安装;中文字体文件较大,建议使用 woff2 或先做子集化以加快加载。","上传成功":"上传成功","上传失败":"上传失败","已保存并应用":"已保存并应用","保存失败":"保存失败","保存并应用":"保存并应用","重置本组":"重置本组","实时预览":"实时预览","提示:默认关闭,开启总开关并保存后才生效;关闭插件或关闭开关立即恢复原生外观。":"提示:默认关闭,开启总开关并保存后才生效;关闭插件或关闭开关立即恢复原生外观。","概览":"概览","数据":"数据","设置":"设置","菜单":"菜单","订单":"订单","报表":"报表","内容卡片":"内容卡片","欢迎登录":"欢迎登录","登录":"登录"}'),r=JSON.parse('{"ExtraTheme":"ExtraTheme","主题增强":"ExtraTheme","工作区外观":"Workspace","登录页外观":"Sign-in page","总开关":"Enable","背景":"Background","类型":"Type","纯色":"Solid","渐变":"Gradient","图片":"Image","背景颜色":"Background color","渐变预设":"Preset","自定义":"Custom","角度":"Angle","自定义色标":"Custom stops","图片 URL":"Image URL","需公网可读":"Must be public","上传":"Upload","铺法":"Fit","铺满":"Cover","适应":"Contain","拉伸":"Stretch","平铺":"Repeat","暗化遮罩":"Dim","内容区卡片":"Content cards","卡片不透明度":"Card opacity","背景模糊":"Blur","浅色描边":"Light border","风格":"Style","实色":"Solid","毛玻璃":"Frosted","不透明度":"Opacity","文字颜色":"Text color","深色":"Dark","浅色":"Light","登录卡片":"Login card","圆角":"Radius","投影":"Shadow","顶部导航栏":"Top navigation","侧边导航栏":"Side navigation","颜色由主题编辑器管理,这里只叠加透明度与模糊。":"Color is managed by the theme editor — here you only add opacity and blur.","滚动条":"Scrollbar","显示方式":"Display","始终显示":"Always show","始终隐藏":"Always hide","“始终显示”为常驻细滚动条;“始终隐藏”完全隐藏滚动条(内容仍可滚动)。":"“Always show” is a persistent slim scrollbar; “Always hide” removes the scrollbar (content still scrolls).","全局字体":"Global font","字体":"Font","自定义字体":"Custom font","字体预览":"Preview","字体来源":"Font source","系统字体":"System font","上传字体":"Upload font","上传字体文件":"Upload font file","选择字体文件":"Choose font file","字体名称":"Font name","已上传":"Uploaded","重新上传":"Replace","移除":"Remove","提示:字体需系统已安装才生效;“无衬线/系统默认”通常与本机默认字体一致,选“楷体/宋体”等可看到明显变化。":"The font must be installed on the viewer\'s system. “Sans / System default” usually matches the OS default — pick e.g. Kaiti / Songti to see a clear change.","提示:上传字体对所有访问者生效,无需本机安装;中文字体文件较大,建议使用 woff2 或先做子集化以加快加载。":"An uploaded font works for every viewer without a local install. CJK font files are large — prefer woff2 or subset the font to speed up loading.","上传成功":"Uploaded","上传失败":"Upload failed","已保存并应用":"Saved and applied","保存失败":"Save failed","保存并应用":"Save & apply","重置本组":"Reset","实时预览":"Live preview","提示:默认关闭,开启总开关并保存后才生效;关闭插件或关闭开关立即恢复原生外观。":"Off by default — turn on the switch and save to apply; disabling the plugin or the switch restores the native look instantly.","概览":"Overview","数据":"Data","设置":"Settings","菜单":"Menu","订单":"Orders","报表":"Reports","内容卡片":"Content card","欢迎登录":"Welcome back","登录":"Sign in"}');function n(e){var t=(e||"").replace(/[;{}<>\\/*]/g,"").replace(/[\r\n\t]+/g," ").trim();return(t.match(/"/g)||[]).length%2&&(t=t.replace(/"/g,"")),(t.match(/'/g)||[]).length%2&&(t=t.replace(/'/g,"")),t.slice(0,200)}function a(e){var t;return({woff2:"woff2",woff:"woff",ttf:"truetype",otf:"opentype",ttc:"truetype"})[((null==(t=(e||"").split("?")[0].split("#")[0].match(/\.([a-z0-9]+)$/i))?void 0:t[1])||"").toLowerCase()]||""}var o=/^data:[\w.+-]+\/[\w.+-]+;base64,[A-Za-z0-9+/=]+$/;function i(e){var t=e||"";return o.test(t)?t:t.replace(/["')(;{}<>\\]/g,"").replace(/\s+/g,"").slice(0,2e3)}function c(e,t){var r=(e||"").replace("#","");3===r.length&&(r=r.split("").map(function(e){return e+e}).join(""));var n=parseInt(r.slice(0,2),16),a=parseInt(r.slice(2,4),16),o=parseInt(r.slice(4,6),16);return"rgba(".concat(n,",").concat(a,",").concat(o,",").concat(t,")")}function u(e){var t=(e||"").trim();return/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t)||/^(rgb|rgba|hsl|hsla)\(\s*[\d.,%\s/]+\)$/i.test(t)||/^[a-z]+$/i.test(t)?t:"transparent"}function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=Number(e);return Number.isFinite(r)?r:t}function p(e,t){var r=function(e){var t=(e||"").trim(),r=t.match(/^rgba?\(\s*([\d.]+)[\s,]+([\d.]+)[\s,]+([\d.]+)/i);if(r)return[Math.round(+r[1]),Math.round(+r[2]),Math.round(+r[3])];var n=t.replace("#","");return(3===n.length&&(n=n.split("").map(function(e){return e+e}).join("")),/^[0-9a-f]{6}$/i.test(n))?[parseInt(n.slice(0,2),16),parseInt(n.slice(2,4),16),parseInt(n.slice(4,6),16)]:null}(e);return r?"rgba(".concat(r[0],",").concat(r[1],",").concat(r[2],",").concat(s(t),")"):"transparent"}function d(e){var t,r={image:"transparent",size:"auto",repeat:"no-repeat",position:"center"};if(!e||"none"===e.type)return r;if("color"===e.type)return{image:u(e.color),size:"auto",repeat:"no-repeat",position:"center"};if("gradient"===e.type){var n=(e.gradient.colors||[]).map(u).join(",");return{image:"linear-gradient(".concat(s(e.gradient.angle),"deg,").concat(n,")"),size:"cover",repeat:"no-repeat",position:"center"}}var a=i((null==(t=e.image)?void 0:t.url)||"");if(!a)return r;var o=e.image.fit;return{image:'url("'.concat(a,'")'),size:"repeat"===o?"auto":"stretch"===o?"100% 100%":"contain"===o?"contain":"cover",repeat:"repeat"===o?"repeat":"no-repeat",position:"center"}}var b=["woff2","woff","truetype","opentype"];function m(e,t){return t.split(",").map(function(t){return"".concat(e," ").concat(t.trim())}).join(",")}function g(e){var t=s(e);return"backdrop-filter:blur(".concat(t,"px);-webkit-backdrop-filter:blur(").concat(t,"px);")}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var h={晴空:["#e0f2fe","#ede9fe"],暖阳:["#fff7ed","#ffedd5","#fed7aa"],极光:["#c7d2fe","#a7f3d0","#fbcfe8"],海洋:["#cffafe","#bae6fd","#a5b4fc"],薄荷:["#d1fae5","#a7f3d0"],樱粉:["#fce7f3","#fbcfe8","#ddd6fe"],深夜:["#1e293b","#0f172a"]},v=[{label:"系统默认",value:""},{label:"无衬线(苹方/雅黑)",value:'"PingFang SC","Microsoft YaHei","Hiragino Sans GB","Segoe UI",Roboto,system-ui,sans-serif'},{label:"思源黑体",value:'"Source Han Sans SC","Noto Sans CJK SC","PingFang SC","Microsoft YaHei",sans-serif'},{label:"衬线(宋体)",value:'"Songti SC","Noto Serif CJK SC","SimSun",Georgia,"Times New Roman",serif'},{label:"楷体",value:'"Kaiti SC","STKaiti","KaiTi","Noto Serif CJK SC",serif'},{label:"圆体",value:'"Yuanti SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif'},{label:"等宽(代码)",value:'"SF Mono","JetBrains Mono","Fira Code",Consolas,"Courier New",monospace'}],w={enabled:!1,background:{type:"gradient",color:"#eef2f7",gradient:{preset:"晴空",angle:135,colors:h["晴空"]},image:{url:"",fit:"cover",position:"center"},dim:0},card:{glass:!0,opacity:72,blur:12,border:!0},header:{enabled:!1,style:"frosted",color:"#ffffff",opacity:90,blur:14,text:"dark"},sider:{enabled:!1,style:"frosted",color:"#ffffff",opacity:86,blur:16,text:"dark"},font:{enabled:!1,source:"system",family:v[1].value,upload:{url:"",name:"",format:""}},scrollbar:{enabled:!1,mode:"always"}},E={enabled:!1,background:{type:"gradient",color:"#1e293b",gradient:{preset:"暖阳",angle:135,colors:h["暖阳"]},image:{url:"",fit:"cover",position:"center"},dim:15},card:{glass:!0,opacity:70,blur:18,radius:18,shadow:!0}};function S(e){return null!=e&&(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"&&!Array.isArray(e)}function x(e,t){if(!S(e))return void 0===t?e:t;var r=Array.isArray(e)?function(e){if(Array.isArray(e))return y(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e){if(e){if("string"==typeof e)return y(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return y(e,void 0)}}(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}():function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},e),n=!0,a=!1,o=void 0;try{for(var l,i=Object.keys(e)[Symbol.iterator]();!(n=(l=i.next()).done);n=!0){var c=l.value;S(e[c])?r[c]=x(e[c],null==t?void 0:t[c]):t&&void 0!==t[c]&&(r[c]=t[c])}}catch(e){a=!0,o=e}finally{try{n||null==i.return||i.return()}finally{if(a)throw o}}return r}function O(e){return{app:x(w,null==e?void 0:e.app),login:x(E,null==e?void 0:e.login)}}function k(e,t,r,n,a,o,l){try{var i=e[o](l),c=i.value}catch(e){r(e);return}i.done?t(c):Promise.resolve(c).then(n,a)}function C(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var j="extra-theme-style",P="EXTRA_THEME_CACHE",T=function(){var e;function t(e,r){if(!(this instanceof t))throw TypeError("Cannot call a class as a function");C(this,"request",void 0),C(this,"selectors",void 0),this.request=e,this.selectors=r}return e=[{key:"start",value:function(){var e=this;try{var t=localStorage.getItem(P);t&&this.apply(O(JSON.parse(t)))}catch(e){}this.refresh(),window.addEventListener("extra-theme:changed",function(){return e.refresh()})}},{key:"refresh",value:function(){var e;return(e=function(){var e,t,r,n,a;return function(e,t){var r,n,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(o=0)),o;)try{if(r=1,n&&(a=2&u[0]?n.return:u[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,u[1])).done)return a;switch(n=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,n=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){o.label=u[1];break}if(6===u[0]&&o.label<a[1]){o.label=a[1],a=u;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(u);break}a[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],n=0}finally{r=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),[4,this.request({url:"extraTheme:getPublic",method:"get"})];case 1:a=O(null!=(e=null!=(t=null==(n=o.sent())||null==(r=n.data)?void 0:r.data)?t:null==n?void 0:n.data)?e:{});try{localStorage.setItem(P,JSON.stringify(a))}catch(e){}return this.apply(a),[3,3];case 2:return o.sent(),[3,3];case 3:return[2]}})},function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function l(e){k(o,n,a,l,i,"next",e)}function i(e){k(o,n,a,l,i,"throw",e)}l(void 0)})}).call(this)}},{key:"apply",value:function(e){var t,r=document.body;if(r){r.classList.toggle("extra-theme-app-on",!!((o=e.app).enabled||o.header.enabled||o.sider.enabled||(null==(l=o.font)?void 0:l.enabled)||(null==(u=o.scrollbar)?void 0:u.enabled))),r.classList.toggle("extra-theme-login-on",!!(null==(t=e.login)?void 0:t.enabled));var o,l,u,f,y=document.getElementById(j);y||((y=document.createElement("style")).id=j,document.head.appendChild(y)),y.textContent=(f=this.selectors,(function(e,t){var r,o,l="body.extra-theme-app-on",u=[];if(e.enabled&&(u.push("".concat(l,"{").concat(function(e){var t=d(e),r=t.image,n=s(e.dim);if(n>0&&"none"!==e.type){var a=c("#000000",n/100);r="linear-gradient(".concat(a,",").concat(a,"),").concat(t.image)}return"background:".concat(r,"!important;")+"background-size:".concat(t.size,"!important;")+"background-repeat:".concat(t.repeat,"!important;")+"background-position:".concat(t.position,"!important;")+"background-attachment:fixed!important;"}(e.background),"}")),u.push("".concat(l," .ant-layout-sider-children{top:auto!important;bottom:0!important;}")),u.push("".concat(m(l,t.content),"{background:transparent!important;}")),u.push("".concat(m(l,t.card+" div:not([class]):not([id])"),"{background-color:transparent!important;}")),e.card.glass&&e.card.blur>0&&u.push("".concat(m(l,t.card),",").concat(l," .code-block{").concat(g(e.card.blur),"}"))),e.header.enabled){var f=p(e.header.color,e.header.opacity/100),y="frosted"===e.header.style&&e.header.blur>0?g(e.header.blur):"";u.push("".concat(l," .ant-layout-header,").concat(l," .ant-pro-layout-header{background:").concat(f,"!important;").concat(y,"}"))}var h=e.font;if(null==h?void 0:h.enabled){if("upload"===h.source&&(null==(o=h.upload)?void 0:o.url)){var v=n(h.upload.name||"").replace(/["']/g,"")||"ExtraTheme Font",w=i(h.upload.url),E=b.includes(h.upload.format)?h.upload.format:a(h.upload.url);w&&(u.push('@font-face{font-family:"'.concat(v,'";src:url("').concat(w,'")').concat(E?' format("'.concat(E,'")'):"",";font-display:swap;}")),u.push("".concat(l,'{font-family:"').concat(v,'"!important;}')))}else if("upload"!==h.source){var S=n(h.family||"");S&&u.push("".concat(l,"{font-family:").concat(S,"!important;}"))}}if(e.sider.enabled){var x=p(e.sider.color,e.sider.opacity/100),O="frosted"===e.sider.style&&e.sider.blur>0?g(e.sider.blur):"";u.push("".concat(l," .ant-layout-sider{background:transparent!important;}")+"".concat(l," .ant-layout-sider-children{background:").concat(x,"!important;border-right:none!important;").concat(O,"}")+"".concat(l," .ant-layout-sider .ant-menu{background:transparent!important;border-inline-end:none!important;}")+"".concat(l," .ant-layout-sider .ant-menu::-webkit-scrollbar{width:6px;height:6px;}")+"".concat(l," .ant-layout-sider .ant-menu::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.18);border-radius:4px;}")+"".concat(l," .ant-layout-sider .ant-menu::-webkit-scrollbar-track{background:transparent;}"))}return(null==(r=e.scrollbar)?void 0:r.enabled)&&("hidden"===e.scrollbar.mode?u.push("".concat(l," ::-webkit-scrollbar,").concat(l,"::-webkit-scrollbar{display:none;width:0;height:0;}")+"".concat(l,",").concat(l," *{scrollbar-width:none;-ms-overflow-style:none;}")):u.push("".concat(l," ::-webkit-scrollbar,").concat(l,"::-webkit-scrollbar{width:10px;height:10px;}")+"".concat(l," ::-webkit-scrollbar-thumb,").concat(l,"::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.22);border-radius:8px;border:2px solid transparent;background-clip:content-box;}")+"".concat(l," ::-webkit-scrollbar-thumb:hover,").concat(l,"::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,0.4);background-clip:content-box;}")+"".concat(l," ::-webkit-scrollbar-track,").concat(l,"::-webkit-scrollbar-track{background:transparent;}"))),u.join("\n")})(e.app,f.app).trim())}}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(t.prototype,e),t}(),_={app:{appRoot:".ant-layout",header:".ant-layout-header",sider:".ant-layout-sider",card:".ant-card",content:'.ant-pro-layout-content,.ant-pro-layout-container,.ant-layout-content,.ant-page-header,[class*="nb-subpages-slot"],[class*="nb-subpages-slot"]>div'},login:{loginRoot:".ant-layout",loginCard:".ant-card"}},I=l(155),B=l.n(I),A=l(59);function z(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}var F={Table:{colorBgContainer:"#ffffff"},Input:{colorBgContainer:"#ffffff"},InputNumber:{colorBgContainer:"#ffffff"},Select:{colorBgContainer:"#ffffff"},TreeSelect:{colorBgContainer:"#ffffff"},Cascader:{colorBgContainer:"#ffffff"},Mentions:{colorBgContainer:"#ffffff"},DatePicker:{colorBgContainer:"#ffffff"}},R=["colorBgContainer","colorBgLayout","fontFamily"],U=l(953),D="@emotionalamo/plugin-extratheme";function M(){var e=(0,U.useTranslation)([D,"client"]).t;return function(t,r){return e(t,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({ns:D},r))}}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function N(e,t,r,n,a,o,l){try{var i=e[o](l),c=i.value}catch(e){r(e);return}i.done?t(c):Promise.resolve(c).then(n,a)}function $(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function l(e){N(o,n,a,l,i,"next",e)}function i(e){N(o,n,a,l,i,"throw",e)}l(void 0)})}}function q(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function W(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function H(e){return function(e){if(Array.isArray(e))return L(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||J(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function J(e,t){if(e){if("string"==typeof e)return L(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return L(e,t)}}function K(e,t){var r,n,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(o=0)),o;)try{if(r=1,n&&(a=2&u[0]?n.return:u[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,u[1])).done)return a;switch(n=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,n=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){o.label=u[1];break}if(6===u[0]&&o.label<a[1]){o.label=a[1],a=u;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(u);break}a[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],n=0}finally{r=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}function G(e){var t;return"string"==typeof e?e:(null==e||null==(t=e.toHexString)?void 0:t.call(e))||"#ffffff"}var Y=function(e){var t=e.label,r=e.value,n=e.children;return B().createElement("div",{style:{marginBottom:14}},B().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:7}},B().createElement("span",{style:{fontSize:12.5,color:"#475569"}},t),null!=r&&B().createElement("span",{style:{fontSize:12,fontWeight:600,color:"#6d5ae6",fontVariantNumeric:"tabular-nums"}},r)),n)},V=function(e){var t=e.title,r=e.right,n=e.children,a=e.first;return B().createElement("div",{style:{marginTop:18*!a,paddingTop:16*!a,borderTop:a?"none":"1px solid rgba(0,0,0,0.05)"}},t&&B().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:12}},B().createElement("span",{style:{fontSize:12.5,fontWeight:700,color:"#0f172a"}},t),r),n)},X=function(e){var t=e.title,r=e.right,n=e.children,a=e.style;return B().createElement("div",{style:q({flex:"1 1 300px",minWidth:280,background:"#fff",borderRadius:14,border:"1px solid rgba(15,23,42,0.08)",boxShadow:"0 1px 3px rgba(15,23,42,0.04)",padding:"16px 20px 20px",alignSelf:"stretch"},a)},B().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:16,paddingBottom:13,borderBottom:"1px solid rgba(15,23,42,0.07)"}},B().createElement("b",{style:{fontSize:14,letterSpacing:.2,color:"#0f172a"}},t),r),n)},Z=function(e){return e?{}:{opacity:.4,pointerEvents:"none",filter:"grayscale(0.4)"}},Q=function(e){var t,r=e.bg,n=e.onChange,a=e.uploadImage,o=e.first,l=M(),i=function(e){return n(q({},r,e))},c=Object.keys(h),u=!c.includes(r.gradient.preset);return B().createElement(V,{title:l("背景"),first:o},B().createElement(Y,{label:l("类型")},B().createElement(A.Segmented,{block:!0,size:"small",value:r.type,onChange:function(e){return i({type:e})},options:[{label:l("纯色"),value:"color"},{label:l("渐变"),value:"gradient"},{label:l("图片"),value:"image"}]})),"color"===r.type&&B().createElement(Y,{label:l("背景颜色")},B().createElement(A.ColorPicker,{value:r.color,onChangeComplete:function(e){return i({color:G(e)})},showText:!0,disabledAlpha:!0})),"gradient"===r.type&&B().createElement(B().Fragment,null,B().createElement(Y,{label:l("渐变预设")},B().createElement(A.Select,{style:{width:"100%"},value:u?"__custom__":r.gradient.preset,onChange:function(e){"__custom__"===e?i({gradient:W(q({},r.gradient),{preset:"自定义"})}):i({gradient:W(q({},r.gradient),{preset:e,colors:h[e]})})},options:H(c.map(function(e){return{label:e,value:e}})).concat([{label:l("自定义"),value:"__custom__"}])})),B().createElement(Y,{label:l("角度"),value:"".concat(r.gradient.angle,"\xb0")},B().createElement(A.Slider,{min:0,max:360,value:r.gradient.angle,onChange:function(e){return i({gradient:W(q({},r.gradient),{angle:e})})}})),u&&B().createElement(Y,{label:l("自定义色标")},B().createElement("div",{style:{display:"flex",gap:8}},B().createElement(A.ColorPicker,{disabledAlpha:!0,value:r.gradient.colors[0]||"#ffffff",onChangeComplete:function(e){return i({gradient:W(q({},r.gradient),{colors:[G(e),r.gradient.colors[1]||"#ffffff"]})})}}),B().createElement(A.ColorPicker,{disabledAlpha:!0,value:r.gradient.colors[1]||"#ffffff",onChangeComplete:function(e){return i({gradient:W(q({},r.gradient),{colors:[r.gradient.colors[0]||"#ffffff",G(e)]})})}})))),"image"===r.type&&B().createElement(B().Fragment,null,B().createElement(Y,{label:l("图片 URL")},B().createElement(A.Input,{value:r.image.url,placeholder:"https://…",onChange:function(e){return i({image:W(q({},r.image),{url:e.target.value})})},addonAfter:a?B().createElement(A.Upload,{showUploadList:!1,beforeUpload:function(e){return $(function(){var t;return K(this,function(n){switch(n.label){case 0:return[4,a(e)];case 1:return(t=n.sent())&&i({image:W(q({},r.image),{url:t})}),[2,!1]}})})()}},B().createElement("span",{style:{cursor:"pointer"}},l("上传"))):null})),(t=r.image.url||"",!!/^https?:/i.test(t)&&(/[?&](X-Amz-(Signature|Expires|Credential)|OSSAccessKeyId|q-signature|q-sign-time)=/i.test(t)||/[?&](Signature|sig)=/i.test(t)&&/[?&](Expires|se)=/i.test(t))&&B().createElement("div",{style:{margin:"-4px 0 12px",padding:"8px 10px",borderRadius:8,background:"#fff7ed",border:"1px solid #fed7aa",fontSize:11.5,color:"#c2410c",lineHeight:1.6}},l("⚠ 当前图片是临时签名链接,过期后会 403 失效。请点上方“上传”重新选择图片,将改为内联存储,永不过期。"))),B().createElement(Y,{label:l("铺法")},B().createElement(A.Segmented,{block:!0,size:"small",value:r.image.fit,onChange:function(e){return i({image:W(q({},r.image),{fit:e})})},options:[{label:l("铺满"),value:"cover"},{label:l("适应"),value:"contain"},{label:l("拉伸"),value:"stretch"},{label:l("平铺"),value:"repeat"}]}))),B().createElement(Y,{label:l("暗化遮罩"),value:"".concat(r.dim,"%")},B().createElement(A.Slider,{min:0,max:80,value:r.dim,onChange:function(e){return i({dim:e})}})))},ee=function(e){var t=e.card,r=e.onChange,n=M(),a=function(e){return r(q({},t,e))};return B().createElement(V,{title:n("内容区卡片"),right:B().createElement(A.Switch,{size:"small",checked:t.glass,onChange:function(e){return a({glass:e})}})},B().createElement("div",{style:Z(t.glass)},B().createElement(Y,{label:n("卡片不透明度"),value:"".concat(t.opacity,"%")},B().createElement(A.Slider,{min:10,max:100,value:t.opacity,onChange:function(e){return a({opacity:e})}})),B().createElement(Y,{label:n("背景模糊"),value:"".concat(t.blur,"px")},B().createElement(A.Slider,{min:0,max:40,value:t.blur,onChange:function(e){return a({blur:e})}})),B().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"}},B().createElement("span",{style:{fontSize:12.5,color:"#475569"}},n("浅色描边")),B().createElement(A.Switch,{size:"small",checked:t.border,onChange:function(e){return a({border:e})}}))))},et=function(e){var t=e.scrollbar,r=e.onChange,n=M(),a=function(e){return r(q({},t,e))};return B().createElement(V,{title:n("滚动条"),right:B().createElement(A.Switch,{size:"small",checked:t.enabled,onChange:function(e){return a({enabled:e})}})},B().createElement("div",{style:Z(t.enabled)},B().createElement(Y,{label:n("显示方式")},B().createElement(A.Segmented,{block:!0,size:"small",value:t.mode,onChange:function(e){return a({mode:e})},options:[{label:n("始终显示"),value:"always"},{label:n("始终隐藏"),value:"hidden"}]})),B().createElement("div",{style:{fontSize:11,color:"#94a3b8",marginTop:2,lineHeight:1.6}},n("“始终显示”为常驻细滚动条;“始终隐藏”完全隐藏滚动条(内容仍可滚动)。"))))},er=function(e){var t=e.nav,r=e.onChange,n=M(),a=function(e){return r(q({},t,e))};return B().createElement(V,{first:!0},B().createElement(Y,{label:n("背景颜色")},B().createElement(A.ColorPicker,{value:t.color,onChangeComplete:function(e){return a({color:G(e)})},showText:!0,disabledAlpha:!0})),B().createElement(Y,{label:n("风格")},B().createElement(A.Segmented,{block:!0,size:"small",value:t.style,onChange:function(e){return a({style:e})},options:[{label:n("实色"),value:"solid"},{label:n("毛玻璃"),value:"frosted"}]})),B().createElement(Y,{label:n("不透明度"),value:"".concat(t.opacity,"%")},B().createElement(A.Slider,{min:0,max:100,value:t.opacity,onChange:function(e){return a({opacity:e})}})),B().createElement(Y,{label:n("背景模糊"),value:"".concat(t.blur,"px")},B().createElement(A.Slider,{min:0,max:40,value:t.blur,disabled:"frosted"!==t.style,onChange:function(e){return a({blur:e})}})))},en=function(e){var t,r=e.font,n=e.onChange,a=e.uploadFont,o=M(),l=function(e){return n(q({},r,e))},i=v.some(function(e){return e.value===r.family}),c=function(e){if(Array.isArray(e))return e}(t=B().useState(!i))||function(e){var t,r,n=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(t=n.next()).done)&&(a.push(t.value),2!==a.length);o=!0);}catch(e){l=!0,r=e}finally{try{o||null==n.return||n.return()}finally{if(l)throw r}}return a}}(t)||J(t,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),u=c[0],s=c[1],f=B().useRef(r.family);B().useEffect(function(){r.family!==f.current&&(f.current=r.family,s(!v.some(function(e){return e.value===r.family})))},[r.family]);var p=function(e){f.current=e,l({family:e})},d=u||!i,b=r.upload;B().useEffect(function(){var e=window.FontFace;if("upload"===r.source&&(null==b?void 0:b.url)&&(null==b?void 0:b.name)&&e&&document.fonts)try{new e(b.name,'url("'.concat(b.url,'")')).load().then(function(e){return document.fonts.add(e)}).catch(function(){})}catch(e){}},[r.source,null==b?void 0:b.url,null==b?void 0:b.name]);var m=function(e){return $(function(){var t;return K(this,function(o){switch(o.label){case 0:if(!a)return[3,2];return[4,a(e)];case 1:(t=o.sent()).url&&n(W(q({},r),{upload:t})),o.label=2;case 2:return[2,!1]}})})()},g="upload"===r.source&&(null==b?void 0:b.url)?'"'.concat(b.name,'"'):r.family||void 0;return B().createElement(V,{first:!0},B().createElement(Y,{label:o("字体来源")},B().createElement(A.Segmented,{block:!0,size:"small",value:r.source,onChange:function(e){return l({source:e})},options:[{label:o("系统字体"),value:"system"},{label:o("上传字体"),value:"upload"}]})),"system"===r.source?B().createElement(B().Fragment,null,B().createElement(Y,{label:o("字体")},B().createElement(A.Select,{style:{width:"100%"},value:d?"__custom__":r.family,onChange:function(e){"__custom__"===e?s(!0):(s(!1),p(e))},options:H(v.map(function(e){return{label:e.label,value:e.value}})).concat([{label:o("自定义"),value:"__custom__"}])})),d&&B().createElement(Y,{label:o("自定义字体")},B().createElement(A.Input,{value:r.family,placeholder:'"Font Name", sans-serif',onChange:function(e){return p(e.target.value)}}))):(null==b?void 0:b.url)?B().createElement(B().Fragment,null,B().createElement(Y,{label:o("字体名称")},B().createElement(A.Input,{value:b.name,placeholder:"Custom Font",onChange:function(e){var t;return t={name:e.target.value},n(W(q({},r),{upload:q({},r.upload,t)}))}})),B().createElement("div",{style:{display:"flex",gap:12,alignItems:"center",marginBottom:14}},B().createElement("span",{style:{fontSize:12,color:"#16a34a"}},o("已上传"),b.format?" \xb7 ".concat(b.format):""),B().createElement(A.Upload,{showUploadList:!1,accept:".ttf,.otf,.woff,.woff2",beforeUpload:m},B().createElement(A.Button,{type:"link",size:"small",style:{padding:0}},o("重新上传"))),B().createElement(A.Button,{type:"link",size:"small",danger:!0,style:{padding:0},onClick:function(){return n(W(q({},r),{upload:{url:"",name:"",format:""}}))}},o("移除")))):B().createElement(Y,{label:o("上传字体文件")},B().createElement(A.Upload,{showUploadList:!1,accept:".ttf,.otf,.woff,.woff2",beforeUpload:m},B().createElement(A.Button,{size:"small"},o("选择字体文件")))),B().createElement("div",{style:{marginTop:12,padding:"14px 16px",borderRadius:10,background:"#f8fafc",border:"1px solid rgba(15,23,42,0.06)",fontFamily:g}},B().createElement("div",{style:{fontSize:19,fontWeight:700,color:"#0f172a",lineHeight:1.4}},o("字体预览")," Aa 永和"),B().createElement("div",{style:{fontSize:13,color:"#475569",marginTop:5}},"中文示例文本 \xb7 The quick brown fox \xb7 0123456789")),B().createElement("div",{style:{fontSize:11,color:"#94a3b8",marginTop:8,lineHeight:1.6}},o("upload"===r.source?"提示:上传字体对所有访问者生效,无需本机安装;中文字体文件较大,建议使用 woff2 或先做子集化以加快加载。":"提示:字体需系统已安装才生效;“无衬线/系统默认”通常与本机默认字体一致,选“楷体/宋体”等可看到明显变化。")))},ea=function(e){var t=e.app,r=e.onChange,n=e.uploadImage,a=e.uploadFont,o=M(),l={flex:"0 0 auto"};return B().createElement("div",{style:{display:"flex",gap:20,flexWrap:"wrap",alignItems:"stretch"}},B().createElement(X,{title:o("工作区外观"),right:B().createElement(A.Switch,{checked:t.enabled,onChange:function(e){return r(W(q({},t),{enabled:e}))}})},B().createElement("div",{style:Z(t.enabled)},B().createElement(Q,{first:!0,bg:t.background,onChange:function(e){return r(W(q({},t),{background:e}))},uploadImage:n}),B().createElement(ee,{card:t.card,onChange:function(e){return r(W(q({},t),{card:e}))}})),B().createElement(et,{scrollbar:t.scrollbar,onChange:function(e){return r(W(q({},t),{scrollbar:e}))}})),B().createElement("div",{style:{flex:"1 1 300px",minWidth:280,display:"flex",flexDirection:"column",gap:20}},B().createElement(X,{style:l,title:o("顶部导航栏"),right:B().createElement(A.Switch,{checked:t.header.enabled,onChange:function(e){return r(W(q({},t),{header:W(q({},t.header),{enabled:e})}))}})},B().createElement("div",{style:Z(t.header.enabled)},B().createElement(er,{nav:t.header,onChange:function(e){return r(W(q({},t),{header:e}))}}))),B().createElement(X,{style:l,title:o("侧边导航栏"),right:B().createElement(A.Switch,{checked:t.sider.enabled,onChange:function(e){return r(W(q({},t),{sider:W(q({},t.sider),{enabled:e})}))}})},B().createElement("div",{style:Z(t.sider.enabled)},B().createElement(er,{nav:t.sider,onChange:function(e){return r(W(q({},t),{sider:e}))}})))),B().createElement(X,{title:o("全局字体"),right:B().createElement(A.Switch,{checked:t.font.enabled,onChange:function(e){return r(W(q({},t),{font:W(q({},t.font),{enabled:e})}))}})},B().createElement("div",{style:Z(t.font.enabled)},B().createElement(en,{font:t.font,onChange:function(e){return r(W(q({},t),{font:e}))},uploadFont:a}))))};function eo(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function el(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function ei(e){var t=d(e),r=t.image;if(e.dim>0&&"none"!==e.type){var n=c("#000000",e.dim/100);r="linear-gradient(".concat(n,",").concat(n,"),").concat(t.image)}return{background:r,backgroundSize:t.size,backgroundRepeat:t.repeat,backgroundPosition:t.position}}function ec(e){var t="frosted"===e.style&&e.blur>0?"blur(".concat(e.blur,"px)"):void 0;return{background:p(e.color,e.opacity/100),backdropFilter:t,WebkitBackdropFilter:t,color:"light"===e.text?"#f8fafc":"#1f2733"}}var eu={position:"relative",height:300,borderRadius:12,overflow:"hidden",border:"1px solid rgba(0,0,0,0.08)",boxShadow:"0 8px 30px rgba(0,0,0,0.12)"},es=function(e){var t=e.scope,r=e.app,n=e.login,a=M();if("app"===t){var o,l=r.enabled&&r.card.glass?{flex:1,borderRadius:10,padding:12,background:c("#ffffff",r.card.opacity/100),backdropFilter:r.card.blur>0?"blur(".concat(r.card.blur,"px)"):void 0,WebkitBackdropFilter:r.card.blur>0?"blur(".concat(r.card.blur,"px)"):void 0,border:r.card.border?"1px solid rgba(255,255,255,0.5)":"1px solid transparent",color:"#1f2733",fontSize:12}:{flex:1,borderRadius:10,padding:12,background:"#fff",border:"1px solid rgba(0,0,0,0.06)",color:"#1f2733",fontSize:12},i={background:"#fff",border:"1px solid rgba(0,0,0,0.12)",borderRadius:6},u=(null==(o=r.font)?void 0:o.enabled)&&r.font.family?r.font.family:void 0;return B().createElement("div",{style:eo(el(eo({},eu),{fontFamily:u}),r.enabled?ei(r.background):{background:"#f0f2f5"})},B().createElement("div",{style:eo({height:40,display:"flex",alignItems:"center",padding:"0 14px",fontWeight:700,fontSize:13},r.header.enabled?ec(r.header):{background:"#fff",color:"#1f2733"})},"NocoBase",B().createElement("span",{style:{marginLeft:"auto",display:"flex",gap:14,fontWeight:500,opacity:.85}},B().createElement("span",null,a("概览")),B().createElement("span",null,a("数据")),B().createElement("span",null,a("设置")))),B().createElement("div",{style:{display:"flex",height:"calc(100% - 40px)"}},B().createElement("div",{style:eo({width:92,padding:10,display:"flex",flexDirection:"column",gap:8,fontSize:12},r.sider.enabled?ec(r.sider):{background:"#fff",color:"#1f2733"})},B().createElement("div",{style:{fontWeight:700}},a("菜单")),B().createElement("div",{style:{opacity:.8}},a("概览")),B().createElement("div",{style:{opacity:.8}},a("订单")),B().createElement("div",{style:{opacity:.8}},a("报表"))),B().createElement("div",{style:{flex:1,padding:12,display:"flex",flexDirection:"column",gap:10}},B().createElement("div",{style:el(eo({},l),{display:"flex",flexDirection:"column",gap:6})},B().createElement("span",null,a("内容卡片")," A"),B().createElement("div",{style:el(eo({},i),{height:22})}),B().createElement("div",{style:el(eo({},i),{overflow:"hidden"})},B().createElement("div",{style:{height:16,borderBottom:"1px solid rgba(0,0,0,0.07)"}}),B().createElement("div",{style:{height:16}}))),B().createElement("div",{style:{display:"flex",gap:10,flex:1}},B().createElement("div",{style:l},"B"),B().createElement("div",{style:l},"C")))))}var s=n.card,f={width:220,padding:"22px 20px",borderRadius:s.radius,background:c("#ffffff",s.opacity/100),backdropFilter:s.glass&&s.blur>0?"blur(".concat(s.blur,"px)"):void 0,WebkitBackdropFilter:s.glass&&s.blur>0?"blur(".concat(s.blur,"px)"):void 0,boxShadow:s.shadow?"0 24px 70px rgba(15,23,42,0.28)":"none",color:"#1f2733",textAlign:"center"},p={height:30,borderRadius:8,background:"rgba(255,255,255,0.6)",border:"1px solid rgba(0,0,0,0.1)",margin:"8px 0"};return B().createElement("div",{style:eo(el(eo({},eu),{display:"flex",alignItems:"center",justifyContent:"center"}),n.enabled?ei(n.background):{background:"#f0f2f5"})},B().createElement("div",{style:f},B().createElement("div",{style:{fontWeight:800,fontSize:16,marginBottom:4}},"NocoBase"),B().createElement("div",{style:{fontSize:11,opacity:.7,marginBottom:10}},a("欢迎登录")),B().createElement("div",{style:p}),B().createElement("div",{style:p}),B().createElement("div",{style:{height:32,borderRadius:8,background:"#6d5ae6",color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:12,marginTop:6}},a("登录"))))};function ef(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function ep(e,t,r,n,a,o,l){try{var i=e[o](l),c=i.value}catch(e){r(e);return}i.done?t(c):Promise.resolve(c).then(n,a)}function ed(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function l(e){ep(o,n,a,l,i,"next",e)}function i(e){ep(o,n,a,l,i,"throw",e)}l(void 0)})}}function eb(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function em(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function eg(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(r=a.next()).done)&&(o.push(r.value),!t||o.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw n}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ef(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ef(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ey(e,t){var r,n,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(o=0)),o;)try{if(r=1,n&&(a=2&u[0]?n.return:u[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,u[1])).done)return a;switch(n=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,n=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){o.label=u[1];break}if(6===u[0]&&o.label<a[1]){o.label=a[1],a=u;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(u);break}a[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],n=0}finally{r=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}var eh="amo-extratheme";function ev(e){return new Promise(function(t,r){var n=new FileReader;n.onerror=function(){return r(n.error||Error("read failed"))},n.onload=function(){var a,o=String(n.result||""),l=o.indexOf(","),i=l>=0?o.slice(l+1):"";if(!i)return r(Error("empty"));var c=e.type||({png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",avif:"image/avif",bmp:"image/bmp",svg:"image/svg+xml",woff2:"font/woff2",woff:"font/woff",ttf:"font/ttf",otf:"font/otf",ttc:"font/collection"})[((null==(a=(e.name||"").split("?")[0].split("#")[0].match(/\.([a-z0-9]+)$/i))?void 0:a[1])||"").toLowerCase()]||"application/octet-stream";t("data:".concat(c,";base64,").concat(i))},n.readAsDataURL(e)})}var ew=function(){var t=M(),r=(0,e.useAPIClient)(),o=(0,e.useGlobalTheme)(),l=o.setTheme,i=o.theme,u=eg((0,I.useState)(function(){return O({})}),2),s=u[0],f=u[1],p=eg((0,I.useState)(!0),2),d=p[0],b=p[1],m=eg((0,I.useState)(!1),2),g=m[0],y=m[1];return((0,I.useEffect)(function(){var e=!0;return ed(function(){var t,n,a,o;return ey(this,function(l){switch(l.label){case 0:return l.trys.push([0,2,3,4]),[4,r.request({url:"extraTheme:getPublic",method:"get"})];case 1:return o=null!=(t=null==(a=l.sent())||null==(n=a.data)?void 0:n.data)?t:{},e&&f(O(o)),[3,4];case 2:return l.sent(),[3,4];case 3:return e&&b(!1),[7];case 4:return[2]}})})(),function(){e=!1}},[r]),d)?B().createElement("div",{style:{padding:60,textAlign:"center"}},B().createElement(A.Spin,null)):B().createElement("div",{style:{padding:4,width:"100%"}},B().createElement(ea,{app:s.app,onChange:function(e){return f(em(eb({},s),{app:e}))},uploadImage:function(e){return ed(function(){var r;return ey(this,function(n){switch(n.label){case 0:if(n.trys.push([0,2,,3]),e.size>1048576)return A.message.error(t("图片过大,上限 1MB。背景图会内联进主题配置,请压缩后再上传(推荐 WebP,≤400KB)。")),[2,""];return[4,ev(e)];case 1:return r=n.sent(),e.size>409600&&A.message.warning(t("图片较大,已内联进配置;建议压缩到 400KB 以内。")),A.message.success(t("已内联,不依赖存储、永不过期")),[2,r];case 2:return n.sent(),A.message.error(t("上传失败")),[2,""];case 3:return[2]}})})()},uploadFont:function(e){return ed(function(){var r,n,o,l;return ey(this,function(i){switch(i.label){case 0:r={url:"",name:"",format:""},i.label=1;case 1:if(i.trys.push([1,3,,4]),e.size>1048576)return A.message.error(t("字体文件过大,上限 1MB。字体会内联进主题配置,请使用子集化后的 woff2。")),[2,r];return[4,ev(e)];case 2:return n=i.sent(),o=(e.name||"Custom Font").replace(/\.[^.]+$/,"")||"Custom Font",l=a(e.name),A.message.success(t("已内联,不依赖存储、永不过期")),[2,{url:n,name:o,format:l}];case 3:return i.sent(),A.message.error(t("上传失败")),[2,r];case 4:return[2]}})})()}}),B().createElement(A.Space,{style:{marginTop:20}},B().createElement(A.Button,{type:"primary",loading:g,onClick:function(){return ed(function(){return ey(this,function(a){switch(a.label){case 0:y(!0),a.label=1;case 1:return a.trys.push([1,4,5,6]),[4,r.request({url:"extraTheme:set",method:"post",data:{scope:"app",config:s.app}})];case 2:var o;return a.sent(),[4,(o=s.app,ed(function(){var t,a,u,s,f,p,d,b,m,g,y;return ey(this,function(h){switch(h.label){case 0:a=t=function(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};arguments.length>2&&void 0!==arguments[2]&&arguments[2];var a=z({},r),o=!0,l=!1,i=void 0;try{for(var u,s=R[Symbol.iterator]();!(o=(u=s.next()).done);o=!0){var f=u.value;delete a[f]}}catch(e){l=!0,i=e}finally{try{o||null==s.return||s.return()}finally{if(l)throw i}}a.colorBgElevated="#ffffff",e.enabled&&(a.colorBgLayout="transparent",e.card.glass&&(a.colorBgContainer=c("#ffffff",e.card.opacity/100)));var p=e.font;if(null==p?void 0:p.enabled){if("upload"===p.source&&(null==(t=p.upload)?void 0:t.url)){var d=n(p.upload.name||"").replace(/["']/g,"");d&&(a.fontFamily='"'.concat(d,'"'))}else if("upload"!==p.source){var b=n(p.family||"");b&&(a.fontFamily=b)}}return{name:"Modern",token:a,components:z({},F),cssVar:!0}}(o,(null==i?void 0:i.token)||(null===e.defaultTheme||void 0===e.defaultTheme?void 0:e.defaultTheme.token)||{},(null===e.defaultTheme||void 0===e.defaultTheme?void 0:e.defaultTheme.token)||{}),h.label=1;case 1:return h.trys.push([1,9,,10]),[4,r.resource("themeConfig").list({filter:{uid:eh},pageSize:1})];case 2:if(b=null==(d=null==(p=h.sent())||null==(s=p.data)||null==(u=s.data)?void 0:u[0])?void 0:d.id,(null==d||null==(f=d.config)?void 0:f.name)&&(a=em(eb({},t),{name:d.config.name})),!d)return[3,4];return[4,r.resource("themeConfig").update({filterByTk:b,values:{config:a,default:!0,optional:!0}})];case 3:return h.sent(),[3,6];case 4:return[4,r.resource("themeConfig").create({values:{config:a,optional:!0,isBuiltIn:!1,uid:eh,default:!0}})];case 5:b=null==(y=h.sent())||null==(g=y.data)||null==(m=g.data)?void 0:m.id,h.label=6;case 6:if(null==b)return[3,8];return[4,r.resource("users").updateTheme({values:{themeId:b}})];case 7:h.sent(),h.label=8;case 8:return[3,10];case 9:return h.sent(),[3,10];case 10:try{null==l||l(a)}catch(e){}return[2]}})})())];case 3:return a.sent(),window.dispatchEvent(new Event("extra-theme:changed")),A.message.success(t("已保存并应用")),[3,6];case 4:return a.sent(),A.message.error(t("保存失败")),[3,6];case 5:return y(!1),[7];case 6:return[2]}})})()}},t("保存并应用")),B().createElement(A.Button,{onClick:function(){return f(em(eb({},s),{app:JSON.parse(JSON.stringify(w))}))}},t("重置本组"))),B().createElement("div",{style:{marginTop:24}},B().createElement("div",{style:{fontSize:12,color:"#94a3b8",marginBottom:8}},t("实时预览")),B().createElement(es,{scope:"app",app:s.app,login:s.login}),B().createElement("div",{style:{fontSize:11,color:"#94a3b8",marginTop:10,lineHeight:1.6}},t("提示:默认关闭,开启总开关并保存后才生效;关闭插件或关闭开关立即恢复原生外观。"))))};function eE(e,t,r,n,a,o,l){try{var i=e[o](l),c=i.value}catch(e){r(e);return}i.done?t(c):Promise.resolve(c).then(n,a)}function eS(e,t,r){return(eS=eC()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var a=new(Function.bind.apply(e,n));return r&&eO(a,r.prototype),a}).apply(null,arguments)}function ex(e){return(ex=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function eO(e,t){return(eO=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function ek(e){var t="function"==typeof Map?new Map:void 0;return(ek=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return eS(e,arguments,ex(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),eO(r,e)})(e)}function eC(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(eC=function(){return!!e})()}var ej="@emotionalamo/plugin-extratheme",eP=function(e){var n;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function a(){var e,t;if(!(this instanceof a))throw TypeError("Cannot call a class as a function");return e=a,t=arguments,e=ex(e),function(e,t){var r;if(t&&("object"==((r=t)&&"u">typeof Symbol&&r.constructor===Symbol?"symbol":typeof r)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,eC()?Reflect.construct(e,t||[],ex(this).constructor):e.apply(this,t))}return a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),e&&eO(a,e),n=[{key:"load",value:function(){var e;return(e=function(){var e;return function(e,t){var r,n,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(o=0)),o;)try{if(r=1,n&&(a=2&u[0]?n.return:u[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,u[1])).done)return a;switch(n=0,a&&(u=[2&u[0],a.value]),u[0]){case 0:case 1:a=u;break;case 4:return o.label++,{value:u[1],done:!1};case 5:o.label++,n=u[1],u=[0];continue;case 7:u=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!a||u[1]>a[0]&&u[1]<a[3])){o.label=u[1];break}if(6===u[0]&&o.label<a[1]){o.label=a[1],a=u;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(u);break}a[2]&&o.ops.pop(),o.trys.pop();continue}u=t.call(e,o)}catch(e){u=[6,e],n=0}finally{r=a=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(n){return e=this,this.app.i18n.addResources("zh-CN",ej,t),this.app.i18n.addResources("en-US",ej,r),new T(function(t){return e.app.apiClient.request(t)},_).start(),this.app.addComponents({ExtraThemeSettings:ew}),this.app.pluginSettingsManager.add("extra-theme",{title:this.app.i18n.t("主题增强",{ns:ej}),icon:"BgColorsOutlined",Component:"ExtraThemeSettings",aclSnippet:"pm.extra-theme",sort:500}),[2]})},function(){var t=this,r=arguments;return new Promise(function(n,a){var o=e.apply(t,r);function l(e){eE(o,n,a,l,i,"next",e)}function i(e){eE(o,n,a,l,i,"throw",e)}l(void 0)})}).call(this)}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(a.prototype,n),a}(ek(e.Plugin))}(),f}()});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@emotionalamo/plugin-extratheme",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"displayName": "ExtraTheme",
|
|
5
5
|
"displayName.zh-CN": "主题增强",
|
|
6
6
|
"description": "Global theme-enhancement plugin for NocoBase 2.x: custom background (image/gradient/color + fit modes), transparency, frosted-glass, top/side navigation styling, global font (system/custom/uploaded), and macOS-style scrollbar. Configured globally in one settings page; disabled by default.",
|