ascript 1.3.27__py3-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. ascript/__init__.py +8 -0
  2. ascript/hooks/__init__.py +0 -0
  3. ascript/hooks/hook-ascript.py +2 -0
  4. ascript/windows/__init__.py +29 -0
  5. ascript/windows/daos/__init__.py +0 -0
  6. ascript/windows/daos/screen.py +143 -0
  7. ascript/windows/hardware/__init__.py +5 -0
  8. ascript/windows/hardware/keyboard.py +279 -0
  9. ascript/windows/hardware/logitech_driver.py +179 -0
  10. ascript/windows/hardware/mouse.py +308 -0
  11. ascript/windows/license/__init__.py +16 -0
  12. ascript/windows/license/achttp.cp310-win_amd64.pyd +0 -0
  13. ascript/windows/license/achttp.cp311-win_amd64.pyd +0 -0
  14. ascript/windows/license/achttp.cp312-win_amd64.pyd +0 -0
  15. ascript/windows/license/achttp.cp313-win_amd64.pyd +0 -0
  16. ascript/windows/license/achttp.cp314-win_amd64.pyd +0 -0
  17. ascript/windows/license/achttp.cp38-win_amd64.pyd +0 -0
  18. ascript/windows/license/achttp.cp39-win_amd64.pyd +0 -0
  19. ascript/windows/media/__init__.py +0 -0
  20. ascript/windows/resources/__init__.py +0 -0
  21. ascript/windows/resources/libs/logitech/x64/LogitechGkeyEnginesWrapper.dll +0 -0
  22. ascript/windows/resources/libs/logitech/x86/LogitechGkeyEnginesWrapper.dll +0 -0
  23. ascript/windows/resources/templates/__init__.py +0 -0
  24. ascript/windows/resources/templates/__init__py.win.template +51 -0
  25. ascript/windows/resources/templates/build.as.win.template +14 -0
  26. ascript/windows/resources/templates/build.py +71 -0
  27. ascript/windows/resources/templates/logo_windows.ico +0 -0
  28. ascript/windows/resources/templates/windows/main.py +50 -0
  29. ascript/windows/resources/templates/windows/pyproject.toml +44 -0
  30. ascript/windows/resources/templates/windows/res/img/logo.ico +0 -0
  31. ascript/windows/screen/__init__.py +13 -0
  32. ascript/windows/screen/as_cv.py +382 -0
  33. ascript/windows/screen/canny.py +128 -0
  34. ascript/windows/screen/code_scanner.py +72 -0
  35. ascript/windows/screen/color_algorithms.py +277 -0
  36. ascript/windows/screen/find_colors.py +251 -0
  37. ascript/windows/screen/find_images.py +217 -0
  38. ascript/windows/screen/ocr/__init__.py +4 -0
  39. ascript/windows/screen/ocr/ocr.py +223 -0
  40. ascript/windows/screen/ocr/rapidocr_hook.py +301 -0
  41. ascript/windows/screen/ocrx.py +169 -0
  42. ascript/windows/screen/screen_core.py +139 -0
  43. ascript/windows/store/__init__.py +21 -0
  44. ascript/windows/system/__init__.py +8 -0
  45. ascript/windows/system/device.py +355 -0
  46. ascript/windows/system/easy_print.py +115 -0
  47. ascript/windows/system/env.py +492 -0
  48. ascript/windows/system/exception/__init__.py +1 -0
  49. ascript/windows/system/key_value.py +145 -0
  50. ascript/windows/system/pip.py +175 -0
  51. ascript/windows/system/r.py +165 -0
  52. ascript/windows/system/runtime.py +62 -0
  53. ascript/windows/tools/__init__.py +27 -0
  54. ascript/windows/tools/__main__.py +21 -0
  55. ascript/windows/tools/action.json +33 -0
  56. ascript/windows/tools/action.py +168 -0
  57. ascript/windows/tools/colors_tool.py +391 -0
  58. ascript/windows/tools/config.py +26 -0
  59. ascript/windows/tools/dumptool.py +18 -0
  60. ascript/windows/tools/eel_api.py +495 -0
  61. ascript/windows/tools/gpplug/__init__.py +0 -0
  62. ascript/windows/tools/gpplug/plug.py +70 -0
  63. ascript/windows/tools/mouse_catch.py +168 -0
  64. ascript/windows/tools/plug_manager.py +38 -0
  65. ascript/windows/tools/tool_api.py +906 -0
  66. ascript/windows/tools/tool_window.py +56 -0
  67. ascript/windows/tools/uia_worker.py +365 -0
  68. ascript/windows/tools/web/app_store_window.html +481 -0
  69. ascript/windows/tools/web/colors.html +532 -0
  70. ascript/windows/tools/web/css/screen.css +1342 -0
  71. ascript/windows/tools/web/css/viewtree.css +357 -0
  72. ascript/windows/tools/web/flot_control.html +195 -0
  73. ascript/windows/tools/web/img/ico/favicon.png +0 -0
  74. ascript/windows/tools/web/img/ico/paintpalette.png +0 -0
  75. ascript/windows/tools/web/img/svg/find_colors.svg +1 -0
  76. ascript/windows/tools/web/img/svg/find_images.svg +1 -0
  77. ascript/windows/tools/web/img/svg/illustration-6.svg +89 -0
  78. ascript/windows/tools/web/img/svg/img_default.svg +1 -0
  79. ascript/windows/tools/web/img/svg/ocr.svg +1 -0
  80. ascript/windows/tools/web/js/screen/colors.js +466 -0
  81. ascript/windows/tools/web/js/screen/gp_plug.js +108 -0
  82. ascript/windows/tools/web/js/screen/image_mouse.js +464 -0
  83. ascript/windows/tools/web/js/screen/img_view.js +558 -0
  84. ascript/windows/tools/web/js/screen/plug.js +246 -0
  85. ascript/windows/tools/web/js/screen/screen.js +690 -0
  86. ascript/windows/tools/web/js/screen/screen_api.js +778 -0
  87. ascript/windows/tools/web/js/screen/screen_maker.js +10 -0
  88. ascript/windows/tools/web/js/utils/map.js +73 -0
  89. ascript/windows/tools/web/js/utils/upload.js +157 -0
  90. ascript/windows/tools/web/js/viewtree/niv_js.js +27 -0
  91. ascript/windows/tools/web/js/viewtree/vtree.js +1510 -0
  92. ascript/windows/tools/web/libs/bootstrap/css/bootstrap.min.css +6 -0
  93. ascript/windows/tools/web/libs/bootstrap/js/bootstrap.bundle.min.js +7 -0
  94. ascript/windows/tools/web/libs/bootstrap-icons/0-circle.svg +4 -0
  95. ascript/windows/tools/web/libs/bootstrap-icons/0-square.svg +4 -0
  96. ascript/windows/tools/web/libs/bootstrap-icons/font/bootstrap-icons.css +2078 -0
  97. ascript/windows/tools/web/libs/bootstrap-icons/font/bootstrap-icons.json +2052 -0
  98. ascript/windows/tools/web/libs/bootstrap-icons/font/bootstrap-icons.min.css +5 -0
  99. ascript/windows/tools/web/libs/bootstrap-icons/font/bootstrap-icons.scss +2090 -0
  100. ascript/windows/tools/web/libs/bootstrap-icons/font/fonts/bootstrap-icons.woff +0 -0
  101. ascript/windows/tools/web/libs/bootstrap-icons/font/fonts/bootstrap-icons.woff2 +0 -0
  102. ascript/windows/tools/web/libs/feather-icons/dist/feather.min.js +13 -0
  103. ascript/windows/tools/web/libs/feather-icons/dist/icons.json +1 -0
  104. ascript/windows/tools/web/libs/jquery/core.js +399 -0
  105. ascript/windows/tools/web/libs/jquery/jquery.js +10598 -0
  106. ascript/windows/tools/web/libs/jquery/jquery.min.js +4 -0
  107. ascript/windows/tools/web/libs/jquery/jquery.min.js.zip +0 -0
  108. ascript/windows/tools/web/libs/jquery/jquery.slim.js +8495 -0
  109. ascript/windows/tools/web/libs/jquery/jquery.slim.min.js +2 -0
  110. ascript/windows/tools/web/libs/jquery-menu/jquery.contextMenu.js +2134 -0
  111. ascript/windows/tools/web/libs/jquery-menu/jquery.contextMenu.min.css +16 -0
  112. ascript/windows/tools/web/libs/jquery-zTree/css/zTreeStyle.css +97 -0
  113. ascript/windows/tools/web/libs/jquery-zTree/img/diy/1_close.png +0 -0
  114. ascript/windows/tools/web/libs/jquery-zTree/img/diy/1_open.png +0 -0
  115. ascript/windows/tools/web/libs/jquery-zTree/img/diy/2.png +0 -0
  116. ascript/windows/tools/web/libs/jquery-zTree/img/diy/3.png +0 -0
  117. ascript/windows/tools/web/libs/jquery-zTree/img/diy/4.png +0 -0
  118. ascript/windows/tools/web/libs/jquery-zTree/img/diy/5.png +0 -0
  119. ascript/windows/tools/web/libs/jquery-zTree/img/diy/6.png +0 -0
  120. ascript/windows/tools/web/libs/jquery-zTree/img/diy/7.png +0 -0
  121. ascript/windows/tools/web/libs/jquery-zTree/img/diy/8.png +0 -0
  122. ascript/windows/tools/web/libs/jquery-zTree/img/diy/9.png +0 -0
  123. ascript/windows/tools/web/libs/jquery-zTree/img/line_conn.gif +0 -0
  124. ascript/windows/tools/web/libs/jquery-zTree/img/loading.gif +0 -0
  125. ascript/windows/tools/web/libs/jquery-zTree/img/tree-node-btn.png +0 -0
  126. ascript/windows/tools/web/libs/jquery-zTree/img/zTreeStandard.gif +0 -0
  127. ascript/windows/tools/web/libs/jquery-zTree/img/zTreeStandard.png +0 -0
  128. ascript/windows/tools/web/libs/jquery-zTree/js/jquery.ztree.all.min.js +3 -0
  129. ascript/windows/tools/web/libs/treeview/css/jquery.treeview.css +79 -0
  130. ascript/windows/tools/web/libs/treeview/img/file.png +0 -0
  131. ascript/windows/tools/web/libs/treeview/img/ico_loading.png +0 -0
  132. ascript/windows/tools/web/libs/treeview/img/icon4.png +0 -0
  133. ascript/windows/tools/web/libs/treeview/img/icon5.png +0 -0
  134. ascript/windows/tools/web/libs/treeview/img/icon6.png +0 -0
  135. ascript/windows/tools/web/libs/treeview/img/py.png +0 -0
  136. ascript/windows/tools/web/libs/treeview/img/treeview-black-line.gif +0 -0
  137. ascript/windows/tools/web/libs/treeview/img/treeview-black.gif +0 -0
  138. ascript/windows/tools/web/libs/treeview/img/treeview-default-line.gif +0 -0
  139. ascript/windows/tools/web/libs/treeview/img/treeview-default.gif +0 -0
  140. ascript/windows/tools/web/libs/treeview/img/treeview-famfamfam-line.gif +0 -0
  141. ascript/windows/tools/web/libs/treeview/img/treeview-famfamfam.gif +0 -0
  142. ascript/windows/tools/web/libs/treeview/img/treeview-gray-line.gif +0 -0
  143. ascript/windows/tools/web/libs/treeview/img/treeview-gray.gif +0 -0
  144. ascript/windows/tools/web/libs/treeview/img/treeview-red-line.gif +0 -0
  145. ascript/windows/tools/web/libs/treeview/img/treeview-red.gif +0 -0
  146. ascript/windows/tools/web/libs/treeview/js/jquery.treeview.edit.js +37 -0
  147. ascript/windows/tools/web/libs/treeview/js/jquery.treeview.js +250 -0
  148. ascript/windows/tools/web/license_window.html +255 -0
  149. ascript/windows/tools/web/plugs/a.html +653 -0
  150. ascript/windows/tools/web/plugs/demo.html +52 -0
  151. ascript/windows/tools/web/plugs/find_colors.html +629 -0
  152. ascript/windows/tools/web/plugs/find_images.html +699 -0
  153. ascript/windows/tools/web/plugs/rapidocr.html +954 -0
  154. ascript/windows/tools/web/vtree.html +496 -0
  155. ascript/windows/tools/webview/assets/index-HymBPl-I.css +1 -0
  156. ascript/windows/tools/webview/assets/index-PqA_m8tL.js +17 -0
  157. ascript/windows/tools/webview/index.html +13 -0
  158. ascript/windows/ui/__init__.py +6 -0
  159. ascript/windows/ui/app_store_window.py +272 -0
  160. ascript/windows/ui/draw_window.py +231 -0
  161. ascript/windows/ui/flot_test.py +297 -0
  162. ascript/windows/ui/flot_window.py +488 -0
  163. ascript/windows/ui/license_window.py +111 -0
  164. ascript/windows/ui/web_window.py +466 -0
  165. ascript/windows/utils/__init__.py +0 -0
  166. ascript/windows/utils/node_utils.py +20 -0
  167. ascript/windows/utils/screen_utils.py +280 -0
  168. ascript/windows/window/Selector.py +1015 -0
  169. ascript/windows/window/Window.py +747 -0
  170. ascript/windows/window/__init__.py +5 -0
  171. ascript/windows/window/launcher.py +213 -0
  172. ascript/windows/window/uia_runtime.py +26 -0
  173. ascript-1.3.27.dist-info/METADATA +41 -0
  174. ascript-1.3.27.dist-info/RECORD +177 -0
  175. ascript-1.3.27.dist-info/WHEEL +5 -0
  176. ascript-1.3.27.dist-info/entry_points.txt +2 -0
  177. ascript-1.3.27.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1342 @@
