├── .gitignore ├── I18n.js ├── PrivacyPolicy.html ├── README.md ├── _config.yml ├── css ├── app.css └── base.css ├── download └── plugin │ ├── NConvert.zip │ ├── QuickLook.zip │ ├── hdrfix.zip │ └── monaco-editor.zip ├── ejs ├── _bottom.ejs ├── _head.ejs ├── _header.ejs ├── _script.ejs ├── index.ejs ├── plugin.ejs └── support.ejs ├── en ├── index.html ├── plugin.html └── support.html ├── gulpfile.js ├── img ├── bg.jpg ├── index │ ├── bulkView.webp │ ├── filePanel.jpg │ ├── folderPanel.jpg │ ├── informationPanel.jpg │ ├── openWebImage.webp │ ├── quickDragFile.webp │ └── windowTheme.jpg ├── plugin │ ├── demo-WebViewer.jpg │ ├── demo-monaco-editor.jpg │ ├── icon-NConvert.png │ ├── icon-QuickLook.png │ ├── icon-WebViewer.png │ ├── icon-hdrfix.png │ ├── icon-monaco-editor.png │ ├── plugin-1.png │ └── plugin-2.png ├── svg │ ├── acceptMedium.svg │ ├── cubeShape.svg │ ├── github.svg │ ├── globe.svg │ ├── lightningBolt.svg │ ├── microsoftStore.svg │ ├── productVariant.svg │ ├── puzzle.svg │ ├── readingMode.svg │ ├── searchAndApps.svg │ └── webEnvironment.svg └── tiefseeLogo.png ├── img_view ├── img │ ├── add.svg │ ├── close.svg │ ├── full-horizontal.svg │ ├── full-vertical.svg │ ├── full.svg │ ├── open.svg │ ├── r.svg │ └── subtrat.svg ├── imgs.html └── jquery-3.2.1.min.js ├── index.html ├── js └── app.js ├── package-lock.json ├── package.json ├── plugin.html ├── scss ├── _index.scss ├── _plugin.scss ├── _support.scss └── app.scss ├── sitemap.txt ├── support.html ├── ts └── app.ts ├── v3 ├── download │ ├── AeroPic_1_0_0.zip │ ├── AeroPic_1_0_1.zip │ ├── AeroPic_1_1_2.zip │ ├── AeroPic_1_3_0.zip │ ├── AeroPic_1_3_1.zip │ ├── AeroPic_2_1_0.zip │ ├── AeroPic_2_2_0.zip │ ├── AeroPic_2_3_1.zip │ ├── AeroPic_2_4_0.zip │ ├── AeroPic_2_4_1.zip │ ├── AeroPic_2_5_0.zip │ ├── TiefSee_2_7_0.zip │ ├── TiefSee_2_7_1.zip │ ├── TiefSee_2_7_2.zip │ ├── TiefSee_2_7_3.zip │ ├── TiefSee_3_0_1.zip │ └── TiefSee_3_0_2.zip ├── imgs │ ├── bac.jpg │ ├── bac_aero.jpg │ ├── download_pixiv │ │ ├── 1-1.jpg │ │ ├── 1-2.jpg │ │ └── 2-1.jpg │ ├── explain_edit_default │ │ ├── 1.jpg │ │ ├── 10.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── 4.jpg │ │ ├── 5.jpg │ │ ├── 6.jpg │ │ ├── 7.jpg │ │ ├── 8.jpg │ │ ├── movie01.mp4 │ │ └── movie01.webm │ ├── explain_soft │ │ ├── 1.jpg │ │ ├── movie01.mp4 │ │ ├── movie01.webm │ │ ├── ui-1.svg │ │ ├── ui-2.svg │ │ ├── ui-3.jpg │ │ └── ui-4.svg │ ├── home_demo │ │ ├── 1.gif │ │ ├── 10.jpg │ │ ├── 11.gif │ │ ├── 12.jpg │ │ ├── 2.gif │ │ ├── 3.jpg │ │ ├── 4.gif │ │ ├── 5.gif │ │ ├── 6.jpg │ │ ├── 7.jpg │ │ ├── 8.gif │ │ ├── 9.jpg │ │ └── 新增資料夾 │ │ │ ├── 1.gif │ │ │ ├── 10.jpg │ │ │ ├── 2.gif │ │ │ ├── 3.gif │ │ │ ├── 4.gif │ │ │ ├── 5.gif │ │ │ ├── 6.gif │ │ │ ├── 7.gif │ │ │ ├── 7.jpg │ │ │ ├── 8.gif │ │ │ └── 9.jpg │ ├── logo.png │ ├── other │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── 4.jpg │ │ ├── md_1.jpg │ │ └── qrcode.png │ ├── plugin │ │ ├── demo-WebViewer.jpg │ │ ├── demo-monaco-editor.jpg │ │ ├── icon-NConvert.png │ │ ├── icon-QuickLook.png │ │ ├── icon-WebViewer.png │ │ ├── icon-monaco-editor.png │ │ ├── plugin-1.jpg │ │ └── plugin-2.png │ └── 背景圖片暫存 │ │ ├── 新增資料夾 (2) │ │ ├── bac.jpg │ │ └── bac_aero.jpg │ │ └── 新增資料夾 │ │ ├── bac.jpg │ │ └── bac_aero.jpg ├── index.cfp.html ├── index.html ├── js │ ├── angular-route.js │ └── angular.min.js └── page │ ├── author.html │ ├── download.html │ ├── explain.html │ ├── explain_edit_default.html │ ├── explain_pixiv.html │ ├── explain_soft.html │ └── p1.html ├── vender ├── photoswipe │ ├── photoswipe-lightbox.umd.min.js │ ├── photoswipe.css │ └── photoswipe.umd.min.js └── vanilla-tilt.min.js └── zh-TW ├── index.html ├── plugin.html └── support.html /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tiefsee 官方網站 2 | 3 | 4 | ![TiefSee官方網站](https://hbl917070.github.io/aeropic/img/index/filePanel.jpg) 5 | 6 | 7 | ## 專案說明 8 | 9 | 此專案為 Tiefsee 官方網站 的原始碼,使用 TypeScript、SCSS、EJS 進行開發,並以 gulp 進行打包成多國語言的靜態網站。 10 |

11 | 開啟 `/index.html` 後,會透過 js 檢測使用者使用的語言,以判斷要轉址到 `/en/index.html` 或 `/zh-TW/index.html` 12 |

13 | 目錄結構: 14 | ``` 15 | / 16 | ├ ejs:放 ejs 的目錄,編譯後會輸出成多國語言的 html 17 | ├ scss:放 scss 的目錄,編譯後會輸到 css 18 | ├ ts:放 ts 的目錄,編譯後會輸出到 js 19 | ├ vender:放第三方 js 的目錄 20 | │ 21 | ├ css:由 gulp 自動生成 22 | ├ js:由 gulp 自動生成 23 | ├ zh-TW:中文版網站的 html 目錄,由 gulp 自動生成 24 | ├ en:英文版網站的 html 目錄,由 gulp 自動生成 25 | ├ index.html:由 gulp 自動生成 26 | ├ plugin.html:由 gulp 自動生成 27 | ├ support.html:由 gulp 自動生成 28 | │ 29 | ├ v3:舊版 TiefSee 3 的網站 30 | ├ img_view:舊版 TiefSee 3 的大量瀏覽模式頁面 31 | │ 32 | ├ gulpfile.js 33 | └ I18n.js:翻譯 34 | ``` 35 | 36 | ## 相關鏈接 37 | 38 | - 官方網站:https://hbl917070.github.io/aeropic/index.html 39 | - TiefSee GitHub:https://github.com/hbl917070/Tiefsee4 40 | 41 | 42 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /css/base.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/css/base.css -------------------------------------------------------------------------------- /download/plugin/NConvert.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/download/plugin/NConvert.zip -------------------------------------------------------------------------------- /download/plugin/QuickLook.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/download/plugin/QuickLook.zip -------------------------------------------------------------------------------- /download/plugin/hdrfix.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/download/plugin/hdrfix.zip -------------------------------------------------------------------------------- /download/plugin/monaco-editor.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/download/plugin/monaco-editor.zip -------------------------------------------------------------------------------- /ejs/_bottom.ejs: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | <%- t("bottom.author") %> 5 | hbl917070(深海異音) 6 |
7 | 8 |
9 | <%- t("bottom.email") %> 10 | hbl917070@gmail.com 11 |
12 | 13 |
-------------------------------------------------------------------------------- /ejs/_head.ejs: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | <%- t("head.title") %> 21 | " /> 22 | " /> 23 | 24 | 25 | " /> 26 | " /> 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /ejs/_header.ejs: -------------------------------------------------------------------------------- 1 | 35 | 36 | -------------------------------------------------------------------------------- /ejs/_script.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ejs/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%- await include("./_head.ejs"); %> 9 | 10 | 11 | 12 | 13 | <%- await include("./_header.ejs"); %> 14 | 15 |
16 | 17 |
18 |
19 | 20 |
21 |

Tiefsee

22 |
23 | 24 |
25 | 26 | <%- t("index.subTitle") %> 27 |
28 | 29 | 30 |
<%- t("index.version", {v:"4.2.7"}) %>
31 | 32 | 47 | 48 |
49 |
50 | 51 | 52 |
53 | 54 | 55 |
56 |
57 |
58 |
<%- t("index.item.windowTheme.title") %>
59 |
<%- t("index.item.windowTheme.text") %>
60 |
61 |
62 |
63 | 64 | Window Theme 65 | 66 |
67 |
68 | 69 | 70 |
71 |
72 |
73 |
74 |
<%- t("index.item.filePanel.title") %>
75 |
<%- t("index.item.filePanel.text") %>
76 |
77 |
78 |
79 |
80 | 81 | File Panel 82 | 83 |
84 |
85 | 86 | 87 |
88 |
89 |
90 |
<%- t("index.item.folderPanel.title") %>
91 |
<%- t("index.item.folderPanel.text") %>
92 |
93 |
94 |
95 | 96 | Folder Panel 97 | 98 |
99 |
100 | 101 | 102 |
103 |
104 |
105 |
<%- t("index.item.informationPanel.title") %>
106 |
<%- t("index.item.informationPanel.text") %>
107 |
108 |
109 |
110 | 111 | Information Panel 112 | 113 |
114 |
115 | 116 | 117 |
118 |
119 |
120 |
<%- t("index.item.bulkView.title") %>
121 |
<%- t("index.item.bulkView.text") %>
122 |
123 |
124 |
125 | 126 | Bulk View 127 | 128 |
129 |
130 | 131 | 132 |
133 |
134 |
135 |
<%- t("index.item.quickDragFile.title") %>
136 |
<%- t("index.item.quickDragFile.text") %>
137 |
138 |
139 |
140 | 141 | Quick Drag File 142 | 143 |
144 |
145 | 146 | 147 |
148 |
149 |
150 |
<%- t("index.item.openWebImage.title") %>
151 |
<%- t("index.item.openWebImage.text") %>
152 |
153 |
154 |
155 | 156 | Open Web Image 157 | 158 |
159 |
160 | 161 |
162 | 163 |
164 | 165 |
166 | 167 | 168 |
169 |
170 | icon 171 |
<%- t("index.item.supportFormats.title") %>
172 |
173 |
<%- t("index.item.supportFormats.text") %>
174 |
175 | 176 |
177 |
178 | icon 179 |
<%- t("index.item.fastStartup.title") %>
180 |
181 |
<%- t("index.item.fastStartup.text") %>
182 |
183 | 184 |
185 |
186 | icon 187 |
<%- t("index.item.onlineImageSearch.title") %>
188 |
189 |
<%- t("index.item.onlineImageSearch.text") %>
190 |
191 |
192 |
193 | 194 |
195 |
196 | icon 197 |
<%- t("index.item.quickLook.title") %>
198 |
199 |
<%- t("index.item.quickLook.text") %>
200 |
201 | 202 |
203 |
204 | icon 205 |
<%- t("index.item.otherFeatures.title") %>
206 |
207 |
<%- t("index.item.otherFeatures.text") %>
208 |
209 |
210 | 211 | 212 | 213 |
214 | 215 | <%- await include("./_bottom.ejs"); %> 216 | 217 | <%- await include("./_script.ejs"); %> 218 | 219 | 220 | 221 | -------------------------------------------------------------------------------- /ejs/plugin.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%- await include("./_head.ejs"); %> 9 | 10 | 11 | 12 | 13 | <%- await include("./_header.ejs"); %> 14 | 15 |
16 | 17 | 18 |
19 | 20 | 21 |
22 | <%- t("plugin.pluginList") %> 23 |
24 | 25 |
26 |
27 |
28 | 29 |
30 |
31 |
QuickLook
32 |
<%- t("plugin.item.quickLook.subTitle") %>
33 | <%- t("plugin.download") %> 34 |
35 |
36 |
37 |
38 | <%- t("plugin.item.quickLook.text") %> 39 |
40 | 41 |
42 |
43 |
44 | 45 |
46 |
47 |
48 | 49 |
50 |
51 |
monaco-editor
52 |
<%- t("plugin.item.monacoEditor.subTitle") %>
53 | <%- t("plugin.download") %> 54 |
55 |
56 |
57 |
58 | <%- t("plugin.item.monacoEditor.text") %> 59 |
60 |
61 |
62 |
63 | 64 |
65 |
66 |
67 | 68 |
69 |
70 |
WebViewer
71 |
<%- t("plugin.item.webViewer.subTitle") %>
72 | <%- t("plugin.download") %> 73 |
74 |
75 |
76 |
77 | <%- t("plugin.item.webViewer.text") %> 78 |
79 |
80 |
81 |
82 | 83 |
84 |
85 |
86 | 87 |
88 |
89 |
hdrfix
90 |
<%- t("plugin.item.hdrfix.subTitle") %>
91 | <%- t("plugin.download") %> 92 |
93 |
94 |
95 |
96 | <%- t("plugin.item.hdrfix.text") %> 97 |
98 | 99 |
100 |
101 |
102 | 103 | 104 |
105 | <%- t("plugin.pluginInstallationMethod") %> 106 |
107 |
108 | <%- t("plugin.pluginInstallationInstructions") %> 109 |
110 |
111 | 112 |
113 | 114 | 115 | <%- await include("./_bottom.ejs"); %> 116 | 117 | <%- await include("./_script.ejs"); %> 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /ejs/support.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%- await include("./_head.ejs"); %> 9 | 10 | 11 | 12 | 13 | <%- await include("./_header.ejs"); %> 14 | 15 |
16 | 17 | 18 | 19 | 20 |
21 |
22 | <%- t("support.description") %> 23 |
24 |
25 | 26 | 27 | 28 | 29 |
30 |
31 | 32 | 33 |
34 |

<%- t("support.faqItem.differenceBetweenStoreAndPortable.title") %>

35 |
<%- t("support.faqItem.differenceBetweenStoreAndPortable.text") %>
36 |
37 | 38 | 39 |
40 |

<%- t("support.faqItem.storeVersionLarger.title") %>

41 |
<%- t("support.faqItem.storeVersionLarger.text") %>
42 |
43 | 44 | 45 |
46 |

<%- t("support.faqItem.dataCollection.title") %>

47 |
<%- t("support.faqItem.dataCollection.text") %>
48 |
49 | 50 | 51 |
52 |

<%- t("support.faqItem.webView2Error.title") %>

53 |
<%- t("support.faqItem.webView2Error.text") %>
54 |
55 | 56 | 57 |
58 |

<%- t("support.faqItem.aeroAcrylicError.title") %>

59 |
<%- t("support.faqItem.aeroAcrylicError.text") %>
60 |
61 | 62 |
63 | 64 |
65 |
66 | 67 | <%- await include("./_bottom.ejs"); %> 68 | 69 | <%- await include("./_script.ejs"); %> 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /en/plugin.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 24 | 25 | 26 | 27 | Tiefsee Image Viewer 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 89 | 90 | 93 | 94 |
95 | 96 | 97 |
98 | 99 | 100 |
101 | Tiefsee Plugin List 102 |
103 | 104 |
105 |
106 |
107 | 108 |
109 |
110 |
QuickLook
111 |
Select a file on the desktop or in a folder and then press and hold the spacebar to preview the file
112 | Download 113 |
114 |
115 |
116 |
117 | 118 |
119 | GitHub:
120 | https://github.com/hbl917070/Tiefsee.QuickLook 121 | 122 |
123 | 124 |
125 |
126 |
127 | 128 |
129 |
130 |
131 | 132 |
133 |
134 |
monaco-editor
135 |
Let Tiefsee use monaco-editor to load text files. Commonly used for reading and editing code
136 | Download 137 |
138 |
139 |
140 |
141 | 142 | monaco-editor demo 143 |

144 | GitHub:
145 | https://github.com/microsoft/monaco-editor 146 | 147 |
148 |
149 |
150 |
151 | 152 |
153 |
154 |
155 | 156 |
157 |
158 |
WebViewer
159 |
Let Tiefsee support "doc, docx, ppt, pptx"
160 | Download 161 |
162 |
163 |
164 |
165 | 166 | Click "Download" to enter the official website's download center.
167 | It is recommended to download version 8.12, as other newer versions have not been tested for compatibility with Tiefsee.
168 |
169 | Web → Older Versions → Version 8.12
170 |
171 | ※ After unzipping, if the folder name is "WebViewer-8.12.0", change it to "WebViewer".
172 |
173 | WebViewer demo 174 |

175 | WebViewer is a product of PDFTron, and their official website provides a free trial. If you need a license for PDFTron, please visit:
176 | https://www.pdftron.com 177 | 178 |
179 |
180 |
181 |
182 | 183 |
184 |
185 |
186 | 187 |
188 |
189 |
hdrfix
190 |
Let JPEG XR (.jxr) display HDR colors better
191 | (Process HDR color space to SDR color space with Hable algorithm)
192 | Download 193 |
194 |
195 |
196 |
197 | 198 |
199 | GitHub:
200 | https://github.com/bvibber/hdrfix 201 | 202 |
203 | 204 |
205 |
206 |
207 | 208 | 209 |
210 | Plugin Installation Method 211 |
212 |
213 | 214 | The plugins downloaded here are ZIP files. Unzip and place them in the 'Plugin' folder 215 |
216 | Then restart Tiefsee. 217 |

218 |
You can open the 'Plugin' folder from here
219 | How to open 「Plugin」 directory 220 |

221 |
Schematic after installation
222 | Schematic 223 | 224 |
225 |
226 | 227 |
228 | 229 | 230 |
231 | 232 |
233 | Author: 234 | hbl917070(深海異音) 235 |
236 | 237 |
238 | Email: 239 | hbl917070@gmail.com 240 |
241 | 242 |
243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 263 | 264 | 265 | 266 | 267 | 274 | 275 | 276 | 277 | -------------------------------------------------------------------------------- /en/support.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 24 | 25 | 26 | 27 | Tiefsee Image Viewer 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 89 | 90 | 93 | 94 |
95 | 96 | 97 | 98 | 99 |
100 |
101 | 102 | Tiefsee is an open-source image viewer for Windows with powerful features and ease of use.
103 | The project is built with .NET 8 and developed using C#, TypeScript, SCSS, and EJS.
104 | The entire user interface is rendered using WebView2, providing a smooth user experience.

105 | 106 | Minimum requirements: 64-bit Windows 10 107 | 108 |
109 |
110 | 111 | 112 | 113 | 114 |
115 |
116 | 117 | 118 |
119 |

What is the difference between the Store and Portable versions?

120 |
121 |
    122 |
  • There is no functional difference between the Store and Portable versions
  • 123 |
  • The Store version can be updated through the store and will not leave any data after Tiefsee is deleted
  • 124 |
  • The Portable version requires the installation of .NET Desktop Runtime 8 (x64) to run
  • 125 |
  • The Portable version can use 'portable mode' by creating a PortableMode folder next to Tiefsee.exe, and all data will be stored inside
  • 126 |
127 | If there are no special requirements, it is recommended to use the Store version 128 |
129 |
130 | 131 | 132 |
133 |

Why is the Store version larger than the Portable version?

134 |
135 | The Store version packages the entire .NET runtime environment into the program during compilation, and Microsoft has not yet proposed an effective solution 136 |
137 |
138 | 139 | 140 |
141 |

Does Tiefsee collect user data?

142 |
143 | Tiefsee does not collect any user data,
144 | However, when using 'Image Search', Tiefsee will first upload the image to 145 | a temporary image server, 146 | and then upload it to a third-party image search engine,
147 | The image copy on the server will be permanently deleted after 60 seconds. 148 |
149 |
150 | 151 | 152 |
153 |

Program displays 'WebView2 must be installed to run this application' when starting

154 |
155 | Possible reasons are: 156 |
    157 |
  • WebView2 is not installed on the computer: 'Click here' to download
  • 158 |
  • WebView2 is installed but failed to install: Remove the old WebView2, then right-click on 'WebView2 installer' and run as administrator
  • 159 |
  • WebView2 initialization error: Avoid special characters such as Chinese, Japanese, and Korean in the Tiefsee path
  • 160 |
161 |
162 |
163 | 164 | 165 |
166 |

Abnormalities occur after using frosted glass (AERO, Acrylic) window effects

167 |
168 | The frosted glass window effect is not an officially released API of Windows. This feature may have bugs or be unusable on some devices. Common problems include: 169 |
    170 |
  • The blurred area overflows outside the window
  • 171 |
  • Tiefsee's window is severely delayed when moving
  • 172 |
173 |
174 |
175 | 176 |
177 | 178 |
179 |
180 | 181 |
182 | 183 |
184 | Author: 185 | hbl917070(深海異音) 186 |
187 | 188 |
189 | Email: 190 | hbl917070@gmail.com 191 |
192 | 193 |
194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 214 | 215 | 216 | 217 | 218 | 225 | 226 | 227 | 228 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | /*const fs = require("fs"); 2 | const path = require("path"); 3 | 4 | const gulp = require("gulp"); 5 | const ejs = require("gulp-ejs"); 6 | const rename = require("gulp-rename"); 7 | const gulpEsbuild = require("gulp-esbuild"); 8 | const sass = require("gulp-sass")(require("sass")); 9 | */ 10 | 11 | import fs from 'fs'; 12 | import path from 'path'; 13 | 14 | import gulp from 'gulp'; 15 | import ejs from 'gulp-ejs'; 16 | import rename from 'gulp-rename'; 17 | import gulpEsbuild from 'gulp-esbuild'; 18 | import sassFactory from 'gulp-sass'; 19 | import sassCompiler from 'sass'; 20 | const sass = sassFactory(sassCompiler); 21 | 22 | import { I18n } from "./I18n.js"; 23 | import { langData } from "./I18n.js"; 24 | var i18n = new I18n(); 25 | i18n.setData(langData); 26 | 27 | // scss 轉 css 28 | gulp.task("scss", async () => { 29 | await sleep(1); 30 | return gulp.src("./scss/**/*.scss") // 指定要處理的 Scss 檔案目錄 31 | .pipe(sass({ 32 | //outputStyle: "compressed", //壓縮 33 | })) 34 | .pipe(gulp.dest("./css")) // 指定編譯後的 css 檔案目錄 35 | }); 36 | 37 | // ejs 轉 html 38 | gulp.task("ejs", async () => { 39 | await sleep(1); 40 | let arLang = [ 41 | { lang: "en", dest: "./" }, 42 | { lang: "en", dest: "./en/" }, 43 | { lang: "zh-TW", dest: "./zh-TW/" }, 44 | ]; 45 | let arSrc = [ 46 | "./ejs/index.ejs", 47 | "./ejs/plugin.ejs", //擴充套件 48 | "./ejs/support.ejs", //常見問題 49 | ]; 50 | 51 | for (let i = 0; i < arLang.length; i++) { 52 | const lang = arLang[i].lang; 53 | const dest = arLang[i].dest; 54 | for (let j = 0; j < arSrc.length; j++) { 55 | const src = arSrc[j]; 56 | 57 | let urlRoot = '.'.repeat(dest.match(/[/]/g).length); 58 | 59 | gulp.src(src) 60 | .pipe(ejs({ 61 | readFile: readFile, 62 | lang: lang, 63 | root: urlRoot, 64 | t: (key, value) => { return i18n.t(key, value, lang) }, 65 | }, { async: true })) 66 | .pipe(rename({ extname: ".html" })) //修改輸出的副檔名 67 | .pipe(gulp.dest(dest)) 68 | } 69 | } 70 | /* 71 | gulp.src("./ejs/index.ejs") 72 | .pipe(ejs({ 73 | readFile: readFile, 74 | lang: "en" 75 | }, { async: true })) 76 | .pipe(rename({ extname: ".html" })) //修改輸出的副檔名 77 | .pipe(gulp.dest("./")) 78 | */ 79 | }); 80 | 81 | // ts 轉 js 82 | gulp.task("ts", async () => { 83 | await sleep(1); 84 | return gulp.src("./ts/app.ts") 85 | .pipe(gulpEsbuild({ 86 | //minify: true, //壓縮 87 | outfile: "app.js", 88 | bundle: true, 89 | //loader: { ".tsx": "tsx", }, 90 | })) 91 | .pipe(gulp.dest("./js")) 92 | }); 93 | 94 | //檔案變化時 95 | gulp.task("watch", gulp.series("scss", "ts", "ejs", () => { 96 | gulp.watch("./scss/**/*.scss", gulp.series("scss")); 97 | gulp.watch("./ts/**/*.ts", gulp.series("ts")); 98 | gulp.watch("./ejs/**/*.ejs", gulp.series("ejs")); 99 | })); 100 | 101 | 102 | //------------------------------------------------ 103 | 104 | 105 | /** 106 | * 讀取文字檔(用於ejs匯入svg 107 | * @param {*} path 108 | * @returns 109 | */ 110 | async function readFile(path) { 111 | let t = await new Promise((resolve, reject) => { 112 | fs.readFile(path, "utf8", function (err, data) { 113 | resolve(data); //繼續往下執行 114 | }); 115 | }) 116 | return t; 117 | } 118 | 119 | 120 | async function sleep(ms) { 121 | await new Promise((resolve, reject) => { 122 | setTimeout(function () { 123 | resolve(1); //繼續往下執行 124 | }, ms); 125 | }) 126 | } 127 | -------------------------------------------------------------------------------- /img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/bg.jpg -------------------------------------------------------------------------------- /img/index/bulkView.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/index/bulkView.webp -------------------------------------------------------------------------------- /img/index/filePanel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/index/filePanel.jpg -------------------------------------------------------------------------------- /img/index/folderPanel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/index/folderPanel.jpg -------------------------------------------------------------------------------- /img/index/informationPanel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/index/informationPanel.jpg -------------------------------------------------------------------------------- /img/index/openWebImage.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/index/openWebImage.webp -------------------------------------------------------------------------------- /img/index/quickDragFile.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/index/quickDragFile.webp -------------------------------------------------------------------------------- /img/index/windowTheme.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/index/windowTheme.jpg -------------------------------------------------------------------------------- /img/plugin/demo-WebViewer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/plugin/demo-WebViewer.jpg -------------------------------------------------------------------------------- /img/plugin/demo-monaco-editor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/plugin/demo-monaco-editor.jpg -------------------------------------------------------------------------------- /img/plugin/icon-NConvert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/plugin/icon-NConvert.png -------------------------------------------------------------------------------- /img/plugin/icon-QuickLook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/plugin/icon-QuickLook.png -------------------------------------------------------------------------------- /img/plugin/icon-WebViewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/plugin/icon-WebViewer.png -------------------------------------------------------------------------------- /img/plugin/icon-hdrfix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/plugin/icon-hdrfix.png -------------------------------------------------------------------------------- /img/plugin/icon-monaco-editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/plugin/icon-monaco-editor.png -------------------------------------------------------------------------------- /img/plugin/plugin-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/plugin/plugin-1.png -------------------------------------------------------------------------------- /img/plugin/plugin-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/plugin/plugin-2.png -------------------------------------------------------------------------------- /img/svg/acceptMedium.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /img/svg/cubeShape.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /img/svg/github.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /img/svg/globe.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /img/svg/lightningBolt.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /img/svg/microsoftStore.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /img/svg/productVariant.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /img/svg/puzzle.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /img/svg/readingMode.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /img/svg/searchAndApps.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /img/svg/webEnvironment.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /img/tiefseeLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/img/tiefseeLogo.png -------------------------------------------------------------------------------- /img_view/img/add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /img_view/img/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /img_view/img/full-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /img_view/img/full-vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /img_view/img/full.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /img_view/img/open.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 14 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /img_view/img/r.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /img_view/img/subtrat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /js/app.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | // ts/app.ts 3 | document.addEventListener("DOMContentLoaded", () => { 4 | new App(); 5 | }); 6 | function getDom(selectors) { 7 | return document.querySelector(selectors); 8 | } 9 | function isMobileDevice() { 10 | let mobileDevices = ["Android", "webOS", "iPhone", "iPad", "iPod", "BlackBerry", "Windows Phone"]; 11 | for (var i = 0; i < mobileDevices.length; i++) { 12 | if (navigator.userAgent.match(mobileDevices[i])) { 13 | return true; 14 | } 15 | } 16 | return false; 17 | } 18 | var App = class { 19 | constructor() { 20 | let domHeader = getDom("#header"); 21 | let domBtnIndex = domHeader.querySelector(".js-index"); 22 | let domBtnPlugin = domHeader.querySelector(".js-plugin"); 23 | let domBtnSupport = domHeader.querySelector(".js-support"); 24 | let domBtnLang = domHeader.querySelector(".js-lang"); 25 | initHearder(); 26 | if (getDom(".page-index") !== null) { 27 | initIndex(); 28 | domBtnIndex.setAttribute("active", "true"); 29 | } else if (getDom(".page-plugin") !== null) { 30 | initPlugin(); 31 | domBtnPlugin.setAttribute("active", "true"); 32 | } else if (getDom(".page-support") !== null) { 33 | initSupport(); 34 | domBtnSupport.setAttribute("active", "true"); 35 | } 36 | function initHearder() { 37 | if (isMobileDevice() === false) { 38 | VanillaTilt.init(getDom(".header-content"), { 39 | max: 3, 40 | speed: 400 41 | //scale: 1.1 42 | }); 43 | } 44 | let domMenuLang = getDom("#menu-lang"); 45 | let isShow = false; 46 | domBtnLang?.addEventListener("pointerdown", () => { 47 | setTimeout(() => { 48 | domBtnLang?.setAttribute("hover", "true"); 49 | domMenuLang?.setAttribute("active", "true"); 50 | isShow = true; 51 | }, 1); 52 | }); 53 | window.addEventListener("pointerdown", (e) => { 54 | if (isShow) { 55 | domBtnLang?.setAttribute("hover", ""); 56 | domMenuLang?.setAttribute("active", ""); 57 | } 58 | }, false); 59 | let lang = document.documentElement.lang; 60 | let path = window.location.pathname; 61 | let pageName = "/" + path.split("/").pop(); 62 | let arItem = domMenuLang?.querySelectorAll(".item"); 63 | for (let i = 0; i < arItem.length; i++) { 64 | const item = arItem[i]; 65 | let dataLang = item.getAttribute("data-lang"); 66 | if (dataLang === lang) { 67 | item.setAttribute("active", "true"); 68 | } 69 | item.addEventListener("click", () => { 70 | location.href = `../${dataLang}${pageName}`; 71 | }); 72 | } 73 | } 74 | function initIndex() { 75 | if (isMobileDevice() === false) { 76 | VanillaTilt.init(document.querySelectorAll(".infoBox-link-btn"), { 77 | max: 10, 78 | speed: 400, 79 | //"full-page-listening": true, 80 | scale: 1.05 81 | }); 82 | VanillaTilt.init(document.querySelectorAll(".contentBox2 .item-img"), { 83 | max: 3, 84 | speed: 400, 85 | scale: 1.05 86 | }); 87 | VanillaTilt.init(document.querySelectorAll(".contentBox3 .item"), { 88 | max: 10, 89 | speed: 400 90 | //scale: 1.05 91 | }); 92 | } 93 | } 94 | function initPlugin() { 95 | let ar = document.querySelectorAll(".plugin-item .plugin-moreBtn"); 96 | for (let i = 0; i < ar.length; i++) { 97 | addEvent(ar[i]); 98 | } 99 | function addEvent(btn) { 100 | let dom = btn; 101 | while (true) { 102 | dom = dom.parentNode; 103 | if (dom === null || dom === document.body) { 104 | return; 105 | } 106 | if (dom.className.indexOf("plugin-item") !== -1) { 107 | break; 108 | } 109 | } 110 | btn.addEventListener("click", () => { 111 | if (dom.getAttribute("open") == "true") { 112 | dom.setAttribute("open", ""); 113 | } else { 114 | dom.setAttribute("open", "true"); 115 | } 116 | }); 117 | } 118 | } 119 | function initSupport() { 120 | } 121 | } 122 | }; 123 | })(); 124 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aeropic", 3 | "version": "1.0.0", 4 | "description": "- 官方網站:https://hbl917070.github.io/aeropic/index.html\r - 討論區:https://forum.gamer.com.tw/C.php?bsn=60076&snA=4095280\r - TiefSee原始碼:https://github.com/hbl917070/TiefSee\r - 下載歷史版本:https://github.com/hbl917070/aeropic/tree/master/download", 5 | "main": "index.js", 6 | "type": "module", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/hbl917070/aeropic.git" 13 | }, 14 | "author": "", 15 | "license": "ISC", 16 | "bugs": { 17 | "url": "https://github.com/hbl917070/aeropic/issues" 18 | }, 19 | "homepage": "https://github.com/hbl917070/aeropic#readme", 20 | "dependencies": { 21 | "fs": "^0.0.1-security", 22 | "gulp": "^4.0.2", 23 | "gulp-ejs": "^5.1.0", 24 | "gulp-esbuild": "^0.11.2", 25 | "gulp-rename": "^2.0.0", 26 | "gulp-sass": "^5.1.0", 27 | "path": "^0.12.7", 28 | "sass": "^1.63.6" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /plugin.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 24 | 25 | 26 | 27 | Tiefsee Image Viewer 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 89 | 90 | 93 | 94 |
95 | 96 | 97 |
98 | 99 | 100 |
101 | Tiefsee Plugin List 102 |
103 | 104 |
105 |
106 |
107 | 108 |
109 |
110 |
QuickLook
111 |
Select a file on the desktop or in a folder and then press and hold the spacebar to preview the file
112 | Download 113 |
114 |
115 |
116 |
117 | 118 |
119 | GitHub:
120 | https://github.com/hbl917070/Tiefsee.QuickLook 121 | 122 |
123 | 124 |
125 |
126 |
127 | 128 |
129 |
130 |
131 | 132 |
133 |
134 |
monaco-editor
135 |
Let Tiefsee use monaco-editor to load text files. Commonly used for reading and editing code
136 | Download 137 |
138 |
139 |
140 |
141 | 142 | monaco-editor demo 143 |

144 | GitHub:
145 | https://github.com/microsoft/monaco-editor 146 | 147 |
148 |
149 |
150 |
151 | 152 |
153 |
154 |
155 | 156 |
157 |
158 |
WebViewer
159 |
Let Tiefsee support "doc, docx, ppt, pptx"
160 | Download 161 |
162 |
163 |
164 |
165 | 166 | Click "Download" to enter the official website's download center.
167 | It is recommended to download version 8.12, as other newer versions have not been tested for compatibility with Tiefsee.
168 |
169 | Web → Older Versions → Version 8.12
170 |
171 | ※ After unzipping, if the folder name is "WebViewer-8.12.0", change it to "WebViewer".
172 |
173 | WebViewer demo 174 |

175 | WebViewer is a product of PDFTron, and their official website provides a free trial. If you need a license for PDFTron, please visit:
176 | https://www.pdftron.com 177 | 178 |
179 |
180 |
181 |
182 | 183 |
184 |
185 |
186 | 187 |
188 |
189 |
hdrfix
190 |
Let JPEG XR (.jxr) display HDR colors better
191 | (Process HDR color space to SDR color space with Hable algorithm)
192 | Download 193 |
194 |
195 |
196 |
197 | 198 |
199 | GitHub:
200 | https://github.com/bvibber/hdrfix 201 | 202 |
203 | 204 |
205 |
206 |
207 | 208 | 209 |
210 | Plugin Installation Method 211 |
212 |
213 | 214 | The plugins downloaded here are ZIP files. Unzip and place them in the 'Plugin' folder 215 |
216 | Then restart Tiefsee. 217 |

218 |
You can open the 'Plugin' folder from here
219 | How to open 「Plugin」 directory 220 |

221 |
Schematic after installation
222 | Schematic 223 | 224 |
225 |
226 | 227 |
228 | 229 | 230 |
231 | 232 |
233 | Author: 234 | hbl917070(深海異音) 235 |
236 | 237 |
238 | Email: 239 | hbl917070@gmail.com 240 |
241 | 242 |
243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 263 | 264 | 265 | 266 | 267 | 274 | 275 | 276 | 277 | -------------------------------------------------------------------------------- /scss/_index.scss: -------------------------------------------------------------------------------- 1 | // 首頁 2 | .page-index { 3 | // 上面的資訊區塊 4 | .infoBox { 5 | margin: 0 20px; 6 | 7 | .infoBox-content { 8 | max-width: 800px; 9 | margin: auto; 10 | background-color: rgba(0, 0, 0, 0.5); 11 | backdrop-filter: saturate(180%) blur(20px); 12 | //box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.5); 13 | border: 1px solid rgba(255, 255, 255, 0.2); 14 | border-radius: 10px; 15 | padding: 30px 30px; 16 | } 17 | 18 | .infoBox-title { 19 | display: flex; 20 | align-items: center; 21 | h1 { 22 | font-size: 50px; 23 | margin: 0; 24 | font-weight: 500; 25 | } 26 | } 27 | .infoBox-text { 28 | font-size: 26px; 29 | margin-top: 20px; 30 | margin-bottom: 80px; 31 | // color: rgb(189, 189, 189); 32 | } 33 | 34 | .infoBox-ver { 35 | margin-bottom: 10px; 36 | } 37 | 38 | .infoBox-links { 39 | display: flex; 40 | flex-direction: column; 41 | align-items: flex-start; 42 | text-shadow: 0 0 2px #000; 43 | 44 | .infoBox-links-btns { 45 | display: flex; 46 | flex-direction: row; 47 | flex-wrap: wrap; 48 | } 49 | .infoBox-link-btn { 50 | text-decoration: none; 51 | padding: 0px 20px; 52 | margin-right: 20px; 53 | border: none; 54 | color: rgb(255, 255, 255); 55 | background-color: rgb(0, 0, 0); 56 | border-radius: 5px; 57 | height: 50px; 58 | margin-bottom: 10px; 59 | display: flex; 60 | flex-direction: row; 61 | justify-content: center; 62 | align-items: center; 63 | 64 | img { 65 | width: 30px; 66 | margin-right: 10px; 67 | } 68 | } 69 | .infoBox-link-btn:hover { 70 | background-color: rgb(22, 22, 22); 71 | } 72 | .infoBox-link-link { 73 | margin-top: 20px; 74 | //margin-bottom: 20px; 75 | } 76 | } 77 | 78 | .infoBox-img { 79 | max-width: 80%; 80 | margin-left: auto; 81 | } 82 | } 83 | 84 | .contentBox2 { 85 | margin-top: 100px; 86 | //background-color: rgba(15, 15, 15, 0.5); 87 | //backdrop-filter: saturate(180%) blur(20px); 88 | 89 | margin-left: auto; 90 | margin-right: auto; 91 | max-width: 1200px; 92 | display: flex; 93 | flex-direction: column; 94 | align-items: center; 95 | 96 | .item { 97 | display: flex; 98 | flex-direction: row; 99 | width: 90%; 100 | margin-bottom: 100px; 101 | 102 | .item-1 { 103 | width: 40%; 104 | display: flex; 105 | } 106 | 107 | .item-2 { 108 | width: 60%; 109 | display: flex; 110 | } 111 | .item-1 { 112 | margin-right: 10px; 113 | } 114 | .item-2 { 115 | margin-left: 10px; 116 | } 117 | .item-1-content { 118 | //width: 80%; 119 | //flex: 1; 120 | 121 | display: flex; 122 | flex-direction: column; 123 | justify-content: center; 124 | } 125 | .item-title { 126 | font-size: 32px; 127 | margin-bottom: 10px; 128 | } 129 | .item-text { 130 | color: rgb(189, 189, 189); 131 | } 132 | .item-imgbox { 133 | } 134 | .item-img { 135 | max-width: 100%; 136 | display: block; 137 | } 138 | } 139 | 140 | .item:nth-child(even) { 141 | .item-1 { 142 | order: 2; 143 | } 144 | .item-1 { 145 | margin-right: 0px; 146 | margin-left: 10px; 147 | } 148 | .item-2 { 149 | margin-left: 0px; 150 | margin-right: 10px; 151 | } 152 | } 153 | } 154 | @media screen and (max-width: 800px) { 155 | .contentBox2 { 156 | .item { 157 | flex-wrap: wrap; 158 | } 159 | .item-1 { 160 | width: 100% !important; 161 | order: 1 !important; 162 | margin-bottom: 10px; 163 | } 164 | 165 | .item-2 { 166 | width: 100% !important; 167 | order: 2 !important; 168 | } 169 | } 170 | } 171 | 172 | .contentBox3 { 173 | //margin-top: 50px; 174 | margin-bottom: 10px; 175 | //background-color: rgba(15, 15, 15, 0.5); 176 | //backdrop-filter: saturate(180%) blur(20px); 177 | 178 | margin-left: auto; 179 | margin-right: auto; 180 | max-width: 1200px; 181 | display: flex; 182 | flex-direction: row; 183 | align-items: center; 184 | justify-content: center; 185 | 186 | .item { 187 | width: 33.3%; 188 | border: 1px solid rgba(255, 255, 255, 0.1); 189 | padding: 15px; 190 | margin: 10px; 191 | margin-bottom: 0px; 192 | 193 | min-height: 230px; 194 | border-radius: 10px; 195 | //display: flex; 196 | //justify-content: center; 197 | //flex-direction: column; 198 | 199 | .item-top { 200 | //display: flex; 201 | //flex-direction: row; 202 | //align-items: center; 203 | margin-bottom: 32px; 204 | } 205 | 206 | .item-icon { 207 | height: 30px; 208 | margin-top: 5px; 209 | } 210 | .item-title { 211 | font-size: 24px; 212 | } 213 | .item-text { 214 | color: rgb(189, 189, 189); 215 | } 216 | } 217 | } 218 | 219 | @media screen and (max-width: 650px) { 220 | .contentBox3 { 221 | flex-wrap: wrap; 222 | .item { 223 | width: 100%; 224 | } 225 | } 226 | } 227 | } 228 | -------------------------------------------------------------------------------- /scss/_plugin.scss: -------------------------------------------------------------------------------- 1 | // 擴充套件 2 | .page-plugin { 3 | //display: flex; 4 | //align-items: center; 5 | 6 | .plugin { 7 | margin: 0 20px; 8 | //width: 100%; 9 | } 10 | 11 | .boxBg-header { 12 | max-width: 800px; 13 | font-size: 24px; 14 | margin: auto; 15 | margin-bottom: 10px; 16 | text-shadow: 0 0 10px #000; // 文字陰影 17 | } 18 | 19 | .plugin-item { 20 | overflow: hidden; 21 | } 22 | 23 | .boxBg { 24 | max-width: 800px; 25 | background-color: rgba(0, 0, 0, 0.5); 26 | backdrop-filter: saturate(180%) blur(20px); 27 | //box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.5); 28 | border: 1px solid rgba(255, 255, 255, 0.2); 29 | border-radius: 10px; 30 | 31 | margin-left: auto; 32 | margin-right: auto; 33 | margin-top: 5px; 34 | margin-bottom: 20px; 35 | padding: 10px; 36 | } 37 | 38 | .boxBg img { 39 | max-width: 100%; 40 | margin-top: 3px; 41 | } 42 | 43 | .code { 44 | background-color: rgba(0, 0, 0, 0.1); 45 | padding: 5px; 46 | display: inline-block; 47 | border-radius: 5px; 48 | word-break: break-all; 49 | } 50 | 51 | .plugin-T { 52 | display: flex; 53 | } 54 | 55 | .plugin-L { 56 | /* width: 100px; */ 57 | } 58 | 59 | .plugin-R { 60 | flex: 1; 61 | margin-left: 10px; 62 | } 63 | 64 | .plugin-icon { 65 | width: 80px; 66 | margin: 5px; 67 | } 68 | 69 | .plugin-title { 70 | font-size: 20px; 71 | margin-top: 3px; 72 | } 73 | 74 | .plugin-content { 75 | margin-top: 10px; 76 | font-size: 14px; 77 | } 78 | 79 | .plugin-download { 80 | margin-top: 10px; 81 | padding: 5px 30px; 82 | /* background: linear-gradient(-80deg, #0fdb97, #00eeff); */ 83 | background-color: rgb(0, 166, 255); 84 | display: inline-block; 85 | color: #fff; 86 | font-size: 14px; 87 | border-radius: 5px; 88 | text-decoration: none; 89 | } 90 | 91 | .plugin-download:hover { 92 | cursor: pointer; 93 | background: rgb(0, 146, 225); 94 | } 95 | 96 | .plugin-moreContent { 97 | transition: all 0.3s; 98 | overflow: hidden; 99 | max-height: 0px; 100 | margin-top: 0px; 101 | padding-bottom: 3px; 102 | } 103 | 104 | .plugin-moreBtn { 105 | height: 30px; 106 | margin: -10px; 107 | margin-top: 10px; 108 | border-top: 1px solid rgba(255, 255, 255, 0.1); 109 | position: relative; 110 | 111 | &:hover { 112 | cursor: pointer; 113 | background: rgba(0, 0, 0, 0.1); 114 | } 115 | 116 | &::after { 117 | content: ""; 118 | border-right: 3px solid rgba(255, 255, 255, 0.5); 119 | border-bottom: 3px solid rgba(255, 255, 255, 0.5); 120 | 121 | width: 10px; 122 | height: 10px; 123 | position: absolute; 124 | 125 | right: 0; 126 | left: 0; 127 | bottom: 0; 128 | margin: auto; 129 | transition: transform 0.1s; 130 | transform: rotate(45deg); 131 | top: -6px; 132 | } 133 | } 134 | 135 | .plugin-item[open="true"] .plugin-moreContent { 136 | max-height: none; 137 | margin-top: 10px; 138 | } 139 | 140 | .plugin-item[open="true"] .plugin-moreBtn::after { 141 | transform: rotate(225deg); 142 | top: 6px; 143 | } 144 | } 145 | -------------------------------------------------------------------------------- /scss/_support.scss: -------------------------------------------------------------------------------- 1 | // 常見問題 2 | .page-support { 3 | .infoBox { 4 | //min-height: 600px; 5 | //border-radius: 10px; 6 | margin: 0 20px; 7 | .infoBox-content { 8 | max-width: 800px; 9 | margin: auto; 10 | margin-bottom: 20px; 11 | background-color: rgba(0, 0, 0, 0.5); 12 | backdrop-filter: saturate(180%) blur(20px); 13 | //box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.5); 14 | border: 1px solid rgba(255, 255, 255, 0.2); 15 | border-radius: 10px; 16 | 17 | padding: 30px 30px; 18 | //display: flex; 19 | //flex-direction: row; 20 | } 21 | 22 | .item { 23 | margin-bottom: 30px; 24 | //padding-bottom: 30px; 25 | 26 | &:last-child { 27 | margin-bottom: 0px; 28 | } 29 | 30 | .title { 31 | font-size: 20px; 32 | margin: 0; 33 | margin-bottom: 5px; 34 | 35 | //border-top: 1px solid rgba(255, 255, 255, 0.2); 36 | 37 | padding: 5px 5px; 38 | } 39 | .content { 40 | padding: 10px; 41 | border-radius: 5px; 42 | min-height: 100px; 43 | border: 1px solid rgba(255, 255, 255, 0.2); 44 | 45 | ul { 46 | margin: 3px 0; 47 | } 48 | } 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /scss/app.scss: -------------------------------------------------------------------------------- 1 | @import "./_index"; 2 | @import "./_plugin"; 3 | @import "./_support"; 4 | 5 | html { 6 | height: 100%; 7 | background-color: rgb(0, 11, 29); 8 | 9 | background-image: url(../img/bg.jpg); 10 | background-repeat: no-repeat; 11 | background-size: cover; 12 | background-position: center; 13 | // background-attachment: fixed; 14 | } 15 | body { 16 | margin: 0; 17 | min-height: calc(100% - 50px); 18 | overflow: auto; 19 | color: rgb(240, 240, 240); 20 | font-size: 16px; 21 | position: relative; 22 | } 23 | :root { 24 | } 25 | 26 | * { 27 | box-sizing: border-box; 28 | font-family: "Noto Sans TC", "Noto Sans SC", "微軟正黑體", 29 | "Microsoft JhengHei", "黑體-繁", "蘋果儷中黑", "sans-serif"; 30 | } 31 | 32 | .link { 33 | color: rgb(0, 174, 255); 34 | text-decoration: none; 35 | &:hover { 36 | box-shadow: 0 1px rgb(0, 174, 255); 37 | } 38 | } 39 | 40 | .header { 41 | height: 55px; 42 | 43 | position: sticky; 44 | top: 5px; 45 | margin-top: 50px; 46 | margin-left: 20px; 47 | margin-right: 20px; 48 | margin-bottom: 20px; 49 | z-index: 1; 50 | display: flex; 51 | flex-direction: row; 52 | align-items: center; 53 | justify-content: center; 54 | //overflow-x: auto; 55 | 56 | .header-content { 57 | display: flex; 58 | flex-direction: row; 59 | height: 100%; 60 | flex: 1; 61 | max-width: 800px; 62 | 63 | padding: 0 10px; 64 | position: relative; 65 | 66 | .header-bg { 67 | position: absolute; 68 | left: 0; 69 | right: 0; 70 | top: 0; 71 | bottom: 0; 72 | background-color: rgba(0, 0, 0, 0.5); 73 | backdrop-filter: saturate(180%) blur(20px); 74 | //box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.5); 75 | border: 1px solid rgba(255, 255, 255, 0.2); 76 | border-radius: 10px; 77 | z-index: -1; 78 | } 79 | } 80 | 81 | .header-hr { 82 | width: 1px; 83 | // height:100%; 84 | margin: 10px 10px; 85 | background-color: rgba(255, 255, 255, 0.4); 86 | flex-shrink: 0; 87 | } 88 | .header-item { 89 | height: 100%; 90 | display: flex; 91 | align-items: center; 92 | justify-content: center; 93 | padding: 10px 10px; 94 | flex: 1; 95 | flex-shrink: 0; 96 | position: relative; 97 | color: #fff; 98 | text-decoration: none; 99 | 100 | .logo { 101 | height: 30px; 102 | } 103 | img { 104 | height: 25px; 105 | margin-right: 5px; 106 | } 107 | span { 108 | white-space: nowrap; 109 | } 110 | 111 | &:hover { 112 | background-color: rgba(255, 255, 255, 0.1); 113 | cursor: pointer; 114 | } 115 | // 開啟選單時 116 | &[hover="true"] { 117 | background-color: rgba(255, 255, 255, 0.1); 118 | } 119 | 120 | &[active="true"]::after { 121 | position: absolute; 122 | content: ""; 123 | border-radius: 5px; 124 | width: 5px; 125 | height: 5px; 126 | background-color: rgb(255, 255, 255); 127 | box-shadow: 0px 0px 3px 2px rgb(0, 174, 255); 128 | bottom: 4px; 129 | } 130 | } 131 | } 132 | 133 | @media screen and (max-width: 650px) { 134 | .header { 135 | .header-item { 136 | img { 137 | margin-right: 0; 138 | } 139 | span { 140 | display: none; 141 | } 142 | } 143 | } 144 | } 145 | 146 | .menu-lang { 147 | position: absolute; 148 | width: 120px; 149 | top: 50px; 150 | left: auto; 151 | right: auto; 152 | margin: auto; 153 | background-color: rgba(0, 0, 0, 0.5); 154 | backdrop-filter: saturate(180%) blur(20px); 155 | //box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.5); 156 | border: 1px solid rgba(255, 255, 255, 0.2); 157 | border-radius: 10px; 158 | overflow: hidden; 159 | 160 | //display: none; 161 | opacity: 0; 162 | transform: translateY(-10px); 163 | transition: all 0.2s; 164 | pointer-events: none; 165 | 166 | &[active="true"] { 167 | //display: block; 168 | opacity: 1; 169 | transform: translateY(0px); 170 | pointer-events: initial; 171 | padding: 10px 0; 172 | } 173 | 174 | .item { 175 | height: 35px; 176 | padding: 0 10px; 177 | display: flex; 178 | align-items: center; 179 | padding-left: 35px; 180 | 181 | &:hover { 182 | cursor: pointer; 183 | background-color: rgba(255, 255, 255, 0.1); 184 | } 185 | &[active="true"] { 186 | background-image: url(../img/svg/acceptMedium.svg); 187 | background-size: 20px; 188 | background-position: 10px 10px; 189 | background-repeat: no-repeat; 190 | } 191 | } 192 | } 193 | 194 | .page { 195 | padding-bottom: 180px; 196 | } 197 | 198 | .page-title { 199 | max-width: 800px; 200 | font-size: 24px; 201 | margin: auto; 202 | margin-bottom: 10px; 203 | text-shadow: 0 0 10px #000; 204 | } 205 | 206 | .bottom { 207 | background-color: rgba(0, 0, 0, 0.5); 208 | backdrop-filter: saturate(180%) blur(20px); 209 | //box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.5); 210 | border-top: 1px solid rgba(255, 255, 255, 0.2); 211 | //border-radius: 10px; 212 | 213 | position: absolute; 214 | bottom: 0px; 215 | left: 0; 216 | right: 0; 217 | 218 | .item { 219 | display: inline-block; 220 | font-size: 16px; 221 | line-height: 20px; 222 | margin: 2px; 223 | padding: 15px; 224 | border-right: 1px rgba(255, 255, 255, 0.1) solid; 225 | } 226 | } 227 | @media screen and (max-width: 650px) { 228 | .bottom { 229 | .item { 230 | border-right: none; 231 | } 232 | } 233 | } 234 | -------------------------------------------------------------------------------- /sitemap.txt: -------------------------------------------------------------------------------- 1 | https://hbl917070.github.io/aeropic/ 2 | https://hbl917070.github.io/aeropic/index.html 3 | https://hbl917070.github.io/aeropic/plugin.html 4 | https://hbl917070.github.io/aeropic/support.html 5 | 6 | https://hbl917070.github.io/aeropic/zh-TW/ 7 | https://hbl917070.github.io/aeropic/zh-TW/index.html 8 | https://hbl917070.github.io/aeropic/zh-TW/plugin.html 9 | https://hbl917070.github.io/aeropic/zh-TW/support.html 10 | 11 | https://hbl917070.github.io/aeropic/en/ 12 | https://hbl917070.github.io/aeropic/en/index.html 13 | https://hbl917070.github.io/aeropic/en/plugin.html 14 | https://hbl917070.github.io/aeropic/en/support.html 15 | 16 | https://hbl917070.github.io/aeropic/v3/ 17 | https://hbl917070.github.io/aeropic/v3/index.html -------------------------------------------------------------------------------- /support.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 24 | 25 | 26 | 27 | Tiefsee Image Viewer 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 89 | 90 | 93 | 94 |
95 | 96 | 97 | 98 | 99 |
100 |
101 | 102 | Tiefsee is an open-source image viewer for Windows with powerful features and ease of use.
103 | The project is built with .NET 8 and developed using C#, TypeScript, SCSS, and EJS.
104 | The entire user interface is rendered using WebView2, providing a smooth user experience.

105 | 106 | Minimum requirements: 64-bit Windows 10 107 | 108 |
109 |
110 | 111 | 112 | 113 | 114 |
115 |
116 | 117 | 118 |
119 |

What is the difference between the Store and Portable versions?

120 |
121 |
    122 |
  • There is no functional difference between the Store and Portable versions
  • 123 |
  • The Store version can be updated through the store and will not leave any data after Tiefsee is deleted
  • 124 |
  • The Portable version requires the installation of .NET Desktop Runtime 8 (x64) to run
  • 125 |
  • The Portable version can use 'portable mode' by creating a PortableMode folder next to Tiefsee.exe, and all data will be stored inside
  • 126 |
127 | If there are no special requirements, it is recommended to use the Store version 128 |
129 |
130 | 131 | 132 |
133 |

Why is the Store version larger than the Portable version?

134 |
135 | The Store version packages the entire .NET runtime environment into the program during compilation, and Microsoft has not yet proposed an effective solution 136 |
137 |
138 | 139 | 140 |
141 |

Does Tiefsee collect user data?

142 |
143 | Tiefsee does not collect any user data,
144 | However, when using 'Image Search', Tiefsee will first upload the image to 145 | a temporary image server, 146 | and then upload it to a third-party image search engine,
147 | The image copy on the server will be permanently deleted after 60 seconds. 148 |
149 |
150 | 151 | 152 |
153 |

Program displays 'WebView2 must be installed to run this application' when starting

154 |
155 | Possible reasons are: 156 |
    157 |
  • WebView2 is not installed on the computer: 'Click here' to download
  • 158 |
  • WebView2 is installed but failed to install: Remove the old WebView2, then right-click on 'WebView2 installer' and run as administrator
  • 159 |
  • WebView2 initialization error: Avoid special characters such as Chinese, Japanese, and Korean in the Tiefsee path
  • 160 |
161 |
162 |
163 | 164 | 165 |
166 |

Abnormalities occur after using frosted glass (AERO, Acrylic) window effects

167 |
168 | The frosted glass window effect is not an officially released API of Windows. This feature may have bugs or be unusable on some devices. Common problems include: 169 |
    170 |
  • The blurred area overflows outside the window
  • 171 |
  • Tiefsee's window is severely delayed when moving
  • 172 |
173 |
174 |
175 | 176 |
177 | 178 |
179 |
180 | 181 |
182 | 183 |
184 | Author: 185 | hbl917070(深海異音) 186 |
187 | 188 |
189 | Email: 190 | hbl917070@gmail.com 191 |
192 | 193 |
194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 214 | 215 | 216 | 217 | 218 | 225 | 226 | 227 | 228 | -------------------------------------------------------------------------------- /ts/app.ts: -------------------------------------------------------------------------------- 1 | declare var VanillaTilt: any; //3D互動 2 | 3 | 4 | 5 | document.addEventListener("DOMContentLoaded", () => { 6 | 7 | new App(); 8 | 9 | }); 10 | 11 | /** */ 12 | function getDom(selectors: string) { 13 | return document.querySelector(selectors); 14 | } 15 | 16 | /** 檢測是否為手機 */ 17 | function isMobileDevice() { 18 | let mobileDevices = ["Android", "webOS", "iPhone", "iPad", "iPod", "BlackBerry", "Windows Phone"]; 19 | for (var i = 0; i < mobileDevices.length; i++) { 20 | if (navigator.userAgent.match(mobileDevices[i])) { 21 | return true; 22 | } 23 | } 24 | return false; 25 | } 26 | 27 | 28 | class App { 29 | constructor() { 30 | 31 | let domHeader = getDom("#header") as HTMLElement; 32 | let domBtnIndex = domHeader.querySelector(".js-index") as HTMLElement; 33 | let domBtnPlugin = domHeader.querySelector(".js-plugin") as HTMLElement; 34 | let domBtnSupport = domHeader.querySelector(".js-support") as HTMLElement; 35 | let domBtnLang = domHeader.querySelector(".js-lang") as HTMLElement; 36 | 37 | initHearder(); 38 | 39 | if (getDom(".page-index") !== null) { 40 | initIndex(); 41 | domBtnIndex.setAttribute("active", "true"); 42 | } 43 | else if (getDom(".page-plugin") !== null) { 44 | initPlugin(); 45 | domBtnPlugin.setAttribute("active", "true"); 46 | } 47 | else if (getDom(".page-support") !== null) { 48 | initSupport(); 49 | domBtnSupport.setAttribute("active", "true"); 50 | } 51 | 52 | /** 53 | * 54 | */ 55 | function initHearder() { 56 | if (isMobileDevice() === false) { 57 | VanillaTilt.init(getDom(".header-content"), { 58 | max: 3, 59 | speed: 400, 60 | //scale: 1.1 61 | }); 62 | } 63 | //---------- 64 | 65 | // 顯示或隱藏語言選單 66 | let domMenuLang = getDom("#menu-lang") as HTMLElement; 67 | let isShow = false; 68 | 69 | domBtnLang?.addEventListener("pointerdown", () => { 70 | setTimeout(() => { 71 | domBtnLang?.setAttribute("hover", "true"); 72 | domMenuLang?.setAttribute("active", "true"); 73 | isShow = true; 74 | }, 1); 75 | }) 76 | window.addEventListener("pointerdown", (e) => { 77 | if (isShow) { 78 | domBtnLang?.setAttribute("hover", ""); 79 | domMenuLang?.setAttribute("active", ""); 80 | //e.preventDefault(); 81 | } 82 | }, false) 83 | 84 | //---------- 85 | 86 | // 切換語言 87 | let lang = document.documentElement.lang; //取得目前的語言 88 | let path = window.location.pathname; 89 | let pageName = '/' + path.split('/').pop(); // 取得目前的頁面,例如 "/support.html" 90 | 91 | let arItem = domMenuLang?.querySelectorAll(".item"); 92 | for (let i = 0; i < arItem.length; i++) { 93 | const item = arItem[i]; 94 | let dataLang = item.getAttribute("data-lang"); 95 | 96 | //根據目前的語言來設定打勾 97 | if (dataLang === lang) { 98 | item.setAttribute("active", "true"); 99 | } 100 | 101 | //切換語言 102 | item.addEventListener("click", () => { 103 | location.href = `../${dataLang}${pageName}`; 104 | }) 105 | } 106 | 107 | } 108 | 109 | /** 110 | * 首頁 111 | */ 112 | function initIndex() { 113 | if (isMobileDevice() === false) { 114 | VanillaTilt.init(document.querySelectorAll(".infoBox-link-btn"), { 115 | max: 10, 116 | speed: 400, 117 | //"full-page-listening": true, 118 | scale: 1.05 119 | }); 120 | VanillaTilt.init(document.querySelectorAll(".contentBox2 .item-img"), { 121 | max: 3, 122 | speed: 400, 123 | scale: 1.05 124 | }); 125 | VanillaTilt.init(document.querySelectorAll(".contentBox3 .item"), { 126 | max: 10, 127 | speed: 400, 128 | //scale: 1.05 129 | }); 130 | } 131 | } 132 | 133 | /** 134 | * 擴充套件 135 | */ 136 | function initPlugin() { 137 | 138 | //初始化手風琴功能 139 | let ar = document.querySelectorAll(".plugin-item .plugin-moreBtn"); 140 | for (let i = 0; i < ar.length; i++) { 141 | addEvent(ar[i]); 142 | } 143 | 144 | function addEvent(btn) { 145 | let dom = btn; 146 | 147 | while (true) { //取得要設定open="true"的父親物件 148 | dom = dom.parentNode; 149 | if (dom === null || dom === document.body) { 150 | return; 151 | } 152 | if (dom.className.indexOf("plugin-item") !== -1) { 153 | break; 154 | } 155 | } 156 | 157 | btn.addEventListener("click", () => { 158 | if (dom.getAttribute("open") == "true") { 159 | dom.setAttribute("open", "") 160 | } else { 161 | dom.setAttribute("open", "true") 162 | } 163 | }) 164 | } 165 | } 166 | 167 | /** 168 | * 常見問題 169 | */ 170 | function initSupport() { 171 | 172 | } 173 | 174 | 175 | } 176 | } 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /v3/download/AeroPic_1_0_0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/AeroPic_1_0_0.zip -------------------------------------------------------------------------------- /v3/download/AeroPic_1_0_1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/AeroPic_1_0_1.zip -------------------------------------------------------------------------------- /v3/download/AeroPic_1_1_2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/AeroPic_1_1_2.zip -------------------------------------------------------------------------------- /v3/download/AeroPic_1_3_0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/AeroPic_1_3_0.zip -------------------------------------------------------------------------------- /v3/download/AeroPic_1_3_1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/AeroPic_1_3_1.zip -------------------------------------------------------------------------------- /v3/download/AeroPic_2_1_0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/AeroPic_2_1_0.zip -------------------------------------------------------------------------------- /v3/download/AeroPic_2_2_0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/AeroPic_2_2_0.zip -------------------------------------------------------------------------------- /v3/download/AeroPic_2_3_1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/AeroPic_2_3_1.zip -------------------------------------------------------------------------------- /v3/download/AeroPic_2_4_0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/AeroPic_2_4_0.zip -------------------------------------------------------------------------------- /v3/download/AeroPic_2_4_1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/AeroPic_2_4_1.zip -------------------------------------------------------------------------------- /v3/download/AeroPic_2_5_0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/AeroPic_2_5_0.zip -------------------------------------------------------------------------------- /v3/download/TiefSee_2_7_0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/TiefSee_2_7_0.zip -------------------------------------------------------------------------------- /v3/download/TiefSee_2_7_1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/TiefSee_2_7_1.zip -------------------------------------------------------------------------------- /v3/download/TiefSee_2_7_2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/TiefSee_2_7_2.zip -------------------------------------------------------------------------------- /v3/download/TiefSee_2_7_3.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/TiefSee_2_7_3.zip -------------------------------------------------------------------------------- /v3/download/TiefSee_3_0_1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/TiefSee_3_0_1.zip -------------------------------------------------------------------------------- /v3/download/TiefSee_3_0_2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/download/TiefSee_3_0_2.zip -------------------------------------------------------------------------------- /v3/imgs/bac.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/bac.jpg -------------------------------------------------------------------------------- /v3/imgs/bac_aero.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/bac_aero.jpg -------------------------------------------------------------------------------- /v3/imgs/download_pixiv/1-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/download_pixiv/1-1.jpg -------------------------------------------------------------------------------- /v3/imgs/download_pixiv/1-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/download_pixiv/1-2.jpg -------------------------------------------------------------------------------- /v3/imgs/download_pixiv/2-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/download_pixiv/2-1.jpg -------------------------------------------------------------------------------- /v3/imgs/explain_edit_default/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_edit_default/1.jpg -------------------------------------------------------------------------------- /v3/imgs/explain_edit_default/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_edit_default/10.jpg -------------------------------------------------------------------------------- /v3/imgs/explain_edit_default/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_edit_default/2.jpg -------------------------------------------------------------------------------- /v3/imgs/explain_edit_default/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_edit_default/3.jpg -------------------------------------------------------------------------------- /v3/imgs/explain_edit_default/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_edit_default/4.jpg -------------------------------------------------------------------------------- /v3/imgs/explain_edit_default/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_edit_default/5.jpg -------------------------------------------------------------------------------- /v3/imgs/explain_edit_default/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_edit_default/6.jpg -------------------------------------------------------------------------------- /v3/imgs/explain_edit_default/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_edit_default/7.jpg -------------------------------------------------------------------------------- /v3/imgs/explain_edit_default/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_edit_default/8.jpg -------------------------------------------------------------------------------- /v3/imgs/explain_edit_default/movie01.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_edit_default/movie01.mp4 -------------------------------------------------------------------------------- /v3/imgs/explain_edit_default/movie01.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_edit_default/movie01.webm -------------------------------------------------------------------------------- /v3/imgs/explain_soft/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_soft/1.jpg -------------------------------------------------------------------------------- /v3/imgs/explain_soft/movie01.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_soft/movie01.mp4 -------------------------------------------------------------------------------- /v3/imgs/explain_soft/movie01.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_soft/movie01.webm -------------------------------------------------------------------------------- /v3/imgs/explain_soft/ui-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/explain_soft/ui-3.jpg -------------------------------------------------------------------------------- /v3/imgs/home_demo/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/1.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/10.jpg -------------------------------------------------------------------------------- /v3/imgs/home_demo/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/11.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/12.jpg -------------------------------------------------------------------------------- /v3/imgs/home_demo/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/2.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/3.jpg -------------------------------------------------------------------------------- /v3/imgs/home_demo/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/4.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/5.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/6.jpg -------------------------------------------------------------------------------- /v3/imgs/home_demo/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/7.jpg -------------------------------------------------------------------------------- /v3/imgs/home_demo/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/8.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/9.jpg -------------------------------------------------------------------------------- /v3/imgs/home_demo/新增資料夾/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/新增資料夾/1.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/新增資料夾/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/新增資料夾/10.jpg -------------------------------------------------------------------------------- /v3/imgs/home_demo/新增資料夾/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/新增資料夾/2.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/新增資料夾/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/新增資料夾/3.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/新增資料夾/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/新增資料夾/4.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/新增資料夾/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/新增資料夾/5.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/新增資料夾/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/新增資料夾/6.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/新增資料夾/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/新增資料夾/7.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/新增資料夾/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/新增資料夾/7.jpg -------------------------------------------------------------------------------- /v3/imgs/home_demo/新增資料夾/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/新增資料夾/8.gif -------------------------------------------------------------------------------- /v3/imgs/home_demo/新增資料夾/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/home_demo/新增資料夾/9.jpg -------------------------------------------------------------------------------- /v3/imgs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/logo.png -------------------------------------------------------------------------------- /v3/imgs/other/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/other/1.jpg -------------------------------------------------------------------------------- /v3/imgs/other/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/other/2.jpg -------------------------------------------------------------------------------- /v3/imgs/other/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/other/3.jpg -------------------------------------------------------------------------------- /v3/imgs/other/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/other/4.jpg -------------------------------------------------------------------------------- /v3/imgs/other/md_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/other/md_1.jpg -------------------------------------------------------------------------------- /v3/imgs/other/qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/other/qrcode.png -------------------------------------------------------------------------------- /v3/imgs/plugin/demo-WebViewer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/plugin/demo-WebViewer.jpg -------------------------------------------------------------------------------- /v3/imgs/plugin/demo-monaco-editor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/plugin/demo-monaco-editor.jpg -------------------------------------------------------------------------------- /v3/imgs/plugin/icon-NConvert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/plugin/icon-NConvert.png -------------------------------------------------------------------------------- /v3/imgs/plugin/icon-QuickLook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/plugin/icon-QuickLook.png -------------------------------------------------------------------------------- /v3/imgs/plugin/icon-WebViewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/plugin/icon-WebViewer.png -------------------------------------------------------------------------------- /v3/imgs/plugin/icon-monaco-editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/plugin/icon-monaco-editor.png -------------------------------------------------------------------------------- /v3/imgs/plugin/plugin-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/plugin/plugin-1.jpg -------------------------------------------------------------------------------- /v3/imgs/plugin/plugin-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/plugin/plugin-2.png -------------------------------------------------------------------------------- /v3/imgs/背景圖片暫存/新增資料夾 (2)/bac.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/背景圖片暫存/新增資料夾 (2)/bac.jpg -------------------------------------------------------------------------------- /v3/imgs/背景圖片暫存/新增資料夾 (2)/bac_aero.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/背景圖片暫存/新增資料夾 (2)/bac_aero.jpg -------------------------------------------------------------------------------- /v3/imgs/背景圖片暫存/新增資料夾/bac.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/背景圖片暫存/新增資料夾/bac.jpg -------------------------------------------------------------------------------- /v3/imgs/背景圖片暫存/新增資料夾/bac_aero.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hbl917070/aeropic/bfdc3230aac0a1ed0451541b658aaf2428da2efa/v3/imgs/背景圖片暫存/新增資料夾/bac_aero.jpg -------------------------------------------------------------------------------- /v3/page/author.html: -------------------------------------------------------------------------------- 1 |  2 | 10 | 11 | 12 | 13 |
14 | 15 | 16 |
17 |
關於
18 | 19 |

20 | TiefSee 是 深海異音 開發的相片檢視軟體,屬於免費軟體,也不包含任何廣告 21 |

22 |

23 | 如果程式有BUG,或是想提供意見 24 |
可以到 巴哈姆特的討論區 回覆 25 |
要用 巴哈姆特 或 Email 寄信給我也行 26 |

27 | 28 | 29 |
討論區: 30 | https://forum.gamer.com.tw/C.php?bsn=60076&snA=4095280 31 |
32 |
TiefSee 原始碼: 33 | https://github.com/hbl917070/TiefSee 34 | 35 | 36 |
37 |
作者 巴哈姆特: 38 | hbl917070(深海異音) 39 | 40 | 41 |
42 |
作者 Email: 43 | hbl917070@gmail.com 44 | 45 | 46 | 70 | 71 | 83 | 84 |
85 |
贊助作者: 86 | 歐付寶 87 |
88 | 89 |       90 | 93 | 94 |
95 | 96 | 97 | 98 | 99 | 100 |
101 | 102 |

103 | 104 | 105 |
106 | 107 | 108 | 109 | 110 | 111 | 112 |
113 | 114 | 115 |
116 | 117 |
常見問題
118 |
119 | 135 | 136 | 137 |
程式完全打不開
138 |

139 | 解壓縮後的 TiefSee 資料夾,不可以放在「沒有存取權限」的資料夾,例如「C:\」或「C:\Program Files」都是不行的。
140 | 可以放在桌面、D槽、我的文件 之類的地方。
141 | 不過如果很堅持要放在沒有存取權限的地方,也是可以,手動賦予資料夾權限即可。
142 | 資料夾右鍵 → 內容 → 安全性 → 編輯 → 選擇目前的使用者 → 把「完全控制」與「修改」打勾 → 確定 143 |

144 | 145 | 146 |
舊版可以運行,但新版一開就閃退
147 |

148 | 舊的 AeroPic 2.5.0 以前的版本,運行需求是 .NET 4.5
149 | TiefSee 3.0.0 以後,則必須使用 .NET 4.6.2 以上(含)才能運行
150 | 安裝完這個就行了: Microsoft .NET Framework 4.7.2 151 |

152 | 153 |
可以開啟TiefSee,但開啟圖片後就會閃退
154 |

155 | 可能是電腦不支援硬體加速引起的
156 | 開啟TiefSee的 設定->其他->高品質成像-硬體加速
157 | 嘗試把他改成「模式2」,看看能不能解決閃退問題
158 | 如果一樣閃退就改成「模式3」,再不行就改成「模式4」
159 | 關閉硬體加速 160 |

161 | 162 |
從pixiv下載的動圖zip不能播放
163 |

164 | 必須使用「Px Downloader」才能下載完整的動圖
165 | 很多腳本或瀏覽器附加原件,下載下來的pixiv動圖,只是一般的zip壓縮檔
166 | 因為裡面不包含幀數資訊,所以TiefSee無法播放 167 |

168 | 169 |
「無法瀏覽GIF」或「無法開啟大量瀏覽模式」
170 |

171 | 把電腦的 IE 更新到 IE 11 即可解決問題
172 | 安裝完這個就行了: Internet Explorer 11 173 |

174 | 175 |
Adobe Reader DC 的圖示錯誤
176 |

177 | 這個是 Reader DC 本身的 BUG,某個特定的情況下就會導致 Reader DC 的圖示變成圖片軟體的圖示
178 | 解決方式就是手動重新建立這個捷徑,步驟如下:
179 |

    180 |
  1. 181 | 進到「C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat」
    182 | 如果上面的路徑不存在,那麼改成進入這個路徑「C:\Program Files\Adobe\Acrobat DC\Acrobat」
    183 |
  2. 184 |
  3. 185 | 在裡面找到「Acrobat.exe」對他右鍵選擇「傳送到→桌面(建立捷徑)」
    186 | 187 |
  4. 188 |
  5. 189 | 進到這個「C:\ProgramData\Microsoft\Windows\Start Menu\Programs」資料夾,把「Adobe Acrobat DC」這個捷徑刪除
    190 | 191 |
  6. 192 |
  7. 193 | 最後把剛剛產生到桌面的「Acrobat.exe - 捷徑」丟回「C:\ProgramData\Microsoft\Windows\Start Menu\Programs」即可
    194 |
  8. 195 |
196 | Adobe Reader DC 的圖示錯誤的修復方法 197 |

198 | 199 | 200 | 201 |
無法開啟PSD檔案
202 |

203 | 有可能是這個PSD檔案沒有在存檔的時候開啟「最大相容模式」,導致第三方軟體難以解析 204 |

205 | 206 |
複製PNG圖片會沒有透明底
207 |

208 |

209 | 這是windows本身的限制。我有另外做一個「複製PNG」的按鈕,這雖然能複製透明底但並不是通用格式,在多數繪圖軟體都能直接貼上只有少部分軟體不支援。 210 |
211 | 212 | 213 | 214 | 215 | 221 | 222 | 223 | 224 | 231 | 232 |
不支援 216 | Photoshop CC 2015、 217 | SAI 218 |
219 | 220 |
支援 225 | Krita、 226 | MediBang Paint Pro、 227 | paint.net、 228 | Microsoft Word 229 | 230 |
233 |
234 |

235 | 236 | 237 |
為什麼GIF背景不是透明
238 |

239 | 可以到設定裡面把「GIF渲染模式」改成「DirectX」,就能夠以透明底來開啟GIF 240 |

241 | 242 |
如何刪除程式?
243 |

244 | 程式為免安裝,直接把 「TiefSee」(舊名 AeroPic)的資料夾 刪除即可,如果有使用過自動關聯副檔名的話,記得先進到設定裡面「解除關聯」 245 |
246 | 解除安裝TiefSee 247 |

248 | 249 | 250 | 251 |

252 | 253 | 254 |
255 |
256 | 257 |
-------------------------------------------------------------------------------- /v3/page/explain.html: -------------------------------------------------------------------------------- 1 |  44 | 45 | 46 |
47 | 48 | 49 |
50 | 51 | 52 |
53 | 54 |
55 | 56 | 69 | 70 | 71 | 72 | 73 | 74 |
75 | 76 |
77 |
78 | 79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /v3/page/explain_edit_default.html: -------------------------------------------------------------------------------- 1 |  2 | 18 | 19 | 20 | 21 |
22 | 23 |
24 | 25 | 40 | 41 | 42 | 43 | 44 |
45 |
如何設為預設開啟圖片的程式?
46 | 47 | 48 | 49 |
windows 是根據檔案附檔名來決定要用什麼程式開啟檔案, 50 |
所以對常見的圖片格式(jpg、gif、png)進行設定即可。 51 |
52 |
TiefSee 解壓縮完成後放到一個固定的位子,例如「D:\TiefSee」, 53 |
之後可以使用「自動關聯副檔名」,或「手動關聯副檔名」。 54 | 55 | 56 |
57 | 58 | 59 |
60 |
自動關聯副檔名
61 | 62 | 63 | 64 | 65 | 1右上角功能選單 → 設定 → 關聯副檔名 → 設定圖片關聯 → 啟用關聯 66 |
67 |
68 | 72 | 73 |
74 |
75 |
76 |
77 | 2win10才需要做第②步驟:系統設定 → App → 預設應用程式 → 相片檢視器,選擇 TiefSee 78 | 79 |
80 |
81 | 82 |
83 |
84 | 85 | 86 | 87 | 88 |
89 |
手動關聯副檔名
90 | 91 | 92 | 93 |
如果上述的「自動關聯副檔名」沒有效果,或是一些較為特殊的副檔名要設定關聯,可以用下面的步驟。假設我要設定 jpg圖片: 94 | 95 |
96 |
97 |
98 | 99 | 1對隨便一張jpg圖片按「右鍵」,選擇「內容」 100 |
101 | 對隨便一張jpg圖片按「右鍵」,選擇「內容」 102 |
103 |
104 | 105 | 2要修改開啟檔案的程式,所以點擊「變更」 106 |
107 | 要修改開啟檔案的程式,所以點擊「變更」 108 |
109 |
110 | 111 | 3往下捲動,找到「更多應用程式」 112 |
113 | 往下捲動,找到「更多應用程式」 114 |
115 |
116 | 117 | 4再往下捲動,找到「尋找此電腦上的其他應用程式」 118 |
119 | 再往下捲動,找到「尋找此電腦上的其他應用程式」 120 |
121 |
122 | 123 | 5選擇 TiefSee.exe (我是直接解壓縮放在D槽) 124 |
125 | 選擇 TiefSee.exe (我是直接解壓縮放在D槽) 126 |
127 |
128 | 129 | 6開啟檔案已經變成 TiefSee 就是成功了,點擊「確定」即可完成設定 130 |
131 | 開啟檔案已經變成 TiefSee 就是成功了,點擊「確定」即可完成設定 132 |
133 |
134 | 135 |
136 | 137 | 138 | 139 | 140 | 141 | 142 | 145 | 146 | 147 |
-------------------------------------------------------------------------------- /v3/page/explain_pixiv.html: -------------------------------------------------------------------------------- 1 |  2 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 39 | 40 | 41 | 42 | 43 | 44 |
45 |
下載 pixiv動圖
46 |
47 | 48 | 49 | 64 | 65 | 66 | 67 | 「 68 | 69 | Pixiv 70 | 動圖」 71 | 72 | 並不是一般的GIF圖片所以無法直接下載,必須使用 「 73 | Px Downloader 74 | 」這個瀏覽器附加原件,才能把pixiv動圖下載到電腦 75 |
76 |
77 |
Px Downloader安裝: 78 | 79 | 80 | 81 | 82 | 89 | 96 | 97 |
83 | 84 | Px Downloader 85 |
(Firefox 火狐) 86 |
87 | 88 |
90 | 91 | Px Downloader 92 |
(Google Chrome) 93 |
94 | 95 |
98 | 99 | 100 |
安裝完後,在圖片的下方會多出一個「Px Downloader」的按鈕,點了就會下載 101 |
102 | 在圖片的下方會多出一個「Px Downloader」的按鈕 103 | 104 |
105 |
106 | Px Downloader 預設是把下載的動圖儲存成GIF格式,GIF除了畫質很差外,下載速度也很慢, 107 | 建議把「動圖轉換模式」改成「None(Zip)」,TiefSee 可以直接播放從pixiv下載下來的zip壓縮檔, 108 | 或是把壓縮檔解開成資料夾亦可播放。 109 | 110 | 111 |
112 | 把Px Downloader的「動圖轉換模式」改成「None(Zip)」 113 | 114 |
115 | 116 | 117 |
118 |
對照表: 119 |
120 |
121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 |
畫質檔案大小下載時間普及性
Zip零延遲TiefSee可直接瀏覽, 135 |
且TiefSee內建有把pixiv動圖轉換成GIF的功能
GIF很慢普及性高,常見的社群網站與通訊軟體皆支援
APNG大到嚇死人普通普及性低,常見社群網站與通訊軟體皆無法使用
WebP非常大普及性低,常見社群網站與通訊軟體皆無法使用
159 |
160 | 161 |
162 |
163 | 164 |
165 | 166 | 167 | 168 | 169 | 170 | 203 | 204 | 205 | 206 | 207 |
208 |
將Pixiv動圖轉成GIF
209 | 210 |
程式內建有將Pixiv動圖轉換成GIF的功能,用TiefSee開啟「從Pixiv下載的動圖zip」, 211 | 或「動圖zip解開後的資料夾」,程式右上角的功能選單就會多出一個「轉存GIF」的選項可以使用。 212 | 213 | 214 |
215 |
216 | 功能選單->「轉存GIF」 217 | 218 |
219 |
220 |
221 | 將Pixiv動圖轉換成GIF 222 | 223 |
224 | 225 | 226 | 227 |
-------------------------------------------------------------------------------- /v3/page/explain_soft.html: -------------------------------------------------------------------------------- 1 |  2 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 |
27 | 28 | 38 | 39 | 40 | 104 | 105 | 106 | 107 |
108 |
說明
109 | 110 | 120 | 121 | 122 | TiefSee 是一款圖片顯示器,將圖片或資料夾拖曳至程式中即可開啟,亦可設定成系統預設開啟圖片的程式( 123 | 設定教學)。 124 | 125 | 126 |
127 |
開啟圖片後,會自動關聯該資料夾底下所有的圖片,供快速切換瀏覽。 128 |
129 |
支援格式包含: 130 | 131 | 132 | 133 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 151 | 152 |
常見格式 134 | JPG、PNG、APNG、GIF、BMP、TIF、ICO、WebP、PSD、PSB、PPM、TGA、PCX、PGM、PBM 135 |
相機 RAWRAF、CRW、CR2、MRW、NEF、X3F、PEF、DNG、ORF、RW2、ARW、ERF、SR2、SRW
向量PDF、SVG、AI、WMF、EMF
特殊EXE、LNK、Pixiv動圖 148 | (下載教學)、HEIC (iOS相機格式) 149 | 150 |
153 | 154 | 155 | 156 | 157 |
158 |
滑鼠滾輪捲動可控制圖片縮放 159 | 160 |
圖片小於視窗時,拖曳=拖曳視窗 161 |
圖片大於視窗時,拖曳=移動圖片位置 162 | 163 |
164 |
165 |
備註: 166 | 183 | 184 |
185 | 186 | 187 | 188 | 189 |
190 |
工具列
191 |

192 | 工具列按鈕的顯示與隱藏可到 「設定 → 界面配置」裡面進行修改 193 |

194 | TiefSee 工具列介紹 195 | 196 | 197 | 198 |
199 |
200 | 201 | 202 |
203 |
Pixiv動態圖
204 |
開啟pixiv動圖後,工具列會多出控制選項 205 |
206 | TiefSee 動圖工具列 207 |
208 |
並且可以使用功能選單裡面的「轉存GIF」功能,將pixiv動圖轉存成GIF格式。 209 |
210 |
211 | TiefSee 功能選單->轉存GIF 212 |
213 |
214 | 將pixiv動圖轉成GIF圖片 215 |
216 | 217 | 218 |
219 |
解析GIF
220 |
開啟GIF後,可以使用功能選單裡面的「解析GIF」功能,可以分解出GIF裡面的每一幀畫面。 221 |
222 |
223 | 227 |

228 |
229 | 230 | 231 | 232 |
233 |
快速鍵說明
234 | 235 |
236 | 237 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 |
操作按鍵
下一張方向鍵 →
上一張方向鍵 ←
上一個資料夾<
上一個資料夾>
放大圖片右Shift 或 +
縮小圖片 右Ctrl 或 -
旋轉 R
垂直鏡像 V
水平鏡像 H
P網動圖-下一幀 ]
P網動圖-上一幀 [
圖片全滿F
開啟圖片位置O
開啟圖片原生右鍵選單M
複製圖片Ctrl + C
刪除圖片Delete
重新載入圖片F5
全螢幕F11
進入 大量瀏覽模式B
退出 大量瀏覽模式Back Space 或 Esc
關閉程式Esc
352 |
353 |
354 |
355 | 356 | 357 | 358 | 359 |
360 | 361 |
進階設定
362 | 363 |
在進階設定裡面可以修改「預設瀏覽器」、「用其他程式開啟圖片的名單」 364 |
365 |
目前還尚未做圖形化界面,只能手動編輯設定檔,用記事本即可進行編輯。 366 |
路徑: {程式資料夾}/data/ 367 | config.xml 368 | 369 |
370 |
371 | 372 | TiefSee 的 config.xml 373 | 374 |
375 |
376 | 377 | 378 |
379 | 380 | 381 |
-------------------------------------------------------------------------------- /vender/photoswipe/photoswipe-lightbox.umd.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * PhotoSwipe Lightbox 5.3.8 - https://photoswipe.com 3 | * (c) 2023 Dmytro Semenov 4 | */ 5 | !function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).PhotoSwipeLightbox=i()}(this,(function(){"use strict";function t(t,i,s){const h=document.createElement(i);return t&&(h.className=t),s&&s.appendChild(h),h}function i(t,i,s){t.style.width="number"==typeof i?`${i}px`:i,t.style.height="number"==typeof s?`${s}px`:s}const s="idle",h="loading",e="loaded",n="error";function o(t,i,s=document){let h=[];if(t instanceof Element)h=[t];else if(t instanceof NodeList||Array.isArray(t))h=Array.from(t);else{const e="string"==typeof t?t:i;e&&(h=Array.from(s.querySelectorAll(e)))}return h}function r(){return!(!navigator.vendor||!navigator.vendor.match(/apple/i))}class a{constructor(t,i){this.type=t,this.defaultPrevented=!1,i&&Object.assign(this,i)}preventDefault(){this.defaultPrevented=!0}}class c{constructor(i,s){if(this.element=t("pswp__img pswp__img--placeholder",i?"img":"div",s),i){const t=this.element;t.decoding="async",t.alt="",t.src=i,t.setAttribute("role","presentation")}this.element.setAttribute("aria-hidden","true")}setDisplayedSize(t,s){this.element&&("IMG"===this.element.tagName?(i(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=function(t,i,s){let h=`translate3d(${t}px,${i||0}px,0)`;return void 0!==s&&(h+=` scale3d(${s},${s},1)`),h}(0,0,t/250)):i(this.element,t,s))}destroy(){this.element?.parentNode&&this.element.remove(),this.element=null}}class l{constructor(t,i,h){this.instance=i,this.data=t,this.index=h,this.element=void 0,this.placeholder=void 0,this.slide=void 0,this.displayedImageWidth=0,this.displayedImageHeight=0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.isDecoding=!1,this.state=s,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout((()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0)}),1e3)}load(i,s){if(this.slide&&this.usePlaceholder())if(this.placeholder){const t=this.placeholder.element;t&&!t.parentElement&&this.slide.container.prepend(t)}else{const t=this.instance.applyFilters("placeholderSrc",!(!this.data.msrc||!this.slide.isFirstSlide)&&this.data.msrc,this);this.placeholder=new c(t,this.slide.container)}this.element&&!s||this.instance.dispatch("contentLoad",{content:this,isLazy:i}).defaultPrevented||(this.isImageContent()?(this.element=t("pswp__img","img"),this.displayedImageWidth&&this.loadImage(i)):(this.element=t("pswp__content","div"),this.element.innerHTML=this.data.html||""),s&&this.slide&&this.slide.updateContentSize(!0))}loadImage(t){if(!this.isImageContent()||!this.element||this.instance.dispatch("contentLoadImage",{content:this,isLazy:t}).defaultPrevented)return;const i=this.element;this.updateSrcsetSizes(),this.data.srcset&&(i.srcset=this.data.srcset),i.src=this.data.src??"",i.alt=this.data.alt??"",this.state=h,i.complete?this.onLoaded():(i.onload=()=>{this.onLoaded()},i.onerror=()=>{this.onError()})}setSlide(t){this.slide=t,this.hasSlide=!0,this.instance=t.pswp}onLoaded(){this.state=e,this.slide&&this.element&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.append(),this.slide.updateContentSize(!0)),this.state!==e&&this.state!==n||this.removePlaceholder())}onError(){this.state=n,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===h,this)}isError(){return this.state===n}isImageContent(){return"image"===this.type}setDisplayedSize(t,s){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(t,s),!this.instance.dispatch("contentResize",{content:this,width:t,height:s}).defaultPrevented&&(i(this.element,t,s),this.isImageContent()&&!this.isError()))){const i=!this.displayedImageWidth&&t;this.displayedImageWidth=t,this.displayedImageHeight=s,i?this.loadImage(!1):this.updateSrcsetSizes(),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:t,height:s,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==n,this)}updateSrcsetSizes(){if(!this.isImageContent()||!this.element||!this.data.srcset)return;const t=this.element,i=this.instance.applyFilters("srcsetSizesWidth",this.displayedImageWidth,this);(!t.dataset.largestUsedSize||i>parseInt(t.dataset.largestUsedSize,10))&&(t.sizes=i+"px",t.dataset.largestUsedSize=String(i))}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=void 0,this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented||(this.remove(),this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=void 0))}displayError(){if(this.slide){let i=t("pswp__error-msg","div");i.innerText=this.instance.options?.errorMsg??"",i=this.instance.applyFilters("contentErrorElement",i,this),this.element=t("pswp__content pswp__error-msg-container","div"),this.element.appendChild(i),this.slide.container.innerText="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){if(this.isAttached||!this.element)return;if(this.isAttached=!0,this.state===n)return void this.displayError();if(this.instance.dispatch("contentAppend",{content:this}).defaultPrevented)return;const t="decode"in this.element;this.isImageContent()?t&&this.slide&&(!this.slide.isActive||r())?(this.isDecoding=!0,this.element.decode().catch((()=>{})).finally((()=>{this.isDecoding=!1,this.appendImage()}))):this.appendImage():this.slide&&!this.element.parentNode&&this.slide.container.appendChild(this.element)}activate(){!this.instance.dispatch("contentActivate",{content:this}).defaultPrevented&&this.slide&&(this.isImageContent()&&this.isDecoding&&!r()?this.appendImage():this.isError()&&this.load(!1,!0),this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","false"))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this}),this.slide&&this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","true")}remove(){this.isAttached=!1,this.instance.dispatch("contentRemove",{content:this}).defaultPrevented||(this.element&&this.element.parentNode&&this.element.remove(),this.placeholder&&this.placeholder.element&&this.placeholder.element.remove())}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||(this.slide&&this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element),this.state!==e&&this.state!==n||this.removePlaceholder()))}}function d(t,i,s,h,e){let n=0;if(i.paddingFn)n=i.paddingFn(s,h,e)[t];else if(i.padding)n=i.padding[t];else{const s="padding"+t[0].toUpperCase()+t.slice(1);i[s]&&(n=i[s])}return Number(n)||0}class u{constructor(t,i,s,h){this.pswp=h,this.options=t,this.itemData=i,this.index=s,this.panAreaSize=null,this.elementSize=null,this.fit=1,this.fill=1,this.vFill=1,this.initial=1,this.secondary=1,this.max=1,this.min=1}update(t,i,s){const h={x:t,y:i};this.elementSize=h,this.panAreaSize=s;const e=s.x/h.x,n=s.y/h.y;this.fit=Math.min(1,en?e:n),this.vFill=Math.min(1,n),this.initial=this.t(),this.secondary=this.i(),this.max=Math.max(this.initial,this.secondary,this.o()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}l(t){const i=t+"ZoomLevel",s=this.options[i];if(s)return"function"==typeof s?s(this):"fill"===s?this.fill:"fit"===s?this.fit:Number(s)}i(){let t=this.l("secondary");return t||(t=Math.min(1,3*this.fit),this.elementSize&&t*this.elementSize.x>4e3&&(t=4e3/this.elementSize.x),t)}t(){return this.l("initial")||this.fit}o(){return this.l("max")||Math.max(1,4*this.fit)}}function p(t,i,s){const h=i.createContentFromData(t,s);let e;const{options:n}=i;if(n){let o;e=new u(n,t,-1),o=i.pswp?i.pswp.viewportSize:function(t,i){if(t.getViewportSizeFn){const s=t.getViewportSizeFn(t,i);if(s)return s}return{x:document.documentElement.clientWidth,y:window.innerHeight}}(n,i);const r=function(t,i,s,h){return{x:i.x-d("left",t,i,s,h)-d("right",t,i,s,h),y:i.y-d("top",t,i,s,h)-d("bottom",t,i,s,h)}}(n,o,t,s);e.update(h.width,h.height,r)}return h.lazyLoad(),e&&h.setDisplayedSize(Math.ceil(h.width*e.initial),Math.ceil(h.height*e.initial)),h}return class extends class extends class{constructor(){this.u={},this.p={},this.pswp=void 0,this.options=void 0}addFilter(t,i,s=100){this.p[t]||(this.p[t]=[]),this.p[t]?.push({fn:i,priority:s}),this.p[t]?.sort(((t,i)=>t.priority-i.priority)),this.pswp?.addFilter(t,i,s)}removeFilter(t,i){this.p[t]&&(this.p[t]=this.p[t].filter((t=>t.fn!==i))),this.pswp&&this.pswp.removeFilter(t,i)}applyFilters(t,...i){return this.p[t]?.forEach((t=>{i[0]=t.fn.apply(this,i)})),i[0]}on(t,i){this.u[t]||(this.u[t]=[]),this.u[t]?.push(i),this.pswp?.on(t,i)}off(t,i){this.u[t]&&(this.u[t]=this.u[t].filter((t=>i!==t))),this.pswp?.off(t,i)}dispatch(t,i){if(this.pswp)return this.pswp.dispatch(t,i);const s=new a(t,i);return this.u[t]?.forEach((t=>{t.call(this,s)})),s}}{getNumItems(){let t=0;const i=this.options?.dataSource;i&&"length"in i?t=i.length:i&&"gallery"in i&&(i.items||(i.items=this.m(i.gallery)),i.items&&(t=i.items.length));const s=this.dispatch("numItems",{dataSource:i,numItems:t});return this.applyFilters("numItems",s.numItems,i)}createContentFromData(t,i){return new l(t,this,i)}getItemData(t){const i=this.options?.dataSource;let s={};Array.isArray(i)?s=i[t]:i&&"gallery"in i&&(i.items||(i.items=this.m(i.gallery)),s=i.items[t]);let h=s;h instanceof Element&&(h=this.g(h));const e=this.dispatch("itemData",{itemData:h||{},index:t});return this.applyFilters("itemData",e.itemData,t)}m(t){return this.options?.children||this.options?.childSelector?o(this.options.children,this.options.childSelector,t)||[]:[t]}g(t){const i={element:t},s="A"===t.tagName?t:t.querySelector("a");if(s){i.src=s.dataset.pswpSrc||s.href,s.dataset.pswpSrcset&&(i.srcset=s.dataset.pswpSrcset),i.width=s.dataset.pswpWidth?parseInt(s.dataset.pswpWidth,10):0,i.height=s.dataset.pswpHeight?parseInt(s.dataset.pswpHeight,10):0,i.w=i.width,i.h=i.height,s.dataset.pswpType&&(i.type=s.dataset.pswpType);const h=t.querySelector("img");h&&(i.msrc=h.currentSrc||h.src,i.alt=h.getAttribute("alt")??""),(s.dataset.pswpCropped||s.dataset.cropped)&&(i.thumbCropped=!0)}return this.applyFilters("domItemData",i,t,s)}lazyLoadData(t,i){return p(t,this,i)}}{constructor(t){super(),this.options=t||{},this.v=0,this.shouldOpen=!1,this._=void 0,this.onThumbnailsClick=this.onThumbnailsClick.bind(this)}init(){o(this.options.gallery,this.options.gallerySelector).forEach((t=>{t.addEventListener("click",this.onThumbnailsClick,!1)}))}onThumbnailsClick(t){if(function(t){return"button"in t&&1===t.button||t.ctrlKey||t.metaKey||t.altKey||t.shiftKey}(t)||window.pswp)return;let i={x:t.clientX,y:t.clientY};i.x||i.y||(i=null);let s=this.getClickedIndex(t);s=this.applyFilters("clickedIndex",s,t,this);const h={gallery:t.currentTarget};s>=0&&(t.preventDefault(),this.loadAndOpen(s,h,i))}getClickedIndex(t){if(this.options.getClickedIndexFn)return this.options.getClickedIndexFn.call(this,t);const i=t.target,s=o(this.options.children,this.options.childSelector,t.currentTarget).findIndex((t=>t===i||t.contains(i)));return-1!==s?s:this.options.children||this.options.childSelector?-1:0}loadAndOpen(t,i,s){return!window.pswp&&(this.options.index=t,this.options.initialPointerPos=s,this.shouldOpen=!0,this.preload(t,i),!0)}preload(t,i){const{options:s}=this;i&&(s.dataSource=i);const h=[],e=typeof s.pswpModule;if("function"==typeof(n=s.pswpModule)&&n.prototype&&n.prototype.goTo)h.push(Promise.resolve(s.pswpModule));else{if("string"===e)throw new Error("pswpModule as string is no longer supported");if("function"!==e)throw new Error("pswpModule is not valid");h.push(s.pswpModule())}var n;"function"==typeof s.openPromise&&h.push(s.openPromise()),!1!==s.preloadFirstSlide&&t>=0&&(this._=function(t,i){const s=i.getItemData(t);if(!i.dispatch("lazyLoadSlide",{index:t,itemData:s}).defaultPrevented)return p(s,i,t)}(t,this));const o=++this.v;Promise.all(h).then((t=>{if(this.shouldOpen){const i=t[0];this.I(i,o)}}))}I(t,i){if(i!==this.v&&this.shouldOpen)return;if(this.shouldOpen=!1,window.pswp)return;const s="object"==typeof t?new t.default(this.options):new t(this.options);this.pswp=s,window.pswp=s,Object.keys(this.u).forEach((t=>{this.u[t]?.forEach((i=>{s.on(t,i)}))})),Object.keys(this.p).forEach((t=>{this.p[t]?.forEach((i=>{s.addFilter(t,i.fn,i.priority)}))})),this._&&(s.contentLoader.addToCache(this._),this._=void 0),s.on("destroy",(()=>{this.pswp=void 0,delete window.pswp})),s.init()}destroy(){this.pswp?.destroy(),this.shouldOpen=!1,this.u={},o(this.options.gallery,this.options.gallerySelector).forEach((t=>{t.removeEventListener("click",this.onThumbnailsClick,!1)}))}}})); 6 | -------------------------------------------------------------------------------- /vender/photoswipe/photoswipe.css: -------------------------------------------------------------------------------- 1 | /*! PhotoSwipe main CSS by Dmytro Semenov | photoswipe.com */ 2 | 3 | .pswp { 4 | --pswp-bg: #000; 5 | --pswp-placeholder-bg: #222; 6 | 7 | 8 | --pswp-root-z-index: 100000; 9 | 10 | --pswp-preloader-color: rgba(79, 79, 79, 0.4); 11 | --pswp-preloader-color-secondary: rgba(255, 255, 255, 0.9); 12 | 13 | /* defined via js: 14 | --pswp-transition-duration: 333ms; */ 15 | 16 | --pswp-icon-color: #fff; 17 | --pswp-icon-color-secondary: #4f4f4f; 18 | --pswp-icon-stroke-color: #4f4f4f; 19 | --pswp-icon-stroke-width: 2px; 20 | 21 | --pswp-error-text-color: var(--pswp-icon-color); 22 | } 23 | 24 | 25 | /* 26 | Styles for basic PhotoSwipe (pswp) functionality (sliding area, open/close transitions) 27 | */ 28 | 29 | .pswp { 30 | position: fixed; 31 | top: 0; 32 | left: 0; 33 | width: 100%; 34 | height: 100%; 35 | z-index: var(--pswp-root-z-index); 36 | display: none; 37 | touch-action: none; 38 | outline: 0; 39 | opacity: 0.003; 40 | contain: layout style size; 41 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 42 | } 43 | 44 | /* Prevents focus outline on the root element, 45 | (it may be focused initially) */ 46 | .pswp:focus { 47 | outline: 0; 48 | } 49 | 50 | .pswp * { 51 | box-sizing: border-box; 52 | } 53 | 54 | .pswp img { 55 | max-width: none; 56 | } 57 | 58 | .pswp--open { 59 | display: block; 60 | } 61 | 62 | .pswp, 63 | .pswp__bg { 64 | transform: translateZ(0); 65 | will-change: opacity; 66 | } 67 | 68 | .pswp__bg { 69 | opacity: 0.005; 70 | background: var(--pswp-bg); 71 | } 72 | 73 | .pswp, 74 | .pswp__scroll-wrap { 75 | overflow: hidden; 76 | } 77 | 78 | .pswp__scroll-wrap, 79 | .pswp__bg, 80 | .pswp__container, 81 | .pswp__item, 82 | .pswp__content, 83 | .pswp__img, 84 | .pswp__zoom-wrap { 85 | position: absolute; 86 | top: 0; 87 | left: 0; 88 | width: 100%; 89 | height: 100%; 90 | } 91 | 92 | .pswp__img, 93 | .pswp__zoom-wrap { 94 | width: auto; 95 | height: auto; 96 | } 97 | 98 | .pswp--click-to-zoom.pswp--zoom-allowed .pswp__img { 99 | cursor: -webkit-zoom-in; 100 | cursor: -moz-zoom-in; 101 | cursor: zoom-in; 102 | } 103 | 104 | .pswp--click-to-zoom.pswp--zoomed-in .pswp__img { 105 | cursor: move; 106 | cursor: -webkit-grab; 107 | cursor: -moz-grab; 108 | cursor: grab; 109 | } 110 | 111 | .pswp--click-to-zoom.pswp--zoomed-in .pswp__img:active { 112 | cursor: -webkit-grabbing; 113 | cursor: -moz-grabbing; 114 | cursor: grabbing; 115 | } 116 | 117 | /* :active to override grabbing cursor */ 118 | .pswp--no-mouse-drag.pswp--zoomed-in .pswp__img, 119 | .pswp--no-mouse-drag.pswp--zoomed-in .pswp__img:active, 120 | .pswp__img { 121 | cursor: -webkit-zoom-out; 122 | cursor: -moz-zoom-out; 123 | cursor: zoom-out; 124 | } 125 | 126 | 127 | /* Prevent selection and tap highlights */ 128 | .pswp__container, 129 | .pswp__img, 130 | .pswp__button, 131 | .pswp__counter { 132 | -webkit-user-select: none; 133 | -moz-user-select: none; 134 | -ms-user-select: none; 135 | user-select: none; 136 | } 137 | 138 | .pswp__item { 139 | /* z-index for fade transition */ 140 | z-index: 1; 141 | overflow: hidden; 142 | } 143 | 144 | .pswp__hidden { 145 | display: none !important; 146 | } 147 | 148 | /* Allow to click through pswp__content element, but not its children */ 149 | .pswp__content { 150 | pointer-events: none; 151 | } 152 | .pswp__content > * { 153 | pointer-events: auto; 154 | } 155 | 156 | 157 | /* 158 | 159 | PhotoSwipe UI 160 | 161 | */ 162 | 163 | /* 164 | Error message appears when image is not loaded 165 | (JS option errorMsg controls markup) 166 | */ 167 | .pswp__error-msg-container { 168 | display: grid; 169 | } 170 | .pswp__error-msg { 171 | margin: auto; 172 | font-size: 1em; 173 | line-height: 1; 174 | color: var(--pswp-error-text-color); 175 | } 176 | 177 | /* 178 | class pswp__hide-on-close is applied to elements that 179 | should hide (for example fade out) when PhotoSwipe is closed 180 | and show (for example fade in) when PhotoSwipe is opened 181 | */ 182 | .pswp .pswp__hide-on-close { 183 | opacity: 0.005; 184 | will-change: opacity; 185 | transition: opacity var(--pswp-transition-duration) cubic-bezier(0.4, 0, 0.22, 1); 186 | z-index: 10; /* always overlap slide content */ 187 | pointer-events: none; /* hidden elements should not be clickable */ 188 | } 189 | 190 | /* class pswp--ui-visible is added when opening or closing transition starts */ 191 | .pswp--ui-visible .pswp__hide-on-close { 192 | opacity: 1; 193 | pointer-events: auto; 194 | } 195 | 196 | /*