v5.4.0 新版logo与图标,UI优化,自定主题与winver

(更新来自 @tjy-gitnub,其实我想发v6的)
-新Logo:新版logo
-新图标:重绘替换了win11的图标
-自定主题:支持用户更改和上传自己的主题
-版本信息:新增winver
-新UI:加入win11的悬停立体高亮
-启动优化:加快速度,修复本地因获取电量失败无法启动的问题
-UI适配:稍稍更改了不适配的UI
-Bug修复:右键菜单无法关闭
-代码优化:对某些重复代码整理归纳,引入应用的初始化load配置
-细节优化和修复
This commit is contained in:
tjy-gitnub
2023-06-12 16:02:28 +08:00
parent c321383350
commit f202e4cdab
45 changed files with 661 additions and 513 deletions
+1
View File
@@ -0,0 +1 @@
web.config
+1
View File
@@ -0,0 +1 @@
<svg width="259" height="259" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="hidden"><defs><clipPath id="clip0"><rect x="511" y="252" width="259" height="259"/></clipPath><linearGradient x1="623.562" y1="312.59" x2="658.438" y2="408.41" gradientUnits="userSpaceOnUse" spreadMethod="reflect" id="fill1"><stop offset="0" stop-color="#E1E3E6"/><stop offset="0.18" stop-color="#E1E3E6"/><stop offset="0.91" stop-color="#C4C8CE"/><stop offset="1" stop-color="#C4C8CE"/></linearGradient><linearGradient x1="620.414" y1="354.188" x2="659.586" y2="461.812" gradientUnits="userSpaceOnUse" spreadMethod="reflect" id="fill2"><stop offset="0" stop-color="#7F7F7F"/><stop offset="0.18" stop-color="#7F7F7F"/><stop offset="0.91" stop-color="#404040"/><stop offset="1" stop-color="#404040"/></linearGradient><linearGradient x1="571.897" y1="394.854" x2="581.103" y2="420.146" gradientUnits="userSpaceOnUse" spreadMethod="reflect" id="fill3"><stop offset="0" stop-color="#A6FF2F"/><stop offset="0.18" stop-color="#A6FF2F"/><stop offset="0.91" stop-color="#00D647"/><stop offset="1" stop-color="#00D647"/></linearGradient><image width="21" height="21" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAMAAACeyVWkAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAEjUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOijBK8AAABhdFJOUwABAgMEBQYICQoLDA0ODxAREhMUFRYXGBkaGxweHyAiJCUnKSotLi8wMzQ1Nz4/QkNERUZHSElKTE1PUlNVVldYWVpdXmFiY2VrbG1wcXN0dXd4eXp8fn+AhIaMjo+RlJVW9ugwAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABXUlEQVQoU1WQaXfBYBCFR+IVQcSSlEjahBCCWFtbqX1XlNZWtP//V/QNznF6v80zZ+69Z+Cqx9ft/rSZvwRvsylv/ft42KwXi+V7jr0xiE/O+9V02G212r1RLXyF4s9xN+s3ynnDyOQrzcHFxTs5fo07JUPXVDWqpTLVLINp/bwbvxV0VRJ4jhee1HQxgdN/97NOIamEfG6n08X6xUjqmYX6cdUv6QrHUIgkrTaKCSjpCGwP04ahhhg7IgmCIBHtEWNJ2G2GZV3yUYiw4BALgWifrMFp3c1rghuRJsSYpNySBp+LlqHyTpK4QAACOQUF5ibl/tGgDOVlOxPlXdY7dQk8hD562Je13X1ZiQLIjSqpJ/+1gwV3cPj9eMvWmhlVZOhLXyvuy9nMo4dBNR0JeGgKIRvl8ITsJgRQssWUIt7+wLmuEIBJ5NIxWRKCgui7nN/kiSTjWljmcToAwB9ojy6IWqdEmwAAAABJRU5ErkJggg==" preserveAspectRatio="none" id="img4"></image><clipPath id="clip5"><rect x="566" y="397" width="21" height="21"/></clipPath></defs><g clip-path="url(#clip0)" transform="translate(-511 -252)"><path d="M551 382 581.093 339 700.907 339 731 382Z" fill="url(#fill1)" fill-rule="evenodd"/><path d="M544 390.667C544 385.88 547.88 382 552.667 382L727.333 382C732.12 382 736 385.88 736 390.667L736 425.333C736 430.12 732.12 434 727.333 434L552.667 434C547.88 434 544 430.12 544 425.333Z" fill="url(#fill2)" fill-rule="evenodd"/><path d="M566 407.5C566 401.701 570.701 397 576.5 397 582.299 397 587 401.701 587 407.5 587 413.299 582.299 418 576.5 418 570.701 418 566 413.299 566 407.5Z" fill="url(#fill3)" fill-rule="evenodd"/><g clip-path="url(#clip5)"><use width="100%" height="100%" xlink:href="#img4" transform="translate(566 397)"></use></g></g></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.5 KiB