1
+ .div {
2
+ margin: 0;
3
+ padding: 0;
4
+ }
5
+
6
+ .mycontainer {
7
+ padding: 0px;
8
+ height: 100vh;
9
+ display: grid;
10
+ grid-template-rows: 1fr auto;
11
+ background-color: canvas;
12
+ /* 替换原本可能的白色 */
13
+ color: canvastext;
14
+ /* 替换原本可能的黑色 */
15
+ }
16
+
17
+ .shoadow-lg-black {
18
+ /* 使用 color-mix 让阴影在深色模式下变浅,浅色下变深 */
19
+ box-shadow: 0px 6px 10px color-mix(in srgb, canvastext, transparent 60%);
20
+ }
21
+
22
+ .shoadow-lg-green {
23
+ /* 保持绿色调,但增加透明度适配 */
24
+ box-shadow: 0px 6px 10px color-mix(in srgb, #00ff00, transparent 0%);
25
+ }
26
+
27
+ .gp_item_title {
28
+ color: color-mix(in srgb, canvastext, transparent 40%);
29
+ /* 替换 #636364 */
30
+ font-size: x-small;
31
+ }
32
+
33
+ .screen-container {
34
+ background-color: canvas;
35
+ /* 替换 white */
36
+ overflow: hidden;
37
+ padding: 0px;
38
+ margin: 0px;
39
+ }
40
+
41
+ .container_bottombar {
42
+ height: 30px;
43
+ background-color: color-mix(in srgb, canvas, canvastext 6%);
44
+ /* 替换 #efefef */
45
+ }
46
+
47
+ .screen-img-container {
48
+ padding: 0;
49
+ margin: 0px;
50
+ height: 100%;
51
+ display: grid;
52
+ grid-template-rows: auto 1fr;
53
+ /* border-right: 1px solid var(--bs-border-color); */
54
+ position: relative;
55
+ }
56
+
57
+
58
+
59
+ .screen-img-con {
60
+ /* 动态网格线颜色 */
61
+ background: linear-gradient(90deg, color-mix(in srgb, canvastext, transparent 90%) 5%, transparent 0),
62
+ linear-gradient(color-mix(in srgb, canvastext, transparent 90%) 5%, transparent 0);
63
+ background-size: 10px 10px;
64
+ background-color: canvas;
65
+ }
66
+
67
+
68
+ .screen-img-list-item {
69
+ image-rendering: pixelated;
70
+ height: 90%;
71
+ width: auto;
72
+ border: 2px solid transparent;
73
+ box-sizing: border-box;
74
+ border-radius: 5px;
75
+ }
76
+
77
+ .screen-img-list-item:hover {
78
+ image-rendering: pixelated;
79
+ height: 90%;
80
+ width: auto;
81
+ border: 2px dashed salmon;
82
+ box-sizing: border-box;
83
+ cursor: pointer;
84
+ }
85
+
86
+ .screen-img-list-item-active {
87
+ image-rendering: pixelated;
88
+ height: 90%;
89
+ width: auto;
90
+ border: 2px solid transparent;
91
+ box-sizing: border-box;
92
+ }
93
+
94
+
95
+
96
+ .screen-img-statue-bottom {
97
+ padding: 0px;
98
+ margin: 0px;
99
+ background-color: color-mix(in srgb, canvas, canvastext 6%);
100
+ /* 替换 #efefef */
101
+ font-size: 13px;
102
+ }
103
+
104
+ .screen-img-statue-item-b {
105
+ text-align: center;
106
+ background-color: transparent;
107
+ font-size: 13px;
108
+ height: 30px;
109
+ display: flex;
110
+ justify-content: center;
111
+ align-items: center;
112
+ margin: 0px;
113
+ font-weight: bold;
114
+ }
115
+
116
+
117
+
118
+
119
+
120
+
121
+ .screen-imglist-bar {
122
+ border-radius: 3px;
123
+ background-color: color-mix(in srgb, canvas, canvastext 10%);
124
+ /* 替换 #dfe1e5 */
125
+ font-size: 15px;
126
+ height: 30px;
127
+ color: #db3e44;
128
+ display: flex;
129
+ justify-content: center;
130
+ align-items: center;
131
+ margin: 0px;
132
+ padding: 0px;
133
+ }
134
+
135
+ .screen-imglist-bar-btn:hover {
136
+ background-color: #db3e44;
137
+ color: white;
138
+ }
139
+
140
+ .toolbar_img_delall_mouse {
141
+ padding: 0px;
142
+ margin: 0px;
143
+ display: block;
144
+ text-align: center;
145
+ height: 100%;
146
+ background-color: color-mix(in srgb, canvas, orange 20%);
147
+ /* 替换 antiquewhite */
148
+ }
149
+
150
+ .toolbar_img_delall_mouse_color {
151
+ height: 20px;
152
+ width: 20px;
153
+ min-width: 20px;
154
+ background-color: AccentColor;
155
+ /* 替换固定绿色,改用系统强调色 */
156
+ }
157
+
158
+ #part_box {
159
+ position: absolute;
160
+ border: 1px dashed canvastext;
161
+ /* 替换 white */
162
+ margin: 0px;
163
+ padding: 0px;
164
+ animation: fade 1000ms infinite;
165
+ -webkit-animation: fade 1000ms infinite;
166
+ pointer-events: none;
167
+ background: linear-gradient(90deg, color-mix(in srgb, canvastext, transparent 90%) 5%, transparent 0),
168
+ linear-gradient(color-mix(in srgb, canvastext, transparent 90%) 5%, transparent 0);
169
+ background-size: 10px 10px;
170
+ }
171
+
172
+ .part_box_control:hover {
173
+ cursor: pointer;
174
+ color: red;
175
+ }
176
+
177
+ .toolbar_img_delall-mousecolor {
178
+ border-radius: 5px;
179
+ width: 25px;
180
+ margin: 0px;
181
+ padding: 0px;
182
+ box-shadow: 0px 1px 2px color-mix(in srgb, canvastext, transparent 60%);
183
+ }
184
+
185
+ .control-borad {
186
+ padding: 0;
187
+ margin: 0px;
188
+ height: 100%;
189
+ display: flex;
190
+ overflow: hidden;
191
+ }
192
+
193
+ .gpimage-con {
194
+ height: 100%;
195
+ background-color: AccentColor;
196
+ /* 替换原本的 #1AC988 */
197
+ }
198
+
199
+ .plug_group {
200
+ width: 100%;
201
+ padding: 0px;
202
+ margin: 0px;
203
+ overflow: hidden;
204
+ overflow-x: hidden;
205
+ border: 0px;
206
+ list-style-type: none;
207
+ }
208
+
209
+ .plug_group_header {
210
+ font-size: small;
211
+ cursor: pointer;
212
+ padding: 0px;
213
+ margin: 0px;
214
+ background-color: color-mix(in srgb, canvas, canvastext 8%);
215
+ /* 替换 #ecedf1 */
216
+ border-bottom: solid 1px color-mix(in srgb, canvastext, transparent 80%);
217
+ padding-top: 8px;
218
+ padding-bottom: 8px;
219
+ list-style-type: none;
220
+ text-align: center;
221
+ color: canvastext;
222
+ font-weight: 700;
223
+ }
224
+
225
+ .plug-list-item {
226
+ padding: 0px;
227
+ margin: 0px;
228
+ padding-top: 8px;
229
+ padding-bottom: 8px;
230
+ list-style-type: none;
231
+ text-align: center;
232
+ font-size: smaller;
233
+ color: canvastext;
234
+ }
235
+
236
+ .plug-list-item-active {
237
+ padding: 0px;
238
+ margin: 0px;
239
+ padding-top: 8px;
240
+ padding-bottom: 8px;
241
+ color: AccentColor;
242
+ /* 替换 #6d9ef7 */
243
+ background-color: canvas;
244
+ list-style-type: none;
245
+ text-align: center;
246
+ font-size: smaller;
247
+ }
248
+
249
+ .plug-list-item:hover {
250
+ background-color: canvas;
251
+ color: AccentColor;
252
+ cursor: pointer;
253
+ }
254
+
255
+ .coder-board {
256
+ padding: 0;
257
+ margin: 0px;
258
+ height: 100%;
259
+ display: grid;
260
+ grid-template-rows: auto 1fr;
261
+ }
262
+
263
+ .coder-board-header {
264
+ height: 35px;
265
+ padding: 0px;
266
+ margin: 0px;
267
+ background-color: color-mix(in srgb, canvas, canvastext 2%);
268
+ border-top: 1px solid color-mix(in srgb, canvastext, transparent 90%);
269
+ }
270
+
271
+ .coder-board-bottom {
272
+ height: 30px;
273
+ padding: 0px;
274
+ margin: 0px;
275
+ background-color: color-mix(in srgb, canvas, canvastext 6%);
276
+ }
277
+
278
+ .coder-board-body-item {
279
+ list-style-type: none;
280
+ padding: 0px;
281
+ margin: 0px;
282
+ font-size: small;
283
+ border-bottom: 1px color-mix(in srgb, canvas, canvastext 2%) solid;
284
+ cursor: pointer;
285
+ }
286
+
287
+ .coder-board-body-item-active {
288
+ background-color: AccentColor;
289
+ /* 替换 #79bbf6 */
290
+ color: AccentColorText;
291
+ }
292
+
293
+ .coder-board-body-item-fix {
294
+ list-style-type: none;
295
+ padding: 0px;
296
+ margin: 0px;
297
+ font-size: small;
298
+ background-color: color-mix(in srgb, orange, transparent 20%);
299
+ /* 替换 #f7cb5a */
300
+ border-bottom: 1px color-mix(in srgb, canvas, canvastext 2%) solid;
301
+ cursor: pointer;
302
+ }
303
+
304
+ .coder-board-body-item:hover {
305
+ background-color: color-mix(in srgb, canvas, canvastext 4%);
306
+ }
307
+
308
+ .zoomWindow_lines {
309
+ width: 100%;
310
+ height: 100%;
311
+ display: flex;
312
+ justify-content: center;
313
+ align-items: center;
314
+ background: linear-gradient(90deg, color-mix(in srgb, canvastext, transparent 90%) 5%, transparent 0),
315
+ linear-gradient(color-mix(in srgb, canvastext, transparent 90%) 5%, transparent 0);
316
+ background-size: 10px 10px;
317
+ z-index: 101;
318
+ }
319
+
320
+ .mark-point-des {
321
+ background-color: color-mix(in srgb, canvas, red 10%);
322
+ /* 替换 #f7dee1 */
323
+ }
324
+
325
+ .marknumber {
326
+ border-radius: 90px;
327
+ padding: 1px 3px;
328
+ margin-right: 5px;
329
+ color: white;
330
+ background-color: #db3e44;
331
+ /* 保持红色告警感 */
332
+ }
333
+
334
+ .mark-rect-item {
335
+ position: absolute;
336
+ border: AccentColor 2px dashed;
337
+ /* 替换 #1AC988 */
338
+ }
339
+
340
+ /* 拖拽条样式 */
341
+ .touch_slide {
342
+ position: absolute;
343
+ top: 0;
344
+ right: -5px;
345
+ /* 跨在边界线上,增加判定区域 */
346
+ width: 10px;
347
+ height: 100%;
348
+ cursor: col-resize;
349
+ /* 改变鼠标形状为双向箭头 */
350
+ z-index: 100;
351
+ transition: background-color 0.2s;
352
+ }
353
+
354
+ /* 鼠标覆盖时高亮 */
355
+ .touch_slide:hover,
356
+ .touch_slide.active {
357
+ background-color: var(--bs-primary);
358
+ /* 使用主题色 */
359
+ opacity: 0.5;
360
+ }
361
+
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+
370
+
371
+
372
+
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
+
385
+
386
+
387
+
388
+ /* 侧边工具栏 */
389
+ .screen-img-bar {
390
+ width: 50px;
391
+ border: none;
392
+ background-color: var(--bs-tertiary-bg);
393
+ display: flex;
394
+ flex-direction: column;
395
+ align-items: center;
396
+ padding: 10px 0;
397
+ gap: 12px;
398
+ /* 调整这里可以改变图标上下间距 */
399
+ cursor: pointer;
400
+ }
401
+
402
+ /* 按钮基础样式 */
403
+ .screen-img-bar-item {
404
+ width: 36px;
405
+ /* 固定宽度让图标对齐 */
406
+ height: 36px;
407
+ /* 固定高度 */
408
+ border-radius: 6px;
409
+ background-color: transparent;
410
+ font-size: 1.2rem;
411
+ color: canvastext;
412
+ display: flex;
413
+ justify-content: center;
414
+ align-items: center;
415
+ }
416
+
417
+ /* 悬浮效果 */
418
+ .screen-img-bar-item:hover {
419
+ background-color: color-mix(in srgb, canvas, canvastext 10%);
420
+ color: AccentColor;
421
+ }
422
+
423
+ /* 截图加载状态遮罩 */
424
+ #imagelist_loading {
425
+ background-color: color-mix(in srgb, canvas, canvastext 8%) !important;
426
+ display: flex;
427
+ justify-content: center;
428
+ align-items: center;
429
+ }
430
+
431
+ /* 修正 Bootstrap Spinner 颜色 */
432
+ .spinner-border.text-primary {
433
+ color: AccentColor !important;
434
+ /* 确保旋转圆圈也是主题色 */
435
+ }
436
+
437
+ /* 刷新图标旋转动画 */
438
+ .spin-animation {
439
+ animation: rotate 0.8s linear infinite;
440
+ display: inline-block;
441
+ }
442
+
443
+ @keyframes rotate {
444
+ from {
445
+ transform: rotate(0deg);
446
+ }
447
+
448
+ to {
449
+ transform: rotate(360deg);
450
+ }
451
+ }
452
+
453
+ /* 修正 Input 在深色模式下的样式 */
454
+ .form-control-sm {
455
+ background-color: canvas !important;
456
+ color: canvastext !important;
457
+ border: 1px solid color-mix(in srgb, canvastext, transparent 90%) !important;
458
+ }
459
+
460
+ /* 强制覆盖内联样式的背景 */
461
+ #header_color_current,
462
+ #image_input_rect {
463
+ background-color: color-mix(in srgb, canvas, canvastext 4%) !important;
464
+ }
465
+
466
+
467
+ /* --- 关键:强制状态栏背景与文字跟随浏览器 --- */
468
+ .screen-img-statue {
469
+ /* background-color: canvas !important; 浏览器原生背景色 */
470
+ background-color: var(--bs-tertiary-bg);
471
+ color: canvastext !important;
472
+ /* 浏览器原生文字色 */
473
+ /* border-top: 1px solid color-mix(in srgb, canvastext, transparent 85%) !important; */
474
+ }
475
+
476
+ /* 强制让 input-group 里的所有控件都不准出现硬编码白 */
477
+ .screen-img-statue .input-group-text {
478
+ background-color: color-mix(in srgb, canvas, canvastext 8%) !important;
479
+ color: canvastext !important;
480
+ border-color: color-mix(in srgb, canvastext, transparent 80%) !important;
481
+ }
482
+
483
+ .screen-img-statue .btn-outline-secondary {
484
+ background-color: canvas !important;
485
+ color: canvastext !important;
486
+ border-color: color-mix(in srgb, canvastext, transparent 80%) !important;
487
+ }
488
+
489
+ .screen-img-statue .btn-outline-secondary:hover {
490
+ background-color: color-mix(in srgb, canvas, canvastext 15%) !important;
491
+ }
492
+
493
+ .screen-img-statue .form-control {
494
+ background-color: canvas !important;
495
+ color: canvastext !important;
496
+ border-color: color-mix(in srgb, canvastext, transparent 80%) !important;
497
+ }
498
+
499
+ /* 修正中间那个数字框的背景色,让它看起来像个显示区而非按钮 */
500
+ #p_i_l {
501
+ background-color: color-mix(in srgb, canvas, canvastext 5%) !important;
502
+ color: canvastext !important;
503
+ }
504
+
505
+ /* 刷新图标旋转动画 */
506
+ .spin-animation {
507
+ animation: rotate 0.8s linear infinite;
508
+ display: inline-block;
509
+ }
510
+
511
+ @keyframes rotate {
512
+ from {
513
+ transform: rotate(0deg);
514
+ }
515
+
516
+ to {
517
+ transform: rotate(360deg);
518
+ }
519
+ }
520
+
521
+ .gallery-fullscreen-panel {
522
+ position: fixed;
523
+ top: 0;
524
+ /* 核心修改:左侧距离 = 固定侧边栏宽度 + 动态容器宽度 */
525
+ /* 假设固定栏是 50px */
526
+ left: calc(50px + var(--left-width, 35vw));
527
+ width: calc(100vw - (50px + var(--left-width, 35vw)));
528
+
529
+ height: 100vh;
530
+ z-index: 1050;
531
+ background-color: var(--bs-body-bg);
532
+ display: flex;
533
+ flex-direction: column;
534
+ }
535
+
536
+ .screen-img-list {
537
+ flex: 1;
538
+ /* 强制网格布局 */
539
+ display: flex;
540
+ flex-wrap: wrap;
541
+ }
542
+
543
+ /* 图片卡片样式 */
544
+ .img-card {
545
+ position: relative;
546
+ aspect-ratio: 1 / 1;
547
+ /* 强制正方形让视觉统一 */
548
+ background: var(--bs-tertiary-bg);
549
+ border-radius: 4px;
550
+ overflow: hidden;
551
+ cursor: pointer;
552
+ border: 1px solid transparent;
553
+ }
554
+
555
+ .img-card:hover {
556
+ border-color: var(--bs-primary);
557
+ }
558
+
559
+ .img-card img {
560
+ width: 100%;
561
+ height: 100%;
562
+ object-fit: cover;
563
+ }
564
+
565
+ .img-name {
566
+ position: absolute;
567
+ bottom: 0;
568
+ width: 100%;
569
+ font-size: 10px;
570
+ background: rgba(0, 0, 0, 0.5);
571
+ color: #fff;
572
+ padding: 2px 5px;
573
+ backdrop-filter: blur(2px);
574
+ }
575
+
576
+ .btn-del {
577
+ position: absolute;
578
+ top: 4px;
579
+ right: 4px;
580
+ padding: 0 4px;
581
+ display: none;
582
+ /* 悬浮显示 */
583
+ }
584
+
585
+ .img-card:hover .btn-del {
586
+ display: block;
587
+ }
588
+
589
+
590
+ /* 增加一个简单的悬停交互:变色并微调大小 */
591
+ .history-btn {
592
+ transition: color 0.2s, transform 0.1s;
593
+ display: flex;
594
+ align-items: center;
595
+ justify-content: center;
596
+ width: 28px;
597
+ height: 28px;
598
+ }
599
+
600
+ .history-btn:hover {
601
+ color: var(--bs-primary) !important;
602
+ /* 悬浮时变蓝色 */
603
+ transform: scale(1.1);
604
+ /* 悬浮时轻微放大 */
605
+ }
606
+
607
+ .container_bottombar {
608
+ border-top: 1px solid var(--bs-border-color);
609
+ user-select: none;
610
+ /* 防止鼠标误选文字 */
611
+ }
612
+
613
+ #status_notification {
614
+ /* 使用 BS5.3 默认正文次要颜色变量 */
615
+ color: var(--bs-secondary-color);
616
+ transition: all 0.3s ease-in-out;
617
+ font-weight: 400;
618
+ /* VSCode 状态栏通常不加粗 */
619
+ letter-spacing: 0.3px;
620
+ }
621
+
622
+ /* 消息活跃时的样式:模拟 VSCode 蓝 */
623
+ .status-active {
624
+ color: var(--bs-primary-text-emphasis) !important;
625
+ }
626
+
627
+ /* 消息报错时的样式 */
628
+ .status-error {
629
+ color: var(--bs-danger-text-emphasis) !important;
630
+ }
631
+
632
+ .screen-img-shower {
633
+ height: 100%;
634
+ /* 创建一个深度感画布:中心略亮,四周略暗的径向渐变 */
635
+ /* 使用 Bootstrap 的背景变量确保主题同步 */
636
+ background: radial-gradient(circle at center,
637
+ var(--bs-tertiary-bg) 0%,
638
+ var(--bs-secondary-bg) 100%);
639
+
640
+ /* 增加一个极其微弱的颗粒感,模拟真实纸张或画布的纹理 */
641
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.05'/%3E%3C/svg%3E");
642
+
643
+ position: relative;
644
+ overflow: hidden;
645
+ cursor: crosshair;
646
+ transition: all 0.3s ease;
647
+ }
648
+
649
+ /* 拖拽激活时:通过光晕变化给予反馈 */
650
+ .screen-img-shower.drag-active {
651
+ outline: 3px dashed var(--bs-primary) !important;
652
+ outline-offset: -10px;
653
+ background: radial-gradient(circle at center,
654
+ rgba(var(--bs-primary-rgb), 0.1) 0%,
655
+ var(--bs-tertiary-bg) 100%);
656
+ }
657
+
658
+ /* 保持 transform_container 投影,增加图片浮在画布上的感觉 */
659
+ #transform_container {
660
+ position: absolute;
661
+ transform-origin: 0 0;
662
+ will-change: transform;
663
+ /* 给图片增加一个柔和的阴影,使其更像放在画布上的实体 */
664
+ filter: drop-shadow(0 10px 20px rgba(0, 0, 0, 0.15));
665
+ }
666
+
667
+ /* 拖拽时的模糊效果 */
668
+ .screen-img-shower.drag-active #transform_container {
669
+ filter: blur(2px);
670
+ opacity: 0.8;
671
+ }
672
+
673
+ /* 拖拽提示文字 - 同步 BS Badge/Button 风格 */
674
+ .screen-img-shower.drag-active::after {
675
+ content: "释放鼠标以导入图片";
676
+ position: absolute;
677
+ top: 50%;
678
+ left: 50%;
679
+ transform: translate(-50%, -50%);
680
+ background-color: var(--bs-primary);
681
+ color: white;
682
+ padding: 8px 20px;
683
+ border-radius: 50rem;
684
+ /* pill */
685
+ font-weight: 500;
686
+ box-shadow: var(--bs-box-shadow);
687
+ z-index: 1000;
688
+ }
689
+
690
+ .grabbing {
691
+ cursor: grabbing !important;
692
+ }
693
+
694
+ #transform_container {
695
+ position: absolute;
696
+ transform-origin: 0 0;
697
+ will-change: transform;
698
+ }
699
+
700
+ #img_preview {
701
+ image-rendering: pixelated;
702
+ display: block;
703
+ user-select: none;
704
+ -webkit-user-drag: none;
705
+ }
706
+
707
+ #svg_layer {
708
+ position: absolute;
709
+ top: 0;
710
+ left: 0;
711
+ width: 100%;
712
+ height: 100%;
713
+ overflow: visible;
714
+ pointer-events: none;
715
+ }
716
+
717
+ #selection_rect {
718
+ fill: rgba(var(--bs-primary-rgb), 0.15);
719
+ stroke: var(--bs-primary);
720
+ pointer-events: all;
721
+ cursor: move;
722
+ }
723
+
724
+ .handle {
725
+ fill: var(--bs-white);
726
+ stroke: var(--bs-primary);
727
+ pointer-events: all;
728
+ }
729
+
730
+ .mark-text {
731
+ fill: white;
732
+ font-weight: bold;
733
+ paint-order: stroke;
734
+ stroke: #000;
735
+ pointer-events: none;
736
+ }
737
+
738
+ .mark-point {
739
+ fill: var(--bs-danger);
740
+ stroke: var(--bs-white);
741
+ }
742
+
743
+ .mark-rect {
744
+ fill: rgba(var(--bs-success-rgb), 0.2);
745
+ stroke: var(--bs-success);
746
+ }
747
+
748
+ /* 交互提示条容器 */
749
+ .interaction-hints {
750
+ position: absolute;
751
+ bottom: 15px;
752
+ left: 15px;
753
+ z-index: 100;
754
+ pointer-events: none;
755
+ /* 确保不挡住鼠标点击操作 */
756
+ background: rgba(var(--bs-tertiary-bg-rgb), 0.6);
757
+ backdrop-filter: blur(8px);
758
+ /* 磨砂玻璃感 */
759
+ border: 1px solid var(--bs-border-color-translucent);
760
+ border-radius: var(--bs-border-radius);
761
+ transition: opacity 0.3s;
762
+ }
763
+
764
+ /* 提示单项 */
765
+ .hint-item {
766
+ display: flex;
767
+ align-items: center;
768
+ gap: 6px;
769
+ font-size: 0.75rem;
770
+ color: var(--bs-secondary-color);
771
+ }
772
+
773
+ .hint-item i {
774
+ color: var(--bs-primary);
775
+ /* 图标使用品牌色点缀 */
776
+ font-size: 0.9rem;
777
+ }
778
+
779
+ /* 键盘按键样式:同步 Bootstrap kbd */
780
+ .hint-item kbd {
781
+ padding: 2px 5px;
782
+ font-size: 0.7rem;
783
+ background-color: var(--bs-body-color);
784
+ color: var(--bs-body-bg);
785
+ }
786
+
787
+ /* 细节:当鼠标移动或绘图时,自动变淡以减少干扰 */
788
+ .screen-img-shower:active .interaction-hints {
789
+ opacity: 0.2;
790
+ }
791
+
792
+ @keyframes hint-pulse {
793
+ 0% {
794
+ transform: scale(1);
795
+ }
796
+
797
+ 50% {
798
+ transform: scale(1.05);
799
+ box-shadow: 0 0 15px rgba(var(--bs-primary-rgb), 0.3);
800
+ }
801
+
802
+ 100% {
803
+ transform: scale(1);
804
+ }
805
+ }
806
+
807
+ .hint-animate {
808
+ animation: hint-pulse 1.5s ease 2;
809
+ /* 图片加载后闪烁两次 */
810
+ }
811
+
812
+ /* 面板堆叠容器 */
813
+ .info-group {
814
+ position: absolute;
815
+ bottom: 15px;
816
+ right: 15px;
817
+ z-index: 1000;
818
+ display: flex;
819
+ flex-direction: column;
820
+ align-items: flex-end;
821
+ pointer-events: none;
822
+ /* 穿透鼠标 */
823
+ }
824
+
825
+ /* 统一面板样式 */
826
+ .info-panel {
827
+ background: rgba(var(--bs-tertiary-bg-rgb), 0.65);
828
+ backdrop-filter: blur(10px);
829
+ -webkit-backdrop-filter: blur(10px);
830
+ border: 1px solid var(--bs-border-color-translucent);
831
+ border-radius: var(--bs-border-radius);
832
+ padding: 10px 14px;
833
+ min-width: 190px;
834
+ box-shadow: var(--bs-box-shadow-sm);
835
+ transition: opacity 0.2s;
836
+ }
837
+
838
+ .info-header {
839
+ font-size: 0.7rem;
840
+ font-weight: 700;
841
+ color: var(--bs-primary);
842
+ text-transform: uppercase;
843
+ letter-spacing: 0.5px;
844
+ }
845
+
846
+ .info-row {
847
+ display: flex;
848
+ justify-content: space-between;
849
+ align-items: center;
850
+ gap: 15px;
851
+ line-height: 1.5;
852
+ }
853
+
854
+ .info-label {
855
+ font-size: 0.75rem;
856
+ color: var(--bs-secondary-color);
857
+ }
858
+
859
+ .info-value {
860
+ font-size: 0.85rem;
861
+ font-family: var(--bs-font-monospace);
862
+ color: var(--bs-emphasis-color);
863
+ font-weight: 600;
864
+ }
865
+
866
+ .color-swatch {
867
+ width: 14px;
868
+ height: 14px;
869
+ border-radius: 3px;
870
+ border: 1px solid rgba(var(--bs-white-rgb), 0.3);
871
+ }
872
+
873
+ /* 操作时半透明 */
874
+ .screen-img-shower:active .info-panel,
875
+ .screen-img-shower:active .interaction-hints {
876
+ opacity: 0.2;
877
+ }
878
+
879
+ .screen-img-shower img,
880
+ .screen-img-shower svg {
881
+ /* 禁止浏览器原生的图片拖拽(防止触发系统文件拖放) */
882
+ -webkit-user-drag: none;
883
+ user-drag: none;
884
+ /* 禁止选中文本,避免拖动时意外选中文字 */
885
+ user-select: none;
886
+ }
887
+
888
+ .dropdown-item.disabled {
889
+ pointer-events: none;
890
+ /* 防止点击 */
891
+ opacity: 0.6;
892
+ background-color: #f8f9fa;
893
+ }
894
+
895
+ /* 优化滚动条和下拉框宽度 */
896
+ #windowList {
897
+ min-width: 300px;
898
+ max-height: 80vh;
899
+ overflow-y: auto;
900
+ }
901
+
902
+ /* 自定义已消失项的样式 */
903
+ .dropdown-item.inst-disabled {
904
+ opacity: 0.5;
905
+ background-color: var(--bs-tertiary-bg);
906
+ pointer-events: none;
907
+ /* 彻底禁用点击 */
908
+ cursor: not-allowed;
909
+ }
910
+
911
+
912
+
913
+ /* 确保标题和ID的视觉层次 */
914
+ .win-title-box {
915
+ flex: 1;
916
+ /* 占据剩余空间 */
917
+ font-size: 0.9rem;
918
+ }
919
+
920
+ .win-hwnd-label {
921
+ font-size: 0.75rem;
922
+ color: var(--bs-secondary-color);
923
+ background-color: var(--bs-tertiary-bg);
924
+ padding: 1px 6px;
925
+ border-radius: 4px;
926
+ border: 1px solid var(--bs-border-color);
927
+ white-space: nowrap;
928
+ /* 防止ID换行 */
929
+ }
930
+
931
+ /* 适配 5.3 的 active 状态,让 ID 在选中时也变白 */
932
+ .dropdown-item.active .win-hwnd-label {
933
+ color: #fff;
934
+ border-color: rgba(255, 255, 255, 0.3);
935
+ background-color: rgba(255, 255, 255, 0.1);
936
+ }
937
+
938
+ /* 窗口条目容器 */
939
+ .window-item-link {
940
+ display: flex;
941
+ justify-content: space-between;
942
+ align-items: center;
943
+ padding: 0.5rem 1rem;
944
+ transition: all 0.2s ease;
945
+ }
946
+
947
+ /* 窗口标题:占据主要空间,超长截断 */
948
+ .win-title-text {
949
+ flex: 1;
950
+ font-size: 0.9rem;
951
+ color: var(--bs-emphasis-color);
952
+ white-space: nowrap;
953
+ overflow: hidden;
954
+ text-overflow: ellipsis;
955
+ margin-right: 1.5rem;
956
+ /* 给右侧ID留出固定间距 */
957
+ }
958
+
959
+ /* 弱化的 ID 数字:等宽字体,靠右,低亮度 */
960
+ .win-hwnd-num {
961
+ font-family: var(--bs-font-monospace);
962
+ /* 使用系统等宽字体 */
963
+ font-size: 0.75rem;
964
+ color: var(--bs-secondary-color);
965
+ opacity: 0.5;
966
+ /* 初始非常浅 */
967
+ letter-spacing: 0.02rem;
968
+ }
969
+
970
+ /* 悬停效果 */
971
+ .dropdown-item:hover .win-hwnd-num {
972
+ opacity: 0.9;
973
+ }
974
+
975
+ /* 选中状态:ID 随文字一起变白 */
976
+ .dropdown-item.active .win-hwnd-num {
977
+ color: #fff;
978
+ opacity: 0.8;
979
+ }
980
+
981
+ /* 已消失状态 */
982
+ .inst-disabled {
983
+ opacity: 0.4;
984
+ pointer-events: none;
985
+ }
986
+
987
+ .dropdown-backdrop-custom {
988
+ position: fixed;
989
+ top: 0;
990
+ left: 0;
991
+ width: 100vw;
992
+ height: 100vh;
993
+ z-index: 1040;
994
+ display: none;
995
+ opacity: 0;
996
+ transition: opacity 0.3s ease, backdrop-filter 0.3s ease;
997
+
998
+ /* 默认背景:深色半透明 */
999
+ background-color: rgba(0, 0, 0, 0.4);
1000
+ /* 毛玻璃效果 */
1001
+ backdrop-filter: blur(8px) saturate(150%);
1002
+ -webkit-backdrop-filter: blur(8px) saturate(150%);
1003
+ }
1004
+
1005
+ /* 针对深色主题的覆盖样式 (适配 BS 5.3) */
1006
+ [data-bs-theme="dark"] .dropdown-backdrop-custom {
1007
+ /* 深色模式下,背景需要更黑,模糊度可以更高 */
1008
+ background-color: rgba(0, 0, 0, 0.7);
1009
+ backdrop-filter: blur(12px) brightness(0.6);
1010
+ }
1011
+
1012
+ .dropdown-backdrop-custom.show {
1013
+ display: block;
1014
+ opacity: 1;
1015
+ }
1016
+
1017
+ /* 确保按钮和列表的层级高于遮罩 */
1018
+ .dropdown {
1019
+ position: relative;
1020
+ z-index: 1050;
1021
+ }
1022
+
1023
+ #windowList {
1024
+ z-index: 1051 !important;
1025
+ }
1026
+
1027
+ .mouse-hud {
1028
+ position: fixed;
1029
+ /* 关键:固定定位,相对于浏览器窗口 */
1030
+ z-index: 99999;
1031
+ /* 确保在全页面最顶层 */
1032
+ pointer-events: none;
1033
+ /* 其余样式保持不变 */
1034
+ display: flex;
1035
+ align-items: center;
1036
+ gap: 8px;
1037
+ padding: 4px 10px;
1038
+ background: rgba(var(--bs-tertiary-bg-rgb), 0.85);
1039
+ backdrop-filter: blur(6px);
1040
+ border: 1px solid var(--bs-border-color-translucent);
1041
+ border-radius: 6px;
1042
+ }
1043
+
1044
+ .hud-coords {
1045
+ font-size: 0.75rem;
1046
+ color: var(--bs-secondary-color);
1047
+ font-weight: 500;
1048
+ }
1049
+
1050
+ .hud-divider {
1051
+ width: 1px;
1052
+ height: 12px;
1053
+ background: var(--bs-border-color);
1054
+ }
1055
+
1056
+ .hud-swatch {
1057
+ width: 10px;
1058
+ height: 10px;
1059
+ border-radius: 2px;
1060
+ border: 1px solid rgba(255, 255, 255, 0.2);
1061
+ }
1062
+
1063
+ .hud-hex {
1064
+ font-size: 0.8rem;
1065
+ color: var(--bs-emphasis-color);
1066
+ font-weight: 700;
1067
+ letter-spacing: 0.5px;
1068
+ }
1069
+
1070
+ /* 工具栏整体容器 */
1071
+ .plug-list-con {
1072
+ height: 100%;
1073
+ /* 使用 color-mix 适配 5.3 主题色,canvas 为背景色,canvastext 为文字色 */
1074
+ background-color: var(--bs-tertiary-bg);
1075
+
1076
+ /* 双侧投影:
1077
+ 第一组:左侧深层投影 (用于压在左侧图片区之上)
1078
+ 第二组:右侧微弱投影 (增强整体浮动感)
1079
+ */
1080
+ /* box-shadow: -4px 0 15px rgba(0, 0, 0, 0.4); */
1081
+
1082
+
1083
+ /* 边框:左右都加上,不仅是右边 */
1084
+ border-left: 1px solid color-mix(in srgb, canvas, canvastext 8%);
1085
+ border-right: 1px solid color-mix(in srgb, canvas, canvastext 4%);
1086
+
1087
+ transition: all 0.3s ease;
1088
+
1089
+ /* 核心:提升层级 */
1090
+ position: relative;
1091
+ z-index: 10;
1092
+ overflow: visible;
1093
+ }
1094
+
1095
+ /* 列表头部 */
1096
+ .plug-list-con-header {
1097
+ /* 针对不同主题调整文字颜色 */
1098
+ color: var(--bs-emphasis-color);
1099
+ background-color: var(--bs-tertiary-bg);
1100
+ /* 比主体颜色稍微深/浅一点点,突出头部 */
1101
+ border-bottom: 1px solid var(--bs-border-color);
1102
+ position: sticky;
1103
+ top: 0;
1104
+ z-index: 11;
1105
+ }
1106
+
1107
+ /* 标题文字颜色适配 */
1108
+ .plug-list-con-header b {
1109
+ color: var(--bs-emphasis-color) !important;
1110
+ }
1111
+
1112
+ /* 滚动条美化(适配主题) */
1113
+ #group_plug {
1114
+ height: calc(100vh - 50px);
1115
+ /* 减去头部高度 */
1116
+ scrollbar-width: thin;
1117
+ scrollbar-color: var(--bs-border-color) transparent;
1118
+ }
1119
+
1120
+ /* 增加一个简单的悬停效果 */
1121
+ .hover-bg:hover {
1122
+ background-color: var(--bs-secondary-bg);
1123
+ }
1124
+
1125
+ /* --- 1. 基础布局容器 --- */
1126
+ .plug-item {
1127
+ cursor: pointer;
1128
+ border-radius: 0 !important;
1129
+ margin-bottom: 0px;
1130
+ padding: 10px 16px !important;
1131
+ transition: background-color 0.15s ease, color 0.1s ease;
1132
+ border: none !important;
1133
+ position: relative;
1134
+ /* 默认状态:低对比度文字 */
1135
+ color: var(--bs-secondary-color);
1136
+ background-color: transparent;
1137
+ display: flex;
1138
+ align-items: center;
1139
+ }
1140
+
1141
+ /* 文字排版 */
1142
+ .plug-title {
1143
+ font-size: 13px;
1144
+ font-weight: 400; /* VSCode 风格通常不加粗 */
1145
+ line-height: 1.2;
1146
+ }
1147
+
1148
+ .plug-desc {
1149
+ display: -webkit-box;
1150
+ -webkit-line-clamp: 1;
1151
+ -webkit-box-orient: vertical;
1152
+ overflow: hidden;
1153
+ font-size: 11px;
1154
+ opacity: 0.6;
1155
+ margin-top: 2px;
1156
+ }
1157
+
1158
+ /* --- 2. 图标核心样式 (Mask 模式) --- */
1159
+ .plug-icon-mask {
1160
+ width: 1.15rem;
1161
+ height: 1.15rem;
1162
+ display: inline-block;
1163
+ flex-shrink: 0;
1164
+ /* 遮罩属性 */
1165
+ -webkit-mask-image: var(--icon-url);
1166
+ mask-image: var(--icon-url);
1167
+ -webkit-mask-repeat: no-repeat;
1168
+ mask-repeat: no-repeat;
1169
+ -webkit-mask-size: contain;
1170
+ mask-size: center;
1171
+
1172
+ /* 默认颜色跟随父级文字 color */
1173
+ background-color: currentColor;
1174
+ opacity: 0.7;
1175
+ transition: all 0.1s ease;
1176
+ }
1177
+
1178
+ /* --- 3. 交互状态 (Hover 与 Active) --- */
1179
+
1180
+ /* [状态 A]:仅鼠标悬停,且未被选中 */
1181
+ .plug-item:hover:not(.active) {
1182
+ background-color: var(--bs-secondary-bg) !important;
1183
+ color: var(--bs-emphasis-color) !important;
1184
+ }
1185
+ .plug-item:hover:not(.active) .plug-icon-mask {
1186
+ opacity: 1;
1187
+ }
1188
+
1189
+ /* [状态 B]:被点击选中 (Active) */
1190
+ .plug-item.active {
1191
+ /* 使用 BS5.3 官方推荐的选中背景色 */
1192
+ background-color: var(--bs-primary-bg-subtle) !important;
1193
+ color: var(--bs-primary-text-emphasis) !important;
1194
+ }
1195
+
1196
+ /* 选中时的左侧 VSCode 蓝条 */
1197
+ .plug-item.active::before {
1198
+ content: "";
1199
+ position: absolute;
1200
+ left: 0;
1201
+ top: 0;
1202
+ bottom: 0;
1203
+ width: 3px;
1204
+ background-color: var(--bs-primary);
1205
+ }
1206
+
1207
+ /* 选中时的图标:强制变色 */
1208
+ .plug-item.active .plug-icon-mask {
1209
+ background-color: var(--bs-primary) !important;
1210
+ opacity: 1;
1211
+ }
1212
+
1213
+ /* [状态 C]:重点修复 - 选中状态下再次悬停 */
1214
+ .plug-item.active:hover {
1215
+ /* 背景稍微加深一点,防止“看不清” */
1216
+ background-color: var(--bs-fill-nav-hover, rgba(var(--bs-primary-rgb), 0.15)) !important;
1217
+ /* 保持文字颜色 */
1218
+ color: var(--bs-primary-text-emphasis) !important;
1219
+ }
1220
+
1221
+ /* --- 4. 兼容性清理 (针对旧代码中的 SVG 直接渲染) --- */
1222
+ .plug-custom-icon {
1223
+ width: 1.25rem;
1224
+ height: 1.25rem;
1225
+ display: flex;
1226
+ align-items: center;
1227
+ justify-content: center;
1228
+ }
1229
+ .plug-custom-icon svg {
1230
+ width: 100%;
1231
+ height: 100%;
1232
+ fill: currentColor;
1233
+ }
1234
+ .plug-custom-icon svg [stroke] {
1235
+ stroke: currentColor;
1236
+ fill: none;
1237
+ }
1238
+
1239
+
1240
+
1241
+
1242
+
1243
+ /* 高亮样式定义 */
1244
+ .highlighted-mark .mark-point,
1245
+ .highlighted-mark .mark-rect {
1246
+ stroke: #ff0000 !important; /* 强制变红 */
1247
+ stroke-width: 3px !important; /* 增加线宽 */
1248
+ filter: drop-shadow(0 0 5px rgba(255, 0, 0, 0.8)); /* 添加发光效果 */
1249
+ }
1250
+
1251
+ .highlighted-mark .mark-text {
1252
+ fill: #ff0000 !important;
1253
+ font-weight: bold;
1254
+ filter: drop-shadow(0 0 2px white);
1255
+ }
1256
+
1257
+ /* 错误模态框 */
1258
+
1259
+ .code-window {
1260
+ background-color: #1e1e1e;
1261
+ border-radius: 10px;
1262
+ overflow: hidden;
1263
+ border: 1px solid #333; /* 增加精致的边框感 */
1264
+ }
1265
+
1266
+ .code-header {
1267
+ height: 34px;
1268
+ background-color: #2d2d2d; /* 稍微亮一点的标题栏 */
1269
+ user-select: none;
1270
+ }
1271
+
1272
+ .dot { width: 12px; height: 12px; border-radius: 50%; }
1273
+ .red { background: #ff5f56; }
1274
+ .yellow { background: #ffbd2e; }
1275
+ .green { background: #27c93f; }
1276
+
1277
+ .code-content {
1278
+ padding: 20px;
1279
+ max-height: 500px;
1280
+ overflow: auto;
1281
+ }
1282
+
1283
+ #errorModalMsg {
1284
+ margin: 0;
1285
+ font-family: 'Consolas', 'Monaco', monospace;
1286
+ font-size: 0.9rem;
1287
+ color: #bcbcbc;
1288
+ white-space: pre-wrap;
1289
+ word-break: break-all;
1290
+ }
1291
+
1292
+ /* 底部操作栏样式 */
1293
+ .code-footer {
1294
+ background: #1e1e1e;
1295
+ border-top: 1px solid #2d2d2d;
1296
+ }
1297
+
1298
+ /* 简单信息的特殊样式 */
1299
+ .simple-msg {
1300
+ color: #4fc1ff !important; /* 简单信息用蓝色,看起来更像提示 */
1301
+ text-align: center;
1302
+ padding: 20px 0;
1303
+ }
1304
+
1305
+ /* 针对所有动态标记组 */
1306
+ .mark-group, .mark-text, .dynamic-rect {
1307
+ /* 强制浏览器渲染引擎使用几何精度而非速度优先 */
1308
+ shape-rendering: geometricPrecision;
1309
+ /* 针对文字的抗锯齿优化 */
1310
+ -webkit-font-smoothing: antialiased;
1311
+ text-rendering: optimizeLegibility;
1312
+ }
1313
+
1314
+ /* 高亮时的样式,可以增加阴影让它更立体 */
1315
+ .highlighted-mark .mark-text {
1316
+ fill: #ff0000 !important;
1317
+ font-weight: bold;
1318
+ filter: drop-shadow(0px 0px 2px white);
1319
+ }
1320
+
1321
+ /* 针对 SVG 文本的特殊优化 */
1322
+
1323
+
1324
+ #svg_layer {
1325
+ /* 告诉浏览器不要对 SVG 进行位图缓存 */
1326
+ image-rendering: -webkit-optimize-contrast;
1327
+ image-rendering: crisp-edges;
1328
+ }
1329
+
1330
+ /* 圆点的样式 */
1331
+ .dynamic-circle {
1332
+ fill: #ff0000;
1333
+ border: #ffffff 1px solid;
1334
+ }
1335
+
1336
+ /* 文字的样式 */
1337
+ .dynamic-text {
1338
+ fill: #ffffff;
1339
+ font-weight: bold;
1340
+ /* 强制渲染精度 */
1341
+ paint-order: stroke fill;
1342
+ }