├── favicon.ico ├── favicon.webp ├── docs ├── favicon.webp ├── assets │ ├── bg-BQx4j7kW.webp │ ├── favicon-aOK6_042.ico │ ├── mdui-round-DrirKXBx.woff2 │ ├── SamsungSans-Regular-BsRQoNIc.ttf │ ├── index-CcQoAca9.css │ ├── deps-PoZXHJHQ.css │ └── index-Ct_lBPmX.js ├── registerSW.js ├── manifest.webmanifest ├── index.html ├── sw.js └── workbox-7ac4974e.js ├── src ├── assets │ ├── bg.webp │ ├── favicon.ico │ ├── favicon.png │ ├── main.css │ ├── ImScrollBar.css │ ├── mdui-icon.css │ ├── card.css │ ├── PinnedMessageBar.css │ └── ImMainView.css ├── font │ ├── mdui-round.woff2 │ └── SamsungSans-Regular.ttf ├── main.js ├── App.vue ├── components │ ├── MdCard.vue │ ├── ImMainView.vue │ └── ImScrollBar.vue └── views │ └── HomeView.vue ├── jsconfig.json ├── .eslintrc.cjs ├── .gitignore ├── index.html ├── README.md ├── package.json ├── LICENSE.md ├── vite.config.js └── patches └── mdui+2.1.3.patch /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheepChef/Abracadabra_demo/HEAD/favicon.ico -------------------------------------------------------------------------------- /favicon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheepChef/Abracadabra_demo/HEAD/favicon.webp -------------------------------------------------------------------------------- /docs/favicon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheepChef/Abracadabra_demo/HEAD/docs/favicon.webp -------------------------------------------------------------------------------- /src/assets/bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheepChef/Abracadabra_demo/HEAD/src/assets/bg.webp -------------------------------------------------------------------------------- /src/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheepChef/Abracadabra_demo/HEAD/src/assets/favicon.ico -------------------------------------------------------------------------------- /src/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheepChef/Abracadabra_demo/HEAD/src/assets/favicon.png -------------------------------------------------------------------------------- /src/font/mdui-round.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheepChef/Abracadabra_demo/HEAD/src/font/mdui-round.woff2 -------------------------------------------------------------------------------- /docs/assets/bg-BQx4j7kW.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheepChef/Abracadabra_demo/HEAD/docs/assets/bg-BQx4j7kW.webp -------------------------------------------------------------------------------- /docs/assets/favicon-aOK6_042.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheepChef/Abracadabra_demo/HEAD/docs/assets/favicon-aOK6_042.ico -------------------------------------------------------------------------------- /src/font/SamsungSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheepChef/Abracadabra_demo/HEAD/src/font/SamsungSans-Regular.ttf -------------------------------------------------------------------------------- /docs/assets/mdui-round-DrirKXBx.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheepChef/Abracadabra_demo/HEAD/docs/assets/mdui-round-DrirKXBx.woff2 -------------------------------------------------------------------------------- /docs/assets/SamsungSans-Regular-BsRQoNIc.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SheepChef/Abracadabra_demo/HEAD/docs/assets/SamsungSans-Regular-BsRQoNIc.ttf -------------------------------------------------------------------------------- /docs/registerSW.js: -------------------------------------------------------------------------------- 1 | if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('./sw.js', { scope: './' })})} -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "paths": { 4 | "@/*": ["./src/*"] 5 | } 6 | }, 7 | "exclude": ["node_modules", "dist"] 8 | } 9 | -------------------------------------------------------------------------------- /docs/manifest.webmanifest: -------------------------------------------------------------------------------- 1 | {"name":"魔曰","short_name":"Abracadabra","start_url":".","display":"standalone","background_color":"#ffffff","lang":"en","scope":"./","id":"abracadabra","description":"对文字施以神秘魔法","theme_color":"#5753c9","icons":[{"src":"favicon.webp","sizes":"1024x1024","type":"image/webp"}]} 2 | -------------------------------------------------------------------------------- /src/assets/main.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "SamsungSans"; 3 | src: url("../font/SamsungSans-Regular.ttf"); 4 | } 5 | html, 6 | body { 7 | height: 100%; 8 | width: 100%; 9 | margin: 0; 10 | padding: 0; 11 | font-family: "SamsungSans", "sans-serif"; 12 | } 13 | h1 { 14 | margin-top: unset; 15 | } 16 | #main_content { 17 | width: 100%; 18 | display: grid; 19 | } 20 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | require("@rushstack/eslint-patch/modern-module-resolution"); 3 | 4 | module.exports = { 5 | root: true, 6 | extends: [ 7 | "plugin:vue/vue3-essential", 8 | "eslint:recommended", 9 | "@vue/eslint-config-prettier/skip-formatting" 10 | ], 11 | parserOptions: { 12 | ecmaVersion: "latest" 13 | }, 14 | rules: { 15 | "vue/no-deprecated-slot-attribute": "off" 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import "./assets/main.css"; 2 | import { createApp, reactive } from "vue"; 3 | import App from "./App.vue"; 4 | import { setColorScheme } from "mdui/functions/setColorScheme.js"; 5 | import Card from "./components/MdCard.vue"; 6 | 7 | window.addEventListener("beforeinstallprompt", (e) => { 8 | e.preventDefault(); 9 | window.deferredPrompt = e; 10 | }); 11 | 12 | const app = createApp(App); 13 | setColorScheme("#09355b"); 14 | app.component("Card", Card); 15 | app.mount("body"); 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | .DS_Store 12 | #dist 13 | #dist-ssr 14 | coverage 15 | *.local 16 | 17 | /cypress/videos/ 18 | /cypress/screenshots/ 19 | 20 | # Editor directories and files 21 | vscode 22 | .vscode/* 23 | .idea 24 | *.suo 25 | *.ntvs* 26 | *.njsproj 27 | *.sln 28 | *.sw? 29 | 30 | *.tsbuildinfo 31 | .prettierignore 32 | .prettierrc.json 33 | dev-dist 34 | favicon.png 35 | -------------------------------------------------------------------------------- /src/assets/ImScrollBar.css: -------------------------------------------------------------------------------- 1 | .ImScrollBarTrack { 2 | position: fixed; 3 | transition: opacity 0.1s linear; 4 | opacity: 0; 5 | border-radius: 100px; 6 | z-index: 8; 7 | background-color: rgb(var(--mdui-color-surface-bright)); 8 | align-self: center; 9 | } 10 | .ImScrollBarTrack:hover { 11 | opacity: 0.701; 12 | } 13 | .ImScrollBarThumb { 14 | position: absolute; 15 | background-color: rgb(var(--mdui-color-tertiary-light)); 16 | opacity: inherit; 17 | border-radius: 100px; 18 | /*height: 10px;*/ 19 | /*width: 100%;*/ 20 | } 21 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 魔曰 - Abracadabra 8 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/assets/mdui-icon.css: -------------------------------------------------------------------------------- 1 | /* fallback */ 2 | @font-face { 3 | font-family: "Material Icons Round"; 4 | font-style: normal; 5 | font-weight: 400; 6 | src: url(../font/mdui-round.woff2) format("woff2"); 7 | } 8 | 9 | .material-icons-round { 10 | font-family: "Material Icons Round"; 11 | font-weight: normal; 12 | font-style: normal; 13 | font-size: 24px; 14 | line-height: 1; 15 | letter-spacing: normal; 16 | text-transform: none; 17 | display: inline-block; 18 | white-space: nowrap; 19 | word-wrap: normal; 20 | direction: ltr; 21 | -webkit-font-feature-settings: "liga"; 22 | font-feature-settings: "liga"; 23 | -webkit-font-smoothing: antialiased; 24 | } 25 | -------------------------------------------------------------------------------- /src/assets/card.css: -------------------------------------------------------------------------------- 1 | .baseCard { 2 | background-color: rgb(var(--mdui-color-secondary-container)); 3 | color: rgb(var(--mdui-color-secondary)); 4 | padding: 10px; 5 | overflow: hidden; 6 | display: flex; 7 | z-index: 3; 8 | } 9 | .rawCard { 10 | background: rgb(var(--mdui-color-secondary-container)); 11 | color: rgb(var(--mdui-color-secondary)); 12 | padding: 10px; 13 | transition: all 1s ease; 14 | overflow: hidden; 15 | display: flex; 16 | z-index: 3; 17 | } 18 | .cardIcon { 19 | font-size: 120px !important; 20 | top: -10px; 21 | right: -15px; 22 | position: absolute; 23 | opacity: 0.15; 24 | z-index: 4; 25 | color: black; 26 | } 27 | .cardContent { 28 | display: grid; 29 | width: 100%; 30 | height: 100%; 31 | color: white; 32 | } 33 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 26 | -------------------------------------------------------------------------------- /src/components/MdCard.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Abracadabra:魔曰 2 | 3 | [](LICENSE.md) 4 | 5 | **Abracadabra(魔曰)** 是一个文本即时加密工具,也可用于加密文件,你正在查阅其Demo示范页。本 Demo 支持PWA,完全响应式设计。 6 | 7 | Abracadabra 是表演魔术 (施魔法) 时所念的咒语,**魔曰** 是本项目的中文别名。 8 | 9 | C++ 版本和 Node.js 版本完全等效,密文可以互相交叉解密。 10 | 11 | 12 | 13 | 14 | 15 | **在线体验**: [**Cloudflare DEMO Page**](https://abracadabra-demo.pages.dev/) 16 | 17 | **主项目**: [**Abracadabra**](https://github.com/SheepChef/Abracadabra/) 18 | 19 | **浏览器插件源码**: [**Abracadabra-demo**](https://github.com/SheepChef/Abracadabra_demo/tree/crx) 20 | 21 | ## 快速部署 22 | 23 | 如果你不想修改源码,可以直接下载Release内的构建版本。 24 | 25 | 把构建版本解压到你网站的指定位置,快速部署即完成。 26 | 27 | ## 编译部署 28 | 29 | 本示范页使用 Vue 和 Vite 30 | 31 | 如果需要本地编译部署,你最少需要执行两个指令: 32 | 33 | ```shell 34 | npm install 35 | 36 | npm run build 37 | ``` 38 | 39 | 本 Demo 是开发者自主设计的,还请在修改传播时保留版权信息。 40 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "abracadabra-nodedemo", 3 | "version": "1.0.0", 4 | "private": true, 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build --outDir ./docs", 9 | "preview": "vite preview", 10 | "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore", 11 | "format": "prettier --write src/", 12 | "postinstall": "patch-package" 13 | }, 14 | "dependencies": { 15 | "@mdui/icons": "^1.0.2", 16 | "abracadabra-cn": "^3.2.5", 17 | "mdui": "^2.1.3", 18 | "patch-package": "^8.0.0", 19 | "vue": "^3.3.11" 20 | }, 21 | "devDependencies": { 22 | "@rushstack/eslint-patch": "^1.3.3", 23 | "@vitejs/plugin-vue": "^5.0.5", 24 | "@vue/eslint-config-prettier": "^9.0.0", 25 | "eslint": "^9.5.0", 26 | "eslint-config-prettier": "^9.1.0", 27 | "eslint-plugin-vue": "^9.17.0", 28 | "prettier": "^3.2.4", 29 | "terser": "^5.31.1", 30 | "vite": "^5.0.10", 31 | "vite-plugin-compression": "^0.5.1", 32 | "vite-plugin-pwa": "^0.21.0" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 魔曰 - Abracadabra 8 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | -------------------------------------------------------------------------------- /src/components/ImMainView.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 41 | -------------------------------------------------------------------------------- /src/assets/PinnedMessageBar.css: -------------------------------------------------------------------------------- 1 | #PinnedMessageTitle { 2 | width: 100%; 3 | position: relative; 4 | height: 100%; 5 | color: rgb(var(--mdui-color-primary)); 6 | font-family: 7 | system-ui, 8 | -apple-system, 9 | BlinkMacSystemFont, 10 | "Segoe UI", 11 | Roboto, 12 | Oxygen, 13 | Ubuntu, 14 | Cantarell, 15 | "Open Sans", 16 | "Helvetica Neue", 17 | sans-serif; 18 | line-height: 1rem; 19 | } 20 | #PinnedMessageSummary { 21 | position: relative; 22 | height: 100%; 23 | } 24 | #PinnedMessageNumIndicatorContainer { 25 | align-self: center; 26 | float: right; 27 | right: 0px; 28 | position: absolute; 29 | } 30 | #PinnedMessageProgessBar { 31 | width: 100%; 32 | position: absolute; 33 | bottom: 0px; 34 | transition: height 0.12s ease; 35 | height: 0px; 36 | } 37 | #PinnedMessageNowNum { 38 | font-size: 25px; 39 | margin-right: 5px; 40 | } 41 | #PinnedMessageTotalNum { 42 | font-size: 15px; 43 | margin-right: 15px; 44 | color: rgb(var(--mdui-color-on-primary-light)); 45 | } 46 | #PinnedMessageNumDivider { 47 | margin-right: 4px; 48 | font-size: 15px; 49 | } 50 | #PinnedMessageCard { 51 | position: relative; 52 | min-width: 90%; 53 | min-height: 49px; 54 | height: 40px; 55 | margin-left: 0px; 56 | right: 0px; 57 | float: right; 58 | width: 100%; 59 | background-color: rgb(var(--mdui-color-primary-container)); 60 | border-radius: 0px 0px; 61 | z-index: 10; 62 | } 63 | #Divider { 64 | position: relative; 65 | min-height: 38px; 66 | margin-right: 10px; 67 | width: 4px; 68 | border-radius: 100px; 69 | background-color: rgb(var(--mdui-color-primary)); 70 | } 71 | #PinnedMessageContainer { 72 | padding: 0px 5px; 73 | display: flex; 74 | margin: 5.5px; 75 | position: relative; 76 | } 77 | -------------------------------------------------------------------------------- /docs/sw.js: -------------------------------------------------------------------------------- 1 | if(!self.define){let e,s={};const n=(n,i)=>(n=new URL(n+".js",i).href,s[n]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=s,document.head.appendChild(e)}else e=n,importScripts(n),s()})).then((()=>{let e=s[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e})));self.define=(i,r)=>{const a=e||("document"in self?document.currentScript.src:"")||location.href;if(s[a])return;let t={};const l=e=>n(e,a),o={module:{uri:a},exports:t,require:l};s[a]=Promise.all(i.map((e=>o[e]||l(e)))).then((e=>(r(...e),t)))}}define(["./workbox-7ac4974e"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"assets/abracadabra-cn-aGnSVyKE.js",revision:null},{url:"assets/bg-BQx4j7kW.webp",revision:null},{url:"assets/deps-DMDL2Vxr.js",revision:null},{url:"assets/deps-PoZXHJHQ.css",revision:null},{url:"assets/favicon-aOK6_042.ico",revision:null},{url:"assets/index-CcQoAca9.css",revision:null},{url:"assets/index-Ct_lBPmX.js",revision:null},{url:"assets/mdui-round-DrirKXBx.woff2",revision:null},{url:"assets/SamsungSans-Regular-BsRQoNIc.ttf",revision:null},{url:"favicon.webp",revision:"1790790282c4627a1a581783b2dbdd84"},{url:"index.html",revision:"e8937dcd926eb5844ba2f2b541c98c87"},{url:"registerSW.js",revision:"402b66900e731ca748771b6fc5e7a068"},{url:"manifest.webmanifest",revision:"4a5d57eeda73e5c37b639545aa737430"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html"))),e.registerRoute(/\.(?:png|jpg|jpeg|svg)$/,new e.NetworkFirst({cacheName:"wisbayar-images",plugins:[new e.ExpirationPlugin({maxEntries:30})]}),"GET"),e.registerRoute(/.*\.js.*/,new e.StaleWhileRevalidate({cacheName:"wisbayar-js",plugins:[new e.ExpirationPlugin({maxEntries:30,maxAgeSeconds:2592e3}),new e.CacheableResponsePlugin({statuses:[200]})]}),"GET"),e.registerRoute(/.*\.css.*/,new e.StaleWhileRevalidate({cacheName:"wisbayar-css",plugins:[new e.ExpirationPlugin({maxEntries:20,maxAgeSeconds:2592e3}),new e.CacheableResponsePlugin({statuses:[200]})]}),"GET"),e.registerRoute(/.*\.html.*/,new e.StaleWhileRevalidate({cacheName:"wisbayar-html",plugins:[new e.ExpirationPlugin({maxEntries:20,maxAgeSeconds:2592e3}),new e.CacheableResponsePlugin({statuses:[200]})]}),"GET")})); 2 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | **Academic Innovation Protection License 1.1** 2 | **学术创新保护许可证 1.1 (AIPL-1.1)** 3 | 4 | **版权所有 (C) 2025 SheepChef** 5 | 6 | **序言** 7 | 8 | 在开放源代码软件项目遭到严重抄袭和滥用,大量作者的权益遭受侵犯的背景下,本《学术创新保护许可证》(AIPL)旨在遏制开源作品遭到不正当的使用,与此同时保证大多数正常用户,开源作者和协作者的权利。 9 | 10 | 本许可证授予被授权人有条件的非商业使用权,严格保障著作权人的学术优先权与成果控制权,限制未经许可的竞争性学术利用,商业利用及专利主张行为。 11 | 12 | 针对学术利用,本许可证仅限制被授权人依赖受保护项目获取学术声誉和学术利益。私下研究的学术自由不受限制。 13 | 14 | 针对商业利用,本许可证限制被授权人依赖受保护项目获取直接或间接经济利益,参加商业竞赛,获得第三方投资等。特别地,针对媒体和艺术衍生作品,被授权人享有创作、发布和盈利自由,但著作权人保留终止协议的权利。 15 | 16 | 本许可证为独立授权框架,与现有主流开源协议体系 (GPL 等) 不兼容,使用者应知悉其特殊限制属性。使用本许可证保护的项目,不再是符合开源精神的项目,不符合开源定义(Open Source Definition)。 17 | 18 | 第三方组件的权利与义务由其原始许可证独立管辖,本协议仅约束著作权人声明的原创内容。 19 | 20 | --- 21 | 22 | **第 1 条 定义** 23 | 24 | 1.1 "本作品"指由著作权人依本许可证发布的原创性代码、文档及相关材料,不含明确标注的第三方组件。 25 | 1.2 "衍生作品"指符合下列任一情形的作品: 26 |  (a) 全部或部分包含本作品原始表达元素的任何形式的成果,无论其载体形式或技术实现方式; 27 |  (b) 与本作品形成单一功能性整体的成果,包括但不限于: 28 |   - 通过静态链接/动态链接调用本作品功能模块; 29 |   - 作为微服务架构中的依赖组件; 30 |   - 以软件即服务(SaaS)形式提供本作品核心功能; 31 |  (c) 任何实质上完全依赖本作品技术方案的成果,包括但不限于: 32 |   - 通过反编译/反汇编获得的功能等效实现; 33 | 1.3 "学术发表"指在任何具有 ISSN/ISBN/DOI 等标识的正式学术渠道中,或在任何可能被正式学术渠道引用的平台(包括但不限于 arXiv)中,或在第 1.7 条中定义的学术竞赛中,公开发表包含本作品或其衍生作品的任何内容的行为。 34 | 1.4 "著作权人"指对本作品拥有**著作人格权**的自然人、法人或其他法律实体。 35 | 1.5 "被授权人"指根据本许可证条款获得使用、修改、分发代码等权利的主体。 36 | 1.6 "商业竞赛"指由任何商业实体作为主办、承办、出资或冠名单位的竞赛。 37 | 1.7 "学术竞赛"指符合以下任一条件的竞赛: 38 |  (a) 由任何获得所在国家或地区主管部门认可的社会组织或学术机构(包括但不限于大学,研究院,科学协会等)作为主办、承办、出资或冠名单位的竞赛。 39 |  (b) 由所在国家或地区的市级以上教育主管部门作为主办、承办、出资或冠名单位的竞赛。 40 | 1.8 "本许可证"指 AIPL 学术创新保护许可证第 1.1 版。 41 | 1.9 作品的 "源代码" 指对作品进行修改所首选的作品形式。 42 | 43 | --- 44 | 45 | **第 2 条 基础授权** 46 | 47 | 2.1 在不违反本许可证条款的前提下,被授权人享有以下非独占权利: 48 |  (a) 复制、修改、执行本作品; 49 |  (b) 在遵守本许可证第 6 条的前提下,使用本作品进行学术研究; 50 |  (c) 依本许可证第 3 条分发衍生作品。 51 | 52 | 2.2 著作权人可自由使用其在本作品中的原创内容,不受本许可证限制。若本作品为多位著作权人的合作作品,则: 53 |  (a) 各方对自身创作部分保留上述自由使用权; 54 |  (b) 使用他人创作内容时,仍须以被授权人身份遵守本许可证条款。 55 | 56 | --- 57 | 58 | **第 3 条 分发** 59 | 60 | 3.1 被授权人分发本作品或其衍生作品**必须**同时满足: 61 |  (a) 以显著方式提供完整的原始版权声明。 62 |  (b) 公开提供完整的对应源代码,并确保不得采用混淆、加密或其他阻碍技术审查的手段。 63 |  (c) 以显著方式标注本许可证名称及版本号。 64 |  (d) 采用 AIPL-1.1 许可证。 65 | 66 | 3.2 被授权人**不得**以提供互联网服务为由,拒绝以可获取的方式提供本作品或其衍生作品的全部对应源代码。 67 | 68 | 3.3 禁止被授权人附加任何额外限制条款。 69 | 70 | --- 71 | 72 | **第 4 条 商业活动限制** 73 | 74 | 4.1 未经著作权人书面授权,**禁止**被授权人将本作品或其衍生作品用于: 75 |  (a) 直接或间接获取经济利益; 76 |  (b) 商业产品开发或服务运营; 77 |  (c) 提升企业资产价值; 78 |  (d) 竞标,投标等商业竞争行为; 79 |  (e) 第 1.6 条中定义的商业竞赛; 80 |  (f) 获取任意形式的第三方投资; 81 |  (g) 其他任何具有商业性质的行为。 82 | 83 | 4.2 被授权人使用本作品或其衍生作品创作媒体或艺术作品,遵守以下全部条款的,无论是否获得经济利益,无需提前获得商业授权。著作权人保留对相关被授权人终止许可的权利: 84 |  (a) 不得使用相关作品参加第 1.6 条中定义的商业竞赛; 85 |  (b) 不得以任何方式损害著作权人的合法权益; 86 | 87 | 4.3 被授权人将本作品用于第 4.1 条规定的商业用途前,必须取得著作权人签署的纸质许可文件。 88 | 89 | 4.4 被授权人若将本作品集成至商业产品中,须自行履行相关法律规定的安全评估义务,包括但不限于向监管部门备案、配合执法机关依法调取数据等法定义务。 90 | 91 | --- 92 | 93 | **第 5 条 专利权限制** 94 | 95 | 5.1 被授权人使用本作品,即视为被授权人承诺不就本作品技术方案主张专利保护。 96 | 97 | 5.2 若被授权人持有与本作品相关的有效专利,应: 98 |  (a) 授予所有本作品使用者免许可费的实施权; 99 |  (b) 不得主张专利侵权。 100 | 101 | 5.3 任何由被授权人发起的针对本作品的专利侵权诉讼,将导致本许可终止。 102 | 103 | --- 104 | 105 | **第 6 条 竞争性学术使用限制** 106 | 107 | 6.1 未经书面"竞争性学术使用"授权,在本作品著作财产权有效期内,**禁止**被授权人将本作品或其衍生作品用于: 108 |  (a) 任何为被授权人获取学术荣誉或资格的行为,如撰写学位论文,完成毕业设计等; 109 |  (b) 参加第 1.7 条中定义的学术竞赛; 110 |  (c) 进行第 1.3 条中定义的学术发表; 111 | 112 | 6.2 被授权人取得"竞争性学术使用"授权,必须满足以下所有条件: 113 |  (a) 提交《竞争性学术使用申请书》,包含: 114 |   - 个人的身份证明或组织的资质证明; 115 |   - 拟使用本作品的范围,以及详细用途。 116 |  (b) 收到著作权人作出的书面许可; 117 |  (c) 被授权人获得"竞争性学术使用"授权后,仍须依本许可证第 3 条分发衍生作品。 118 | 119 | 6.3 在遵守第 6.1 条的前提下,被授权人将本作品或其衍生作品用于其他学术用途 (例如:授课,布置作业等),不受限制。 120 | 121 | --- 122 | 123 | **第 7 条 适用排除** 124 | 125 | 7.1 本许可证不适用于明确标注不在本许可证保护范围内的内容。 126 | 127 | 7.2 不在本许可证保护范围内的内容,遵守其原始许可证条款。 128 | 129 | --- 130 | 131 | **第 8 条 法律责任** 132 | 133 | 8.1 **禁止**被授权人将本作品或其衍生作品用于违反中华人民共和国法律的用途,包括但不限于: 134 |  (a) 网络诈骗; 135 |  (b) 洗钱; 136 |  (c) 其他违法行为。 137 | 138 | 8.2 在使用本作品及其衍生作品前,被授权人需承诺其应用场景符合相关法律法规。 139 | 140 | 8.3 **著作权人明确不参与、不知晓且不认可任何非法使用行为**。任何使用本作品产生的法律后果由使用者自行承担。在适用法律允许的最大范围内,著作权人不承担因本作品被非法使用而导致的任何直接或间接法律责任。 141 | 142 | 8.4 著作权人有权对被授权人的违法滥用行为采取反制措施,包括但不限于: 143 |  (a) 法律追诉; 144 |  (b) 终止本许可证授予的权利; 145 |  (c) 依法向有关部门举报。 146 | 147 | 8.5 本作品"按原样"提供,不包含任何形式的明示或默示保证,包括但不限于适销性、特定目的适用性及不侵权的保证。在任何情况下,无论是在合同、侵权或其他案件中,著作权人均不对因本作品、或因本作品的使用或其他利用而引起的、引发的或与之相关的任何权利主张、损害赔偿或其他责任承担责任。 148 | 149 | --- 150 | 151 | **第 9 条 许可终止** 152 | 153 | 9.1 被授权人违反本许可证的任一条款将自动导致许可终止,且必须: 154 |  (a) 销毁所有作品副本; 155 |  (b) 撤回已发布的衍生作品; 156 |  (c) 撤回已发布的相关媒体或艺术作品; 157 |  (d) 在相关学术数据库发布撤销声明; 158 |  (e) 向相关竞赛组委会/学术机构提交违规使用告知函; 159 |  (f) 如涉嫌违法或侵权,自行承担相关法律责任。 160 | 161 | 9.2 第 5 条所规定的专利条款的效力,不因许可终止而失效。 162 | 163 | --- 164 | 165 | **第 10 条 法律管辖和溯及力** 166 | 167 | 10.1 本许可证适用中华人民共和国法律,排除其国际私法。 168 | 169 | 10.2 本许可证适用于本作品自 2024 年 9 月 1 日 以来公开发布的所有版本和衍生版本。对于版本发布时使用不同许可证的,以本许可证为准。 170 | 171 | --- 172 | 173 | 本许可证文本以 CC-NC-ND 4.0 协议许可 174 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from "node:url"; 2 | 3 | import fs from "fs"; 4 | import path from "path"; 5 | 6 | import { defineConfig } from "vite"; 7 | import { VitePWA } from "vite-plugin-pwa"; 8 | import vue from "@vitejs/plugin-vue"; 9 | import viteCompression from "vite-plugin-compression"; 10 | import terser from "@rollup/plugin-terser"; 11 | 12 | let configStore; 13 | let outDir = ""; 14 | 15 | // https://vitejs.dev/config/ 16 | export default defineConfig({ 17 | build: { 18 | minify: "terser", 19 | cssMinify: "esbuild", 20 | rollupOptions: { 21 | plugins: [ 22 | terser({ 23 | format: { 24 | // 取消代码注释 25 | comments: false 26 | }, 27 | 28 | mangle: { 29 | keep_classnames: false, 30 | reserved: [] 31 | } 32 | }) 33 | ], 34 | output: { 35 | manualChunks: (id) => { 36 | if (id.includes("abracadabra-cn")) { 37 | return "abracadabra-cn"; 38 | } 39 | if (id.includes("node_modules")) { 40 | return "deps"; 41 | } 42 | } 43 | } 44 | } 45 | }, 46 | plugins: [ 47 | vue({ 48 | template: { 49 | compilerOptions: { 50 | // 所有以 mdui- 开头的标签名都是 mdui 组件 51 | isCustomElement: (tag) => tag.startsWith("mdui-") 52 | } 53 | } 54 | }), 55 | VitePWA({ 56 | manifest: { 57 | name: "魔曰", 58 | short_name: "Abracadabra", 59 | id: "abracadabra", 60 | start_url: ".", 61 | description: "对文字施以神秘魔法", 62 | theme_color: "#5753c9", 63 | icons: [ 64 | //添加图标, 注意路径和图像像素正确 65 | { 66 | src: "favicon.webp", 67 | sizes: "1024x1024", //icon大小要与实际icon大小一致 68 | type: "image/webp" 69 | // form_factor: "handset", 70 | } 71 | ] 72 | }, 73 | registerType: "autoUpdate", 74 | workbox: { 75 | globPatterns: ["**/*.{js,css,html,ico,png,jpg,svg,webp,woff2,ttf}"], //缓存相关静态资源 76 | runtimeCaching: [ 77 | { 78 | urlPattern: /\.(?:png|jpg|jpeg|svg)$/, 79 | handler: "NetworkFirst", 80 | options: { 81 | cacheName: "wisbayar-images", 82 | expiration: { 83 | // 最多30个图 84 | maxEntries: 30 85 | } 86 | } 87 | }, 88 | { 89 | urlPattern: /.*\.js.*/, 90 | handler: "StaleWhileRevalidate", 91 | options: { 92 | cacheName: "wisbayar-js", 93 | expiration: { 94 | maxEntries: 30, // 最多缓存30个,超过的按照LRU原则删除 95 | maxAgeSeconds: 30 * 24 * 60 * 60 96 | }, 97 | cacheableResponse: { 98 | statuses: [200] 99 | } 100 | } 101 | }, 102 | { 103 | urlPattern: /.*\.css.*/, 104 | handler: "StaleWhileRevalidate", 105 | options: { 106 | cacheName: "wisbayar-css", 107 | expiration: { 108 | maxEntries: 20, 109 | maxAgeSeconds: 30 * 24 * 60 * 60 110 | }, 111 | cacheableResponse: { 112 | statuses: [200] 113 | } 114 | } 115 | }, 116 | { 117 | urlPattern: /.*\.html.*/, 118 | handler: "StaleWhileRevalidate", 119 | options: { 120 | cacheName: "wisbayar-html", 121 | expiration: { 122 | maxEntries: 20, 123 | maxAgeSeconds: 30 * 24 * 60 * 60 124 | }, 125 | cacheableResponse: { 126 | statuses: [200] 127 | } 128 | } 129 | } 130 | ] 131 | }, 132 | devOptions: { 133 | enabled: true 134 | } 135 | }), 136 | { 137 | name: "Abracadabra-Favicon", 138 | apply: "build", // 只在生产构建时生效 139 | configResolved(config) { 140 | // 保存最终输出目录路径 141 | outDir = path.resolve(config.root, config.build.outDir); 142 | configStore = config; 143 | }, 144 | async writeBundle() { 145 | // 自定义内容 146 | const TargetContentPath = path.join(configStore.root, "favicon.webp"); 147 | const TargetContent = fs.readFileSync(TargetContentPath); 148 | 149 | //创建全新文件 150 | const newFilePath = path.join(outDir, "favicon.webp"); 151 | fs.writeFileSync(newFilePath, TargetContent); 152 | } 153 | } 154 | ], 155 | base: "./", 156 | resolve: { 157 | alias: { 158 | "@": fileURLToPath(new URL("./src", import.meta.url)), 159 | vue: "vue/dist/vue.esm-bundler.js" 160 | } 161 | } 162 | }); 163 | -------------------------------------------------------------------------------- /docs/assets/index-CcQoAca9.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:SamsungSans;src:url(./SamsungSans-Regular-BsRQoNIc.ttf)}html,body{height:100%;width:100%;margin:0;padding:0;font-family:SamsungSans,"sans-serif"}h1{margin-top:unset}#main_content{width:100%;display:grid}@font-face{font-family:Material Icons Round;font-style:normal;font-weight:400;src:url(./mdui-round-DrirKXBx.woff2) format("woff2")}.material-icons-round{font-family:Material Icons Round;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:"liga";font-feature-settings:"liga";-webkit-font-smoothing:antialiased}#ImWindowContainer{position:absolute;display:flex;width:100%;top:0;height:100%;overflow-x:hidden;overflow-y:scroll;z-index:9}#ImContentContainer{position:absolute;width:100%;height:100%;top:0;z-index:7}#ImWindowContainer::-webkit-scrollbar{width:0!important}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fade-in-out{0%{opacity:1}50%{opacity:.7}to{opacity:1}}@media screen and (max-width: 380px){body{background:url(./bg-BQx4j7kW.webp);background-size:cover;background-position:-340px;zoom:80%}}@media screen and (max-width: 420px) and (min-width: 380px){body{background:url(./bg-BQx4j7kW.webp);background-size:cover;background-position:-340px;zoom:90%}}@media screen and (max-width: 700px){body{background:url(./bg-BQx4j7kW.webp);background-size:cover;background-position:-340px}.small{zoom:76.5%;line-break:anywhere}#MagicBadge{position:absolute;display:grid;height:220px;width:100%;top:0;background-image:linear-gradient(0deg,#5753c900,#5753c91f 20%,#6e7ff378);grid-template-rows:min-content}#FunctionCard{width:390px;height:480px;position:relative;top:130px;padding:20px 15px 15px;align-self:center;justify-self:center;background:#0a021599;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 6px 20px #000000a8}#FloatCard{width:390px;height:90px;background:#29323c;position:relative;justify-self:center;z-index:-1;top:140px;background:#0a021599;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 6px 20px #000000a8;z-index:60}#GeekCard{width:390px;height:100%;background:#29323c;position:relative;justify-self:center;z-index:50;top:150px;background:#0a021599;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 6px 20px #000000a8;transition:all cubic-bezier(.075,.82,.165,1)}.oldfloat{height:50px!important}#CryptControl{display:grid;width:219px;grid-template-columns:30% 30% 30% 30% 30% 30%;scale:.9;column-gap:2px;margin-top:-5px;align-content:center;font-size:16px}#PositionOccupie{display:block;width:390px;height:20px;background:transparent;position:relative;justify-self:center;z-index:-1;top:140px}}@media screen and (min-width: 700px){body{background:url(./bg-BQx4j7kW.webp);background-size:cover;background-position:center}.small{line-break:anywhere}#MagicBadge{position:absolute;display:grid;height:220px;width:100%;top:80px;background-image:linear-gradient(90deg,#5753c94d,#5753c900 20%);grid-template-rows:min-content}#FunctionCard{width:390px;height:480px;background:#0a021599;position:relative;float:right;left:calc(80% - 360px);top:70px;padding:20px 15px 15px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 6px 20px #000000a8}#FloatCard{width:150px;height:170px;position:relative;float:right;left:calc(80% - 520px);top:-110px;background:#0a021599;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 6px 20px #000000a8;z-index:60}#GeekCard{width:550px;height:100%;position:relative;float:right;left:calc(80% - 520px);top:-90px;z-index:50;background:#0a021599;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 6px 20px #000000a8;transition:all cubic-bezier(.075,.82,.165,1)}.oldfloat{height:130px!important;top:-80px!important}#CryptControl{display:grid;grid-template-columns:50% 50%;grid-template-rows:40px 40px 40px;scale:.9;column-gap:10px;margin-top:-5px;align-content:center;font-size:16px}#PositionOccupie{display:none}}mdui-text-field::part(label){background-color:transparent}mdui-text-field::part(input){scrollbar-width:none;line-break:anywhere}.ImScrollBarTrack{position:fixed;transition:opacity .1s linear;opacity:0;border-radius:100px;z-index:8;background-color:rgb(var(--mdui-color-surface-bright));align-self:center}.ImScrollBarTrack:hover{opacity:.701}.ImScrollBarThumb{position:absolute;background-color:rgb(var(--mdui-color-tertiary-light));opacity:inherit;border-radius:100px}.baseCard{background-color:rgb(var(--mdui-color-secondary-container));color:rgb(var(--mdui-color-secondary));padding:10px;overflow:hidden;display:flex;z-index:3}.rawCard{background:rgb(var(--mdui-color-secondary-container));color:rgb(var(--mdui-color-secondary));padding:10px;transition:all 1s ease;overflow:hidden;display:flex;z-index:3}.cardIcon{font-size:120px!important;top:-10px;right:-15px;position:absolute;opacity:.15;z-index:4;color:#000}.cardContent{display:grid;width:100%;height:100%;color:#fff} 2 | -------------------------------------------------------------------------------- /src/assets/ImMainView.css: -------------------------------------------------------------------------------- 1 | #ImWindowContainer { 2 | position: absolute; 3 | display: flex; 4 | width: 100%; 5 | top: 0px; 6 | height: 100%; 7 | overflow-x: hidden; 8 | overflow-y: scroll; 9 | z-index: 9; 10 | } 11 | #ImContentContainer { 12 | position: absolute; 13 | width: 100%; 14 | height: 100%; 15 | top: 0px; 16 | z-index: 7; 17 | } 18 | #ImWindowContainer::-webkit-scrollbar { 19 | width: 0 !important; 20 | } 21 | @keyframes rotate { 22 | from { 23 | transform: rotate(0deg); 24 | } 25 | to { 26 | transform: rotate(360deg); 27 | } 28 | } 29 | @keyframes fade-in-out { 30 | 0% { 31 | opacity: 1; 32 | } 33 | 50% { 34 | opacity: 0.7; 35 | } 36 | 100% { 37 | opacity: 1; 38 | } 39 | } 40 | 41 | @media screen and (max-width: 380px) { 42 | body { 43 | background: url("./bg.webp"); 44 | background-size: cover; 45 | background-position: -340px; 46 | zoom: 80%; 47 | } 48 | } 49 | 50 | @media screen and (max-width: 420px) and (min-width: 380px) { 51 | body { 52 | background: url("./bg.webp"); 53 | background-size: cover; 54 | background-position: -340px; 55 | zoom: 90%; 56 | } 57 | } 58 | 59 | @media screen and (max-width: 700px) { 60 | body { 61 | background: url("./bg.webp"); 62 | background-size: cover; 63 | background-position: -340px; 64 | } 65 | .small { 66 | zoom: 76.5%; 67 | line-break: anywhere; 68 | } 69 | #MagicBadge { 70 | position: absolute; 71 | display: grid; 72 | height: 220px; 73 | width: 100%; 74 | top: 0px; 75 | background-image: linear-gradient(0deg, #5753c900 0%, #5753c91f 20%, #6e7ff378 100%); 76 | grid-template-rows: min-content; 77 | } 78 | #FunctionCard { 79 | width: 390px; 80 | height: 480px; 81 | position: relative; 82 | top: 130px; 83 | padding: 20px 15px 15px; 84 | align-self: center; 85 | justify-self: center; 86 | background: rgb(10 2 21 / 60%); 87 | backdrop-filter: blur(4px); 88 | box-shadow: 0px 6px 20px 0px rgb(0 0 0 / 66%); 89 | } 90 | #FloatCard { 91 | width: 390px; 92 | height: 90px; 93 | background: rgb(41, 50, 60); 94 | position: relative; 95 | justify-self: center; 96 | z-index: -1; 97 | top: 140px; 98 | background: rgb(10 2 21 / 60%); 99 | backdrop-filter: blur(4px); 100 | box-shadow: 0px 6px 20px 0px rgb(0 0 0 / 66%); 101 | z-index: 60; 102 | } 103 | #GeekCard { 104 | width: 390px; 105 | height: 100%; 106 | background: rgb(41, 50, 60); 107 | position: relative; 108 | justify-self: center; 109 | z-index: 50; 110 | top: 150px; 111 | background: rgb(10 2 21 / 60%); 112 | backdrop-filter: blur(4px); 113 | box-shadow: 0px 6px 20px 0px rgb(0 0 0 / 66%); 114 | transition: all cubic-bezier(0.075, 0.82, 0.165, 1); 115 | } 116 | .oldfloat { 117 | height: 50px !important; 118 | } 119 | #CryptControl { 120 | display: grid; 121 | width: 219px; 122 | grid-template-columns: 30% 30% 30% 30% 30% 30%; 123 | scale: 0.9; 124 | column-gap: 2px; 125 | margin-top: -5px; 126 | align-content: center; 127 | font-size: 16px; 128 | } 129 | #PositionOccupie { 130 | display: block; 131 | width: 390px; 132 | height: 20px; 133 | background: transparent; 134 | position: relative; 135 | justify-self: center; 136 | z-index: -1; 137 | top: 140px; 138 | } 139 | } 140 | 141 | @media screen and (min-width: 700px) { 142 | body { 143 | background: url("./bg.webp"); 144 | background-size: cover; 145 | background-position: center; 146 | } 147 | .small { 148 | line-break: anywhere; 149 | } 150 | #MagicBadge { 151 | position: absolute; 152 | display: grid; 153 | height: 220px; 154 | width: 100%; 155 | top: 80px; 156 | /*background-image: linear-gradient( 157 | -435deg, 158 | #5753c9b5 0%, 159 | #5753c900 35%, 160 | #5753c9 85%, 161 | #6e7ff3 100% 162 | );*/ 163 | background-image: linear-gradient(90deg, #5753c94d 0%, #5753c900 20%); 164 | grid-template-rows: min-content; 165 | } 166 | #FunctionCard { 167 | width: 390px; 168 | height: 480px; 169 | background: rgb(10 2 21 / 60%); 170 | position: relative; 171 | float: right; 172 | left: calc(80% - 360px); 173 | top: 70px; 174 | padding: 20px 15px 15px; 175 | backdrop-filter: blur(4px); 176 | box-shadow: 0px 6px 20px 0px rgb(0 0 0 / 66%); 177 | } 178 | #FloatCard { 179 | width: 150px; 180 | height: 170px; 181 | position: relative; 182 | float: right; 183 | left: calc(80% - 520px); 184 | top: -110px; 185 | background: rgb(10 2 21 / 60%); 186 | backdrop-filter: blur(4px); 187 | box-shadow: 0px 6px 20px 0px rgb(0 0 0 / 66%); 188 | z-index: 60; 189 | } 190 | #GeekCard { 191 | width: 550px; 192 | height: 100%; 193 | position: relative; 194 | float: right; 195 | left: calc(80% - 520px); 196 | top: -90px; 197 | z-index: 50; 198 | background: rgb(10 2 21 / 60%); 199 | backdrop-filter: blur(4px); 200 | box-shadow: 0px 6px 20px 0px rgb(0 0 0 / 66%); 201 | transition: all cubic-bezier(0.075, 0.82, 0.165, 1); 202 | } 203 | .oldfloat { 204 | height: 130px !important; 205 | top: -80px !important; 206 | } 207 | #CryptControl { 208 | display: grid; 209 | grid-template-columns: 50% 50%; 210 | grid-template-rows: 40px 40px 40px; 211 | scale: 0.9; 212 | column-gap: 10px; 213 | margin-top: -5px; 214 | align-content: center; 215 | font-size: 16px; 216 | } 217 | #PositionOccupie { 218 | display: none; 219 | } 220 | } 221 | 222 | mdui-text-field::part(label) { 223 | background-color: transparent; 224 | } 225 | 226 | mdui-text-field::part(input) { 227 | scrollbar-width: none; 228 | line-break: anywhere; 229 | } 230 | -------------------------------------------------------------------------------- /src/components/ImScrollBar.vue: -------------------------------------------------------------------------------- 1 | 298 | 299 | 309 | -------------------------------------------------------------------------------- /patches/mdui+2.1.3.patch: -------------------------------------------------------------------------------- 1 | diff --git a/node_modules/mdui/components/text-field/style.js b/node_modules/mdui/components/text-field/style.js 2 | index 2b52d70..8cb28c4 100644 3 | --- a/node_modules/mdui/components/text-field/style.js 4 | +++ b/node_modules/mdui/components/text-field/style.js 5 | @@ -1,2 +1,2 @@ 6 | import { css } from 'lit'; 7 | -export const style = css `:host{display:inline-block;width:100%}:host([disabled]:not([disabled=false i])){pointer-events:none}:host([type=hidden]){display:none}.container{position:relative;display:flex;align-items:center;height:100%;padding:.125rem .125rem .125rem 1rem;transition:box-shadow var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard)}.container.has-icon{padding-left:.75rem}.container.has-action,.container.has-right-icon,.container.has-suffix{padding-right:.75rem}:host([variant=filled]) .container{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-on-surface-variant));background-color:rgb(var(--mdui-color-surface-container-highest));border-radius:var(--mdui-shape-corner-extra-small) var(--mdui-shape-corner-extra-small) 0 0}:host([variant=filled]) .container.invalid,:host([variant=filled]) .container.invalid-style{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-error))}:host([variant=filled]:hover) .container{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-on-surface))}:host([variant=filled]:hover) .container.invalid,:host([variant=filled]:hover) .container.invalid-style{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-on-error-container))}:host([variant=filled][focused-style]) .container,:host([variant=filled][focused]) .container{box-shadow:inset 0 -.125rem 0 0 rgb(var(--mdui-color-primary))}:host([variant=filled][focused-style]) .container.invalid,:host([variant=filled][focused-style]) .container.invalid-style,:host([variant=filled][focused]) .container.invalid,:host([variant=filled][focused]) .container.invalid-style{box-shadow:inset 0 -.125rem 0 0 rgb(var(--mdui-color-error))}:host([variant=filled][disabled]:not([disabled=false i])) .container{box-shadow:inset 0 -.0625rem 0 0 rgba(var(--mdui-color-on-surface),38%);background-color:rgba(var(--mdui-color-on-surface),4%)}:host([variant=outlined]) .container{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-outline));border-radius:var(--mdui-shape-corner-extra-small)}:host([variant=outlined]) .container.invalid,:host([variant=outlined]) .container.invalid-style{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-error))}:host([variant=outlined]:hover) .container{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-on-surface))}:host([variant=outlined]:hover) .container.invalid,:host([variant=outlined]:hover) .container.invalid-style{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-on-error-container))}:host([variant=outlined][focused-style]) .container,:host([variant=outlined][focused]) .container{box-shadow:inset 0 0 0 .125rem rgb(var(--mdui-color-primary))}:host([variant=outlined][focused-style]) .container.invalid,:host([variant=outlined][focused-style]) .container.invalid-style,:host([variant=outlined][focused]) .container.invalid,:host([variant=outlined][focused]) .container.invalid-style{box-shadow:inset 0 0 0 .125rem rgb(var(--mdui-color-error))}:host([variant=outlined][disabled]:not([disabled=false i])) .container{box-shadow:inset 0 0 0 .125rem rgba(var(--mdui-color-on-surface),12%)}.action,.icon,.prefix,.right-icon,.suffix{display:flex;-webkit-user-select:none;user-select:none;color:rgb(var(--mdui-color-on-surface-variant))}:host([disabled]:not([disabled=false i])) .action,:host([disabled]:not([disabled=false i])) .icon,:host([disabled]:not([disabled=false i])) .prefix,:host([disabled]:not([disabled=false i])) .right-icon,:host([disabled]:not([disabled=false i])) .suffix{color:rgba(var(--mdui-color-on-surface),38%)}.invalid .right-icon,.invalid-style .right-icon{color:rgb(var(--mdui-color-error))}:host(:hover) .invalid .right-icon,:host(:hover) .invalid-style .right-icon{color:rgb(var(--mdui-color-on-error-container))}:host([focused-style]) .invalid .right-icon,:host([focused-style]) .invalid-style .right-icon,:host([focused]) .invalid .right-icon,:host([focused]) .invalid-style .right-icon{color:rgb(var(--mdui-color-error))}.action,.icon,.right-icon{font-size:1.5rem}.action mdui-button-icon,.icon mdui-button-icon,.right-icon mdui-button-icon,::slotted(mdui-button-icon[slot]){margin-left:-.5rem;margin-right:-.5rem}.action .i,.icon .i,.right-icon .i,::slotted([slot$=icon]){font-size:inherit}.has-icon .icon{margin-right:1rem}.has-prefix .prefix{padding-right:.125rem}.has-action .action{margin-left:.75rem}.has-suffix .suffix{padding-right:.25rem;padding-left:.125rem}.has-right-icon .right-icon{margin-left:.75rem}.prefix,.suffix{display:none;font-size:var(--mdui-typescale-body-large-size);font-weight:var(--mdui-typescale-body-large-weight);letter-spacing:var(--mdui-typescale-body-large-tracking);line-height:var(--mdui-typescale-body-large-line-height)}:host([variant=filled][label]) .prefix,:host([variant=filled][label]) .suffix{padding-top:1rem}.has-value .prefix,.has-value .suffix,:host([focused-style]) .prefix,:host([focused-style]) .suffix,:host([focused]) .prefix,:host([focused]) .suffix{display:flex}.input-container{display:flex;width:100%;height:100%}.label{position:absolute;pointer-events:none;max-width:calc(100% - 1rem);display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;transition:all var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard);top:1rem;color:rgb(var(--mdui-color-on-surface-variant));font-size:var(--mdui-typescale-body-large-size);font-weight:var(--mdui-typescale-body-large-weight);letter-spacing:var(--mdui-typescale-body-large-tracking);line-height:var(--mdui-typescale-body-large-line-height)}.invalid .label,.invalid-style .label{color:rgb(var(--mdui-color-error))}:host([variant=outlined]) .label{padding:0 .25rem;margin:0 -.25rem}:host([variant=outlined]:hover) .label{color:rgb(var(--mdui-color-on-surface))}:host([variant=filled]:hover) .invalid .label,:host([variant=filled]:hover) .invalid-style .label,:host([variant=outlined]:hover) .invalid .label,:host([variant=outlined]:hover) .invalid-style .label{color:rgb(var(--mdui-color-on-error-container))}:host([variant=filled][focused-style]) .label,:host([variant=filled][focused]) .label,:host([variant=outlined][focused-style]) .label,:host([variant=outlined][focused]) .label{color:rgb(var(--mdui-color-primary))}:host([variant=filled]) .has-value .label,:host([variant=filled][focused-style]) .label,:host([variant=filled][focused]) .label,:host([variant=filled][type=date]) .label,:host([variant=filled][type=datetime-local]) .label,:host([variant=filled][type=month]) .label,:host([variant=filled][type=time]) .label,:host([variant=filled][type=week]) .label{font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height);top:.25rem}:host([variant=outlined]) .has-value .label,:host([variant=outlined][focused-style]) .label,:host([variant=outlined][focused]) .label,:host([variant=outlined][type=date]) .label,:host([variant=outlined][type=datetime-local]) .label,:host([variant=outlined][type=month]) .label,:host([variant=outlined][type=time]) .label,:host([variant=outlined][type=week]) .label{font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height);top:-.5rem;left:.75rem;background-color:rgb(var(--mdui-color-background))}:host([variant=filled][focused-style]) .invalid .label,:host([variant=filled][focused-style]) .invalid-style .label,:host([variant=filled][focused]) .invalid .label,:host([variant=filled][focused]) .invalid-style .label,:host([variant=outlined][focused-style]) .invalid .label,:host([variant=outlined][focused-style]) .invalid-style .label,:host([variant=outlined][focused]) .invalid .label,:host([variant=outlined][focused]) .invalid-style .label{color:rgb(var(--mdui-color-error))}:host([variant=filled][disabled]:not([disabled=false i])) .label,:host([variant=outlined][disabled]:not([disabled=false i])) .label{color:rgba(var(--mdui-color-on-surface),38%)}.input{display:block;width:100%;border:none;outline:0;background:0 0;appearance:none;resize:none;cursor:inherit;font-family:inherit;padding:.875rem .875rem .875rem 0;font-size:var(--mdui-typescale-body-large-size);font-weight:var(--mdui-typescale-body-large-weight);letter-spacing:var(--mdui-typescale-body-large-tracking);line-height:var(--mdui-typescale-body-large-line-height);color:rgb(var(--mdui-color-on-surface));caret-color:rgb(var(--mdui-color-primary))}.has-action .input,.has-right-icon .input{padding-right:.25rem}.has-suffix .input{padding-right:0}.input.hide-input{opacity:0;height:0;min-height:0;width:0;padding:0!important;overflow:hidden}.input::placeholder{color:rgb(var(--mdui-color-on-surface-variant))}.invalid .input,.invalid-style .input{caret-color:rgb(var(--mdui-color-error))}:host([disabled]:not([disabled=false i])) .input{color:rgba(var(--mdui-color-on-surface),38%)}:host([end-aligned]:not([end-aligned=false i])) .input{text-align:right}textarea.input{padding-top:0;margin-top:.875rem}:host([variant=filled]) .label+.input{padding-top:1.375rem;padding-bottom:.375rem}:host([variant=filled]) .label+textarea.input{padding-top:0;margin-top:1.375rem}.supporting{display:flex;justify-content:space-between;padding:.25rem 1rem;color:rgb(var(--mdui-color-on-surface-variant))}.supporting.invalid,.supporting.invalid-style{color:rgb(var(--mdui-color-error))}.helper{display:block;opacity:1;transition:opacity var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear);font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)}:host([disabled]:not([disabled=false i])) .helper{color:rgba(var(--mdui-color-on-surface),38%)}:host([helper-on-focus]:not([helper-on-focus=false i])) .helper{opacity:0}:host([helper-on-focus][focused-style]:not([helper-on-focus=false i])) .helper,:host([helper-on-focus][focused]:not([helper-on-focus=false i])) .helper{opacity:1}.error{font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)}.counter{flex-wrap:nowrap;padding-left:1rem;font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)}::-ms-reveal{display:none}.input[type=number]::-webkit-inner-spin-button,.input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;display:none}.input[type=number]{-moz-appearance:textfield}.input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}`; 8 | +export const style = css `:host{display:inline-block;width:100%}:host([disabled]:not([disabled=false i])){pointer-events:none}:host([type=hidden]){display:none}.container{position:relative;display:flex;align-items:center;height:100%;padding:.125rem .125rem .125rem 1rem;transition:box-shadow var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard)}.container.has-icon{padding-left:.75rem}.container.has-action,.container.has-right-icon,.container.has-suffix{padding-right:.75rem}:host([variant=filled]) .container{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-on-surface-variant));background-color:rgb(var(--mdui-color-surface-container-highest));border-radius:var(--mdui-shape-corner-extra-small) var(--mdui-shape-corner-extra-small) 0 0}:host([variant=filled]) .container.invalid,:host([variant=filled]) .container.invalid-style{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-error))}:host([variant=filled]:hover) .container{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-on-surface))}:host([variant=filled]:hover) .container.invalid,:host([variant=filled]:hover) .container.invalid-style{box-shadow:inset 0 -.0625rem 0 0 rgb(var(--mdui-color-on-error-container))}:host([variant=filled][focused-style]) .container,:host([variant=filled][focused]) .container{box-shadow:inset 0 -.125rem 0 0 rgb(var(--mdui-color-primary))}:host([variant=filled][focused-style]) .container.invalid,:host([variant=filled][focused-style]) .container.invalid-style,:host([variant=filled][focused]) .container.invalid,:host([variant=filled][focused]) .container.invalid-style{box-shadow:inset 0 -.125rem 0 0 rgb(var(--mdui-color-error))}:host([variant=filled][disabled]:not([disabled=false i])) .container{box-shadow:inset 0 -.0625rem 0 0 rgba(var(--mdui-color-on-surface),38%);background-color:rgba(var(--mdui-color-on-surface),4%)}:host([variant=outlined]) .container{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-outline));border-radius:var(--mdui-shape-corner-extra-small)}:host([variant=outlined]) .container.invalid,:host([variant=outlined]) .container.invalid-style{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-error))}:host([variant=outlined]:hover) .container{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-on-surface))}:host([variant=outlined]:hover) .container.invalid,:host([variant=outlined]:hover) .container.invalid-style{box-shadow:inset 0 0 0 .0625rem rgb(var(--mdui-color-on-error-container))}:host([variant=outlined][focused-style]) .container,:host([variant=outlined][focused]) .container{box-shadow:inset 0 0 0 .125rem rgb(var(--mdui-color-primary))}:host([variant=outlined][focused-style]) .container.invalid,:host([variant=outlined][focused-style]) .container.invalid-style,:host([variant=outlined][focused]) .container.invalid,:host([variant=outlined][focused]) .container.invalid-style{box-shadow:inset 0 0 0 .125rem rgb(var(--mdui-color-error))}:host([variant=outlined][disabled]:not([disabled=false i])) .container{box-shadow:inset 0 0 0 .125rem rgba(var(--mdui-color-on-surface),12%)}.action,.icon,.prefix,.right-icon,.suffix{display:flex;-webkit-user-select:none;user-select:none;color:rgb(var(--mdui-color-on-surface-variant))}:host([disabled]:not([disabled=false i])) .action,:host([disabled]:not([disabled=false i])) .icon,:host([disabled]:not([disabled=false i])) .prefix,:host([disabled]:not([disabled=false i])) .right-icon,:host([disabled]:not([disabled=false i])) .suffix{color:rgba(var(--mdui-color-on-surface),38%)}.invalid .right-icon,.invalid-style .right-icon{color:rgb(var(--mdui-color-error))}:host(:hover) .invalid .right-icon,:host(:hover) .invalid-style .right-icon{color:rgb(var(--mdui-color-on-error-container))}:host([focused-style]) .invalid .right-icon,:host([focused-style]) .invalid-style .right-icon,:host([focused]) .invalid .right-icon,:host([focused]) .invalid-style .right-icon{color:rgb(var(--mdui-color-error))}.action,.icon,.right-icon{font-size:1.5rem}.action mdui-button-icon,.icon mdui-button-icon,.right-icon mdui-button-icon,::slotted(mdui-button-icon[slot]){margin-left:-.5rem;margin-right:-.5rem}.action .i,.icon .i,.right-icon .i,::slotted([slot$=icon]){font-size:inherit}.has-icon .icon{margin-right:1rem}.has-prefix .prefix{padding-right:.125rem}.has-action .action{margin-left:.75rem}.has-suffix .suffix{padding-right:.25rem;padding-left:.125rem}.has-right-icon .right-icon{margin-left:.75rem}.prefix,.suffix{display:none;font-size:var(--mdui-typescale-body-large-size);font-weight:var(--mdui-typescale-body-large-weight);letter-spacing:var(--mdui-typescale-body-large-tracking);line-height:var(--mdui-typescale-body-large-line-height)}:host([variant=filled][label]) .prefix,:host([variant=filled][label]) .suffix{padding-top:1rem}.has-value .prefix,.has-value .suffix,:host([focused-style]) .prefix,:host([focused-style]) .suffix,:host([focused]) .prefix,:host([focused]) .suffix{display:flex}.input-container{display:flex;width:100%;height:100%}.label{position:absolute;pointer-events:none;max-width:calc(100% - 1rem);display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;transition:all var(--mdui-motion-duration-short4) var(--mdui-motion-easing-standard);top:1rem;color:rgb(var(--mdui-color-on-surface-variant));font-size:var(--mdui-typescale-body-large-size);font-weight:var(--mdui-typescale-body-large-weight);letter-spacing:var(--mdui-typescale-body-large-tracking);line-height:var(--mdui-typescale-body-large-line-height)}.invalid .label,.invalid-style .label{color:rgb(var(--mdui-color-error))}:host([variant=outlined]) .label{padding:0 .25rem;margin:0 -.25rem}:host([variant=outlined]:hover) .label{color:rgb(var(--mdui-color-on-surface))}:host([variant=filled]:hover) .invalid .label,:host([variant=filled]:hover) .invalid-style .label,:host([variant=outlined]:hover) .invalid .label,:host([variant=outlined]:hover) .invalid-style .label{color:rgb(var(--mdui-color-on-error-container))}:host([variant=filled][focused-style]) .label,:host([variant=filled][focused]) .label,:host([variant=outlined][focused-style]) .label,:host([variant=outlined][focused]) .label{color:transparent;}:host([variant=filled]) .has-value .label,:host([variant=filled][focused-style]) .label,:host([variant=filled][focused]) .label,:host([variant=filled][type=date]) .label,:host([variant=filled][type=datetime-local]) .label,:host([variant=filled][type=month]) .label,:host([variant=filled][type=time]) .label,:host([variant=filled][type=week]) .label{font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height);top:.25rem}:host([variant=outlined]) .has-value .label,:host([variant=outlined][focused-style]) .label,:host([variant=outlined][focused]) .label,:host([variant=outlined][type=date]) .label,:host([variant=outlined][type=datetime-local]) .label,:host([variant=outlined][type=month]) .label,:host([variant=outlined][type=time]) .label,:host([variant=outlined][type=week]) .label{font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height);top:-.5rem;left:.75rem;color:transparent;background-color:rgb(var(--mdui-color-background))}:host([variant=filled][focused-style]) .invalid .label,:host([variant=filled][focused-style]) .invalid-style .label,:host([variant=filled][focused]) .invalid .label,:host([variant=filled][focused]) .invalid-style .label,:host([variant=outlined][focused-style]) .invalid .label,:host([variant=outlined][focused-style]) .invalid-style .label,:host([variant=outlined][focused]) .invalid .label,:host([variant=outlined][focused]) .invalid-style .label{color:rgb(var(--mdui-color-error))}:host([variant=filled][disabled]:not([disabled=false i])) .label,:host([variant=outlined][disabled]:not([disabled=false i])) .label{color:rgba(var(--mdui-color-on-surface),38%)}.input{display:block;width:100%;border:none;outline:0;background:0 0;appearance:none;resize:none;cursor:inherit;font-family:inherit;padding:.875rem .875rem .875rem 0;font-size:var(--mdui-typescale-body-large-size);font-weight:var(--mdui-typescale-body-large-weight);letter-spacing:var(--mdui-typescale-body-large-tracking);line-height:var(--mdui-typescale-body-large-line-height);color:rgb(var(--mdui-color-on-surface));caret-color:rgb(var(--mdui-color-primary))}.has-action .input,.has-right-icon .input{padding-right:.25rem}.has-suffix .input{padding-right:0}.input.hide-input{opacity:0;height:0;min-height:0;width:0;padding:0!important;overflow:hidden}.input::placeholder{color:rgb(var(--mdui-color-on-surface-variant))}.invalid .input,.invalid-style .input{caret-color:rgb(var(--mdui-color-error))}:host([disabled]:not([disabled=false i])) .input{color:rgba(var(--mdui-color-on-surface),38%)}:host([end-aligned]:not([end-aligned=false i])) .input{text-align:right}textarea.input{padding-top:0;margin-top:.875rem}:host([variant=filled]) .label+.input{padding-top:1.375rem;padding-bottom:.375rem}:host([variant=filled]) .label+textarea.input{padding-top:0;margin-top:1.375rem}.supporting{display:flex;justify-content:space-between;padding:.25rem 1rem;color:rgb(var(--mdui-color-on-surface-variant))}.supporting.invalid,.supporting.invalid-style{color:rgb(var(--mdui-color-error))}.helper{display:block;opacity:1;transition:opacity var(--mdui-motion-duration-short4) var(--mdui-motion-easing-linear);font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)}:host([disabled]:not([disabled=false i])) .helper{color:rgba(var(--mdui-color-on-surface),38%)}:host([helper-on-focus]:not([helper-on-focus=false i])) .helper{opacity:0}:host([helper-on-focus][focused-style]:not([helper-on-focus=false i])) .helper,:host([helper-on-focus][focused]:not([helper-on-focus=false i])) .helper{opacity:1}.error{font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)}.counter{flex-wrap:nowrap;padding-left:1rem;font-size:var(--mdui-typescale-body-small-size);font-weight:var(--mdui-typescale-body-small-weight);letter-spacing:var(--mdui-typescale-body-small-tracking);line-height:var(--mdui-typescale-body-small-line-height)}::-ms-reveal{display:none}.input[type=number]::-webkit-inner-spin-button,.input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;display:none}.input[type=number]{-moz-appearance:textfield}.input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}`; 9 | -------------------------------------------------------------------------------- /docs/assets/deps-PoZXHJHQ.css: -------------------------------------------------------------------------------- 1 | :root{--mdui-breakpoint-xs:0px;--mdui-breakpoint-sm:600px;--mdui-breakpoint-md:840px;--mdui-breakpoint-lg:1080px;--mdui-breakpoint-xl:1440px;--mdui-breakpoint-xxl:1920px}:root{--mdui-color-primary-light:103,80,164;--mdui-color-primary-container-light:234,221,255;--mdui-color-on-primary-light:255,255,255;--mdui-color-on-primary-container-light:33,0,94;--mdui-color-inverse-primary-light:208,188,255;--mdui-color-secondary-light:98,91,113;--mdui-color-secondary-container-light:232,222,248;--mdui-color-on-secondary-light:255,255,255;--mdui-color-on-secondary-container-light:30,25,43;--mdui-color-tertiary-light:125,82,96;--mdui-color-tertiary-container-light:255,216,228;--mdui-color-on-tertiary-light:255,255,255;--mdui-color-on-tertiary-container-light:55,11,30;--mdui-color-surface-light:254,247,255;--mdui-color-surface-dim-light:222,216,225;--mdui-color-surface-bright-light:254,247,255;--mdui-color-surface-container-lowest-light:255,255,255;--mdui-color-surface-container-low-light:247,242,250;--mdui-color-surface-container-light:243,237,247;--mdui-color-surface-container-high-light:236,230,240;--mdui-color-surface-container-highest-light:230,224,233;--mdui-color-surface-variant-light:231,224,236;--mdui-color-on-surface-light:28,27,31;--mdui-color-on-surface-variant-light:73,69,78;--mdui-color-inverse-surface-light:49,48,51;--mdui-color-inverse-on-surface-light:244,239,244;--mdui-color-background-light:254,247,255;--mdui-color-on-background-light:28,27,31;--mdui-color-error-light:179,38,30;--mdui-color-error-container-light:249,222,220;--mdui-color-on-error-light:255,255,255;--mdui-color-on-error-container-light:65,14,11;--mdui-color-outline-light:121,116,126;--mdui-color-outline-variant-light:196,199,197;--mdui-color-shadow-light:0,0,0;--mdui-color-surface-tint-color-light:103,80,164;--mdui-color-scrim-light:0,0,0;--mdui-color-primary-dark:208,188,255;--mdui-color-primary-container-dark:79,55,139;--mdui-color-on-primary-dark:55,30,115;--mdui-color-on-primary-container-dark:234,221,255;--mdui-color-inverse-primary-dark:103,80,164;--mdui-color-secondary-dark:204,194,220;--mdui-color-secondary-container-dark:74,68,88;--mdui-color-on-secondary-dark:51,45,65;--mdui-color-on-secondary-container-dark:232,222,248;--mdui-color-tertiary-dark:239,184,200;--mdui-color-tertiary-container-dark:99,59,72;--mdui-color-on-tertiary-dark:73,37,50;--mdui-color-on-tertiary-container-dark:255,216,228;--mdui-color-surface-dark:20,18,24;--mdui-color-surface-dim-dark:20,18,24;--mdui-color-surface-bright-dark:59,56,62;--mdui-color-surface-container-lowest-dark:15,13,19;--mdui-color-surface-container-low-dark:29,27,32;--mdui-color-surface-container-dark:33,31,38;--mdui-color-surface-container-high-dark:43,41,48;--mdui-color-surface-container-highest-dark:54,52,59;--mdui-color-surface-variant-dark:73,69,79;--mdui-color-on-surface-dark:230,225,229;--mdui-color-on-surface-variant-dark:202,196,208;--mdui-color-inverse-surface-dark:230,225,229;--mdui-color-inverse-on-surface-dark:49,48,51;--mdui-color-background-dark:20,18,24;--mdui-color-on-background-dark:230,225,229;--mdui-color-error-dark:242,184,181;--mdui-color-error-container-dark:140,29,24;--mdui-color-on-error-dark:96,20,16;--mdui-color-on-error-container-dark:249,222,220;--mdui-color-outline-dark:147,143,153;--mdui-color-outline-variant-dark:68,71,70;--mdui-color-shadow-dark:0,0,0;--mdui-color-surface-tint-color-dark:208,188,255;--mdui-color-scrim-dark:0,0,0;font-size:16px}.mdui-theme-light,:root{color-scheme:light;--mdui-color-primary:var(--mdui-color-primary-light);--mdui-color-primary-container:var(--mdui-color-primary-container-light);--mdui-color-on-primary:var(--mdui-color-on-primary-light);--mdui-color-on-primary-container:var(--mdui-color-on-primary-container-light);--mdui-color-inverse-primary:var(--mdui-color-inverse-primary-light);--mdui-color-secondary:var(--mdui-color-secondary-light);--mdui-color-secondary-container:var(--mdui-color-secondary-container-light);--mdui-color-on-secondary:var(--mdui-color-on-secondary-light);--mdui-color-on-secondary-container:var(--mdui-color-on-secondary-container-light);--mdui-color-tertiary:var(--mdui-color-tertiary-light);--mdui-color-tertiary-container:var(--mdui-color-tertiary-container-light);--mdui-color-on-tertiary:var(--mdui-color-on-tertiary-light);--mdui-color-on-tertiary-container:var(--mdui-color-on-tertiary-container-light);--mdui-color-surface:var(--mdui-color-surface-light);--mdui-color-surface-dim:var(--mdui-color-surface-dim-light);--mdui-color-surface-bright:var(--mdui-color-surface-bright-light);--mdui-color-surface-container-lowest:var(--mdui-color-surface-container-lowest-light);--mdui-color-surface-container-low:var(--mdui-color-surface-container-low-light);--mdui-color-surface-container:var(--mdui-color-surface-container-light);--mdui-color-surface-container-high:var(--mdui-color-surface-container-high-light);--mdui-color-surface-container-highest:var(--mdui-color-surface-container-highest-light);--mdui-color-surface-variant:var(--mdui-color-surface-variant-light);--mdui-color-on-surface:var(--mdui-color-on-surface-light);--mdui-color-on-surface-variant:var(--mdui-color-on-surface-variant-light);--mdui-color-inverse-surface:var(--mdui-color-inverse-surface-light);--mdui-color-inverse-on-surface:var(--mdui-color-inverse-on-surface-light);--mdui-color-background:var(--mdui-color-background-light);--mdui-color-on-background:var(--mdui-color-on-background-light);--mdui-color-error:var(--mdui-color-error-light);--mdui-color-error-container:var(--mdui-color-error-container-light);--mdui-color-on-error:var(--mdui-color-on-error-light);--mdui-color-on-error-container:var(--mdui-color-on-error-container-light);--mdui-color-outline:var(--mdui-color-outline-light);--mdui-color-outline-variant:var(--mdui-color-outline-variant-light);--mdui-color-shadow:var(--mdui-color-shadow-light);--mdui-color-surface-tint-color:var(--mdui-color-surface-tint-color-light);--mdui-color-scrim:var(--mdui-color-scrim-light);color:rgb(var(--mdui-color-on-background));background-color:rgb(var(--mdui-color-background))}.mdui-theme-dark{color-scheme:dark;--mdui-color-primary:var(--mdui-color-primary-dark);--mdui-color-primary-container:var(--mdui-color-primary-container-dark);--mdui-color-on-primary:var(--mdui-color-on-primary-dark);--mdui-color-on-primary-container:var(--mdui-color-on-primary-container-dark);--mdui-color-inverse-primary:var(--mdui-color-inverse-primary-dark);--mdui-color-secondary:var(--mdui-color-secondary-dark);--mdui-color-secondary-container:var(--mdui-color-secondary-container-dark);--mdui-color-on-secondary:var(--mdui-color-on-secondary-dark);--mdui-color-on-secondary-container:var(--mdui-color-on-secondary-container-dark);--mdui-color-tertiary:var(--mdui-color-tertiary-dark);--mdui-color-tertiary-container:var(--mdui-color-tertiary-container-dark);--mdui-color-on-tertiary:var(--mdui-color-on-tertiary-dark);--mdui-color-on-tertiary-container:var(--mdui-color-on-tertiary-container-dark);--mdui-color-surface:var(--mdui-color-surface-dark);--mdui-color-surface-dim:var(--mdui-color-surface-dim-dark);--mdui-color-surface-bright:var(--mdui-color-surface-bright-dark);--mdui-color-surface-container-lowest:var(--mdui-color-surface-container-lowest-dark);--mdui-color-surface-container-low:var(--mdui-color-surface-container-low-dark);--mdui-color-surface-container:var(--mdui-color-surface-container-dark);--mdui-color-surface-container-high:var(--mdui-color-surface-container-high-dark);--mdui-color-surface-container-highest:var(--mdui-color-surface-container-highest-dark);--mdui-color-surface-variant:var(--mdui-color-surface-variant-dark);--mdui-color-on-surface:var(--mdui-color-on-surface-dark);--mdui-color-on-surface-variant:var(--mdui-color-on-surface-variant-dark);--mdui-color-inverse-surface:var(--mdui-color-inverse-surface-dark);--mdui-color-inverse-on-surface:var(--mdui-color-inverse-on-surface-dark);--mdui-color-background:var(--mdui-color-background-dark);--mdui-color-on-background:var(--mdui-color-on-background-dark);--mdui-color-error:var(--mdui-color-error-dark);--mdui-color-error-container:var(--mdui-color-error-container-dark);--mdui-color-on-error:var(--mdui-color-on-error-dark);--mdui-color-on-error-container:var(--mdui-color-on-error-container-dark);--mdui-color-outline:var(--mdui-color-outline-dark);--mdui-color-outline-variant:var(--mdui-color-outline-variant-dark);--mdui-color-shadow:var(--mdui-color-shadow-dark);--mdui-color-surface-tint-color:var(--mdui-color-surface-tint-color-dark);--mdui-color-scrim:var(--mdui-color-scrim-dark);color:rgb(var(--mdui-color-on-background));background-color:rgb(var(--mdui-color-background))}@media (prefers-color-scheme:dark){.mdui-theme-auto{color-scheme:dark;--mdui-color-primary:var(--mdui-color-primary-dark);--mdui-color-primary-container:var(--mdui-color-primary-container-dark);--mdui-color-on-primary:var(--mdui-color-on-primary-dark);--mdui-color-on-primary-container:var(--mdui-color-on-primary-container-dark);--mdui-color-inverse-primary:var(--mdui-color-inverse-primary-dark);--mdui-color-secondary:var(--mdui-color-secondary-dark);--mdui-color-secondary-container:var(--mdui-color-secondary-container-dark);--mdui-color-on-secondary:var(--mdui-color-on-secondary-dark);--mdui-color-on-secondary-container:var(--mdui-color-on-secondary-container-dark);--mdui-color-tertiary:var(--mdui-color-tertiary-dark);--mdui-color-tertiary-container:var(--mdui-color-tertiary-container-dark);--mdui-color-on-tertiary:var(--mdui-color-on-tertiary-dark);--mdui-color-on-tertiary-container:var(--mdui-color-on-tertiary-container-dark);--mdui-color-surface:var(--mdui-color-surface-dark);--mdui-color-surface-dim:var(--mdui-color-surface-dim-dark);--mdui-color-surface-bright:var(--mdui-color-surface-bright-dark);--mdui-color-surface-container-lowest:var(--mdui-color-surface-container-lowest-dark);--mdui-color-surface-container-low:var(--mdui-color-surface-container-low-dark);--mdui-color-surface-container:var(--mdui-color-surface-container-dark);--mdui-color-surface-container-high:var(--mdui-color-surface-container-high-dark);--mdui-color-surface-container-highest:var(--mdui-color-surface-container-highest-dark);--mdui-color-surface-variant:var(--mdui-color-surface-variant-dark);--mdui-color-on-surface:var(--mdui-color-on-surface-dark);--mdui-color-on-surface-variant:var(--mdui-color-on-surface-variant-dark);--mdui-color-inverse-surface:var(--mdui-color-inverse-surface-dark);--mdui-color-inverse-on-surface:var(--mdui-color-inverse-on-surface-dark);--mdui-color-background:var(--mdui-color-background-dark);--mdui-color-on-background:var(--mdui-color-on-background-dark);--mdui-color-error:var(--mdui-color-error-dark);--mdui-color-error-container:var(--mdui-color-error-container-dark);--mdui-color-on-error:var(--mdui-color-on-error-dark);--mdui-color-on-error-container:var(--mdui-color-on-error-container-dark);--mdui-color-outline:var(--mdui-color-outline-dark);--mdui-color-outline-variant:var(--mdui-color-outline-variant-dark);--mdui-color-shadow:var(--mdui-color-shadow-dark);--mdui-color-surface-tint-color:var(--mdui-color-surface-tint-color-dark);--mdui-color-scrim:var(--mdui-color-scrim-dark);color:rgb(var(--mdui-color-on-background));background-color:rgb(var(--mdui-color-background))}}:root{--mdui-elevation-level0:none;--mdui-elevation-level1:0 .5px 1.5px 0 rgba(var(--mdui-color-shadow), 19%),0 0 1px 0 rgba(var(--mdui-color-shadow), 3.9%);--mdui-elevation-level2:0 .85px 3px 0 rgba(var(--mdui-color-shadow), 19%),0 .25px 1px 0 rgba(var(--mdui-color-shadow), 3.9%);--mdui-elevation-level3:0 1.25px 5px 0 rgba(var(--mdui-color-shadow), 19%),0 .3333px 1.5px 0 rgba(var(--mdui-color-shadow), 3.9%);--mdui-elevation-level4:0 1.85px 6.25px 0 rgba(var(--mdui-color-shadow), 19%),0 .5px 1.75px 0 rgba(var(--mdui-color-shadow), 3.9%);--mdui-elevation-level5:0 2.75px 9px 0 rgba(var(--mdui-color-shadow), 19%),0 .25px 3px 0 rgba(var(--mdui-color-shadow), 3.9%)}:root{--mdui-motion-easing-linear:cubic-bezier(0, 0, 1, 1);--mdui-motion-easing-standard:cubic-bezier(.2, 0, 0, 1);--mdui-motion-easing-standard-accelerate:cubic-bezier(.3, 0, 1, 1);--mdui-motion-easing-standard-decelerate:cubic-bezier(0, 0, 0, 1);--mdui-motion-easing-emphasized:var(--mdui-motion-easing-standard);--mdui-motion-easing-emphasized-accelerate:cubic-bezier(.3, 0, .8, .15);--mdui-motion-easing-emphasized-decelerate:cubic-bezier(.05, .7, .1, 1);--mdui-motion-duration-short1:50ms;--mdui-motion-duration-short2:.1s;--mdui-motion-duration-short3:.15s;--mdui-motion-duration-short4:.2s;--mdui-motion-duration-medium1:.25s;--mdui-motion-duration-medium2:.3s;--mdui-motion-duration-medium3:.35s;--mdui-motion-duration-medium4:.4s;--mdui-motion-duration-long1:.45s;--mdui-motion-duration-long2:.5s;--mdui-motion-duration-long3:.55s;--mdui-motion-duration-long4:.6s;--mdui-motion-duration-extra-long1:.7s;--mdui-motion-duration-extra-long2:.8s;--mdui-motion-duration-extra-long3:.9s;--mdui-motion-duration-extra-long4:1s}.mdui-prose{line-height:1.75;word-wrap:break-word}.mdui-prose :first-child{margin-top:0}.mdui-prose :last-child{margin-bottom:0}.mdui-prose code,.mdui-prose kbd,.mdui-prose pre,.mdui-prose pre tt,.mdui-prose samp{font-family:Consolas,Courier,Courier New,monospace}.mdui-prose caption{text-align:left}.mdui-prose [draggable=true],.mdui-prose [draggable]{cursor:move}.mdui-prose [draggable=false]{cursor:inherit}.mdui-prose dl,.mdui-prose form,.mdui-prose ol,.mdui-prose p,.mdui-prose ul{margin-top:1.25em;margin-bottom:1.25em}.mdui-prose a{text-decoration:none;outline:0;color:rgb(var(--mdui-color-primary))}.mdui-prose a:focus,.mdui-prose a:hover{border-bottom:.0625rem solid rgb(var(--mdui-color-primary))}.mdui-prose small{font-size:.875em}.mdui-prose strong{font-weight:600}.mdui-prose blockquote{margin:1.6em 2em;padding-left:1em;border-left:.25rem solid rgb(var(--mdui-color-surface-variant))}@media only screen and (max-width:599.98px){.mdui-prose blockquote{margin:1.6em 0}}.mdui-prose blockquote footer{font-size:86%;color:rgb(var(--mdui-color-on-surface-variant))}.mdui-prose mark{color:inherit;background-color:rgb(var(--mdui-color-secondary-container));border-bottom:.0625rem solid rgb(var(--mdui-color-secondary));margin:0 .375rem;padding:.125rem}.mdui-prose h1,.mdui-prose h2,.mdui-prose h3,.mdui-prose h4,.mdui-prose h5,.mdui-prose h6{font-weight:400}.mdui-prose h1 small,.mdui-prose h2 small,.mdui-prose h3 small,.mdui-prose h4 small,.mdui-prose h5 small,.mdui-prose h6 small{font-weight:inherit;font-size:65%;color:rgb(var(--mdui-color-on-surface-variant))}.mdui-prose h1 strong,.mdui-prose h2 strong,.mdui-prose h3 strong,.mdui-prose h4 strong,.mdui-prose h5 strong,.mdui-prose h6 strong{font-weight:600}.mdui-prose h1{font-size:2.5em;margin-top:0;margin-bottom:1.25em;line-height:1.1111}.mdui-prose h2{font-size:1.875em;margin-top:2.25em;margin-bottom:1.125em;line-height:1.3333}.mdui-prose h3{font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.6}.mdui-prose h4{font-size:1.25em;margin-top:1.875em;margin-bottom:.875em;line-height:1.5}.mdui-prose h2+*,.mdui-prose h3+*,.mdui-prose h4+*,.mdui-prose hr+*{margin-top:0}.mdui-prose code,.mdui-prose kbd{font-size:.875em;color:rgb(var(--mdui-color-on-surface-container));background-color:rgba(var(--mdui-color-surface-variant),.28);padding:.125rem .375rem;border-radius:var(--mdui-shape-corner-extra-small)}.mdui-prose kbd{font-size:.9em}.mdui-prose abbr[title]{text-decoration:none;cursor:help;border-bottom:.0625rem dotted rgb(var(--mdui-color-on-surface-variant))}.mdui-prose ins,.mdui-prose u{text-decoration:none;border-bottom:.0625rem solid rgb(var(--mdui-color-on-surface-variant))}.mdui-prose del{text-decoration:line-through}.mdui-prose hr{margin-top:3em;margin-bottom:3em;border:none;border-bottom:.0625rem solid rgb(var(--mdui-color-surface-variant))}.mdui-prose pre{margin-top:1.7143em;margin-bottom:1.7143em}.mdui-prose pre code{padding:.8571em 1.1429em;overflow-x:auto;-webkit-overflow-scrolling:touch;background-color:rgb(var(--mdui-color-surface-container));color:rgb(var(--mdui-color-on-surface-container));border-radius:var(--mdui-shape-corner-extra-small)}.mdui-prose ol,.mdui-prose ul{padding-left:1.625em}.mdui-prose ul{list-style-type:disc}.mdui-prose ol{list-style-type:decimal}.mdui-prose ol[type=A]{list-style-type:upper-alpha}.mdui-prose ol[type=a]{list-style-type:lower-alpha}.mdui-prose ol[type=I]{list-style-type:upper-roman}.mdui-prose ol[type=i]{list-style-type:lower-roman}.mdui-prose ol[type="1"]{list-style-type:decimal}.mdui-prose li{margin-top:.5em;margin-bottom:.5em}.mdui-prose ol>li,.mdui-prose ul>li{padding-left:.375em}.mdui-prose ol>li>p,.mdui-prose ul>li>p{margin-top:.75em;margin-bottom:.75em}.mdui-prose ol>li>:first-child,.mdui-prose ul>li>:first-child{margin-top:1.25em}.mdui-prose ol>li>:last-child,.mdui-prose ul>li>:last-child{margin-bottom:1.25em}.mdui-prose ol>li::marker{font-weight:400;color:rgb(var(--mdui-color-on-surface-variant))}.mdui-prose ul>li::marker{color:rgb(var(--mdui-color-on-surface-variant))}.mdui-prose ol ol,.mdui-prose ol ul,.mdui-prose ul ol,.mdui-prose ul ul{margin-top:.75em;margin-bottom:.75em}.mdui-prose fieldset,.mdui-prose img{border:none}.mdui-prose figure,.mdui-prose img,.mdui-prose video{margin-top:2em;margin-bottom:2em;max-width:100%}.mdui-prose figure>*{margin-top:0;margin-bottom:0}.mdui-prose figcaption{font-size:.875em;line-height:1.4286;margin-top:.8571em;color:rgb(var(--mdui-color-on-surface-variant))}.mdui-prose figcaption:empty:before{z-index:-1;cursor:text;content:attr(placeholder);color:rgb(var(--mdui-color-on-surface-variant))}.mdui-prose table{margin-top:2em;margin-bottom:2em;border:.0625rem solid rgb(var(--mdui-color-surface-variant));border-radius:var(--mdui-shape-corner-large)}.mdui-table{width:100%;overflow-x:auto;margin-top:2em;margin-bottom:2em;border:.0625rem solid rgb(var(--mdui-color-surface-variant));border-radius:var(--mdui-shape-corner-large)}.mdui-table table{margin-top:0;margin-bottom:0;border:none;border-radius:0}.mdui-prose table,.mdui-table table{width:100%;text-align:left;border-collapse:collapse;border-spacing:0}.mdui-prose td,.mdui-prose th,.mdui-table td,.mdui-table th{border-top:.0625rem solid rgb(var(--mdui-color-surface-variant))}.mdui-prose td:not(:first-child),.mdui-prose th:not(:first-child),.mdui-table td:not(:first-child),.mdui-table th:not(:first-child){border-left:.0625rem solid rgb(var(--mdui-color-surface-variant))}.mdui-prose td:not(:last-child),.mdui-prose th:not(:last-child),.mdui-table td:not(:last-child),.mdui-table th:not(:last-child){border-right:.0625rem solid rgb(var(--mdui-color-surface-variant))}.mdui-prose tbody:first-child tr:first-child td,.mdui-prose thead:first-child tr:first-child th,.mdui-table tbody:first-child tr:first-child td,.mdui-table thead:first-child tr:first-child th{border-top:0}.mdui-prose tfoot td,.mdui-prose tfoot th,.mdui-prose thead td,.mdui-prose thead th,.mdui-table tfoot td,.mdui-table tfoot th,.mdui-table thead td,.mdui-table thead th{position:relative;vertical-align:middle;padding:1.125rem 1rem;font-weight:var(--mdui-typescale-title-medium-weight);letter-spacing:var(--mdui-typescale-title-medium-tracking);line-height:var(--mdui-typescale-title-medium-line-height);color:rgb(var(--mdui-color-on-surface-variant));box-shadow:var(--mdui-elevation-level1)}.mdui-prose tbody td,.mdui-prose tbody th,.mdui-table tbody td,.mdui-table tbody th{padding:.875rem 1rem}.mdui-prose tbody th,.mdui-table tbody th{vertical-align:middle;font-weight:inherit}.mdui-prose tbody td,.mdui-table tbody td{vertical-align:baseline}:root{--mdui-shape-corner-none:0;--mdui-shape-corner-extra-small:.25rem;--mdui-shape-corner-small:.5rem;--mdui-shape-corner-medium:.75rem;--mdui-shape-corner-large:1rem;--mdui-shape-corner-extra-large:1.75rem;--mdui-shape-corner-full:1000rem}:root{--mdui-state-layer-hover:.08;--mdui-state-layer-focus:.12;--mdui-state-layer-pressed:.12;--mdui-state-layer-dragged:.16}:root{--mdui-typescale-display-large-weight:400;--mdui-typescale-display-medium-weight:400;--mdui-typescale-display-small-weight:400;--mdui-typescale-display-large-line-height:4rem;--mdui-typescale-display-medium-line-height:3.25rem;--mdui-typescale-display-small-line-height:2.75rem;--mdui-typescale-display-large-size:3.5625rem;--mdui-typescale-display-medium-size:2.8125rem;--mdui-typescale-display-small-size:2.25rem;--mdui-typescale-display-large-tracking:0rem;--mdui-typescale-display-medium-tracking:0rem;--mdui-typescale-display-small-tracking:0rem;--mdui-typescale-headline-large-weight:400;--mdui-typescale-headline-medium-weight:400;--mdui-typescale-headline-small-weight:400;--mdui-typescale-headline-large-line-height:2.5rem;--mdui-typescale-headline-medium-line-height:2.25rem;--mdui-typescale-headline-small-line-height:2rem;--mdui-typescale-headline-large-size:2rem;--mdui-typescale-headline-medium-size:1.75rem;--mdui-typescale-headline-small-size:1.5rem;--mdui-typescale-headline-large-tracking:0rem;--mdui-typescale-headline-medium-tracking:0rem;--mdui-typescale-headline-small-tracking:0rem;--mdui-typescale-title-large-weight:400;--mdui-typescale-title-medium-weight:500;--mdui-typescale-title-small-weight:500;--mdui-typescale-title-large-line-height:1.75rem;--mdui-typescale-title-medium-line-height:1.5rem;--mdui-typescale-title-small-line-height:1.25rem;--mdui-typescale-title-large-size:1.375rem;--mdui-typescale-title-medium-size:1rem;--mdui-typescale-title-small-size:.875rem;--mdui-typescale-title-large-tracking:0rem;--mdui-typescale-title-medium-tracking:.009375rem;--mdui-typescale-title-small-tracking:.00625rem;--mdui-typescale-label-large-weight:500;--mdui-typescale-label-medium-weight:500;--mdui-typescale-label-small-weight:500;--mdui-typescale-label-large-line-height:1.25rem;--mdui-typescale-label-medium-line-height:1rem;--mdui-typescale-label-small-line-height:.375rem;--mdui-typescale-label-large-size:.875rem;--mdui-typescale-label-medium-size:.75rem;--mdui-typescale-label-small-size:.6875rem;--mdui-typescale-label-large-tracking:.00625rem;--mdui-typescale-label-medium-tracking:.03125rem;--mdui-typescale-label-small-tracking:.03125rem;--mdui-typescale-body-large-weight:400;--mdui-typescale-body-medium-weight:400;--mdui-typescale-body-small-weight:400;--mdui-typescale-body-large-line-height:1.5rem;--mdui-typescale-body-medium-line-height:1.25rem;--mdui-typescale-body-small-line-height:1rem;--mdui-typescale-body-large-size:1rem;--mdui-typescale-body-medium-size:.875rem;--mdui-typescale-body-small-size:.75rem;--mdui-typescale-body-large-tracking:.009375rem;--mdui-typescale-body-medium-tracking:.015625rem;--mdui-typescale-body-small-tracking:.025rem}.mdui-lock-screen{overflow:hidden!important} 2 | -------------------------------------------------------------------------------- /docs/workbox-7ac4974e.js: -------------------------------------------------------------------------------- 1 | define(["exports"],(function(t){"use strict";try{self["workbox:core:7.2.0"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:7.2.0"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class r extends i{constructor(t,e,s){super((({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)}),e,s)}}class a{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",(t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map((e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})})));t.waitUntil(s),t.ports&&t.ports[0]&&s.then((()=>t.ports[0].postMessage(!0)))}}))}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let a=r&&r.handler;const o=t.method;if(!a&&this.i.has(o)&&(a=this.i.get(o)),!a)return;let c;try{c=a.handle({url:s,request:t,event:e,params:i})}catch(t){c=Promise.reject(t)}const h=r&&r.catchHandler;return c instanceof Promise&&(this.o||h)&&(c=c.catch((async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n}))),c}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const a=r.match({url:t,sameOrigin:e,request:s,event:n});if(a)return i=a,(Array.isArray(i)&&0===i.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"==typeof a)&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let o;const c=()=>(o||(o=new a,o.addFetchListener(),o.addCacheListener()),o);function h(t,e,n){let a;if("string"==typeof t){const s=new URL(t,location.href);a=new i((({url:t})=>t.href===s.href),e,n)}else if(t instanceof RegExp)a=new r(t,e,n);else if("function"==typeof t)a=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});a=t}return c().registerRoute(a),a}const u={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},l=t=>[u.prefix,t,u.suffix].filter((t=>t&&t.length>0)).join("-"),f=t=>t||l(u.precache),w=t=>t||l(u.runtime);function d(t){t.then((()=>{}))}const p=new Set;function y(){return y=Object.assign?Object.assign.bind():function(t){for(var e=1;ee.some((e=>t instanceof e));let g,R;const v=new WeakMap,b=new WeakMap,q=new WeakMap,D=new WeakMap,U=new WeakMap;let x={get(t,e,s){if(t instanceof IDBTransaction){if("done"===e)return b.get(t);if("objectStoreNames"===e)return t.objectStoreNames||q.get(t);if("store"===e)return s.objectStoreNames[1]?void 0:s.objectStore(s.objectStoreNames[0])}return E(t[e])},set:(t,e,s)=>(t[e]=s,!0),has:(t,e)=>t instanceof IDBTransaction&&("done"===e||"store"===e)||e in t};function I(t){return t!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(R||(R=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(C(this),e),E(v.get(this))}:function(...e){return E(t.apply(C(this),e))}:function(e,...s){const n=t.call(C(this),e,...s);return q.set(n,e.sort?e.sort():[e]),E(n)}}function L(t){return"function"==typeof t?I(t):(t instanceof IDBTransaction&&function(t){if(b.has(t))return;const e=new Promise(((e,s)=>{const n=()=>{t.removeEventListener("complete",i),t.removeEventListener("error",r),t.removeEventListener("abort",r)},i=()=>{e(),n()},r=()=>{s(t.error||new DOMException("AbortError","AbortError")),n()};t.addEventListener("complete",i),t.addEventListener("error",r),t.addEventListener("abort",r)}));b.set(t,e)}(t),m(t,g||(g=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(t,x):t)}function E(t){if(t instanceof IDBRequest)return function(t){const e=new Promise(((e,s)=>{const n=()=>{t.removeEventListener("success",i),t.removeEventListener("error",r)},i=()=>{e(E(t.result)),n()},r=()=>{s(t.error),n()};t.addEventListener("success",i),t.addEventListener("error",r)}));return e.then((e=>{e instanceof IDBCursor&&v.set(e,t)})).catch((()=>{})),U.set(e,t),e}(t);if(D.has(t))return D.get(t);const e=L(t);return e!==t&&(D.set(t,e),U.set(e,t)),e}const C=t=>U.get(t);const N=["get","getKey","getAll","getAllKeys","count"],O=["put","add","delete","clear"],k=new Map;function B(t,e){if(!(t instanceof IDBDatabase)||e in t||"string"!=typeof e)return;if(k.get(e))return k.get(e);const s=e.replace(/FromIndex$/,""),n=e!==s,i=O.includes(s);if(!(s in(n?IDBIndex:IDBObjectStore).prototype)||!i&&!N.includes(s))return;const r=async function(t,...e){const r=this.transaction(t,i?"readwrite":"readonly");let a=r.store;return n&&(a=a.index(e.shift())),(await Promise.all([a[s](...e),i&&r.done]))[0]};return k.set(e,r),r}x=(t=>y({},t,{get:(e,s,n)=>B(e,s)||t.get(e,s,n),has:(e,s)=>!!B(e,s)||t.has(e,s)}))(x);try{self["workbox:expiration:7.2.0"]&&_()}catch(t){}const T="cache-entries",M=t=>{const e=new URL(t,location.href);return e.hash="",e.href};class P{constructor(t){this.h=null,this.u=t}l(t){const e=t.createObjectStore(T,{keyPath:"id"});e.createIndex("cacheName","cacheName",{unique:!1}),e.createIndex("timestamp","timestamp",{unique:!1})}p(t){this.l(t),this.u&&function(t,{blocked:e}={}){const s=indexedDB.deleteDatabase(t);e&&s.addEventListener("blocked",(t=>e(t.oldVersion,t))),E(s).then((()=>{}))}(this.u)}async setTimestamp(t,e){const s={url:t=M(t),timestamp:e,cacheName:this.u,id:this.m(t)},n=(await this.getDb()).transaction(T,"readwrite",{durability:"relaxed"});await n.store.put(s),await n.done}async getTimestamp(t){const e=await this.getDb(),s=await e.get(T,this.m(t));return null==s?void 0:s.timestamp}async expireEntries(t,e){const s=await this.getDb();let n=await s.transaction(T).store.index("timestamp").openCursor(null,"prev");const i=[];let r=0;for(;n;){const s=n.value;s.cacheName===this.u&&(t&&s.timestamp=e?i.push(n.value):r++),n=await n.continue()}const a=[];for(const t of i)await s.delete(T,t.id),a.push(t.url);return a}m(t){return this.u+"|"+M(t)}async getDb(){return this.h||(this.h=await function(t,e,{blocked:s,upgrade:n,blocking:i,terminated:r}={}){const a=indexedDB.open(t,e),o=E(a);return n&&a.addEventListener("upgradeneeded",(t=>{n(E(a.result),t.oldVersion,t.newVersion,E(a.transaction),t)})),s&&a.addEventListener("blocked",(t=>s(t.oldVersion,t.newVersion,t))),o.then((t=>{r&&t.addEventListener("close",(()=>r())),i&&t.addEventListener("versionchange",(t=>i(t.oldVersion,t.newVersion,t)))})).catch((()=>{})),o}("workbox-expiration",1,{upgrade:this.p.bind(this)})),this.h}}class W{constructor(t,e={}){this.R=!1,this.v=!1,this.q=e.maxEntries,this.D=e.maxAgeSeconds,this.U=e.matchOptions,this.u=t,this._=new P(t)}async expireEntries(){if(this.R)return void(this.v=!0);this.R=!0;const t=this.D?Date.now()-1e3*this.D:0,e=await this._.expireEntries(t,this.q),s=await self.caches.open(this.u);for(const t of e)await s.delete(t,this.U);this.R=!1,this.v&&(this.v=!1,d(this.expireEntries()))}async updateTimestamp(t){await this._.setTimestamp(t,Date.now())}async isURLExpired(t){if(this.D){const e=await this._.getTimestamp(t),s=Date.now()-1e3*this.D;return void 0===e||e200===t.status||0===t.status?t:null};function S(t,e){const s=new URL(t);for(const t of e)s.searchParams.delete(t);return s.href}class K{constructor(){this.promise=new Promise(((t,e)=>{this.resolve=t,this.reject=e}))}}function A(t){return"string"==typeof t?new Request(t):t}class F{constructor(t,e){this.I={},Object.assign(this,e),this.event=e.event,this.L=t,this.C=new K,this.N=[],this.O=[...t.plugins],this.k=new Map;for(const t of this.O)this.k.set(t,{});this.event.waitUntil(this.C.promise)}async fetch(t){const{event:e}=this;let n=A(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.L.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=A(t);let s;const{cacheName:n,matchOptions:i}=this.L,r=await this.getCacheKey(e,"read"),a=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,a);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(t,e){const n=A(t);var i;await(i=0,new Promise((t=>setTimeout(t,i))));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(a=r.url,new URL(String(a),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var a;const o=await this.B(e);if(!o)return!1;const{cacheName:c,matchOptions:h}=this.L,u=await self.caches.open(c),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=S(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),a=await t.keys(e,r);for(const e of a)if(i===S(e.url,s))return t.match(e,n)}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?o.clone():o)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of p)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:c,oldResponse:f,newResponse:o.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.I[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=A(await t({mode:e,request:n,event:this.event,params:this.params}));this.I[s]=n}return this.I[s]}hasCallback(t){for(const e of this.L.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.L.plugins)if("function"==typeof e[t]){const s=this.k.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i)};yield n}}waitUntil(t){return this.N.push(t),t}async doneWaiting(){let t;for(;t=this.N.shift();)await t}destroy(){this.C.resolve(null)}async B(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class H{constructor(t={}){this.cacheName=w(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new F(this,{event:e,request:s,params:n}),r=this.T(i,s,e);return[r,this.M(r,i,s,e)]}async T(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this.P(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i}async M(t,e,s,n){let i,r;try{i=await t}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting()}catch(t){t instanceof Error&&(r=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r}}try{self["workbox:cacheable-response:7.2.0"]&&_()}catch(t){}class ${constructor(t={}){this.W=t.statuses,this.j=t.headers}isResponseCacheable(t){let e=!0;return this.W&&(e=this.W.includes(t.status)),this.j&&e&&(e=Object.keys(this.j).some((e=>t.headers.get(e)===this.j[e]))),e}}function G(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:7.2.0"]&&_()}catch(t){}function V(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href}}class J{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class Q{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.S.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.S=t}}let z,X;async function Y(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},a=e?e(r):r,o=function(){if(void 0===z){const t=new Response("");if("body"in t)try{new Response(t.body),z=!0}catch(t){z=!1}z=!1}return z}()?i.body:await i.blob();return new Response(o,a)}class Z extends H{constructor(t={}){t.cacheName=f(t.cacheName),super(t),this.K=!1!==t.fallbackToNetwork,this.plugins.push(Z.copyRedirectedCacheableResponsesPlugin)}async P(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.A(t,e):await this.F(t,e))}async F(t,e){let n;const i=e.params||{};if(!this.K)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,a=!r||r===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?r||s:void 0})),s&&a&&"no-cors"!==t.mode&&(this.H(),await e.cachePut(t,n.clone()))}return n}async A(t,e){this.H();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}H(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==Z.copyRedirectedCacheableResponsesPlugin&&(n===Z.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(Z.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}Z.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},Z.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await Y(t):t};class tt{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.$=new Map,this.G=new Map,this.V=new Map,this.L=new Z({cacheName:f(t),plugins:[...e,new Q({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.L}precache(t){this.addToCacheList(t),this.J||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.J=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=V(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.$.has(i)&&this.$.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.$.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.V.has(t)&&this.V.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.V.set(t,n.integrity)}if(this.$.set(i,t),this.G.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return G(t,(async()=>{const e=new J;this.strategy.plugins.push(e);for(const[e,s]of this.$){const n=this.V.get(s),i=this.G.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(t){return G(t,(async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.$.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this.$}getCachedURLs(){return[...this.$.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.$.get(e.href)}getIntegrityForCacheKey(t){return this.V.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}const et=()=>(X||(X=new tt),X);class st extends i{constructor(t,e){super((({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const a=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some((t=>t.test(s)))&&t.searchParams.delete(s);return t}(r,e);if(yield a.href,s&&a.pathname.endsWith("/")){const t=new URL(a.href);t.pathname+=s,yield t.href}if(n){const t=new URL(a.href);t.pathname+=".html",yield t.href}if(i){const t=i({url:r});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}}),t.strategy)}}t.CacheableResponsePlugin=class{constructor(t){this.cacheWillUpdate=async({response:t})=>this.X.isResponseCacheable(t)?t:null,this.X=new $(t)}},t.ExpirationPlugin=class{constructor(t={}){this.cachedResponseWillBeUsed=async({event:t,request:e,cacheName:s,cachedResponse:n})=>{if(!n)return null;const i=this.Y(n),r=this.Z(s);d(r.expireEntries());const a=r.updateTimestamp(e.url);if(t)try{t.waitUntil(a)}catch(t){}return i?n:null},this.cacheDidUpdate=async({cacheName:t,request:e})=>{const s=this.Z(t);await s.updateTimestamp(e.url),await s.expireEntries()},this.tt=t,this.D=t.maxAgeSeconds,this.et=new Map,t.purgeOnQuotaError&&function(t){p.add(t)}((()=>this.deleteCacheAndMetadata()))}Z(t){if(t===w())throw new s("expire-custom-caches-only");let e=this.et.get(t);return e||(e=new W(t,this.tt),this.et.set(t,e)),e}Y(t){if(!this.D)return!0;const e=this.st(t);if(null===e)return!0;return e>=Date.now()-1e3*this.D}st(t){if(!t.headers.has("date"))return null;const e=t.headers.get("date"),s=new Date(e).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[t,e]of this.et)await self.caches.delete(t),await e.delete();this.et=new Map}},t.NavigationRoute=class extends i{constructor(t,{allowlist:e=[/./],denylist:s=[]}={}){super((t=>this.nt(t)),t),this.it=e,this.rt=s}nt({url:t,request:e}){if(e&&"navigate"!==e.mode)return!1;const s=t.pathname+t.search;for(const t of this.rt)if(t.test(s))return!1;return!!this.it.some((t=>t.test(s)))}},t.NetworkFirst=class extends H{constructor(t={}){super(t),this.plugins.some((t=>"cacheWillUpdate"in t))||this.plugins.unshift(j),this.ot=t.networkTimeoutSeconds||0}async P(t,e){const n=[],i=[];let r;if(this.ot){const{id:s,promise:a}=this.ct({request:t,logs:n,handler:e});r=s,i.push(a)}const a=this.ht({timeoutId:r,request:t,logs:n,handler:e});i.push(a);const o=await e.waitUntil((async()=>await e.waitUntil(Promise.race(i))||await a)());if(!o)throw new s("no-response",{url:t.url});return o}ct({request:t,logs:e,handler:s}){let n;return{promise:new Promise((e=>{n=setTimeout((async()=>{e(await s.cacheMatch(t))}),1e3*this.ot)})),id:n}}async ht({timeoutId:t,request:e,logs:s,handler:n}){let i,r;try{r=await n.fetchAndCachePut(e)}catch(t){t instanceof Error&&(i=t)}return t&&clearTimeout(t),!i&&r||(r=await n.cacheMatch(e)),r}},t.StaleWhileRevalidate=class extends H{constructor(t={}){super(t),this.plugins.some((t=>"cacheWillUpdate"in t))||this.plugins.unshift(j)}async P(t,e){const n=e.fetchAndCachePut(t).catch((()=>{}));e.waitUntil(n);let i,r=await e.cacheMatch(t);if(r);else try{r=await n}catch(t){t instanceof Error&&(i=t)}if(!r)throw new s("no-response",{url:t.url,error:i});return r}},t.cleanupOutdatedCaches=function(){self.addEventListener("activate",(t=>{const e=f();t.waitUntil((async(t,e="-precache-")=>{const s=(await self.caches.keys()).filter((s=>s.includes(e)&&s.includes(self.registration.scope)&&s!==t));return await Promise.all(s.map((t=>self.caches.delete(t)))),s})(e).then((t=>{})))}))},t.clientsClaim=function(){self.addEventListener("activate",(()=>self.clients.claim()))},t.createHandlerBoundToURL=function(t){return et().createHandlerBoundToURL(t)},t.precacheAndRoute=function(t,e){!function(t){et().precache(t)}(t),function(t){const e=et();h(new st(e,t))}(e)},t.registerRoute=h})); 2 | -------------------------------------------------------------------------------- /docs/assets/index-Ct_lBPmX.js: -------------------------------------------------------------------------------- 1 | import{r as e,o as t,a as n,c as l,b as i,d as o,e as a,f as r,n as d,w as u,g as c,h as s,i as m,j as g,t as y,k as p,l as f,F as h,m as v,p as I,s as C}from"./deps-DMDL2Vxr.js";import{A as B}from"./abracadabra-cn-aGnSVyKE.js";!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))t(e);new MutationObserver((e=>{for(const n of e)if("childList"===n.type)for(const e of n.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&t(e)})).observe(document,{childList:!0,subtree:!0})}function t(e){if(e.ep)return;e.ep=!0;const t=function(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?t.credentials="include":"anonymous"===e.crossOrigin?t.credentials="omit":t.credentials="same-origin",t}(e);fetch(e.href,t)}}();const w=["id"],b=[o("div",{class:"ImScrollBarThumb"},null,-1)],x={__name:"ImScrollBar",props:{ContainerId:String,ContentContainerId:String,Direction:String,Length:String,Width:String,PBottom:String,PRight:String,PMarginOne:String,PMarginTwo:String,Id:String},setup(o){const a=o;var r=e(!1),d=e(!1),u=e(!1);function c(e){r.value?document.getElementById(a.Id).style.opacity="0":"mouseover"==e.type||u.value?(document.getElementById(a.Id).style.opacity="0.701",d.value=!0):"mouseout"!=e.type&&u.value||(document.getElementById(a.Id).style.opacity="0.4",setTimeout((function(){"0.701"!=document.getElementById(a.Id).style.opacity&&(document.getElementById(a.Id).style.opacity="0",d.value=!1)}),1e3))}return t((()=>{})),n((()=>{var t=document.getElementById(a.Id),n=document.getElementById(a.ContentContainerId),l=document.getElementById(a.ContainerId);"Left"==a.Direction?(t.style.float="left",t.style.height=a.Length,t.style.width=a.Width,t.style.bottom=a.PBottom,t.style.right=a.PRight,t.style.marginBottom=a.PMarginOne,t.style.marginTop=a.PMarginTwo):"Right"==a.Direction?(t.style.float="right",t.style.height=a.Length,t.style.width=a.Width,t.style.bottom=a.PBottom,t.style.right=a.PRight,t.style.marginBottom=a.PMarginOne,t.style.marginTop=a.PMarginTwo):("Top"==a.Direction||"Bottom"==a.Direction)&&(t.style.float="left",t.style.width=a.Length,t.style.height=a.Width,t.style.bottom=a.PBottom,t.style.right=a.PRight,t.style.marginLeft=a.PMarginOne,t.style.marginRight=a.PMarginTwo);const i=e("0%");var o;const d=new ResizeObserver((e=>{e.forEach((e=>{const d=e.target;if(d.id==a.ContentContainerId){const e=l;var u=d.scrollHeight,c=d.scrollWidth,s=e.clientHeight,m=e.clientWidth}if(d.id==a.ContainerId){const e=n;u=e.scrollHeight,c=e.scrollWidth,s=d.clientHeight,m=d.clientWidth}var g,y;"Left"==a.Direction||"Right"==a.Direction?(g=u,y=s):("Top"==a.Direction||"Bottom"==a.Direction)&&(g=c,y=m),r.value=g<=y;var p=y/g*100;if(g>y){var f,h=t.childNodes[0];"Left"==a.Direction||"Right"==a.Direction?(h.style.width="100%",h.style.height=p.toString()+"%",f=l.scrollTop/n.scrollHeight*100,h.style.top=f.toString()+"%"):("Top"==a.Direction||"Bottom"==a.Direction)&&(h.style.width=p.toString()+"%",h.style.height="100%",f=l.scrollLeft/n.scrollWidth*100,h.style.left=f.toString()+"%"),i.value=f,"Left"==a.Direction||"Right"==a.Direction?o=t.offsetHeight-h.offsetHeight:("Top"==a.Direction||"Bottom"==a.Direction)&&(o=t.offsetWidth-h.offsetWidth)}}))}));d.observe(l),d.observe(n);var s,m,g,y,p,f=t.childNodes[0],h=!0;f.addEventListener("mousedown",(function(e){"Left"==a.Direction||"Right"==a.Direction?(s=e.clientY,m=this.offsetTop):("Top"==a.Direction||"Bottom"==a.Direction)&&(s=e.clientX,m=this.offsetLeft),h=!1,function(){function e(e){h||(e.preventDefault(),u.value=!0,c({type:"null"}),"Left"==a.Direction||"Right"==a.Direction?g=e.clientY-s+m:("Top"==a.Direction||"Bottom"==a.Direction)&&(g=e.clientX-s+m),g>=o&&(g=o),g<=0&&(g=0),"Left"==a.Direction||"Right"==a.Direction?(f.style.top=g+"px",y=g/t.offsetHeight,p=n.scrollHeight*y,l.scrollTop=p):("Top"==a.Direction||"Bottom"==a.Direction)&&(f.style.left=g+"px",y=g/t.offsetWidth,p=n.scrollWidth*y,l.scrollLeft=p))}document.addEventListener("mouseup",(function(t){u.value=!1,c({type:"null"}),document.removeEventListener("mousemove",e),h=!0}),{once:!0}),document.addEventListener("mousemove",e)}()}));var v=null;l.addEventListener("scroll",(function(e){var t;u.value=!0,c({type:"null"}),"Left"==a.Direction||"Right"==a.Direction?(t=l.scrollTop/n.scrollHeight*100,f.style.top=t.toString()+"%"):("Top"==a.Direction||"Bottom"==a.Direction)&&(t=l.scrollLeft/n.scrollWidth*100,f.style.left=t.toString()+"%"),h&&(clearTimeout(v),v=setTimeout((function(){u.value=!1,c({type:"null"})}),200))}))})),(e,t)=>(i(),l("div",{class:"ImScrollBarTrack",id:a.Id,onMouseover:c,onMouseout:c},b,40,w))}},E=["id"],k=["name"],A={__name:"MdCard",props:{id:String,icon:String,Background:String,TextColor:String,Width:String,Height:String,Other:Object},setup(t){const n=t,u=e({});return u.value={background:n.Background,width:n.Width,height:n.Height,...n.Other},(e,c)=>(i(),l("mdui-card",{id:t.id,class:"baseCard",variant:"filled",style:d(u.value)},[n.icon?(i(),l("mdui-icon",{key:0,class:"cardIcon",name:n.icon,style:{"font-size":"140px"}},null,8,k)):a("",!0),o("div",{class:"cardContent",style:d({color:n.TextColor,"z-index":5})},[r(e.$slots,"default")],4)],12,E))}},R=o("div",{id:"MagicBadge",style:{}},[o("span",{style:{"font-size":"3rem","font-weight":"bold",margin:"10px 10px 10px 20px",height:"fit-content",width:"fit-content"}},"魔曰"),o("span",{style:{"font-size":"1rem","font-variant":"petite-caps","margin-left":"20px",height:"fit-content",width:"fit-content"}},"Abracadabra")],-1),T={id:"MainContainer",style:{display:"grid","grid-template-rows":"80px 150px 80px","grid-gap":"7px"}},D={key:0,id:"InputCard",variant:"outlined",rows:"2",label:"话语",placeholder:"你渴求吟唱的话语",style:{"grid-area":"1",height:"80px",width:"360px"}},S=o("h1",{style:{"align-self":"center","justify-self":"center"}},"选择文件",-1),N=o("p",{style:{"align-self":"center","justify-self":"center"}},"拖拽或点击",-1),P={style:{"align-self":"center","justify-self":"center","margin-bottom":"0"}},L=o("mdui-text-field",{id:"KeyCard",variant:"outlined",rows:"1",label:"魔咒",placeholder:"将一切雪藏的魔咒",style:{"grid-column":"span 3","align-self":"center",width:"360px"}},null,-1),O=o("mdui-slider",{id:"Randomness",step:"25",value:"50",min:"0",max:"100",style:{background:"#0000003b",padding:"0 25px",width:"215px","margin-left":"5px","border-radius":"25px",height:"35px"}},null,-1),_={key:2,id:"OutputText",variant:"outlined",rows:"4",label:"符文",placeholder:"回路末端的符文",style:{"grid-area":"3",height:"120px",width:"360px"}},F=o("h1",{style:{"align-self":"center","justify-self":"center"}},"输出文件",-1),j={id:"CopyrightBadger",style:{"grid-area":"4",display:"grid","grid-template-columns":"50% 50%"}},M=o("p",{style:{position:"relative",width:"fit-content",height:"fit-content",top:"60px","font-size":"1rem","font-variant":"petite-caps","text-align":"left",padding:"6px","border-radius":"inherit",margin:"0px"}},[f(" Abracadabra V3.2.5"),o("br"),o("a",{href:"https://github.com/SheepChef/Abracadabra"},"Github Repo")],-1),W={id:"CryptControl"},U={key:0,style:{"align-self":"center","justify-self":"right","margin-right":"0px"}},K={key:2,style:{"align-self":"center","justify-self":"right","margin-right":"0px"}},q={key:4,style:{"align-self":"center","justify-self":"right","margin-right":"0px"}},H={key:6,style:{"align-self":"center","justify-self":"right","margin-right":"0px"}},X={key:8,style:{"align-self":"center","justify-self":"right","margin-right":"0px"}},Y={key:10,style:{"align-self":"center","justify-self":"right","margin-right":"0px"}},z={key:12,style:{"align-self":"center","justify-self":"right","margin-right":"0px"}},V={id:"MainContainer"},G=o("p",{style:{position:"relative",width:"fit-content",height:"fit-content",top:"0px","font-size":"1rem","font-variant":"petite-caps","text-align":"left",padding:"6px","border-radius":"inherit",margin:"0px"}}," Geek Inspector ",-1),$={rounded:""},J={slot:"description",class:"small"},Q=o("br",null,null,-1),Z=o("br",null,null,-1),ee=o("br",null,null,-1),te=o("br",null,null,-1),ne=o("br",null,null,-1),le=o("br",null,null,-1),ie={rounded:""},oe={slot:"description",class:"small"},ae=o("div",{id:"PositionOccupie"},null,-1),re=o("mdui-snackbar",{"auto-close-delay":"1500",id:"InfoBar"},null,-1),de={__name:"HomeView",setup(t){const r=e("TEXT"),d=e("TEXT"),I=e("Next"),C=e(!0),w=e(!1),b=e(!1),x=e(!1),E=e(!1),k=e(!1),de=e(!1),ue=e(!1),ce=e(!1),se=e(["No Data Available"]),me=e("NONE"),ge=e("None"),ye=e(0);e("#5b6169");var pe=e(new Array);const fe=e(null),he=e("");function ve(e){let t=document.getElementById("InfoBar"),n=e.message;t.innerText=n,t.open=!0}function Ie(e){return new Promise(((t,n)=>{const l=new FileReader;l.onload=e=>{const n=new Uint8Array(e.target.result);t(n)},l.onerror=n,l.readAsArrayBuffer(e)}))}function Ce(e,t,n){const l=new Blob([e],{type:n});return new File([l],t,{type:n})}function Be(e){e.preventDefault(),document.getElementById("FileCard").style.background="#6ea0be"}function we(e){e.preventDefault(),document.getElementById("FileCard").style.background="#5b6169"}function be(e){e.preventDefault()}function xe(e){e.preventDefault(),document.getElementById("FileCard").style.background="#5b6169",Ae(e.dataTransfer.files)}function Ee(e){Ae(e.target.files)}function ke(e){document.querySelector("#fileIn").click()}function Ae(e){pe.value=[];for(let t=0;t{t.WenyanInput(document.getElementById("InputCard").value,"ENCRYPT",e,{PunctuationMark:!de.value,RandomIndex:parseInt(document.querySelector("#Randomness").value),PianwenMode:E.value,LogicMode:k.value,Traditional:ue.value},!0===ce.value?je:null),n()})).finally((()=>{!0===ce.value&&(setInterval((()=>{document.getElementById("ImContentContainer").style.height="100.1%"}),Fe+50),setInterval((()=>{document.getElementById("ImContentContainer").style.height="100%"}),Fe+100),Fe=50)}))}else if("UINT8"==r.value){if(null==window.inputfile||null==window.inputfile)return;""==document.getElementById("KeyCard").value?(e="ABRACADABRA",ve({message:"你没有填写魔咒,自动使用默认魔咒,这不安全",autoCloseDelay:1500}),document.getElementById("KeyCard").value="ABRACADABRA"):e=document.getElementById("KeyCard").value;let n=await Ie(window.inputfile);t.WenyanInput(n,"ENCRYPT",e,{PunctuationMark:!de.value,RandomIndex:parseInt(document.querySelector("#Randomness").value),PianwenMode:E.value,LogicMode:k.value,Traditional:ue.value})}if("TEXT"==d.value)document.getElementById("OutputText").value=t.Output();else if("UINT8"==d.value){let e=Ce(t.Output(),"Abracadabra_Result","application/octet-stream"),n=document.createElement("a");n.download=e.name;let l=URL.createObjectURL(e);n.href=l,n.click(),URL.revokeObjectURL(l)}}catch(n){ve({message:"发生错误, "+n.toString()})}}async function Oe(){ye.value++;let e,t=new B(r.value,d.value);try{if("TEXT"==r.value){if(""==document.getElementById("InputCard").value)return;""==document.getElementById("KeyCard").value?(e="ABRACADABRA",ve({message:"你没有填写魔咒,自动使用默认魔咒,这不安全",autoCloseDelay:1500}),document.getElementById("KeyCard").value="ABRACADABRA"):e=document.getElementById("KeyCard").value,await new Promise((n=>{t.WenyanInput(document.getElementById("InputCard").value,"DECRYPT",e,null,!0===ce.value?je:null),n()})).finally((()=>{!0===ce.value&&(setInterval((()=>{document.getElementById("ImContentContainer").style.height="100.1%"}),Fe+50),setInterval((()=>{document.getElementById("ImContentContainer").style.height="100%"}),Fe+100),Fe=50)}))}else if("UINT8"==r.value){if(null==window.inputfile||null==window.inputfile)return;""==document.getElementById("KeyCard").value?(e="ABRACADABRA",ve({message:"你没有填写魔咒,自动使用默认魔咒,这不安全",autoCloseDelay:1500}),document.getElementById("KeyCard").value="ABRACADABRA"):e=document.getElementById("KeyCard").value;let n=await Ie(window.inputfile);t.WenyanInput(n,"DECRYPT",e)}if("TEXT"==d.value)document.getElementById("OutputText").value=t.Output();else if("UINT8"==d.value){let e=Ce(t.Output(),"Abracadabra_Result","application/octet-stream"),n=document.createElement("a");n.download=e.name;let l=URL.createObjectURL(e);n.href=l,n.click(),URL.revokeObjectURL(l)}}catch(n){ve({message:"发生错误, "+n.toString()})}}function _e(){""!=document.getElementById("OutputText").value&&(document.getElementById("OutputText").select(),navigator.clipboard.writeText(window.getSelection().toString()))}u((()=>pe.value[0]),(e=>{fe.value=e,he.value=e.name,window.inputfile=e}));var Fe=50;function je(e){Fe+=50;let t=ye.value;setTimeout((()=>{let n=ye.value;t==n&&("ROUNDS"==e.Type?se.value=e.Value:(me.value=e.Type,ge.value=e.Value))}),Fe)}async function Me(){window.deferredPrompt&&(window.deferredPrompt.prompt(),"accepted"===(await window.deferredPrompt.userChoice).outcome?ve({message:"感谢你选择魔曰"}):console.log("PWA Install cancelled"))}var We,Ue=0;return n((()=>{var e;(["fullscreen","standalone","minimal-ui"].some((e=>window.matchMedia("(display-mode: "+e+")").matches))||(null==(e=window.navigator)?void 0:e.standalone)||document.referrer.includes("android-app://"))&&(C.value=!1),Re(),document.querySelector("#Randomness").labelFormatter=e=>0==e?"长句优先":25==e?"稍随机":50==e?"适中":75==e?"较随机":100==e?"完全随机":"",u(ce,(()=>{document.getElementById("ImContentContainer").style.height="100.1%",document.getElementById("ImContentContainer").style.height="100%"}))})),c((()=>{})),(e,t)=>(i(),l(h,null,[R,s(A,{id:"FunctionCard"},{default:g((()=>[o("div",T,["TEXT"==r.value?(i(),l("mdui-text-field",D)):a("",!0),"UINT8"==r.value?(i(),m(A,{key:1,id:"FileCard",Background:"#5b6169",Width:"360px",Height:"80px",Other:{"grid-area":1,transition:"all 1s ease"},clickable:"",onDragenter:Be,onDragleave:we,onDragover:be,onDrop:xe,onClick:ke},{default:g((()=>[S,N,o("p",P,y(he.value),1),o("input",{type:"file",id:"fileIn",style:{display:"contents"},onChange:Ee},null,32)])),_:1})):a("",!0),o("div",{id:"controlBar",style:{"grid-area":"2",display:"grid","grid-template-columns":"360px"}},[L,o("div",{id:"NormalControlBar",style:{"align-self":"center",display:"none"}},[o("mdui-button",{icon:"arrow_downward--rounded",onClick:Pe,style:{"align-self":"center",top:"-4px",width:"230px","margin-right":"6px"}},"吟唱你的魔法"),o("mdui-button",{variant:"elevated",icon:"auto_awesome--rounded",onClick:Ne,style:{"align-self":"center",top:"-4px",width:"120px",border:"solid 2px white"}},"文言仿真")]),o("div",{id:"NextControlBar",style:{"align-self":"center",display:"grid","grid-template-columns":"235px 124px"}},[o("mdui-button",{icon:"arrow_downward--rounded",onClick:Pe,style:{"align-self":"center",top:"-4px",width:"230px","margin-right":"6px",display:"none"}},"吟唱你的魔法"),o("div",{style:{display:"grid","grid-template-rows":"40px 33px"}},[o("div",{style:{width:"fit-content","align-self":"center","justify-self":"center","margin-left":"-10px"}},[o("mdui-chip",{icon:"keyboard_double_arrow_down--rounded",onClick:Le,style:{"align-self":"center",width:"105px","text-align":"center","margin-right":"5px"}},"加密"),o("mdui-chip",{icon:"keyboard_double_arrow_down--rounded",onClick:Oe,style:{"align-self":"center",width:"105px","text-align":"center"}},"解密")]),O]),o("mdui-button",{variant:"elevated",icon:"auto_fix_off--rounded",onClick:Ne,style:{"align-self":"center",top:"-4px",width:"120px",border:"solid 2px white"}},"传统加密")])]),"TEXT"==d.value?(i(),l("mdui-text-field",_)):a("",!0),o("mdui-button-icon",{icon:"content_copy--rounded",style:{position:"absolute",bottom:"103px",right:"22px",background:"rgb(11 11 11 / 25%)","backdrop-filter":"blur(2px)"},onClick:_e}),"UINT8"==d.value?(i(),m(A,{key:3,id:"FileCard2",Background:"#5b6169",Width:"360px",Height:"120px",Other:{"grid-area":3,transition:"all 1s ease"}},{default:g((()=>[F])),_:1})):a("",!0),o("div",j,[M,C.value?(i(),l("mdui-chip",{key:0,elevated:"",icon:"file_download--rounded",style:{position:"absolute",bottom:"40px",right:"15px",background:"rgba(11, 11, 11, 0.25)","backdrop-filter":"blur(2px)"},onClick:Me},"安装应用")):a("",!0),o("p",{id:"CopyRightSheepChef",onClick:t[0]||(t[0]=e=>{ce.value?ve({message:"ヾ(≧▽≦*)o 感谢您使用魔曰加密。"}):"0"==document.querySelector("#CopyRightSheepChef").getAttribute("count")?(We=setInterval((function(){if(Ue==parseInt(document.querySelector("#CopyRightSheepChef").getAttribute("count"))&&0!=Ue)return Ue=0,document.querySelector("#CopyRightSheepChef").setAttribute("count","0"),void clearInterval(We);Ue=parseInt(document.querySelector("#CopyRightSheepChef").getAttribute("count"))}),1e3),Ue=parseInt(document.querySelector("#CopyRightSheepChef").getAttribute("count")),document.querySelector("#CopyRightSheepChef").setAttribute("count","1")):(document.querySelector("#CopyRightSheepChef").setAttribute("count",(parseInt(document.querySelector("#CopyRightSheepChef").getAttribute("count"))+1).toString()),3==parseInt(document.querySelector("#CopyRightSheepChef").getAttribute("count"))&&ve({message:"ヾ(≧▽≦*)o 多点几次!"}),10==parseInt(document.querySelector("#CopyRightSheepChef").getAttribute("count"))&&(ve({message:"极客佐料已激活"}),ce.value=!0))}),count:"0",style:{position:"relative",width:"fit-content",height:"fit-content",top:"98px","font-size":"1rem","font-variant":"petite-caps","text-align":"left",padding:"0px","border-radius":"inherit",margin:"0px",right:"4px","justify-self":"end",opacity:"0.5",cursor:"pointer","user-select":"none"}}," SheepChef © ")])])])),_:1}),s(A,{id:"FloatCard",class:p({oldfloat:"Normal"==I.value})},{default:g((()=>[o("div",W,["Next"==I.value?(i(),l("span",U,"骈文格律")):a("",!0),"Next"==I.value?(i(),l("mdui-switch",{key:1,id:"ForcePian",style:{"align-self":"center","justify-self":"left"},"unchecked-icon":"hdr_auto--rounded","checked-icon":"auto_awesome--rounded",onChange:Re},null,32)):a("",!0),"Next"==I.value?(i(),l("span",K,"逻辑优先")):a("",!0),"Next"==I.value?(i(),l("mdui-switch",{key:3,id:"ForceLogi",style:{"align-self":"center","justify-self":"left"},"unchecked-icon":"hdr_auto--rounded","checked-icon":"auto_awesome--rounded",onChange:Re},null,32)):a("",!0),"Next"==I.value?(i(),l("span",q,"去除标点")):a("",!0),"Next"==I.value?(i(),l("mdui-switch",{key:5,id:"ForceNoMark","checked-icon":"auto_awesome--rounded",style:{"align-self":"center","justify-self":"left"},onChange:De},null,32)):a("",!0),"Next"==I.value?(i(),l("span",H,"繁體中文")):a("",!0),"Next"==I.value?(i(),l("mdui-switch",{key:7,id:"ForceTraditional","checked-icon":"translate--rounded",style:{"align-self":"center","justify-self":"left"},onChange:Se},null,32)):a("",!0),"Normal"==I.value?(i(),l("span",X,"雪藏话语")):a("",!0),"Normal"==I.value?(i(),l("mdui-switch",{key:9,id:"ForceEnc",style:{"align-self":"center","justify-self":"left"},"unchecked-icon":"hdr_auto--rounded","checked-icon":"auto_awesome--rounded",onChange:Re},null,32)):a("",!0),"Normal"==I.value?(i(),l("span",Y,"探求真意")):a("",!0),"Normal"==I.value?(i(),l("mdui-switch",{key:11,id:"ForceDec",style:{"align-self":"center","justify-self":"left"},"unchecked-icon":"hdr_auto--rounded","checked-icon":"auto_awesome--rounded",onChange:Re},null,32)):a("",!0),"Normal"==I.value?(i(),l("span",z,"去除标志")):a("",!0),"Normal"==I.value?(i(),l("mdui-switch",{key:13,id:"Forceq","checked-icon":"auto_awesome--rounded",style:{"align-self":"center","justify-self":"left"},onChange:Te},null,32)):a("",!0)])])),_:1},8,["class"]),ce.value?(i(),m(A,{key:0,id:"GeekCard"},{default:g((()=>[o("div",V,[G,o("mdui-button-icon",{icon:"close--rounded",style:{position:"absolute",top:"10px",right:"10px",background:"rgb(11 11 11 / 25%)","backdrop-filter":"blur(2px)","z-index":"1000",zoom:"82%"},onClick:t[1]||(t[1]=e=>ce.value=!1)}),o("mdui-list",null,[o("mdui-list-item",$,[f(" 密钥轮 "),o("span",J,[f(y(se.value[0]),1),Q,f(" "+y(se.value[1]),1),Z,f(" "+y(se.value[2]),1),ee,f(" "+y(se.value[3]),1),te,f(" "+y(se.value[4]),1),ne,f(" "+y(se.value[5]),1),le])]),o("mdui-list-item",ie,[f(" 步骤 - "+y(me.value)+" ",1),o("span",oe,y(ge.value),1)])])])])),_:1})):a("",!0),ae,re],64))}},ue={id:"ImWindowContainer",ref:"ImContainer"},ce={id:"ImContentContainer"},se={id:"main_content",style:{height:"fit-content"}},me={__name:"ImMainView",setup(t){const a=e(0),r=new ResizeObserver((e=>{e.forEach((e=>{a.value=e.contentRect.height}))}));return n((()=>{r.observe(document.getElementById("ImWindowContainer"))})),(e,t)=>(i(),l("div",ue,[s(x,{ContainerId:"ImWindowContainer",ContentContainerId:"ImContentContainer",Direction:"Right",Length:"calc(100% - 120px)",Width:"10px",PBottom:"10px",PRight:"2px",PMarginOne:"27px",PMarginTwo:"0px",Id:"TestBar"}),o("div",ce,[o("div",se,[s(de)])])],512))}},ge=o("header",null,[o("link",{rel:"shortcut icon",href:"favicon.ico"})],-1),ye={style:{width:"100% !important",height:"100%"}},pe={class:"InnerUI",fullHeight:""},fe={__name:"App",setup:e=>(n((()=>{})),(e,t)=>(i(),l(h,null,[ge,o("mdui-layout",ye,[o("mdui-layout-main",pe,[s(me)])])],64)))};window.addEventListener("beforeinstallprompt",(e=>{e.preventDefault(),window.deferredPrompt=e}));const he=I(fe);C("#09355b"),he.component("Card",A),he.mount("body"); 2 | -------------------------------------------------------------------------------- /src/views/HomeView.vue: -------------------------------------------------------------------------------- 1 | 590 | 591 | 964 | 965 | --------------------------------------------------------------------------------