+52
View File
@@ -130,4 +130,56 @@
#contri>.button {
height: max-content;
margin: 10px 0 0 10px;
}
.window.winver{
width: 600px;
height: 550px;
}
#win-winver>.logo{
display: flex;
justify-content: center;
}
#win-winver>.logo>.img{
background: url(../../icon/logo.svg) center;
background-size: cover;
height: 80px;
width: 80px;
margin:10px;
}
#win-winver>.logo>p{
background-image: linear-gradient(100deg, var(--theme-1), var(--theme-2));
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
font-size: 45px;
font-weight: 550;
font-family: 'Microsoft Yahei UI';
margin: 15px;
}
#win-winver>hr{
width: calc(100% - 20px);
margin: 10px;
}
#win-winver p{
margin: 0 50px;
}
#win-winver>.mesg:hover{
text-decoration: underline!important;
}
#win-winver>.mesg:active{
opacity: 0.5;
transition: 30ms;
}
#win-winver>.bottom{
position: absolute;
bottom: 80px;
}
+6 -4
View File
@@ -206,6 +206,7 @@
border-radius: 5px;
display: flex;
border: 1.5px solid transparent;
transition: 40ms, transform 400ms cubic-bezier(0.14, 1.02, 0.17, 0.03);
}
#win-explorer>.main>.content>.view>.item:active{
@@ -219,12 +220,13 @@
}
#win-explorer>.main>.content>.view>.item.file>img{
width: 20px;
height: 20px;
margin: 3px;
width: 22px;
height: 22px;
margin: 2px;
}
#win-explorer>.main>.content>.view>.item:hover{
background-color: var(--hover);
border: 1.5px solid #6f6f6f30;
/* border: 1.5px solid #6f6f6f30; */
box-shadow: 0 1px 2px var(--s3d);
}
-53
View File
@@ -1,53 +0,0 @@
#win-python-editor *::-webkit-scrollbar-track {
background-color: transparent;
}
#win-python-editor *::-webkit-scrollbar-thumb {
background-color: #FFFFFF22;
border-radius: 0;
}
#win-python-editor *::-webkit-scrollbar-button {
display: none;
height: 0px;
width: 0px;
}
#win-python-editor {
display: grid;
grid-template-rows: 60% 40%;
user-select: all;
}
.window.python-editor .titbar .run {
font-size: 16px;
padding-top: 4px;
}
#win-python-ace-editor {
font-size: 16px;
line-height: 1.25;
height: 100%;
}
#win-python-editor .output {
background-color: #0f0f0f;
color: #f8f8f2;
border: 25px solid #1a1a1a !important;
border: none;
/* border-radius: 5px; */
padding: 10px;
width: 100%;
height: 100%;
font: 14px / normal 'Consolas', 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Source Code Pro', 'source-code-pro', monospace;
overflow-y: scroll;
white-space: pre-wrap;
word-wrap: break-word;
user-select: auto;
}
#win-python-editor .output::selection {
background: #ddd;
background-clip: content-box;
color: #333;
}
+83
View File
@@ -0,0 +1,83 @@
#win-pythonEditor *::-webkit-scrollbar {
background-color: #FFFFFF10;
}
::-webkit-scrollbar:hover {
background-color: #ffffff10;
}
#win-pythonEditor *{
scroll-behavior:initial !important;
}
#win-pythonEditor {
display: grid;
grid-template-rows: 60% 40%;
min-height: 0px;
user-select: all;
}
.window.pythonEditor .titbar .run {
font-size: 17px;
padding-top: 4px;
}
#win-python-ace-editor {
font-size: 16px;
line-height: 1.25;
height: 100% !important;
font-weight: 200;
}
#win-pythonEditor .output {
background-color: #0f0f0f;
color: #f8f8f2;
border: 25px solid #1a1a1a !important;
border: none;
/* border-radius: 5px; */
padding: 10px;
width: 100%;
height: 100%;
font: 14px / normal 'Consolas', 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Source Code Pro', 'source-code-pro', monospace;
overflow-y: scroll;
white-space: pre-wrap;
word-wrap: break-word;
user-select: auto;
}
#win-pythonEditor .output::selection {
background: #ddd;
background-clip: content-box;
color: #333;
}
/* 编辑器 */
.ace_editor.ace_autocomplete.ace_dark.ace-vibrant-ink{
border-radius: 8px;
box-shadow: 1px 1px 10px #000;
}
.ace_autocomplete .ace_layer.ace_marker-layer>.ace_active-line{
border-radius: 5px;
background-color: #ffffff30 !important;
}
.ace_autocomplete .ace_layer.ace_marker-layer>.ace_line-hover{
border-radius: 5px;
background: #ffffff20;
border-color: var(--href);
transition: 100ms;
}
.ace_autocomplete .ace_layer.ace_text-layer>.ace_line{
padding: 0px 6px;
}
.ace_autocomplete .ace_layer.ace_text-layer>.ace_line>.ace_completion-highlight{
color: var(--theme-1);
}
.ace_tooltip{
border-radius: 8px;
box-shadow: 1px 1px 10px #000;
background-color: #26282c !important;
border: 1px #484747 solid;
padding: 5px 8px;
}
+30
View File
@@ -327,4 +327,34 @@ div.app-color input[type=color] {
position: relative;
float: right;
right: 5px;
}
#set-theme{
display: flex;
flex-wrap: wrap;
justify-content: left;
}
#set-theme>.a{
width: 100px;
height: 100px;
border-radius: 10px;
}
#set-theme>.a{
background-size: cover;
color: #fff;
text-shadow: 1px 1px 3px #000;
text-align: right;
padding: 3px 8px;
box-shadow: 1px 1px 5px var(--sd);
margin: 7px 7px 0 0;
}
#set-theme>.a:hover{
filter: brightness(1.3) saturate(1.3);
}
#set-theme>.a:active{
opacity: 0.75;
}
+2 -3
View File
@@ -1,7 +1,6 @@
.window.terminal-apps {
--text: #ddd;
--bg: #000000;
--bg30: #00000030;
--bg50: #00000050;
--bg70: #00000070;
--sd: #00000070;
@@ -30,7 +29,7 @@
}
.window.terminal-apps>.content>pre {
color: #fff;
color: #ddd;
margin: 0px 15px;
font-family: "Consolas", "Monaco", "monospace", system-ui;
user-select: text;
@@ -52,7 +51,7 @@
border: none;
outline: none;
padding: 0;
color: #fff;
color: #eee;
cursor: default;
width: 100%;
}
+116 -207
View File
@@ -4,10 +4,9 @@
:root {
--text: #000;
--bg: #ffffff;
--bg30: #ffffff30;
--bg50: #ffffff80;
--bg70: #ffffff80;
--sd: #33333370;
--sd: #22222280;
--card: #efefef55;
--hover: #ffffff65;
--hover-half: #ffffff40;
@@ -24,13 +23,12 @@
--theme-2:#3b91d8;
--href:#2983cc;
--bd:#8f8f8f30;
/* --bd:#ffffff10; */
--s3d:#99999940;
}
:root.dark {
--text: #ddd;
--bg: #000000;
--bg30: #00000030;
--bg50: #00000060;
--bg70: #00000080;
--sd: #000000a0;
@@ -47,6 +45,7 @@
--hr:#00000050;
--unfoc:#333;
--bd:#ffffff06;
--s3d:#11111160;
}
:root.nobr *,
@@ -73,90 +72,6 @@
backdrop-filter: blur(30px);
}
:root.noblur{
--bg30:var(--bg);
--bg50:var(--bg);
--bg70:var(--bg);
--cm:var(--bggrey);
}
/* :root.noblur .window.foc,
:root.noblur .dock,
:root.noblur .menu{
background: var(--bg) !important;
} */
/*
:root {
--text: #000;
--bg: #ffffff;
--bg30: #ffffff30;
--bg50: #ffffff50;
--bg70: #ffffff70;
--sd: #53535351;
--card: #efefef60;
--hover: #ffbbbb70;
--hover-half: #ff808050;
--hover-b: #74000030;
--bggrey: #ddd;
--fill:#d3d3d370;
--bgul: url('newyear-light.png');
--mm: #ff6464c0;
--cm: #fafafabb;
--bar: #efefef37;
--hr:#00000013;
--unfoc:#ff9797;
--theme-1:rgb(215, 51, 114);
--theme-2:rgb(167, 58, 151);
--theme-f:hue-rotate(58deg) saturate(0.8) contrast(1.5) brightness(0.9);
--href:red;
}
:root.dark {
--text: #ddd;
--bg: #000000;
--bg30: #00000030;
--bg50: #00000050;
--bg70: #00000070;
--sd: #00000070;
--card: #72727240;
--hover: #ff616140;
--hover-half: #ff616120;
--hover-b: #ff616130;
--bggrey: #444;
--fill:#54545470;
--bgul: url('newyear-dark.png');
--mm: #ff5b5b50;
--cm: #252525bb;
--bar: #7272722a;
--hr:#00000050;
--unfoc:#3a1a1a;
} */
/* #start-btn>.ico{
filter: var(--theme-f);
}
#search-btn>.in{
filter: var(--theme-f);
}
img[src="icon/about.png"]{
filter: var(--theme-f) !important;
}
#loadbacksvg{
filter: var(--theme-f);
}
#s-m-user{
filter: var(--theme-f);
}
#win-setting>.menu>.user>svg{
filter: var(--theme-f);
} */
body,
p {
transition: 100ms;
@@ -204,8 +119,8 @@ hr {
background-color: #afafaf50;
}
* {
scroll-behavior: smooth;
.scsmoo {
/* scroll-behavior: smooth; */
}
::-webkit-scrollbar {
@@ -268,19 +183,19 @@ list>a:active,
}
.dock {
border-radius: 7px;
border-radius: 8px;
height: 100%;
background-color: var(--bg70);
backdrop-filter: blur(20px) saturate(1.3);
-webkit-backdrop-filter: blur(20px) saturate(1.3);
box-shadow: 3px 3px 10px 1px var(--sd);
backdrop-filter: blur(20px) saturate(1.5);
-webkit-backdrop-filter: blur(20px) saturate(1.5);
box-shadow: 0 1px 2px #44444460, 0px 3px 25px 1px var(--sd);
padding: 7px 6px;
margin: 0 3px;
display: flex;
transition: 200ms, transform 300ms cubic-bezier(0.14, 1.02, 0.17, 0.03),opacity 0ms;
transition: 200ms, transform 300ms cubic-bezier(0.14, 1.02, 0.17, 0.03),backdrop-filter,-webkit-backdrop-filter 0ms;
bottom: 0;
transform: scale(1);
border: 1.5px solid #6f6f6f30;
/* transform: scale(1); */
/* border: 1.5px solid #6f6f6f30; */
}
.dock>* {
@@ -289,8 +204,10 @@ list>a:active,
}
.dock.about:hover,
.dock.theme:hover {
filter: opacity(0.8) brightness(1.2);
.dock.theme:hover,
.dock.date:hover {
backdrop-filter: blur(20px) saturate(1.5) brightness(1.2);
-webkit-backdrop-filter: blur(20px) saturate(1.5) brightness(1.2);
}
.dock.about {
@@ -312,10 +229,6 @@ list>a:active,
transition-delay: 200ms;
}
.dock.about:hover {
filter: opacity(0.8) brightness(1.2);
}
.dock.about:active>p {
display: block;
}
@@ -339,7 +252,8 @@ list>a:active,
}
.dock.about.show:hover {
filter: opacity(0.9) brightness(1);
backdrop-filter: blur(20px) saturate(1.5) brightness(1.2);
-webkit-backdrop-filter: blur(20px) saturate(1.5) brightness(1.2);
}
@@ -351,7 +265,7 @@ list>a:active,
}
#taskbar>a {
border-radius: 5px;
border-radius: 10px;
height: 34px;
width: 38px;
transition: 100ms;
@@ -372,9 +286,10 @@ list>a:active,
}
#taskbar>a>img {
width: 24px;
height: 24px;
width: 26px;
height: 26px;
transition: 100ms;
margin: -1px 0 0 -0.5px;
}
#taskbar>a:not(.min)>img {
@@ -383,22 +298,26 @@ list>a:active,
@keyframes task-show {
0% {
margin-top: 0;
margin-top: -1px;
margin-bottom: 0;
}
40% {
margin-top: -5px;
margin-top: -6px;
margin-bottom: 5px;
transform: scaleY(1.1);
transform-origin: bottom;
}
60% {
margin-top: 2px;
margin-top: 1px;
margin-bottom: -2px;
transform: scaleY(0.8);
transform-origin: bottom;
}
100% {
margin-top: 0;
margin-top: -1px;
margin-bottom: 0;
}
}
@@ -409,22 +328,28 @@ list>a:active,
@keyframes task-hide {
0% {
margin-top: 0;
margin-top: -1px;
margin-bottom: 0;
}
40% {
margin-top: 4px;
margin-bottom: -4px;
/* margin-top: 3px;
margin-bottom: -4px; */
margin-top: 0px;
margin-bottom: -1px;
transform: scaleY(0.8);
transform-origin: bottom;
}
70%{
margin-top: -2px;
margin-bottom: 2px;
margin-bottom: 1px;
transform: scaleY(1.05);
transform-origin: bottom;
}
100% {
margin-top: 0;
margin-top: -1px;
margin-bottom: 0;
}
}
@@ -437,7 +362,7 @@ list>a:active,
height: 4px;
border-radius: 2px;
position: relative;
bottom: 3px;
bottom: 4px;
left: 3.2px;
transition: 150ms;
}
@@ -484,7 +409,11 @@ list>a:active,
}
.dock.control>icon {
font-size: 18.5px;
font-size: 17px;
}
.dock.control>* {
margin: 0 -2px 0 -1px;
}
.dock.control:active {
@@ -583,7 +512,7 @@ list>a:active,
transition-delay: 200ms;
}
#start-btn>svg.ico {
#start-btn>.ico {
position: relative;
top: -32px;
transition: transform 200ms, top 200ms 100ms, left 200ms;
@@ -591,7 +520,7 @@ list>a:active,
/* transition-delay: 100ms; */
}
#start-btn.show>svg.ico {
#start-btn.show>.ico {
transform: scale(0.5);
top: -26px;
}
@@ -600,7 +529,7 @@ list>a:active,
position: relative;
display: block;
top: -29.6px;
left: 3px;
left: 2.5px;
width: 16px;
height: 16px;
transition: 200ms;
@@ -611,8 +540,8 @@ list>a:active,
}
#search-btn.show>svg.in {
transform: scale(1.1);
filter: hue-rotate(380deg) brightness(1.1);
transform: scale(1.1) rotate(360deg);
filter: saturate(2) brightness(1.1);
}
#widgets-btn>svg {
@@ -624,39 +553,39 @@ list>a:active,
}
#widgets-btn>.wid2 {
margin-top: -14px;
margin-left: 13.3px;
height: 12px;
margin-top: -19px;
margin-left: 10.5px;
height: 20px;
transition: 150ms cubic-bezier(0.8, 0, 0.2, 1);
transition-delay: 0ms;
}
#widgets-btn>.wid3 {
margin-top: 13px;
margin-left: 2px;
height: 22px;
margin-left: -2px;
height: 31px;
transition: 100ms cubic-bezier(0.8, 0, 0.2, 1);
transition-delay: 100ms;
}
#widgets-btn>.wid4 {
margin-top: 4px;
margin-left: 13.3px;
height: 8.5px;
margin-left: 11.5px;
height: 12px;
transition: 200ms cubic-bezier(0.8, 0, 0.2, 1);
transition-delay: 180ms;
}
#widgets-btn.show>.wid2 {
margin-top: -24px;
margin-top: -28px;
}
#widgets-btn.show>.wid3 {
margin-top: -12px;
margin-top: -20.5px;
}
#widgets-btn.show>.wid4 {
margin-top: -9px;
margin-top: -14px;
}
@@ -674,7 +603,7 @@ list>a:active,
-webkit-backdrop-filter: blur(80px) saturate(1.3);
opacity: 0.5;
transition: 200ms;
box-shadow: 3px 3px 15px 1px var(--sd);
box-shadow: 3px 3px 25px 1px var(--sd);
border: 1.5px solid #6f6f6f30;
z-index: 99;
}
@@ -759,9 +688,9 @@ input-before {
}
#s-m-l>list>a>img {
height: 25px;
width: 25px;
margin-top: 3px;
height: 30px;
width: 30px;
margin-top: 1px;
}
#s-m-l>list>.text {
@@ -774,8 +703,10 @@ input-before {
#s-m-r {
flex-grow: 1;
margin-left: -15px;
overflow: auto;
padding-bottom: 30px;
overflow: hidden;
padding-bottom: 10px;
display: flex;
flex-direction: column;
}
#s-m-r>*{
@@ -889,7 +820,7 @@ input-before {
}
#s-m-r>.pinned {
padding: 10px 10px;
padding: 10px 5px;
margin-right: 10px;
margin-left: 15px;
border-radius: 10px;
@@ -897,12 +828,17 @@ input-before {
box-shadow: 3px 3px 6px var(--sd);
transition-delay: 300ms;
border: 1.5px solid #6f6f6f30;
height: 220px;
display: flex;
flex-direction: column;
}
#s-m-r>.pinned>.apps {
display: flex;
flex-wrap: wrap;
padding-left: 15px;
padding-left: 10px;
overflow: auto;
flex-grow: 1;
}
@@ -925,12 +861,17 @@ input-before {
box-shadow: 3px 3px 6px var(--sd);
transition-delay: 450ms;
border: 1.5px solid #6f6f6f30;
flex-grow: 1;
display: flex;
overflow: hidden;
flex-direction: column;
}
#s-m-r>.tuijian>.apps {
display: flex;
flex-wrap: wrap;
padding-left: 15px;
overflow: auto;
}
#s-m-r>.tuijian>.apps>* {
@@ -1016,9 +957,9 @@ input-before {
}
.sm-app>*:first-child {
height: 34px;
width: 34px;
margin-top: 12px;
height: 40px;
width: 40px;
margin-top: 8px;
transition: 80ms;
filter: contrast(0.3) brightness(0.7);
text-shadow: 3px 3px 5px var(--sd);
@@ -1035,17 +976,8 @@ input-before {
background-color: unset;
}
.sm-app:active {
padding-top: 3px;
}
.sm-app:active>*:last-child {
margin-top: 0px;
}
.sm-app:active>*:first-child {
height: 28px;
width: 28px;
transform: scale(0.8);
}
.sm-app.enable:active>*:first-child {
@@ -1190,9 +1122,9 @@ input-before {
}
#search-win>.ans>.list>list>a>img{
height: 23px;
width: 23px;
margin: 1px 5px 7px 0;
height: 25px;
width: 25px;
margin: 0px 5px 7px 0;
}
#search-win>.ans>.view {
@@ -1692,8 +1624,8 @@ input-before {
}
#desktop>div>img {
width: 50px;
height: 50px;
width: 65px;
height: 65px;
}
#desktop>div.b>img {
@@ -1720,16 +1652,21 @@ input-before {
}
.input {
background-color: var(--bg70);
border-radius: 10px;
background-color: var(--bg50);
border: none;
border-bottom: 2.5px solid;
border-bottom-color: #7f7f7f7f;
padding: 3px 5px 4px 8px;
border-radius: 13px;
padding: 3px 5px 3px 8px;
outline: medium;
width: 100%;
color: var(--text);
transition: 100ms,border 0s;
box-shadow: 0 1px 2px var(--s3d);
}
.input:hover{
background: var(--cm);
}
.input:focus {
@@ -1738,7 +1675,7 @@ input-before {
background-origin: padding-box, border-box;
background-image: linear-gradient(var(--bg), var(--bg)), linear-gradient(90deg, var(--theme-1), var(--theme-2));
border-bottom-color: transparent;
box-shadow: 1px 1px 10px var(--sd);
box-shadow: 0 1px 10px var(--s3d);
opacity: 1;
}
@@ -1961,6 +1898,7 @@ list>a:hover {
color: var(--text);
background-color: var(--hover-half);
text-decoration: none;
box-shadow: 0 1px 2px var(--s3d);
}
list>hr {
@@ -1968,7 +1906,7 @@ list>hr {
padding: 0 !important;
margin: 2px 6px;
background-color: #7f7f7f7f;
border-radius: 5px;
border-radius: 5px;
height: 0.75px;
cursor: inherit;
}
@@ -2110,9 +2048,9 @@ list>span.focs.cl{
.window.foc {
background-color: var(--bg70);
backdrop-filter: blur(80px) saturate(1.3);
backdrop-filter: blur(80px) saturate(1.5);
filter: none;
-webkit-backdrop-filter: blur(80px) saturate(1.3);
-webkit-backdrop-filter: blur(80px) saturate(1.5);
box-shadow: 3px 3px 20px 3px var(--sd);
}
@@ -2128,46 +2066,17 @@ list>span.focs.cl{
opacity: 1;
}
.window.webapp.load,
.window.webapp.content{
background: var(--unfoc);
}
.window.webapp.foc>.titbar{
background-color: var(--bg70);
backdrop-filter: blur(80px) saturate(1.3);
-webkit-backdrop-filter: blur(80px) saturate(1.3);
}
.window.foc.mica{
/* backdrop-filter: blur(100px) saturate(2); */
backdrop-filter: none;
-webkit-backdrop-filter: none;
filter: none;
background: var(--unfoc);
}
/* .window.mica.foc .micaalt, */
.window.mica.foc{
background-image: linear-gradient(var(--bg70),var(--bg70)),url(bg-dark-mica.svg);
background-size: cover,var(--mica-size);
background-position: 0 0,var(--mica-pos);
background-clip: padding-box,padding-box;
background-origin: padding-box,padding-box;
background-repeat: no-repeat;
}
/* .window.foc.mica::before {
display: block;
content: '';
width: 100%;
height: 150px;
position: absolute;
z-index: -1;
background-image: linear-gradient(#00000000 0,var(--bg70) 60px,var(--unfoc) 150px),url(bg-dark-mica.svg);
background-size: cover,var(--mica-size);
background-position: 0 0,var(--mica-pos);
background-clip: padding-box,padding-box;
background-origin: padding-box,padding-box;
background-repeat: no-repeat;
filter: blur(10px);
} */
.window.min {
top: calc(95%) !important;
left: 15% !important;
@@ -2197,10 +2106,10 @@ list>span.focs.cl{
}
.window>.loadback>.icon {
height: 70px;
width: 70px;
top: calc(50% - 51px);
left: calc(50% - 35px);
height: 90px;
width: 90px;
top: calc(50% - 45px);
left: calc(50% - 45px);
position: absolute;
}
@@ -2250,9 +2159,9 @@ list>span.focs.cl{
}
.window>.titbar>.icon {
margin: 6px 5px 0 0;
height: 22px;
width: 22px;
margin: 5px 5px 0 0;
height: 24px;
width: 24px;
}
.window>.titbar>div {
+172 -170
View File
File diff suppressed because one or more lines are too long
+180 -76
View File
@@ -52,10 +52,12 @@ $('input,textarea,*[contenteditable=true]').on('contextmenu', (e) => {
stop(e);
return true;
});
let nomax={'calc':0,'notepad-fonts':0,'camera-notice':0,'winver':0,'run':0};
let nomin={'notepad-fonts':0,'camera-notice':0,'run':0};
let cms = {
'titbar': [
function (arg) {
if (arg == 'calc' || arg == 'notepad-fonts' || arg == 'camera-notice' || arg == 'run') {
if (arg in nomax) {
return 'null';
}
if ($('.window.' + arg).hasClass("max")) {
@@ -66,7 +68,7 @@ let cms = {
}
},
function (arg) {
if (arg == 'notepad-fonts' || arg == 'camera-notice' || arg == 'run') {
if (arg in nomin) {
return 'null';
}
else {
@@ -74,7 +76,7 @@ let cms = {
}
},
function (arg) {
if (arg == 'notepad-fonts' || arg == 'camera-notice') {
if (arg in nomin) {
return ['<i class="bi bi-window-x"></i> 关闭', `hidewin('${arg}', 'configs')`];
}
else {
@@ -123,38 +125,21 @@ let cms = {
return ['<i class="bi bi-window"></i> 打开', `openapp('${arg[0]}');hide_startmenu();`];
},
function (arg) {
if (arg[0] != 'js') {
return ['<i class="bi bi-link-45deg"></i> 在桌面创建链接', "$('#desktop').append(`<div class='b' ondblclick=openapp('" + arg[0] + "') ontouchstart=openapp('" + arg[0] + "')><img src='icon/" + arg[0] + ".png'><p>" + arg[1] + "</p></div>`)"];
}
else if (arg[0] == 'js') {
return ['<i class="bi bi-link-45deg"></i> 在桌面创建链接', "$('#desktop').append(`<div class='b' ondblclick='" + arg[1] + "' ontouchstart='" + arg[1] + "'><img src='icon/" + arg[2] + ".png'><p>" + arg[3] + "</p></div>`)"];
}
return ['<i class="bi bi-link-45deg"></i> 在桌面创建链接', "$('#desktop').append(`<div class='b' ondblclick=openapp('" + arg[0] + "') ontouchstart=openapp('" + arg[0] + "')><img src='icon/" + geticon(arg[0]) + "'><p>" + arg[1] + "</p></div>`)"];
},
function(arg) {
return ['<i class="bi bi-x"></i> 取消固定', `$('#s-m-r>.pinned>.apps>.sm-app.${arg[0]}').remove()`];
}
],
'smlapp': [
function (arg) {
if (arg[0] != 'js') {
return ['<i class="bi bi-window"></i> 打开', `openapp('${arg[0]}');hide_startmenu();`];
}
else if (arg[0] == 'js') {
return ['<i class="bi bi-window"></i> 打开', `${arg[1]};hide_startmenu();`];
}
return ['<i class="bi bi-window"></i> 打开', `openapp('${arg[0]}');hide_startmenu();`];
},
function (arg) {
if (arg[0] != 'js') {
return ['<i class="bi bi-link-45deg"></i> 在桌面创建链接', "$('#desktop').append(`<div class='b' ondblclick=openapp('" + arg[0] + "') ontouchstart=openapp('" + arg[0] + "')><img src='icon/" + arg[0] + ".png'><p>" + arg[1] + "</p></div>`)"];
}
else if (arg[0] == 'js') {
return ['<i class="bi bi-link-45deg"></i> 在桌面创建链接', "$('#desktop').append(`<div class='b' ondblclick='" + arg[1] + "' ontouchstart='" + arg[1] + "'><img src='icon/" + arg[2] + ".png'><p>" + arg[3] + "</p></div>`)"];
}
return ['<i class="bi bi-link-45deg"></i> 在桌面创建链接', "$('#desktop').append(`<div class='b' ondblclick=openapp('" + arg[0] + "') ontouchstart=openapp('" + arg[0] + "')><img src='icon/" + geticon(arg[0]) + "'><p>" + arg[1] + "</p></div>`)"];
},
function (arg) {
if (arg[0] != 'js') {
return ['<i class="bi bi-pin-angle"></i> 固定到开始菜单', "pinapp('" + arg[0] + "', '" + arg[1] + "', 'openapp(&quot;" + arg[0] + "&quot;);hide_startmenu();')"];
}
else if (arg[0] == 'js') {
return ['<i class="bi bi-pin-angle"></i> 固定到开始菜单', "pinapp('" + arg[2] + "', '" + arg[3] + "', '" + arg[1] + ";hide_startmenu()')"]
}
return ['<i class="bi bi-pin-angle"></i> 固定到开始菜单', "pinapp('" + arg[0] + "', '" + arg[1] + "', 'openapp(&quot;" + arg[0] + "&quot;);hide_startmenu();')"];
}
],
'dockabout': [
@@ -200,6 +185,7 @@ function showcm(e, cl, arg) {
let h = '';
cms[cl].forEach(item => {
if (typeof (item) == 'function') {
arg.event=e;
ret = item(arg);
if (ret == 'null') return true;
h += `<a class="a" onmousedown="${ret[1]}">${ret[0]}</a>\n`;
@@ -211,7 +197,8 @@ function showcm(e, cl, arg) {
})
$('#cm>list')[0].innerHTML = h;
$('#cm').addClass('show-begin');
// $('#cm>.foc').focus();
$('#cm>.foc').focus();
// 这个.foc是用来模拟焦点的,这句是将焦点放在右键菜单上,注释掉后果不堪设想 >u-)o
setTimeout(() => {
$('#cm').addClass('show');
}, 0);
@@ -407,7 +394,59 @@ let apps = {
$('#win-setting>.page>.cnt.' + name).addClass('show');
$('#win-setting>.menu>list>a.check').removeClass('check');
$('#win-setting>.menu>list>a.' + name).addClass('check');
}
},
theme_get: () => {
$('#set-theme').html(`<loading><svg width="30px" height="30px" viewBox="0 0 16 16">
<circle cx="8px" cy="8px" r="7px" style="stroke:#7f7f7f50;fill:none;stroke-width:3px;"></circle>
<circle cx="8px" cy="8px" r="7px" style="stroke:#2983cc;stroke-width:3px;"></circle></svg></loading>`)
// 实时获取主题
$.get('https://api.github.com/repos/tjy-gitnub/win12-theme/contents').then(cs => {
cs.forEach(c => {
if(c.type=='dir'){
let ul;
$.get(c.url).then(cnt=>{
cnt.forEach(cn=>{
if(cn.name=='theme'){
$.get('https://tjy-gitnub.github.io/win12-theme/'+cn.path).then(inf=>{
infjs=eval('('+inf+')');
cnt.forEach(fbg=>{
console.log(fbg,infjs);
if(fbg.name==infjs.bg){
if($('#set-theme>loading').length)
$('#set-theme').html('');
$('#set-theme').append(`<a class="a act" onclick="apps.setting.theme_set('${c.name}')" style="background-image:url('https://tjy-gitnub.github.io/win12-theme/${fbg.path}')">${c.name}</a>`);
}
})
})
}
})
})
}
});
});
},
theme_set: (infp)=>{
$.get('https://api.github.com/repos/tjy-gitnub/win12-theme/contents/'+infp).then(cnt=>{
console.log('https://api.github.com/repos/tjy-gitnub/win12-theme/contents/'+infp);
cnt.forEach(cn=>{
if(cn.name=='theme'){
$.get('https://tjy-gitnub.github.io/win12-theme/'+cn.path).then(inf=>{
infjs=eval('('+inf+')');
cnt.forEach(fbg=>{
console.log(fbg,infjs);
if(fbg.name==infjs.bg){
$(':root').css('--bgul',`url('https://tjy-gitnub.github.io/win12-theme/${fbg.path}')`);
$(':root').css('--theme-1',infjs.color1);
$(':root').css('--theme-2',infjs.color2);
$(':root').css('--href',infjs.href);
// $('#set-theme').append(`<a class="a act" onclick="apps.setting.theme_set(\`(${inf})\`)" style="background-image:url('https://tjy-gitnub.github.io/win12-theme/${fbg.path}')">${c.name}</a>`);
}
})
})
}
})
})
},
},
run: {
init: () => {
@@ -661,7 +700,8 @@ let apps = {
$('#win-explorer>.main>.content>.view')[0].innerHTML = `<style>#win-explorer>.main>.content>.view>.class{margin-left: 20px;display: flex;}
#win-explorer>.main>.content>.view>.class>img{width: 20px;height: 20px;margin-top: 3px;margin-right: 5px;filter:brightness(0.9);}
#win-explorer>.main>.content>.view>.group{display: flex;flex-wrap: wrap;padding: 10px 20px;}
#win-explorer>.main>.content>.view>.group>.item{width: 280px;margin: 5px;height:80px;border: 1px solid #6f6f6f30;
#win-explorer>.main>.content>.view>.group>.item{width: 280px;margin: 5px;height:80px;
box-shadow: 0 1px 2px var(--s3d);
background: radial-gradient(circle, var(--card),var(--card));border-radius: 10px;display: flex;}
#win-explorer>.main>.content>.view>.group>.item:hover{background-color: var(--hover);}
#win-explorer>.main>.content>.view>.group>.item:active{transform: scale(0.97);}
@@ -672,13 +712,13 @@ let apps = {
#win-explorer>.main>.content>.view>.group>.item>div>.bar>.content{height: 100%;background-image: linear-gradient(90deg, var(--theme-1), var(--theme-2));
border-radius: 10px;}
#win-explorer>.main>.content>.view>.group>.item>div>.info{color: #959595;font-size: 14px;}</style>
<p class="class"><img src="apps/icons/explorer/disk.png"> 设备和驱动器</p><div class="group">
<p class="class"><img src="apps/icons/explorer/disk.svg"> 设备和驱动器</p><div class="group">
<a class="a item act" ondblclick="apps.explorer.goto('C:')" ontouchend="apps.explorer.goto('C:')" oncontextmenu="showcm(event,'explorer.folder','C:');return stop(event);">
<img src="apps/icons/explorer/diskwin.png"><div><p class="name">本地磁盘 (C:)</p>
<img src="apps/icons/explorer/diskwin.svg"><div><p class="name">本地磁盘 (C:)</p>
<div class="bar"><div class="content" style="width: 88%;"></div>
</div><p class="info">32.6 GB 可用, 共 143 GB</p></div></a><a class="a item act" ondblclick="apps.explorer.goto('D:')" ontouchend="apps.explorer.goto('D:')"
oncontextmenu="showcm(event,'explorer.folder','D:');return stop(event);">
<img src="apps/icons/explorer/disk.png"><div><p class="name">本地磁盘 (D:)</p><div class="bar"><div class="content" style="width: 15%;"></div>
<img src="apps/icons/explorer/disk.svg"><div><p class="name">本地磁盘 (D:)</p><div class="bar"><div class="content" style="width: 15%;"></div>
</div><p class="info">185.3 GB 可用, 共 216 GB</p></div></a></div>`;
$('#win-explorer>.main>.content>.tool>.tit')[0].innerHTML = '此电脑';
},
@@ -695,8 +735,8 @@ let apps = {
else {
let ht = '';
for (folder in tmp['folder']) {
ht += `<a class="a item act" ondblclick="apps.explorer.goto('${path}/${folder}')" ontouchend="apps.explorer.goto('${path}/${folder}')" oncontextmenu="showcm(event,'explorer.folder','${path}/${folder}');return stop(event);">
<img src="apps/icons/explorer/folder.png">${folder}</a>`;
ht += `<a class="a item" ondblclick="apps.explorer.goto('${path}/${folder}')" ontouchend="apps.explorer.goto('${path}/${folder}')" oncontextmenu="showcm(event,'explorer.folder','${path}/${folder}');return stop(event);">
<img src="apps/icons/explorer/folder.svg">${folder}</a>`;
}
if (tmp['file']) {
tmp['file'].forEach(file => {
@@ -720,14 +760,14 @@ let apps = {
'Program Files': {
folder: { 'WindowsApps': null, 'Microsoft': null },
file: [
{ name: 'about.exe', ico: 'icon/about.png', command: "openapp('about')" },
{ name: 'setting.exe', ico: 'icon/setting.png', command: "openapp('setting')" },
{ name: 'about.exe', ico: 'icon/about.svg', command: "openapp('about')" },
{ name: 'setting.exe', ico: 'icon/setting.svg', command: "openapp('setting')" },
]
},
'Windows': {
folder: { 'Boot': null, 'System': null, 'System32': null },
file: [
{ name: 'notepad.exe', ico: 'icon/notepad.png', command: "openapp('notepad')" },
{ name: 'notepad.exe', ico: 'icon/notepad.svg', command: "openapp('notepad')" },
]
},
'用户': {
@@ -834,6 +874,10 @@ let apps = {
output.innerHTML = result;
},
load: () => {
if(!apps.python.loaded){
apps.python.loaded=true;
apps.python.load();
}
ace.require("ace/ext/language_tools");
apps.pythonEditor.editor = ace.edit("win-python-ace-editor");
apps.pythonEditor.editor.session.setMode("ace/mode/python");
@@ -958,6 +1002,15 @@ let apps = {
codeCache: '',
prompt: '>>> ',
indent: false,
load: ()=>{
(async function () {
apps.python.pyodide = await loadPyodide();
apps.python.pyodide.runPython(`
import sys
import io
`);
})();
},
init: () => {
$('#win-python').html(`
<pre>
@@ -1035,6 +1088,7 @@ Microsoft Windows [版本 12.0.39035.7324]
</pre>
<pre class="text-cmd"></pre>
<pre style="display: flex"><span class="prompt">C:\\Windows\\System32> </span><input type="text" onkeyup="if (event.keyCode == 13) { apps.terminal.run(); }"></pre>`)
$('#win-terminal>pre>input').focus()
},
run: () => {
const elt = $('#win-terminal>pre.text-cmd')[0];
@@ -1093,13 +1147,13 @@ Microsoft Windows [版本 12.0.39035.7324]
setTimeout(() => {
$('#search-win').removeClass('show-begin');
}, 200);">
<img src="icon/setting.png"><p>设置</p></a>
<img src="icon/setting.svg"><p>设置</p></a>
<a onclick="openapp('about');$('#search-btn').removeClass('show');
$('#search-win').removeClass('show');
setTimeout(() => {
$('#search-win').removeClass('show-begin');
}, 200);">
<img src="icon/about.png"><p>关于Win12网页版</p></a>`);
<img src="icon/about.svg"><p>关于Win12网页版</p></a>`);
$('#search-win>.ans>.view').removeClass('show');
}
},
@@ -1314,6 +1368,12 @@ Microsoft Windows [版本 12.0.39035.7324]
apps.edge.getTitle($('#win-edge>iframe.show').attr('src'), apps.edge.now);
}
},
winver:{
init:()=>{
$('#win-winver>.mesg').show();
},
}
}
// 小组件
@@ -1372,8 +1432,24 @@ for (let i = 1; i <= daysum; i++) {
$('#datebox>.cont>.body')[0].innerHTML += `<p>${i}</p>`;
}
function pinapp(id, name, command) {
$('#s-m-r>.pinned>.apps').append("<a class='a sm-app enable' onclick='" + command + "';hide_startmenu();' oncontextmenu='return showcm(event,\"smapp\",[\"" + id + "\",\"" + name + "\"])'><img src='icon/" + id + ".png'><p>" + name + "</p></a>")
if($('#s-m-r>.pinned>.apps>.a.sm-app.'+id).length)return;
$('#s-m-r>.pinned>.apps').append(`<a class='a sm-app enable ${id}' onclick='${command}';hide_startmenu();' oncontextmenu='return showcm(event,\"smapp\",[\"${id}\",\"${name}\"])'><img src='icon/${geticon(id)}'><p>${name}</p></a>`)
}
let icon={
bilibili:'bilibili.png',
vscode:'vscode.png',
python:'python.png',
winver:'about.svg',
pythonEditor:'pythonEditor.png',
run:'run.png',
whiteboard:'whiteboard.png'
}
function geticon(name) {
if(icon[name])return icon[name];
else return name+'.svg';
}
// 应用与窗口
function openapp(name) {
if ($('#taskbar>.' + name).length != 0) {
if ($('.window.' + name).hasClass('min')) {
@@ -1385,7 +1461,10 @@ function openapp(name) {
$('.window.' + name).addClass('load');
showwin(name);
$('#taskbar').attr('count', Number($('#taskbar').attr('count')) + 1);
$('#taskbar').append(`<a class="${name}" onclick="taskbarclick(\'${name}\')" win12_title="${$(`.window.${name}>.titbar>p`).text()}" onmouseenter="showdescp(event)" onmouseleave="hidedescp(event)" oncontextmenu="return showcm(event, 'taskbar', '${name}')"><img src="icon/${name}.png"></a>`);
if(name in icon)
$('#taskbar').append(`<a class="${name}" onclick="taskbarclick(\'${name}\')" win12_title="${$(`.window.${name}>.titbar>p`).text()}" onmouseenter="showdescp(event)" onmouseleave="hidedescp(event)" oncontextmenu="return showcm(event, 'taskbar', '${name}')"><img src="icon/${icon[name]}"></a>`);
else
$('#taskbar').append(`<a class="${name}" onclick="taskbarclick(\'${name}\')" win12_title="${$(`.window.${name}>.titbar>p`).text()}" onmouseenter="showdescp(event)" onmouseleave="hidedescp(event)"><img src="icon/${name}.svg"></a>`);
if ($('#taskbar').attr('count') == '1') {
$('#taskbar').css('display', 'flex');
}
@@ -1396,6 +1475,13 @@ function openapp(name) {
let tmp = name.replace(/\-(\w)/g, function (all, letter) {
return letter.toUpperCase();
});
if(apps[tmp].load && !apps[tmp].loaded){
apps[tmp].loaded=true;
apps[tmp].load();
apps[tmp].init();
$('.window.' + name).removeClass('load');
return;
}
apps[tmp].init();
setTimeout(() => {
$('.window.' + name).removeClass('load');
@@ -1598,19 +1684,23 @@ function dragBrightness(e) {
}
// 控制面板 电量监测
navigator.getBattery().then((battery) => {
$('.a.dock.control>svg>path')[0].outerHTML = `<path
d="M 4 7 C 2.3550302 7 1 8.3550302 1 10 L 1 19 C 1 20.64497 2.3550302 22 4 22 L 24 22 C 25.64497 22 27 20.64497 27 19 L 27 10 C 27 8.3550302 25.64497 7 24 7 L 4 7 z M 4 9 L 24 9 C 24.56503 9 25 9.4349698 25 10 L 25 19 C 25 19.56503 24.56503 20 24 20 L 4 20 C 3.4349698 20 3 19.56503 3 19 L 3 10 C 3 9.4349698 3.4349698 9 4 9 z M 5 11 L 5 18 L ${18 * battery.level + 5} 18 L ${18 * battery.level + 5} 11 L 5 11 z M 28 12 L 28 17 L 29 17 C 29.552 17 30 16.552 30 16 L 30 13 C 30 12.448 29.552 12 29 12 L 28 12 z"
id="path2" fill="#000000"
/>`;
battery.addEventListener('levelchange', () => {
try{
navigator.getBattery().then((battery) => {
$('.a.dock.control>svg>path')[0].outerHTML = `<path
d="M 4 7 C 2.3550302 7 1 8.3550302 1 10 L 1 19 C 1 20.64497 2.3550302 22 4 22 L 24 22 C 25.64497 22 27 20.64497 27 19 L 27 10 C 27 8.3550302 25.64497 7 24 7 L 4 7 z M 4 9 L 24 9 C 24.56503 9 25 9.4349698 25 10 L 25 19 C 25 19.56503 24.56503 20 24 20 L 4 20 C 3.4349698 20 3 19.56503 3 19 L 3 10 C 3 9.4349698 3.4349698 9 4 9 z M 5 11 L 5 18 L ${18 * battery.level + 5} 18 L ${18 * battery.level + 5} 11 L 5 11 z M 28 12 L 28 17 L 29 17 C 29.552 17 30 16.552 30 16 L 30 13 C 30 12.448 29.552 12 29 12 L 28 12 z"
id="path2" fill="#000000"
/>`;
battery.addEventListener('levelchange', () => {
$('.a.dock.control>svg>path')[0].outerHTML = `<path
d="M 4 7 C 2.3550302 7 1 8.3550302 1 10 L 1 19 C 1 20.64497 2.3550302 22 4 22 L 24 22 C 25.64497 22 27 20.64497 27 19 L 27 10 C 27 8.3550302 25.64497 7 24 7 L 4 7 z M 4 9 L 24 9 C 24.56503 9 25 9.4349698 25 10 L 25 19 C 25 19.56503 24.56503 20 24 20 L 4 20 C 3.4349698 20 3 19.56503 3 19 L 3 10 C 3 9.4349698 3.4349698 9 4 9 z M 5 11 L 5 18 L ${18 * battery.level + 5} 18 L ${18 * battery.level + 5} 11 L 5 11 z M 28 12 L 28 17 L 29 17 C 29.552 17 30 16.552 30 16 L 30 13 C 30 12.448 29.552 12 29 12 L 28 12 z"
id="path2" fill="#000000"
/>`;
});
});
});
}catch(TypeError){
console.log('内部错误: 无法获取电量');
}
// 选择框
let chstX, chstY;
@@ -1644,14 +1734,7 @@ function toggletheme() {
setData('theme', 'light');
}
}
// 云母效果
let mica_difx = 0, mica_dify = 0;
window.addEventListener('resize', e => {
let b = $('body')[0];
$(':root').css('--mica-size', `${Math.max(b.offsetHeight, b.offsetWidth)}px`);
mica_difx = (b.offsetHeight < b.offsetWidth) ? 0 : (b.offsetWidth - b.offsetHeight) / 2;
mica_dify = (b.offsetHeight < b.offsetWidth) ? (b.offsetHeight - b.offsetWidth) / 2 : 0;
})
// 拖拽窗口
const page = document.getElementsByTagName('html')[0];
@@ -1669,7 +1752,7 @@ function win_move(e) {
$(this).css('cssText', `left:${cx - deltaLeft}px;top:${cy - deltaTop}px;`);
if (cy <= 0) {
$(this).css('cssText', `left:${cx - deltaLeft}px;top:${-deltaTop}px`);
if (this.classList[1] != 'calc' && this.classList[1] != 'notepad-fonts' && this.classList[1] != 'camera-notice' && this.classList[1] != 'run') {
if (!(this.classList[1] in nomax)) {
$('#window-fill').addClass('top');
setTimeout(() => {
$('#window-fill').addClass('fill');
@@ -1677,10 +1760,11 @@ function win_move(e) {
fil = this;
filty = 'top';
}
// console.log(this.classList[1], nomax,this.classList[1] in nomax,not this.classList[1] in nomax);
}
else if (cx <= 0) {
$(this).css('cssText', `left:${-deltaLeft}px;top:${cy - deltaTop}px`);
if (this.classList[1] != 'calc' && this.classList[1] != 'notepad-fonts' && this.classList[1] != 'camera-notice' && this.classList[1] != 'run') {
if (!(this.classList[1] in nomax)) {
$('#window-fill').addClass('left');
setTimeout(() => {
$('#window-fill').addClass('fill');
@@ -1691,7 +1775,7 @@ function win_move(e) {
}
else if (cx >= document.body.offsetWidth - 2) {
$(this).css('cssText', `left:calc(100% - ${deltaLeft}px);top:${cy - deltaTop}px`);
if (this.classList[1] != 'calc' && this.classList[1] != 'notepad-fonts' && this.classList[1] != 'camera-notice' && this.classList[1] != 'run') {
if (!(this.classList[1] in nomax)) {
$('#window-fill').addClass('right');
setTimeout(() => {
$('#window-fill').addClass('fill');
@@ -1719,9 +1803,6 @@ function win_move(e) {
$(this).addClass('notrans');
}
if ($(this).hasClass('mica')) {
$(this).css('--mica-pos', `${mica_difx - cx + deltaLeft}px ${mica_dify - cy + deltaTop}px`);
}
}
for (let i = 0; i < wins.length; i++) {
const win = wins[i];
@@ -1804,8 +1885,8 @@ page.addEventListener('touchend', () => {
// 启动
let updated = false;
document.getElementsByTagName('body')[0].onload = function nupd() {
$('#loginback').css('opacity', '1');
$('#loginback').css('display', 'flex');
// $('#loginback').css('opacity', '1');
// $('#loginback').css('display', 'flex');
setTimeout(() => {
$('#loadback').addClass('hide');
}, 500);
@@ -1818,16 +1899,39 @@ document.getElementsByTagName('body')[0].onload = function nupd() {
}, 1000);
}
apps.webapps.init();
(async function () {
apps.python.pyodide = await loadPyodide();
apps.python.pyodide.runPython(`
import sys
import io
`);
})();
apps.pythonEditor.load();
apps.notepadFonts.load();
apps.whiteboard.load();
//getdata
if (localStorage.getItem('theme') == 'dark') $(':root').addClass('dark');
if(localStorage.getItem('color1')){
$(':root').css('--theme-1', localStorage.getItem('color1'));
$(':root').css('--theme-2', localStorage.getItem('color2'));
}
// 所以这个东西为啥要在开机的时候加载?
// 不应该在python.init里面吗?
// (async function () {
// apps.python.pyodide = await loadPyodide();
// apps.python.pyodide.runPython(`
// import sys
// import io
// `);
// })();
// apps.pythonEditor.load();
// apps.notepadFonts.load();
// apps.whiteboard.load();
document.querySelectorAll('.window').forEach(w=>{
let qw=$(w),wc=w.classList[1];
// window: onmousedown="focwin('explorer')" ontouchstart="focwin('explorer')"
qw.attr('onmousedown',`focwin('${wc}')`);
qw.attr('ontouchstart',`focwin('${wc}')`);
// titbar: oncontextmenu="return showcm(event,'titbar','edge')" ondblclick="maxwin('edge')"
qw=$(`.window.${wc}>.titbar`);
qw.attr('oncontextmenu',`return showcm(event,'titbar','${wc}')`);
if(!(wc in nomax))qw.attr('ondblclick',`maxwin('${wc}')`);
// icon: onclick="return showcm(event,'titbar','explorer')"
qw=$(`.window.${wc}>.titbar>.icon`);
qw.attr('onclick',`let os=$(this).offset();stop(event);return showcm({clientX:os.left-5,clientY:os.top+this.offsetHeight+3},'titbar','${wc}')`);
qw.mousedown(stop);
$(`.window.${wc}>.titbar>div>.wbtg`).mousedown(stop);
});
};
// PWA 应用
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

+1
View File
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

+1
View File
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

+1
View File
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

+1
View File
@@ -0,0 +1 @@
<svg viewBox="18,0,300,359" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="hidden"><defs><filter id="fx0" x="-10%" y="-10%" width="120%" height="120%" filterUnits="userSpaceOnUse" primitiveUnits="userSpaceOnUse"><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="discrete" tableValues="0 0"/><feFuncG type="discrete" tableValues="0 0"/><feFuncB type="discrete" tableValues="0 0"/><feFuncA type="linear" slope="0.4" intercept="0"/></feComponentTransfer><feGaussianBlur stdDeviation="7.77778 7.77778"/></filter><filter id="fx1" x="-10%" y="-10%" width="120%" height="120%" filterUnits="userSpaceOnUse" primitiveUnits="userSpaceOnUse"><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="discrete" tableValues="0 0"/><feFuncG type="discrete" tableValues="0 0"/><feFuncB type="discrete" tableValues="0 0"/><feFuncA type="linear" slope="0.4" intercept="0"/></feComponentTransfer><feGaussianBlur stdDeviation="7.81235 7.81116"/></filter><clipPath id="clip2"><rect x="476" y="170" width="320" height="383"/></clipPath><linearGradient x1="545.449" y1="342.189" x2="607.551" y2="512.811" gradientUnits="userSpaceOnUse" spreadMethod="reflect" id="fill3"><stop offset="0" stop-color="#5C68FE"/><stop offset="0.83" stop-color="#5693E4"/><stop offset="1" stop-color="#5693E4"/></linearGradient><linearGradient x1="34.3778" y1="147.512" x2="92.6222" y2="-12.5125" gradientUnits="userSpaceOnUse" spreadMethod="reflect" id="fill4"><stop offset="0" stop-color="#61A2F9"/><stop offset="0.18" stop-color="#61A2F9"/><stop offset="0.91" stop-color="#3159D7"/><stop offset="1" stop-color="#3159D7"/></linearGradient><clipPath id="clip5"><rect x="-7.5" y="-7.5" width="128" height="136"/></clipPath><clipPath id="clip6"><rect x="0" y="0" width="113" height="123"/></clipPath><linearGradient x1="111.201" y1="-9.12131" x2="15.7986" y2="156.121" gradientUnits="userSpaceOnUse" spreadMethod="reflect" id="fill7"><stop offset="0" stop-color="#61A2F9"/><stop offset="0.18" stop-color="#61A2F9"/><stop offset="0.91" stop-color="#7DB3FB"/><stop offset="1" stop-color="#7DB3FB"/></linearGradient><clipPath id="clip8"><rect x="-7.53331" y="-7.53219" width="128.067" height="132.064"/></clipPath><clipPath id="clip9"><rect x="0" y="0" width="113" height="117"/></clipPath><linearGradient x1="517.026" y1="215.622" x2="635.974" y2="357.378" gradientUnits="userSpaceOnUse" spreadMethod="reflect" id="fill10"><stop offset="0" stop-color="#7E51FD"/><stop offset="0.23" stop-color="#7E51FD"/><stop offset="1" stop-color="#5693E4"/></linearGradient></defs><g clip-path="url(#clip2)" transform="translate(-476 -170)"><path d="M513 354 639.983 354C639.989 403 639.994 452 640 501 594.704 483.592 558.944 456.642 537.777 432.142 516.61 407.642 517.646 377.984 513 354Z" fill="url(#fill3)" fill-rule="evenodd"/><path d="M48.2206 0 127 0 127 0 127 135 0 135 0 48.2206C-8.59365e-15 21.5891 21.5891-8.59365e-15 48.2206-1.71873e-14Z" fill="url(#fill4)" fill-rule="evenodd" transform="matrix(-1 0 0 1 767 219)"/><g clip-path="url(#clip5)" filter="url(#fx0)" transform="matrix(2 0 0 2 571 308)"><g clip-path="url(#clip6)"><path d="M0 0 64.7612 0C64.7642 24.99 64.7671 49.98 64.77 74.97 41.6692 66.092 23.4313 52.3475 12.6363 39.8525 1.84135 27.3575 2.36928 12.232 0 0Z" fill="#FF0000" fill-rule="evenodd" transform="matrix(-1 0 0 1 88.7869 24.0015)"/></g></g><path d="M0 0 126.983 0C126.989 49 126.994 98 127 147 81.7044 129.592 45.9438 102.642 24.7771 78.1421 3.61048 53.6421 4.64565 23.9842 0 0Z" fill="url(#fill7)" fill-rule="evenodd" transform="matrix(-1 0 0 1 767 354)"/><g clip-path="url(#clip8)" filter="url(#fx1)" transform="matrix(1.99115 0 0 1.99145 476 170)"><g clip-path="url(#clip9)" transform="matrix(1 0 0 1 0 -1.42109e-14)"><path d="M48.6729 23.9273 89.0289 23.9273 89.0289 23.9273 89.0289 93.0728 23.9711 93.0728 23.9711 48.6253C23.9711 34.9849 35.0304 23.9273 48.6729 23.9273Z" fill="#FF0000" fill-rule="evenodd"/></g></g><path d="M561.221 219 640 219 640 219 640 354 513 354 513 267.221C513 240.589 534.589 219 561.221 219Z" fill="url(#fill10)" fill-rule="evenodd"/></g></svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

+1
View File
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

+1
View File
@@ -0,0 +1 @@
<svg viewBox="20,10,260,315" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="hidden"><defs><filter id="fx0" x="-10%" y="-10%" width="120%" height="120%" filterUnits="userSpaceOnUse" primitiveUnits="userSpaceOnUse"><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="discrete" tableValues="0 0"/><feFuncG type="discrete" tableValues="0 0"/><feFuncB type="discrete" tableValues="0 0"/><feFuncA type="linear" slope="0.4" intercept="0"/></feComponentTransfer><feGaussianBlur stdDeviation="6.66667 6.69683"/></filter><filter id="fx1" x="-10%" y="-10%" width="120%" height="120%" filterUnits="userSpaceOnUse" primitiveUnits="userSpaceOnUse"><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="discrete" tableValues="0 0"/><feFuncG type="discrete" tableValues="0 0"/><feFuncB type="discrete" tableValues="0 0"/><feFuncA type="linear" slope="0.4" intercept="0"/></feComponentTransfer><feGaussianBlur stdDeviation="6.66667 6.66667"/></filter><clipPath id="clip2"><rect x="482" y="189" width="316" height="343"/></clipPath><clipPath id="clip3"><rect x="-3.5" y="-3.51585" width="117" height="121.045"/></clipPath><clipPath id="clip4"><rect x="0" y="0" width="108" height="111"/></clipPath><linearGradient x1="690" y1="230.989" x2="690" y2="367.713" gradientUnits="userSpaceOnUse" spreadMethod="reflect" id="fill5"><stop offset="0" stop-color="#61A2F9"/><stop offset="0.18" stop-color="#61A2F9"/><stop offset="0.91" stop-color="#3159D7"/><stop offset="1" stop-color="#3159D7"/></linearGradient><clipPath id="clip6"><rect x="-3.5" y="-3.5" width="124" height="150"/></clipPath><clipPath id="clip7"><rect x="0" y="0" width="115" height="141"/></clipPath><linearGradient x1="501.032" y1="356.07" x2="692.944" y2="425.92" gradientUnits="userSpaceOnUse" spreadMethod="reflect" id="fill8"><stop offset="0" stop-color="#C45DD5"/><stop offset="0.3" stop-color="#C45DD5"/><stop offset="0.76" stop-color="#A266E4"/><stop offset="1" stop-color="#A266E4"/></linearGradient><linearGradient x1="501.032" y1="356.07" x2="692.944" y2="425.92" gradientUnits="userSpaceOnUse" spreadMethod="reflect" id="fill9"><stop offset="0" stop-color="#C45DD5"/><stop offset="0.3" stop-color="#C45DD5"/><stop offset="0.76" stop-color="#A266E4"/><stop offset="1" stop-color="#A266E4"/></linearGradient></defs><g clip-path="url(#clip2)" transform="translate(-482 -189)"><g clip-path="url(#clip3)" filter="url(#fx0)" transform="matrix(2 0 0 1.99099 582 189)"><g clip-path="url(#clip4)" transform="matrix(1 0 0 1 0 -1.42109e-14)"><path d="M39.6258 90.4476 38.0822 75.8218C21.7024 68.1282 15.5505 50.2705 24.3416 35.9356 33.1327 21.6007 53.5379 16.2168 69.9178 23.9104 86.2976 31.604 92.4495 49.4617 83.6584 63.7966 77.1697 74.3772 63.9919 80.4518 50.3515 79.1503Z" fill="#FF0000" fill-rule="evenodd"/></g></g><path d="M661.815 367.713 658.789 339.164C626.671 324.147 614.609 289.289 631.846 261.308 649.084 233.327 689.094 222.818 721.211 237.836 753.329 252.853 765.391 287.711 748.154 315.692 735.431 336.344 709.592 348.202 682.846 345.661Z" fill="url(#fill5)" fill-rule="evenodd"/><g clip-path="url(#clip6)" filter="url(#fx1)" transform="matrix(2 0 0 2 482 250)"><g clip-path="url(#clip7)"><path d="M94.6585 90.1902C95.9608 113.854 77.6707 120.475 56.7733 120.475 35.8759 120.475 18.4236 111.705 20.42 91.1324 20.302 87.6777 22.1944 84.4484 24.8353 83.2145 29.2696 81.1425 38.3021 81.1913 56.6194 81.2092 74.9366 81.227 86.3101 81.0004 89.9183 82.6491 93.5265 84.2977 94.7335 87.4959 94.6585 90.1902Z" fill="#FF0000" fill-rule="evenodd"/><path d="M31.4901 46.5301C31.4901 32.1651 43.1352 20.5201 57.5001 20.5201 71.865 20.5201 83.5101 32.1651 83.5101 46.5301 83.5101 60.895 71.865 72.5401 57.5001 72.5401 43.1352 72.5401 31.4901 60.895 31.4901 46.5301Z" fill="#FF0000" fill-rule="evenodd"/></g></g><path d="M669.86 429.608C672.413 476.008 636.55 488.99 595.575 488.99 554.6 488.99 520.379 471.793 524.294 431.456 524.062 424.682 527.773 418.35 532.951 415.93 541.646 411.868 559.357 411.963 595.273 411.998 631.189 412.033 653.49 411.589 660.565 414.822 667.64 418.054 670.007 424.325 669.86 429.608Z" fill="url(#fill8)" fill-rule="evenodd"/><path d="M546 344C546 315.833 568.833 293 597 293 625.167 293 648 315.833 648 344 648 372.167 625.167 395 597 395 568.833 395 546 372.167 546 344Z" fill="url(#fill9)" fill-rule="evenodd"/></g></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

+1
View File
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

+1
View File
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

+1
View File
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

+1
View File
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

+1
View File
@@ -0,0 +1 @@
<svg viewBox="-6,-5,300,233" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="hidden"><defs><filter id="fx0" x="-10%" y="-10%" width="120%" height="120%" filterUnits="userSpaceOnUse" primitiveUnits="userSpaceOnUse"><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="discrete" tableValues="0 0"/><feFuncG type="discrete" tableValues="0 0"/><feFuncB type="discrete" tableValues="0 0"/><feFuncA type="linear" slope="1" intercept="0"/></feComponentTransfer><feGaussianBlur stdDeviation="6.88889 6.88889"/></filter><filter id="fx1" x="-10%" y="-10%" width="120%" height="120%" filterUnits="userSpaceOnUse" primitiveUnits="userSpaceOnUse"><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="discrete" tableValues="0 0"/><feFuncG type="discrete" tableValues="0 0"/><feFuncB type="discrete" tableValues="0 0"/><feFuncA type="linear" slope="1" intercept="0"/></feComponentTransfer><feGaussianBlur stdDeviation="6.88889 6.92781"/></filter><clipPath id="clip2"><rect x="493" y="238" width="287" height="223"/></clipPath><linearGradient x1="553.027" y1="204.921" x2="719.973" y2="494.079" gradientUnits="userSpaceOnUse" spreadMethod="reflect" id="fill3"><stop offset="0" stop-color="#595959"/><stop offset="0.24" stop-color="#595959"/><stop offset="0.74" stop-color="#3C3C3C"/><stop offset="1" stop-color="#3C3C3C"/></linearGradient><clipPath id="clip4"><rect x="-3.5" y="-3.5" width="86" height="64"/></clipPath><clipPath id="clip5"><rect x="0" y="0" width="79" height="55"/></clipPath><clipPath id="clip6"><rect x="-3.5" y="-3.51978" width="79" height="97.0452"/></clipPath><clipPath id="clip7"><rect x="0" y="0" width="72" height="89"/></clipPath></defs><g clip-path="url(#clip2)" transform="translate(-493 -238)"><path d="M494 275.834C494 255.491 510.491 239 530.834 239L742.166 239C762.509 239 779 255.491 779 275.834L779 423.166C779 443.509 762.509 460 742.166 460L530.834 460C510.491 460 494 443.509 494 423.166Z" fill="url(#fill3)" fill-rule="evenodd"/><g clip-path="url(#clip4)" filter="url(#fx0)" transform="matrix(2 0 0 2 561 305)"><g clip-path="url(#clip5)"><path d="M21.68 27.5C21.68 24.2194 24.3394 21.56 27.62 21.56L51.38 21.56C54.6606 21.56 57.32 24.2194 57.32 27.5L57.32 27.5C57.32 30.7805 54.6606 33.4399 51.38 33.4399L27.62 33.4399C24.3394 33.4399 21.68 30.7805 21.68 27.5Z" fill="#F2F2F2" fill-rule="evenodd"/></g></g><path d="M607 360C607 353.925 611.925 349 618 349L662 349C668.075 349 673 353.925 673 360L673 360C673 366.075 668.075 371 662 371L618 371C611.925 371 607 366.075 607 360Z" fill="#F2F2F2" fill-rule="evenodd"/><g clip-path="url(#clip6)" filter="url(#fx1)" transform="matrix(2 0 0 1.98876 494 239)"><g clip-path="url(#clip7)" transform="matrix(1 0 0 1 0 1.42109e-14)"><path d="M27.3189 21.3981C28.8413 21.3981 30.3637 21.9821 31.5252 23.1503L48.2235 39.9429 48.6112 40.2018C49.7728 41.3699 50.3535 42.9009 50.3535 44.4318L50.3408 44.4973 50.3535 44.5629C50.3535 46.0938 49.7728 47.6249 48.6112 48.793L48.2235 49.0519 31.5252 65.8445C29.2021 68.1807 25.4356 68.1807 23.1125 65.8445 20.7894 63.5083 20.7894 59.7205 23.1125 57.3843L35.9271 44.4973 23.1125 31.6104C20.7894 29.2743 20.7894 25.4865 23.1125 23.1503 24.2741 21.9822 25.7965 21.3981 27.3189 21.3981Z" fill="#F2F2F2" fill-rule="evenodd"/></g></g><path d="M549.903 284.959C552.723 284.959 555.542 286.034 557.693 288.185L588.616 319.108 589.334 319.585C591.485 321.736 592.56 324.555 592.56 327.374L592.537 327.495 592.56 327.615C592.56 330.435 591.485 333.254 589.334 335.405L588.616 335.882 557.693 366.804C553.391 371.106 546.416 371.106 542.114 366.804 537.812 362.502 537.812 355.527 542.114 351.225L565.844 327.495 542.114 303.764C537.812 299.462 537.812 292.487 542.114 288.185 544.265 286.034 547.084 284.959 549.903 284.959Z" fill="#F2F2F2" fill-rule="evenodd"/></g></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB