Merge branch 'release_v4.6.2'
Some checks failed
sync-2-gitee / sync-2-gitee (push) Failing after 3s

This commit is contained in:
elkan1788 2024-07-21 22:11:30 +08:00
commit 1b98206cad
116 changed files with 2690 additions and 166 deletions

1
.gitignore vendored
View File

@ -8,6 +8,7 @@ exampleSite/content/**/
!exmapleSite/content/about.md !exmapleSite/content/about.md
!exampleSite/content/archives !exampleSite/content/archives
!exampleSite/content/post !exampleSite/content/post
!exampleSite/content/post/image-viewer
# Exclude special files in data folder # Exclude special files in data folder
!exampleSite/data !exampleSite/data

View File

@ -1,7 +1,7 @@
[中文](https://github.com/hugo-next/hugo-theme-next/blob/main/README.zh.md) | [English](#) [中文](https://github.com/hugo-next/hugo-theme-next/blob/main/README.zh.md) | [English](#)
<a title="Hugo NexT Website" href="https://preview.hugo-next.eu.org"> <a title="Hugo NexT Website" href="https://preview.hugo-next.eu.org">
<img align="right" alt="NexT logo" width="266" src="https://lisenhui.gitee.io/imgs/hugo-next/logo/hugo-next-primary.png"> <img align="right" alt="NexT logo" width="266" src="images/hugo-next-primary.png">
</a> </a>
## Hugo NexT ## Hugo NexT
@ -10,7 +10,9 @@
> All page designs & configuration compatibility with Hexo NexT, it's very easy migrate your site from Hexo to Hugo and enjoy yourself. > All page designs & configuration compatibility with Hexo NexT, it's very easy migrate your site from Hexo to Hugo and enjoy yourself.
[![Gitter](https://img.shields.io/gitter/room/hugo-next/hugo-them-next?logo=gitter&style=flat-square)](https://gitter.im/hugo-next/community) [![Build Hugo Version](https://img.shields.io/badge/Hugo-%3E=0.89.0-red?style=flat-square&logo=hugo&color=%23FF4088&&label=Hugo%20Extended)](https://github.com/gohugoio/hugo/releases/latest) [![GitHub deployments](https://img.shields.io/github/deployments/hugo-next/hugo-next.github.io/github-pages?style=flat-square&label=gh-pg&logo=GitHub)](https://github.com/hugo-next/hugo-theme-next) [![Repos Size](https://img.shields.io/github/repo-size/hugo-next/hugo-theme-next?style=flat-square&color=%23FFBF3B&logo=Files)](https://github.com/hugo-next/hugo-theme-next/find/main) [![GitHub](https://img.shields.io/github/license/hugo-next/hugo-theme-next?logo=webauthn&style=flat-square)](https://github.com/hugo-next/hugo-theme-next/blob/main/LICENSE) [![Gitter](https://img.shields.io/gitter/room/hugo-next/hugo-them-next?logo=gitter&style=flat-square&label=Gitter)](https://gitter.im/hugo-next/community) [![Build Hugo Version](https://img.shields.io/badge/Hugo-%3E=0.89.0-red?style=flat-square&logo=hugo&color=%23FF4088&&label=Hugo%20Extended)](https://github.com/gohugoio/hugo/releases/latest) [![GitHub deployments](https://img.shields.io/github/deployments/hugo-next/hugo-next.github.io/github-pages?style=flat-square&logo=GitHub&label=Github%20Pages)](https://github.com/hugo-next/hugo-theme-next) [![Contributors](https://img.shields.io/github/contributors/hugo-next/hugo-theme-next?style=flat-square&color=%235E0D73&logo=contributorcovenant&label=Contributors)](https://github.com/hugo-next/hugo-theme-next/graphs/contributors) [![Latest Release](https://img.shields.io/github/v/release/hugo-next/hugo-theme-next?include_prereleases&style=flat-square&color=%23DD2C00&logo=semanticrelease&label=Latest%20Release)](https://github.com/hugo-next/hugo-theme-next/releases) [![Repos Size](https://img.shields.io/github/repo-size/hugo-next/hugo-theme-next?style=flat-square&color=%23FFBF3B&logo=Files&label=Repo%20Size)](https://github.com/hugo-next/hugo-theme-next/find/main) [![GitHub](https://img.shields.io/github/license/hugo-next/hugo-theme-next?logo=webauthn&style=flat-square&label=License)](https://github.com/hugo-next/hugo-theme-next/blob/main/LICENSE)
![Screenshot](images/screenshot.png)
## 🎨 4 Scheme ## 🎨 4 Scheme
@ -21,10 +23,10 @@
## 👀 Live Preview ## 👀 Live Preview
| Environment | :gemini: (**Default**) | :heart_decoration: | :six_pointed_star: | :pisces: | Status | | Environment | :gemini: (**Default**) | :heart_decoration: | :six_pointed_star: | :pisces: | Status |
| :---: | :---: | :---: | :---: | :---: | :---: | | :---------: | :-----------------------------------------: | :--------------------------------------------: | :--------------------------------------------: | :------------------------------------------------: | :-------------------------------------------------------------------------------------------------: |
| Preliminary | [Gemini](https://preview.hugo-next.eu.org/) | [Muse](https://preview.hugo-next.eu.org/muse/) | [Mist](https://preview.hugo-next.eu.org/mist/) | [Pisces](https://preview.hugo-next.eu.org/pisces/) | ![Vercel](https://therealsujitk-vercel-badge.vercel.app/?app=preview-hugo-next&style=for-the-badge) | | Preliminary | [Gemini](https://preview.hugo-next.eu.org/) | [Muse](https://preview.hugo-next.eu.org/muse/) | [Mist](https://preview.hugo-next.eu.org/mist/) | [Pisces](https://preview.hugo-next.eu.org/pisces/) | ![Vercel](https://therealsujitk-vercel-badge.vercel.app/?app=preview-hugo-next&style=for-the-badge) |
| Production | [Gemini](https://hugo-next.eu.org/) | [Muse](https://hugo-next.eu.org/muse/) | [Mist](https://hugo-next.eu.org/mist/) | [Pisces](https://hugo-next.eu.org/pisces/) | ![Vercel](https://therealsujitk-vercel-badge.vercel.app/?app=hugo-next&style=for-the-badge) | | Production | [Gemini](https://hugo-next.eu.org/) | [Muse](https://hugo-next.eu.org/muse/) | [Mist](https://hugo-next.eu.org/mist/) | [Pisces](https://hugo-next.eu.org/pisces/) | ![Vercel](https://therealsujitk-vercel-badge.vercel.app/?app=hugo-next&style=for-the-badge) |
> - Preliminary: all new feature developments will be previewed as soon as possible. > - Preliminary: all new feature developments will be previewed as soon as possible.
> - Production: Only the features that are tested stably and meet the requirements will be officially released. > - Production: Only the features that are tested stably and meet the requirements will be officially released.
@ -33,12 +35,11 @@
Before use `Hugo NexT` theme, please make sure installed `Git` & `Hugo Extened` software in your PC. Before use `Hugo NexT` theme, please make sure installed `Git` & `Hugo Extened` software in your PC.
### 📰 Use Template
### 📰 Use Template
If there your first time build blog site, Recommended use template of `Github` which can easily create your site code. Click & visit this repository: [hugo-theme-next-starter](https://github.com/hugo-next/hugo-theme-next-starter), then click the green button which name call `Use this template` upper right corner on the page. Just like below image: If there your first time build blog site, Recommended use template of `Github` which can easily create your site code. Click & visit this repository: [hugo-theme-next-starter](https://github.com/hugo-next/hugo-theme-next-starter), then click the green button which name call `Use this template` upper right corner on the page. Just like below image:
![Use Template](https://imgs.lisenhui.cn/hugo-next/use-hugo-next-starter.png) ![Use Template](images/use-hugo-next-starter.png)
After do that click the green button which name call `Create repository from template`, then will create your site code automatic, and clone it on your PC environment. After do that click the green button which name call `Create repository from template`, then will create your site code automatic, and clone it on your PC environment.
@ -53,6 +54,16 @@ $ cp themes/hugo-theme-next/exampleSite/config.yaml .
$ mv config.toml config.toml.backup $ mv config.toml config.toml.backup
``` ```
Or use `Hugo module` to lead into the theme, see below commands:
```shell
$ cd hugo-next-exmaple
$ hugo mod init hugo-next-exmaple
$ wget -O config.yaml https://github.com/hugo-next/hugo-theme-next/raw/main/exampleSite/config.yaml
$ sed -i 's/hugo-theme-next/github.com\/hugo-next\/hugo-theme-next\/v4/' config.yaml
$ mv config.toml config.toml.backup
```
### 💻 Preview on Local ### 💻 Preview on Local
```shell ```shell
@ -74,6 +85,13 @@ $ cd hugo-next-exmaple
$ git submodule update --remote $ git submodule update --remote
``` ```
Execute command as below if you are using `Hugo module`:
```shell
$ cd hugo-next-exmaple
$ hugo mod get -u
```
## 📝 New Post ## 📝 New Post
There had ready a new post template for you, It is recommended to use the following Hugo command to quickly create a new post: There had ready a new post template for you, It is recommended to use the following Hugo command to quickly create a new post:
@ -81,12 +99,12 @@ There had ready a new post template for you, It is recommended to use the follo
```sh ```sh
$ hugo new posts/hello-world.md $ hugo new posts/hello-world.md
``` ```
> **Note** > **Note**
> By defalut `hugo new` command will create new post under `content` root directory, so in here `posts` were you custom subfolder in `content` directory. > By defalut `hugo new` command will create new post under `content` root directory, so in here `posts` were you custom subfolder in `content` directory.
All front matter parameters's description in post as below: All front matter parameters's description in post as below:
```yml ```yml
--- ---
title: "{{ replace .Name "-" " " | title }}" title: "{{ replace .Name "-" " " | title }}"
@ -170,13 +188,16 @@ That's my hobby to develop `Hugo NexT` theme, thanks all people who gived the do
List of Donors(Order desc by Date): List of Donors(Order desc by Date):
| Donation time | Donors | Donation mode | Donation content | Message | | Donation time | Donors | Donation mode | Donation content | Message |
| :-------: | ------ | ------ | ---- | ---- | | :-----------: | ------ | ------------- | ---------------- | -------------------------------------------------------------------------- |
| 2023.06.01 | **霖 | alipay | RMB 10.00 | / | | 2024.05.11 | *祥 | alipay | RMB 66.66 | Thank you for creating such a great theme. |
| 2022.11.15 | f888 | xianyu | RMB 6.20 | Good luck. | | 2023.07.25 | *五 | alipay | RMB 50.00 | I really like the 'Next' theme, thank you, let me buy you a cup of coffee. |
| 2022.09.30 | *軒 | wechat pay | RMB 66.66 | Hope it could help more people. | | 2023.06.01 | **霖 | alipay | RMB 10.00 | / |
| 2022.09.30 | N*l | wechat pay | RMB 20.00 | / | | 2022.11.15 | f888 | xianyu | RMB 6.20 | Good luck. |
| 2022.07.09 | *风 | wechat pay | RMB 10.00 | / | | 2022.09.30 | *軒 | wechat pay | RMB 66.66 | Hope it could help more people. |
| 2022.05.08 | *泉 | wechat pay | RMB 6.60 | Good luck with next develop. | | 2022.09.30 | N*l | wechat pay | RMB 20.00 | / |
| 2022.02.28 | *娇 | wechat pay | RMB 5.00 | / | | 2022.07.09 | *风 | wechat pay | RMB 10.00 | / |
| 2021.12.21 | z*y | wechat pay | RMB 18.88 | / | | 2022.05.08 | *泉 | wechat pay | RMB 6.60 | Good luck with next develop. |
| 2022.02.28 | *娇 | wechat pay | RMB 5.00 | / |
| 2021.12.21 | z*y | wechat pay | RMB 18.88 | / |

View File

@ -1,7 +1,7 @@
[中文](#) | [English](https://github.com/hugo-next/hugo-theme-next/blob/main/README.md) [中文](#) | [English](https://github.com/hugo-next/hugo-theme-next/blob/main/README.md)
<a title="Hugo NexT 站点" href="https://preview.hugo-next.eu.org"> <a title="Hugo NexT 站点" href="https://preview.hugo-next.eu.org">
<img align="right" alt="NexT logo" width="266" src="https://imgs.lisenhui.cn/hugo-next/logo/hugo-next-primary.png"> <img align="right" alt="NexT logo" width="266" src="images/hugo-next-primary.png">
</a> </a>
## Hugo NexT ## Hugo NexT
@ -10,7 +10,9 @@
> 本主题的所有页面设计和配置项都与原来 `Hexo` 引擎的 `NexT` 主题保持了良好的兼容性,可以非常平滑的从 `Hexo` 迁移至 `Hugo` 引擎,欢迎大家使用并反馈。 > 本主题的所有页面设计和配置项都与原来 `Hexo` 引擎的 `NexT` 主题保持了良好的兼容性,可以非常平滑的从 `Hexo` 迁移至 `Hugo` 引擎,欢迎大家使用并反馈。
[![Gitter](https://img.shields.io/gitter/room/hugo-next/hugo-them-next?logo=gitter&style=flat-square)](https://gitter.im/hugo-next/community) [![Build Hugo Version](https://img.shields.io/badge/Hugo-%3E=0.89.0-red?style=flat-square&logo=hugo&color=%23FF4088&&label=Hugo%20Extended)](https://github.com/gohugoio/hugo/releases/latest) [![GitHub deployments](https://img.shields.io/github/deployments/hugo-next/hugo-next.github.io/github-pages?style=flat-square&label=gh-pg&logo=GitHub)](https://github.com/hugo-next/hugo-theme-next) [![Repos Size](https://img.shields.io/github/repo-size/hugo-next/hugo-theme-next?style=flat-square&color=%23FFBF3B&logo=Files)](https://github.com/hugo-next/hugo-theme-next/find/main) [![GitHub](https://img.shields.io/github/license/hugo-next/hugo-theme-next?logo=webauthn&style=flat-square)](https://github.com/hugo-next/hugo-theme-next/blob/main/LICENSE) [![Gitter](https://img.shields.io/gitter/room/hugo-next/hugo-them-next?logo=gitter&style=flat-square&label=Gitter)](https://gitter.im/hugo-next/community) [![Build Hugo Version](https://img.shields.io/badge/Hugo-%3E=0.89.0-red?style=flat-square&logo=hugo&color=%23FF4088&&label=Hugo%20Extended)](https://github.com/gohugoio/hugo/releases/latest) [![GitHub deployments](https://img.shields.io/github/deployments/hugo-next/hugo-next.github.io/github-pages?style=flat-square&logo=GitHub&label=Github%20Pages)](https://github.com/hugo-next/hugo-theme-next) [![Contributors](https://img.shields.io/github/contributors/hugo-next/hugo-theme-next?style=flat-square&color=%235E0D73&logo=contributorcovenant&label=Contributors)](https://github.com/hugo-next/hugo-theme-next/graphs/contributors) [![Latest Release](https://img.shields.io/github/v/release/hugo-next/hugo-theme-next?include_prereleases&style=flat-square&color=%23DD2C00&logo=semanticrelease&label=Latest%20Release)](https://github.com/hugo-next/hugo-theme-next/releases) [![Repos Size](https://img.shields.io/github/repo-size/hugo-next/hugo-theme-next?style=flat-square&color=%23FFBF3B&logo=Files&label=Repo%20Size)](https://github.com/hugo-next/hugo-theme-next/find/main) [![GitHub](https://img.shields.io/github/license/hugo-next/hugo-theme-next?logo=webauthn&style=flat-square&label=License)](https://github.com/hugo-next/hugo-theme-next/blob/main/LICENSE)
![截图](images/screenshot.png)
## 🎨 4 种页面模式 ## 🎨 4 种页面模式
@ -21,10 +23,10 @@
## 👀 在线预览 ## 👀 在线预览
| 环境 | :gemini: (**Default**) | :heart_decoration: | :six_pointed_star: | :pisces: | 状态 | | 环境 | :gemini: (**Default**) | :heart_decoration: | :six_pointed_star: | :pisces: | 状态 |
| :---: | :---: | :---: | :---: | :---: | :---: | | :------: | :-----------------------------------------: | :--------------------------------------------: | :--------------------------------------------: | :------------------------------------------------: | :-----------------------------------------------------------------------------------------: |
| 开发版本 | [双子座](https://preview.hugo-next.eu.org/) | [冥想](https://preview.hugo-next.eu.org/muse/) | [迷雾](https://preview.hugo-next.eu.org/mist/) | [双鱼座](https://preview.hugo-next.eu.org/pisces/) | ![Vercel](https://therealsujitk-vercel-badge.vercel.app/?app=hugo-next&style=for-the-badge) | | 开发版本 | [双子座](https://preview.hugo-next.eu.org/) | [冥想](https://preview.hugo-next.eu.org/muse/) | [迷雾](https://preview.hugo-next.eu.org/mist/) | [双鱼座](https://preview.hugo-next.eu.org/pisces/) | ![Vercel](https://therealsujitk-vercel-badge.vercel.app/?app=hugo-next&style=for-the-badge) |
| 正式版本 | [双子座](https://hugo-next.eu.org/) | [冥想](https://hugo-next.eu.org/muse/) | [迷雾](https://hugo-next.eu.org/mist/) | [双鱼座](https://hugo-next.eu.org/pisces/) | ![Vercel](https://therealsujitk-vercel-badge.vercel.app/?app=hugo-next&style=for-the-badge) | | 正式版本 | [双子座](https://hugo-next.eu.org/) | [冥想](https://hugo-next.eu.org/muse/) | [迷雾](https://hugo-next.eu.org/mist/) | [双鱼座](https://hugo-next.eu.org/pisces/) | ![Vercel](https://therealsujitk-vercel-badge.vercel.app/?app=hugo-next&style=for-the-badge) |
> - 开发版本: 所有的新功能开发都会在此第一时间发布预览 > - 开发版本: 所有的新功能开发都会在此第一时间发布预览
> - 正式版本: 只有测试稳定且符合要求的功能才会正式发布 > - 正式版本: 只有测试稳定且符合要求的功能才会正式发布
@ -37,7 +39,7 @@
如果你是初次建站的话,可以使用 `Github` 的模板功能,一键生成你的站点仓库代码。访问 [hugo-theme-next-starter](https://github.com/hugo-next/hugo-theme-next-starter) 点击右上角的 `Use this template` 绿色按钮然后填写代码仓库的相关信息,参考如下: 如果你是初次建站的话,可以使用 `Github` 的模板功能,一键生成你的站点仓库代码。访问 [hugo-theme-next-starter](https://github.com/hugo-next/hugo-theme-next-starter) 点击右上角的 `Use this template` 绿色按钮然后填写代码仓库的相关信息,参考如下:
![使用模板创建](https://imgs.lisenhui.cn/hugo-next/use-hugo-next-starter.png) ![使用模板创建](images/use-hugo-next-starter.png)
最后点击 `Create repository from template` 绿色按钮,会直接在你的空间中生成站点代码,再把它克隆到本地进行创作。 最后点击 `Create repository from template` 绿色按钮,会直接在你的空间中生成站点代码,再把它克隆到本地进行创作。
@ -52,6 +54,16 @@ $ cp themes/hugo-theme-next/exampleSite/config.yaml .
$ mv config.toml config.toml.backup $ mv config.toml config.toml.backup
``` ```
或通过 `Hugo module` 模式引用本主题,参考如下命令:
```shell
$ cd hugo-next-exmaple
$ hugo mod init hugo-next-exmaple
$ wget -O config.yaml https://github.com/hugo-next/hugo-theme-next/raw/main/exampleSite/config.yaml
$ sed -i 's/hugo-theme-next/github.com\/hugo-next\/hugo-theme-next\/v4/' config.yaml
$ mv config.toml config.toml.backup
```
### 💻 本地预览 ### 💻 本地预览
```shell ```shell
@ -73,6 +85,13 @@ $ cd hugo-next-exmaple
$ git submodule update --remote $ git submodule update --remote
``` ```
如使用 `Hugo module`,执行如下命令:
```shell
$ cd hugo-next-exmaple
$ hugo mod get -u
```
> **Note** > **Note**
> 本主题的代码同时也同步到 `Gitee` 仓库,在国内环境可切换用 [https://gitee.com/hugo-next/hugo-theme-next.git](https://gitee.com/hugo-next/hugo-theme-next.git) 镜像速度更快,也更稳定。 > 本主题的代码同时也同步到 `Gitee` 仓库,在国内环境可切换用 [https://gitee.com/hugo-next/hugo-theme-next.git](https://gitee.com/hugo-next/hugo-theme-next.git) 镜像速度更快,也更稳定。
@ -89,7 +108,6 @@ $ hugo new posts/hello-world.md
关于文章头部那些参数作用的说明参考如下: 关于文章头部那些参数作用的说明参考如下:
```yml ```yml
--- ---
# 文章标题 # 文章标题
@ -179,13 +197,16 @@ Copyright (c) 2022 hugo-next 团队
以下是打赏名单列表(按时间倒序): 以下是打赏名单列表(按时间倒序):
| 打赏时间 | 打赏者 | 打赏方式 | 打赏内容 | 留言 | | 打赏时间 | 打赏者 | 打赏方式 | 打赏内容 | 留言 |
| :-------: | ------ | ------ | ---- | ---- | | :--------: | ------ | -------- | -------- | -------------------------------- |
| 2023.06.01 | **霖 | 支付宝 | ¥10.00 | / | | 2024.05.11 | *祥 | 支付宝 | ¥66.66 | 感谢创作这么好的主题 |
| 2022.11.15 | f888 | 咸鱼 | ¥6.20 | 聊表心意 | | 2023.07.25 | *五 | 微信支付 | ¥50.00 | 很喜欢next主题感谢请你喝咖啡 |
| 2022.09.30 | *軒 | 微信支付 | ¥66.66 | 愿项目造福更多人! | | 2023.06.01 | **霖 | 支付宝 | ¥10.00 | / |
| 2022.09.30 | N*l | 微信支付 | ¥20.00 | / | | 2022.11.15 | f888 | 咸鱼 | ¥6.20 | 聊表心意 |
| 2022.07.09 | *风 | 微信支付 | ¥10.00 | / | | 2022.09.30 | *軒 | 微信支付 | ¥66.66 | 愿项目造福更多人! |
| 2022.05.08 | *泉 | 微信支付 | ¥6.60 | 祝开发next顺利 | | 2022.09.30 | N*l | 微信支付 | ¥20.00 | / |
| 2022.02.28 | *娇 | 微信支付 | ¥5.00 | / | | 2022.07.09 | *风 | 微信支付 | ¥10.00 | / |
| 2021.12.21 | z*y | 微信支付 | ¥18.88 | / | | 2022.05.08 | *泉 | 微信支付 | ¥6.60 | 祝开发next顺利 |
| 2022.02.28 | *娇 | 微信支付 | ¥5.00 | / |
| 2021.12.21 | z*y | 微信支付 | ¥18.88 | / |

View File

@ -1 +1 @@
4.5.3 4.6.2

View File

@ -47,6 +47,14 @@
img { img {
display: inline-block; display: inline-block;
max-width: 50px;
@include mobile() {
max-width: 40px;
}
&:last-child {
max-height: 18px;
}
} }
$footer_vendors_imgs_len: length($footer_vendors_imgs_width); $footer_vendors_imgs_len: length($footer_vendors_imgs_width);

View File

@ -1,12 +1,26 @@
// Menu // Menu
// -------------------------------------------------- // --------------------------------------------------
.menu { .menu, .menu-children {
margin: 0; margin: 0;
padding: 1em 0; padding: 1em 0;
text-align: center; text-align: center;
} }
.menu-item { .menu-children {
max-height: 0;
padding: 0;
overflow: hidden;
transition: max-height 1.5s ease-out;
}
.menu-children {
&.expand {
max-height: 400px;
transition: max-height 1.5s ease-in;
}
}
.menu-item, .menu-child-item {
display: inline-block; display: inline-block;
list-style: none; list-style: none;
margin: 0 10px; margin: 0 10px;
@ -51,6 +65,15 @@
margin-left: 0; margin-left: 0;
} }
} }
.menu-item-shrink-icon {
float: right;
}
}
.menu-child-item {
display: block;
margin: 0;
} }
.use-motion .menu-item { .use-motion .menu-item {

View File

@ -99,7 +99,7 @@
@if $icon { @if $icon {
content: $icon; content: $icon;
} }
font-family: 'Font Awesome 5 Free'; font-family: 'Font Awesome 6 Free';
font-weight: 900; font-weight: 900;
} }

View File

@ -34,6 +34,10 @@
} }
} }
// a + ul {
// top: calc(30% + 5px);
// }
.badge { .badge {
background: white; background: white;
border-radius: 10px; border-radius: 10px;
@ -41,5 +45,24 @@
padding: 1px 4px; padding: 1px 4px;
text-shadow: 1px 1px 0 rgba(0, 0, 0, .1); text-shadow: 1px 1px 0 rgba(0, 0, 0, .1);
} }
.menu-item-shrink-icon {
margin-left: 5px;
}
}
}
.menu-children {
display: none;
transition: transform 1s ease-in-out;
transform: translateY(-100%);
// position: absolute;
// z-index: 999;
&.expand {
display: block;
max-height: 400px;
transition: transform 1.5s ease-in;
transform: translateY(-100%);
} }
} }

View File

@ -17,6 +17,7 @@
NexT.boot.registerEvents = function() { NexT.boot.registerEvents = function() {
NexT.utils.registerMenuClick();
NexT.utils.registerImageLoadEvent(); NexT.utils.registerImageLoadEvent();
NexT.utils.registerScrollPercent(); NexT.utils.registerScrollPercent();
// NexT.utils.registerCanIUseTag(); // NexT.utils.registerCanIUseTag();

View File

@ -7,6 +7,29 @@ HTMLElement.prototype.wrap = function (wrapper) {
}; };
NexT.utils = { NexT.utils = {
registerMenuClick: function() {
const pMenus = document.querySelectorAll('.main-menu > li > a.menus-parent');
pMenus.forEach(function(item) {
const icon = item.querySelector('span > i');
var ul = item.nextElementSibling;
item.addEventListener('click', function(e) {
e.preventDefault();
ul.classList.toggle('expand');
if (ul.classList.contains('expand')) {
icon.className = 'fa fa-angle-down';
} else {
icon.className = 'fa fa-angle-right';
}
});
var cCls = ul.querySelectorAll('.menu-item-active');
if (cCls != null && cCls.length > 0) {
item.click();
}
});
},
registerImageLoadEvent: function() { registerImageLoadEvent: function() {
const images = document.querySelectorAll('.sidebar img, .post-block img, .vendors-list img'); const images = document.querySelectorAll('.sidebar img, .post-block img, .vendors-list img');
@ -35,7 +58,10 @@ NexT.utils = {
}, },
registerImageViewer: function() { registerImageViewer: function() {
new Viewer(document.querySelector('.post-body'),{ navbar:2, toolbar:2 }); const post_body = document.querySelector('.post-body');
if (post_body) {
new Viewer(post_body,{ navbar:2, toolbar:2 });
}
}, },
registerToolButtons: function () { registerToolButtons: function () {
@ -215,25 +241,25 @@ NexT.utils = {
}, },
getCDNResource: function (res) { getCDNResource: function (res) {
let { plugins, router } = NexT.CONFIG.vendor;
let router = NexT.CONFIG.vendor.router;
let { name, version, file, alias, alias_name } = res; let { name, version, file, alias, alias_name } = res;
let npm_name = name;
if (alias_name) npm_name = alias_name;
let res_src = ''; let res_src = '';
switch (plugins) {
case 'cdnjs': switch (router.type) {
case 'bootcdn': case "modern":
case 'qiniu': if (alias_name) name = alias_name;
let cdnjs_name = alias || name; let alias_file = file.replace(/^(dist|lib|source|\/js|)\/(browser\/|)/, '');
let cdnjs_file = file.replace(/^(dist|lib|source|\/js|)\/(browser\/|)/, ''); if (alias_file.indexOf('min') == -1) {
if (cdnjs_file.indexOf('min') == -1) { alias_file = alias_file.replace(/\.js$/, '.min.js');
cdnjs_file = cdnjs_file.replace(/\.js$/, '.min.js');
} }
res_src = `${router}/${cdnjs_name}/${version}/${cdnjs_file}` res_src = `${router.url}/${name}/${version}/${alias_file}`;
break; break;
default: default:
res_src = `${router}/${npm_name}@${version}/${file}` if (alias) name = alias;
res_src = `${router.url}/${name}@${version}/${file}`;
break;
} }
return res_src; return res_src;
@ -255,7 +281,7 @@ NexT.utils = {
const button = element.querySelector('.copy-btn'); const button = element.querySelector('.copy-btn');
button.addEventListener('click', () => { button.addEventListener('click', () => {
const lines = element.querySelector('.code') || element.querySelector('code'); const lines = element.querySelector('.code') || element.querySelector('code');
const code = lines.innerText; const code = lines.innerText.replace(/(\n{2,})/g, '\n');
if (navigator.clipboard) { if (navigator.clipboard) {
// https://caniuse.com/mdn-api_clipboard_writetext // https://caniuse.com/mdn-api_clipboard_writetext
navigator.clipboard.writeText(code).then(() => { navigator.clipboard.writeText(code).then(() => {

View File

@ -1,5 +1,5 @@
# Hugo NexT theme's custom config # Hugo NexT theme's custom config
version: 4.5.3 version: 4.6.2
domain: hugo-next.eu.org domain: hugo-next.eu.org

View File

@ -1,33 +1,79 @@
# CDN 公共资源商列表 # CDN 公共资源商列表
# Public CDN vendor list # Public CDN vendor list
vendors: vendors:
cdnjs: "https://cdnjs.cloudflare.com/ajax/libs" - name: cdnjs
unpkg: "https://unpkg.com" home: "https://cdnjs.com"
bootcdn: "https://cdn.bootcdn.net/ajax/libs" logo: "https://cdnjs.com/_/f7a2ebfb819c118086546e481876aef6.svg"
qiniu: "https://cdn.staticfile.org" type: "modern"
url: "https://cdnjs.cloudflare.com/ajax/libs"
- name: unpkg
home: "https://unpkg.com"
logo: "https://unpkg.fly.dev/_client/b870d5fb04d2854d.png"
type: "nodejs"
url: "https://unpkg.com"
- name: bootcdn
home: "https://www.bootcdn.cn"
logo: "https://www.bootcdn.cn/assets/img/logo.png"
type: "modern"
url: "https://cdn.bootcdn.net/ajax/libs"
- name: staticfile
home: "https://staticfile.net/"
logo: "https://www.staticfile.net/images/logo.png"
type: "modern"
url: "https://cdn.staticfile.net"
- name: 7ed
home: "https://www.7ed.net"
logo: "https://github.com/7ednet/homepage/raw/main/_images/logo.svg"
type: "modern"
url: "https://use.sevencdn.com/ajax/libs"
- name: zstatic
home: "https://www.zstatic.net"
logo: "https://www.zstatic.net/favicon/favicon-16x16.png"
type: "modern"
url: "https://s4.zstatic.net/ajax/libs"
- name: zeyao
home: "https://cdn.jsdmirror.com/"
logo: "https://img.cuteapi.com/2023/08/29/Background.png"
type: "nodejs"
url: "https://cdn.jsdmirror.com/npm"
- name: jsdelivr
home: "https://www.jsdelivr.com/"
logo: "https://www.jsdelivr.com/assets/0c183396fdb0079ea31849b02bc5e3429f1740de/img/jsdelivr-horizontal-regular.svg"
type: "nodejs"
url: "https://cdn.jsdelivr.net/npm"
# JavaScript 资源 # JavaScript 资源
# JavaScript Resources # JavaScript Resources
js: js:
- name: animejs - name: animejs
version: 3.2.1 version: 3.2.2
file: lib/anime.min.js file: lib/anime.min.js
- name: viewerjs - name: viewerjs
version: 1.11.0 version: 1.11.6
file: dist/viewer.min.js file: dist/viewer.min.js
# CSS 资源 # CSS 资源
# CSS Resources # CSS Resources
css: css:
- name: '@fortawesome/fontawesome-free' - name: font-awesome
version: 6.1.2 version: 6.6.0
file: css/all.min.css file: css/all.min.css
alias: font-awesome alias: '@fortawesome/fontawesome-free'
- name: animate.css - name: animate.css
version: 3.1.1 version: 4.1.1
file: animate.min.css file: animate.min.css
- name: viewerjs - name: viewerjs
version: 1.11.0 version: 1.11.6
file: dist/viewer.min.css file: dist/viewer.min.css
# 第三方服务组件资源 # 第三方服务组件资源
@ -51,25 +97,27 @@ addthis:
# Comment component # Comment component
waline: waline:
js: js:
name: '@waline/client' name: waline
version: 2.13.0 version: 2.15.8
file: dist/waline.js file: dist/waline.js
alias: waline alias: "@waline/client"
css: css:
name: '@waline/client' name: waline
version: 2.13.0 version: 2.15.8
file: dist/waline.css file: dist/waline.css
alias: waline alias: "@waline/client"
artalk: artalk:
js: js:
name: artalk name: artalk
version: 2.3.4 version: 2.6.4
file: dist/Artalk.js file: dist/Artalk.min.js
css: css:
name: artalk name: artalk
version: 2.3.4 version: 2.6.4
file: dist/Artalk.css file: dist/Artalk.min.css
giscus: giscus:
js: https://giscus.app/client.js js: https://giscus.app/client.js
@ -84,11 +132,12 @@ livere:
# Full text search # Full text search
algolia: algolia:
name: algoliasearch name: algoliasearch
version: 4.14.2 version: 4.24.0
file: dist/algoliasearch-lite.umd.js file: dist/algoliasearch-lite.umd.js
instant: instant:
name: instantsearch.js name: instantsearch.js
version: 4.49.0 version: 4.73.2
file: dist/instantsearch.production.min.js file: dist/instantsearch.production.min.js
plugins: plugins:
@ -96,37 +145,45 @@ plugins:
mathjax: mathjax:
js: js:
name: mathjax name: mathjax
version: 3.2.0 version: 3.2.2
file: es5/tex-mml-chtml.js file: es5/tex-mml-chtml.js
katex: katex:
js: js:
- name: katex - name: katex
version: 0.16.0 alias_name: KaTeX
version: 0.16.9
file: dist/katex.min.js file: dist/katex.min.js
- name: auto-render - name: auto-render
alias_name: katex alias: katex
version: 0.16.0 alias_name: KaTeX
version: 0.16.9
file: dist/contrib/auto-render.min.js file: dist/contrib/auto-render.min.js
css: css:
name: katex name: katex
version: 0.16.0 alias_name: KaTeX
version: 0.16.9
file: dist/katex.min.css file: dist/katex.min.css
# 画图渲染 # 画图渲染
mermaid: mermaid:
js: js:
name: mermaid name: mermaid
version: 9.1.7 version: 10.9.1
file: dist/mermaid.min.js file: dist/mermaid.min.js
# 文章访问/评论统计 # 文章访问/评论统计
waline: waline:
js: js:
- name: pageview - name: pageview
alias_name: '@waline/client' alias_name: waline
version: 2.13.0 version: 2.15.8
file: dist/pageview.js file: dist/pageview.js
alias: waline alias: "@waline/client"
- name: comment - name: comment
alias_name: '@waline/client' alias_name: waline
version: 2.13.0 version: 2.15.8
file: dist/comment.js file: dist/comment.js
alias: waline alias: "@waline/client"

View File

@ -388,7 +388,7 @@ params:
footer: footer:
# 启动谷歌翻译功能 # 启动谷歌翻译功能
# Enable google translate in footer # Enable google translate in footer
translate: true translate: false
# 站点开始年份,默认为当下时间的年份 # 站点开始年份,默认为当下时间的年份
# Specify the year when the site was setup. # Specify the year when the site was setup.
# If not defined, current year will be used. # If not defined, current year will be used.
@ -812,11 +812,11 @@ params:
- name: waline - name: waline
title: Waline title: Waline
color: "#27ae60" color: "#27ae60"
weight: 2 weight: 1
- name: giscus - name: giscus
title: Giscus title: Giscus
color: "#886ce4" color: "#886ce4"
weight: 1 weight: 2
# Waline 评论插件 # Waline 评论插件
# 更多配置信息请参考https://waline.js.org/ # 更多配置信息请参考https://waline.js.org/
@ -1027,7 +1027,7 @@ params:
# - flat flat callout style with background, like on Mozilla or StackOverflow. # - flat flat callout style with background, like on Mozilla or StackOverflow.
# - disabled disable all CSS styles import of note tag. # - disabled disable all CSS styles import of note tag.
style: simple style: simple
icons: false icons: true
# Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6). # Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6).
# Offset also applied to label tag variables. This option can work with disabled note tag. # Offset also applied to label tag variables. This option can work with disabled note tag.
lightBgOffset: 0 lightBgOffset: 0
@ -1103,30 +1103,18 @@ params:
# --------------------------------------------------------------- # ---------------------------------------------------------------
# CDN 服务(暂时只支持 unpkg 和 cndjs # CDN 服务
# CDN Settings # CDN Settings
# --------------------------------------------------------------- # ---------------------------------------------------------------
vendors: vendors:
# The CDN provider of NexT internal scripts. # The CDN provider of NexT internal scripts.
# Available values: local | unpkg | cdnjs | qiniu | bootcdn | custom # Available values: local | cdn
# Warning: If you are using the latest master branch of NexT, please set `internal: local`
internal: local internal: local
# The default CDN provider of third-party plugins. # The default CDN provider of third-party plugins.
# Available values: local | unpkg | cdnjs| qiniu | bootcdn | custom # Available values: local | cdnjs | unpkg | jsdelivr | staticfile | bootcdn | 7ed | zstatic | zeyao | custom
# Dependencies for `plugins: local`: https://github.com/next-theme/plugins plugins: local
plugins: qiniu
# TODO
# Custom CDN URL # Custom CDN URL
# For example: # For example:
# custom_cdn_url: https://cdn.jsdelivr.net/npm/${npm_name}@${version}/${minified} # custom_cdn_url: https://cdn.jsdelivr.net/npm/${npm_name}@${version}/${minified}
# custom_cdn_url: https://cdnjs.cloudflare.com/ajax/libs/${cdnjs_name}/${version}/${cdnjs_file} # custom_cdn_url: https://cdnjs.cloudflare.com/ajax/libs/${cdnjs_name}/${version}/${cdnjs_file}
#custom_cdn_url:
# TODO
# Assets
# Accelerate delivery of static files using a CDN
# The js option is only valid when vendors.internal is local.
css: css
js: js
images: imgs

View File

@ -14,7 +14,7 @@ tags:
- 个性化 - 个性化
- 布局 - 布局
url: "post/custom-files.html" url: "demo/custom-files.html"
toc: true toc: true
--- ---
@ -39,7 +39,7 @@ customFilePath:
{{< /note >}} {{< /note >}}
然后在站点的根目录下创建 `layouts/partials` 2个目录用于存放自定布局设计文件另外在站点根目录下创建 `statics/css` 2个目录用于存放自定义 CSS 样式文件。一切就绪后,就可以参考如下的步骤,完成自己的设计想法。 然后在站点的根目录下创建 `layouts/partials` 2个目录用于存放自定布局设计文件另外在站点根目录下创建 `static/css` 2个目录用于存放自定义 CSS 样式文件。一切就绪后,就可以参考如下的步骤,完成自己的设计想法。
## 侧边栏设计 ## 侧边栏设计

View File

@ -14,7 +14,7 @@ tags:
- 表情 - 表情
- emoji - emoji
url: "post/emoji-support.html" url: "demo/emoji-support.html"
--- ---
Emoji 可以通过多种方式在 Hugo 项目中启用。 Emoji 可以通过多种方式在 Hugo 项目中启用。

View File

@ -12,7 +12,7 @@ tags:
- Hugo - Hugo
- 开始 - 开始
url: post/hello-world.html url: demo/hello-world.html
toc: true toc: true
weight: 2 weight: 2
--- ---

View File

@ -0,0 +1,40 @@
---
title: "图像浏览工具 "
description: "默认会对文章内的图片, 进行图片浏览,点击图片可以查看大图,点击空白处可以关闭。"
keywords: "image,图像,浏览器,相册"
date: 2024-07-21T10:28:12+08:00
lastmod: 2024-07-21T10:28:12+08:00
categories:
- 示例文章
tags:
- 图像
- 相册
- 浏览
url: "demo/image-viewer.html"
toc: false
---
本主题自带图像浏览器功能,支持对文章区域内出现的图片进行浏览,点击图片可以查看大图,点击空白处可以关闭。不需要配置任何参数,只要在文章里面相应的位置添加图片信息即可 。
<!--more-->
图像浏览器引用了 [fengyuanchen](https://fengyuanchen.github.io/) 开发的 [viewerjs](https://fengyuanchen.github.io/viewerjs/),支持显示图像名称,尺寸,旋转,缩放,播放等功能。可点击如下的示例图像查看体验:
## 动物
![cute-scottish-fold-cat](/post/image-viewer/preview_cute-scottish-fold-cat.jpg)
![scottish-fold-kitten](/post/image-viewer/preview_scottish-fold-kitten.jpg)
![hourses](/post/image-viewer/preview_horses.jpg)
![owl-family-background](/post/image-viewer/preview_owl-family-background.jpg)
## 风景
![luxury-resort-in-maldives](/post/image-viewer/preview_luxury-resort-in-maldives.jpg)
![sea-shell](/post/image-viewer/preview_sea-shell.jpg)
![the-arch-sunset](/post/image-viewer/preview_the-arch-sunset.jpg)
![norway-autumn-landscape](/post/image-viewer/preview_norway-autumn-landscape.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

View File

@ -7,7 +7,7 @@ lastmod: 2022-06-03T11:52:18+08:00
publishDate: 2022-06-03T11:52:18+08:00 publishDate: 2022-06-03T11:52:18+08:00
author: Mainroad author: Mainroad
originLink: https://mainroad-demo.netlify.app/post/basic-elements/ originLink: https://mainroad-demo.netlify.app/demo/basic-elements/
categories: categories:
- 示例文章 - 示例文章
@ -19,7 +19,7 @@ tags:
toc: false toc: false
draft: false draft: false
url: post/markdown-syntax.html url: demo/markdown-syntax.html
--- ---
仅以此篇文章来测试下在 `NexT` 主题中在通过 `Hugo` 引擎来建站时,是否支持 `Markdown` 文件内容中所写的各种语法,并展示下实际的效果。 仅以此篇文章来测试下在 `NexT` 主题中在通过 `Hugo` 引擎来建站时,是否支持 `Markdown` 文件内容中所写的各种语法,并展示下实际的效果。
@ -208,4 +208,4 @@ X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup>
<mark>比特作为信息论中的信息单位,也被称为 shannon </mark>,以信息论领域的创始人 Claude shannon 的名字命名。 <mark>比特作为信息论中的信息单位,也被称为 shannon </mark>,以信息论领域的创始人 Claude shannon 的名字命名。
参考: 参考:
- 来自 **Mainroad** 主题的 [Basic Elements](https://mainroad-demo.netlify.app/post/basic-elements/) 内容 - 来自 **Mainroad** 主题的 [Basic Elements](https://mainroad-demo.netlify.app/demo/basic-elements/) 内容

View File

@ -15,7 +15,7 @@ tags:
- katex - katex
url: "post/math-formula.html" url: "demo/math-formula.html"
math: mathjax math: mathjax
--- ---

View File

@ -13,7 +13,7 @@ tags:
- 流程图 - 流程图
- 时序图 - 时序图
url: "post/mermaid-charts.html" url: "demo/mermaid-charts.html"
mermaid: true mermaid: true
toc: true toc: true
--- ---

View File

@ -14,7 +14,7 @@ tags:
comment: comment:
enable: false enable: false
url: "post/no-header-title.html" url: "demo/no-header-title.html"
--- ---
刘慈欣2018克拉克奖获奖感言部分内容节选 刘慈欣2018克拉克奖获奖感言部分内容节选

View File

@ -12,7 +12,7 @@ categories:
tags: tags:
- 短代码 - 短代码
- 语法 - 语法
url: "post/shortcodes.html" url: "demo/shortcodes.html"
--- ---
虽然 `Markdown` 语法已经非常丰富能够满足我们写文章的绝大部分需求,但是为更好的对文章内容进行更友好的排版,为引设计一套自定义的短语,便于在使用时能够快速引用。 虽然 `Markdown` 语法已经非常丰富能够满足我们写文章的绝大部分需求,但是为更好的对文章内容进行更友好的排版,为引设计一套自定义的短语,便于在使用时能够快速引用。
@ -66,6 +66,11 @@ url: "post/shortcodes.html"
**Welcome** to [Hugo NexT!](https://preview.hugo-next.eu.org) **Welcome** to [Hugo NexT!](https://preview.hugo-next.eu.org)
{{< /note >}} {{< /note >}}
{{< note primary >}}
### Primary Header
**Welcome** to [Hugo NexT!](https://preview.hugo-next.eu.org)
{{< /note >}}
{{< note info >}} {{< note info >}}
### Info Header ### Info Header
**Welcome** to [Hugo NexT!](https://preview.hugo-next.eu.org) **Welcome** to [Hugo NexT!](https://preview.hugo-next.eu.org)

View File

@ -14,7 +14,7 @@ tags:
- 高亮 - 高亮
- Chroma - Chroma
url: post/syntax-highlighting.html url: demo/syntax-highlighting.html
--- ---
Hugo 通过 Chroma 提供非常快速的语法高亮显示,现 Hugo 中使用 Chroma 作为代码块高亮支持,它内置在 Go 语言当中,速度是真的非常、非常快,而且最为重要的是它也兼容之前我们使用的 Pygments 方式。 Hugo 通过 Chroma 提供非常快速的语法高亮显示,现 Hugo 中使用 Chroma 作为代码块高亮支持,它内置在 Go 语言当中,速度是真的非常、非常快,而且最为重要的是它也兼容之前我们使用的 Pygments 方式。

View File

@ -14,7 +14,7 @@ tags:
- 博客 - 博客
toc: true toc: true
url: post/table-of-content.html url: demo/table-of-content.html
--- ---
巴顿将军说过“衡量一个人是否成功不是看他站到顶峰而是从顶峰跌落之后的反弹力”褚时健的人生便是如此中年发家致富名利双收之后又跌落到谷底等到74岁再创业10年后带着褚橙归来东山再起收获亿万财富他的发展轨迹就是反弹的过程。 巴顿将军说过“衡量一个人是否成功不是看他站到顶峰而是从顶峰跌落之后的反弹力”褚时健的人生便是如此中年发家致富名利双收之后又跌落到谷底等到74岁再创业10年后带着褚橙归来东山再起收获亿万财富他的发展轨迹就是反弹的过程。

View File

@ -8,16 +8,22 @@
desc: 世界上最快的网站建设框架! desc: 世界上最快的网站建设框架!
avatar: https://gohugo.io/favicon-32x32.png avatar: https://gohugo.io/favicon-32x32.png
link: https://gohugo.io link: https://gohugo.io
timeout: 2
visible: true
- name: Hugo-NexT - name: Hugo-NexT
desc: Hugo NexT 官方预览网站。 desc: Hugo NexT 官方预览网站。
avatar: https://hugo-next.eu.org/imgs/hugo_next_avatar.png avatar: https://hugo-next.eu.org/imgs/hugo_next_avatar.png
link: https://hugo-next.eu.org link: https://hugo-next.eu.org
timeout: 2
visible: true
- name: 凡梦星尘空间站 - name: 凡梦星尘空间站
desc: 再平凡的人也有属于他的梦想! desc: 再平凡的人也有属于他的梦想!
avatar: https://lisenhui.cn/imgs/avatar.png avatar: https://elkan1788.github.io/imgs/avatar.png
link: https://lisenhui.cn link: https://lisenhui.cn
timeout: 2
visible: true
- FLinksTitle: Hugo NexT 粉丝群体 - FLinksTitle: Hugo NexT 粉丝群体
@ -27,3 +33,5 @@
desc: 全网首个 Hugo NexT 忠实粉丝用户 desc: 全网首个 Hugo NexT 忠实粉丝用户
avatar: https://a.happy2008.top/imgs/stayhome-small.png avatar: https://a.happy2008.top/imgs/stayhome-small.png
link: https://a.happy2008.top/ link: https://a.happy2008.top/
timeout: 2
visible: true

3
go.mod Normal file
View File

@ -0,0 +1,3 @@
module github.com/hugo-next/hugo-theme-next
go 1.18

1
hugo-theme-next.go Normal file
View File

@ -0,0 +1 @@
package hugothemenext

136
i18n/fr.yaml Normal file
View File

@ -0,0 +1,136 @@
#--------------------------------------
# French Version
#--------------------------------------
archives:
other: Billets
tag:
other: Tag
tags:
other: Tags
TagTitle:
other: Liste des Tags
category:
other: Categorie
categories:
other: Categories
CateTitle:
other: Classification des items
AllSome:
other: "Total :{{ .Some }}"
Symbol:
colon: ":"
comma: ","
period: "."
Sidebar:
label:
posts: Billets
categories: Categories
tags: Tags
rss: RSS
ccommons: "Creative Commons"
toc: Sommaire
overview: "Présentation"
navToggle: "Fermer/Ouvrire la bar de navigation"
search: Chercher
Terms:
archives: "{{ .Count }} Billets au total"
categories: "{{ .Count }} Categories au total"
tags: "{{ .Count }} Tags au total"
PostArchive:
cheers:
um: Hum...
ok: Ok
nice: Cool
good: Bien
great: Génial
excellent: Excellent
keepOn: Continue de publier.╰(*°▽°*)╯
PostMeta:
sticky: Stickys
publish:
date: "Publié le "
time: "Date de création"
lastmod:
date: "Mise à jour le "
time: "Modifié le "
category: "Classé comme "
words:
title: Nb. Mots
count: "{{- .WordCount -}}"
reading:
title: "Lectures "
time: "{{- .ReadingTime -}} mins"
views: Vues
comments: Commentaires
tags: Tags
more: "Lire la suite"
edit: "Editer ce billet"
Reward:
title: Donner
wechatpay: WechatPay
alipay: Alipay
paypal: Paypal
bitcoin: Bitcoin
PostCopyRight:
title: Titre du billet
author: Autheur du billet
link: Lien du billet
origin:
author: Écrit par
link: Originellement de
license:
title: Note de Copyright
content: "Tous les articles sont sous licence <i class=\"fab fa-fw fa-creative-commons\"></i>%s."
PostFollowMe:
other: "Autres réseaux sociaux"
PostComments:
title: Commentaires
SiteInfoItems:
title: "Statistiques"
runTimes: "En cours:"
words: "Nb. Mots:"
readTimes: "Temps de lecture: "
visitors: "Visiteurs: "
pageViews: "Vues: "
todayViews: "Nombre de vues du jour: "
yesterdayViews: "Nombre de vues d'hier: "
monthViews: "Vues du mois: "
totalViews: "Total des vues: "
lastUpdate: "Dernière mise à jour: "
Footer:
powerby: "Fait par %s"
Search:
placeholder: Recherche...
empty: "Nous n'avons pas trouvé ce que vous cherchiez pour : ${query}"
hits: "${hits} resultats trouvés"
time: "${hits} resultats trouvés en ${time} ms"
DateSuffix:
years: " Années"
days: " Jours"
hours: " Heures"
mins: " Minutes"
month: " Mois"
day: " Jour"
hour: " Heur"
min: " Minute"
just: "A l'instant"
ToolBtns:
comment: "Commenter"
theme: "Changer le theme"
lang: "Traduction Multilingue"
backTop: "Remonter"

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

BIN
images/hugo-next-symbol.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -23,9 +23,14 @@
<ul class="category-list"> <ul class="category-list">
{{ $allSecondaryCats := slice }} {{ $allSecondaryCats := slice }}
{{ range .Site.Taxonomies.categories.ByCount }} {{ range .Site.Taxonomies.categories.ByCount }}
{{/*
Rollback the change of the primary category name.
& it could not support the lowercase category name.
{{ $primaryCategory := .Name }}
*/}}
{{ $primaryCategory := .Page.Title }} {{ $primaryCategory := .Page.Title }}
{{ $primaryCount := 0 }} {{ $primaryCount := 0 }}
{{ $secondaryCategories := slice}} {{ $secondaryCategories := slice }}
{{ $pages := $.Scratch.Get "pages" }} {{ $pages := $.Scratch.Get "pages" }}
{{ range where $pages "Params.categories" "intersect" (slice $primaryCategory) }} {{ range where $pages "Params.categories" "intersect" (slice $primaryCategory) }}
{{ if eq (index .Params.categories 0) $primaryCategory }} {{ if eq (index .Params.categories 0) $primaryCategory }}
@ -42,7 +47,7 @@
{{ if not (in $allSecondaryCats $primaryCategory) }} {{ if not (in $allSecondaryCats $primaryCategory) }}
<li class="category-list-item"> <li class="category-list-item">
<a class="category-list-link" href="{{ "categories/" | relURL }}{{ $primaryCategory | urlize }}"> <a class="category-list-link" href="{{ "categories/" | relURL }}{{ $primaryCategory | urlize }}/">
{{ $primaryCategory }} {{ $primaryCategory }}
<span class="category-list-count">{{ $primaryCount }}</span> <span class="category-list-count">{{ $primaryCount }}</span>
</a> </a>
@ -57,7 +62,7 @@
{{ end }} {{ end }}
{{ end }} {{ end }}
<li class="category-children-list-item"> <li class="category-children-list-item">
<a class="category-list-link" href="{{ "categories/" | relURL }}{{ . | urlize }}"> <a class="category-list-link" href="{{ "categories/" | relURL }}{{ . | urlize }}/">
{{ . }} {{ . }}
<span class="category-list-count">{{ $secondaryCount }}</span> <span class="category-list-count">{{ $secondaryCount }}</span>
</a> </a>
@ -77,7 +82,7 @@
<div class="tag-cloud-tags"> <div class="tag-cloud-tags">
{{ $randNums := (seq 10) }} {{ $randNums := (seq 10) }}
{{- range $name, $items := $tags }} {{- range $name, $items := $tags }}
<a class="tag-cloud-{{ index (shuffle $randNums) 0 }}" href="{{ "/tags/" | relLangURL }}{{ $name | urlize }}">{{ .Page.Title }} <a class="tag-cloud-{{ index (shuffle $randNums) 0 }}" href="{{ "/tags/" | relLangURL }}{{ $name | urlize }}/">{{ .Page.Title }}
<span class="tag-list-count"> <span class="tag-list-count">
<sup>({{ len $items }})</sup> <sup>({{ len $items }})</sup>
</span> </span>

View File

@ -13,6 +13,7 @@
<div class="flinks-list-desc">{{ .FLinksDesc | safeHTML }}</div> <div class="flinks-list-desc">{{ .FLinksDesc | safeHTML }}</div>
<div class="flinks-list-items"> <div class="flinks-list-items">
{{ range .FLinksList }} {{ range .FLinksList }}
{{ if .visible }}
<div class="flinks-list-item"> <div class="flinks-list-item">
<a href="{{ .link }}" rel="external nofollow noreferrer" title=" {{ .name }}" target="_blank"> <a href="{{ .link }}" rel="external nofollow noreferrer" title=" {{ .name }}" target="_blank">
<div class="flinks-item-icon"> <div class="flinks-item-icon">
@ -23,6 +24,7 @@
</a> </a>
</div> </div>
{{ end }} {{ end }}
{{ end }}
</div> </div>
</div> </div>
{{ end }} {{ end }}

View File

@ -3,19 +3,17 @@
{{ $fmt := "%s/%s@%s/%s" }} {{ $fmt := "%s/%s@%s/%s" }}
{{ $npm := .res.name }} {{ $npm := .res.name }}
{{ with .res.alias2 }}
{{ $npm = . }}
{{ end }}
{{ $file := .res.file }} {{ $file := .res.file }}
{{ if ne .vendor "unpkg" }} {{ if ne .router.type "nodejs" }}
{{ $file = replaceRE `(dist|lib|source\/js)\/` "" .res.file }}
{{ $fmt = "%s/%s/%s/%s" }}
{{ else }}
{{ with .res.alias }} {{ with .res.alias }}
{{ $npm = . }} {{ $npm = . }}
{{ end }} {{ end }}
{{ $file = replaceRE `(dist|lib|source\/js)\/` "" .res.file }}
{{ $fmt = "%s/%s/%s/%s" }}
{{ end }} {{ end }}
{{ $pluginRes := printf $fmt .router $npm .res.version $file }} {{ $pluginRes := printf $fmt .router.url $npm .res.version $file }}
{{ return $pluginRes }} {{ return $pluginRes }}

View File

@ -43,15 +43,21 @@
{{ if .enable }} {{ if .enable }}
<div class="vendors-list"> <div class="vendors-list">
{{ range .list }} {{ range .list }}
<a target="_blank" href="{{ .link }}" title="{{ .name }}"> <a target="_blank" href="{{ .link }}" title="{{ .name }}">
{{ if .image }} {{ if .image }}
<img src="/imgs/img-lazy-loading.gif" data-src="{{ .image.url }}" alt="{{ .name }}" /> <img src="/imgs/img-lazy-loading.gif" data-src="{{ .image.url }}" alt="{{ .name }}" />
{{ else }} {{ else }}
{{ .name }} {{ .name }}
{{ end }} {{ end }}
</a> </a>
{{ end }} {{ end }}
<span>{{ .title }}</span> {{ $cv := $.Scratch.Get "router" }}
{{ if and $cv (ne $cv.name "local") }}
<a target="_blank" href="{{ $cv.home }}" title="{{ $cv.name }}">
<img src="/imgs/img-lazy-loading.gif" data-src="{{ $cv.logo }}" alt="{{ $cv.name }}" />
</a>
{{ end }}
<span>{{ .title }}</span>
</div> </div>
{{ end }} {{ end }}
{{ end }} {{ end }}

View File

@ -13,6 +13,7 @@
<link rel="apple-touch-icon" sizes="180x180" href="{{ .Site.Params.favicon.appleTouchIcon }}"> <link rel="apple-touch-icon" sizes="180x180" href="{{ .Site.Params.favicon.appleTouchIcon }}">
<meta itemprop="name" content="{{ .Title }}" /> <meta itemprop="name" content="{{ .Title }}" />
<meta itemprop="description" content="{{ .Description | default .Site.Params.description }}" /> <meta itemprop="description" content="{{ .Description | default .Site.Params.description }}" />
<meta name="description" content="{{ .Description | default .Site.Params.description }}" />
{{ if .IsPage }} {{ if .IsPage }}
{{ with .Date }} {{ with .Date }}
<meta itemprop="datePublished" {{ . }} /> <meta itemprop="datePublished" {{ . }} />

View File

@ -5,12 +5,25 @@
{{ range .Site.Menus.main }} {{ range .Site.Menus.main }}
{{ $active := $curP.IsMenuCurrent "main" . }} {{ $active := $curP.IsMenuCurrent "main" . }}
<li class="menu-item menu-item-{{ .Identifier }}"> <li class="menu-item menu-item-{{ .Identifier }}">
<a href="{{ .URL | relLangURL }}" class="hvr-icon-pulse {{if $active }} menu-item-active{{ end }}" rel="section"> <a href="{{ .URL | relLangURL }}" class="{{ if .HasChildren }}menus-parent{{ end }} hvr-icon-pulse {{if $active }} menu-item-active{{ end }}" rel="section">
{{ if $ms.icons }}<i class="fa fa-{{ .Pre }} hvr-icon"></i>{{ end }}{{ .Name }} {{ if $ms.icons }}<i class="fa fa-{{ .Pre }} hvr-icon"></i>{{ end }}{{ .Name }}
{{ if .HasChildren }}<span class="menu-item-shrink-icon"><i class="fa fa-angle-right"></i></span>{{ end }}
{{ if and $ms.badges (eq .Identifier "archives") }} {{ if and $ms.badges (eq .Identifier "archives") }}
<span class="badge">{{ $.Scratch.Get "postsCount" }}</span> <span class="badge">{{ $.Scratch.Get "postsCount" }}</span>
{{ end }} {{ end }}
</a> </a>
{{ if .HasChildren }}
<ul class="menu-children">
{{ range .Children }}
{{ $active = $curP.IsMenuCurrent "main" . }}
<li class="menu-child-item">
<a href="{{ .URL | relLangURL }}" class="hvr-icon-pulse {{if $active }}menu-item-active{{ end }}" rel="section">
<i class="fa hvr-icon"></i>{{ .Name }}
</a>
</li>
{{ end }}
</ul>
{{ end }}
</li> </li>
{{ end }} {{ end }}

View File

@ -21,7 +21,19 @@
{{ $globalVars.Set "tagsCount" (len .Site.Taxonomies.tags) }} {{ $globalVars.Set "tagsCount" (len .Site.Taxonomies.tags) }}
{{ $vendor := .Site.Params.vendors.plugins }} {{ $vendor := .Site.Params.vendors.plugins }}
{{ $router := index .Site.Data.resources.vendors $vendor }} {{ $router := dict }}
{{ if eq $vendor "local" }}
{{ $router = dict "url" (printf "%s3rd" .Site.BaseURL) "name" $vendor "type" "modern" }}
{{ else }}
{{ range .Site.Data.resources.vendors }}
{{ if eq .name $vendor }}
{{ $router = . }}
{{ break }}
{{ end }}
{{ end }}
{{ end }}
{{ $globalVars.Set "vendor" $vendor }} {{ $globalVars.Set "vendor" $vendor }}
{{ $globalVars.Set "router" $router }} {{ $globalVars.Set "router" $router }}

View File

@ -2,7 +2,7 @@
{{ with .Params.categories }} {{ with .Params.categories }}
<span class="post-meta-item"> <span class="post-meta-item">
<span class="post-meta-item-icon"> <span class="post-meta-item-icon">
<i class="far fa-folder-open"></i> <i class="fas fa-solid fa-folder-open"></i>
</span> </span>
<span class="post-meta-item-text" title="{{ T "PostMeta.category" }}"> <span class="post-meta-item-text" title="{{ T "PostMeta.category" }}">
{{ print (T "PostMeta.category") (T "Symbol.colon") }} {{ print (T "PostMeta.category") (T "Symbol.colon") }}

View File

@ -1,6 +1,6 @@
<span class="post-meta-item" title="{{ T "PostComments" }}"> <span class="post-meta-item" title="{{ T "PostComments" }}">
<span class="post-meta-item-icon"> <span class="post-meta-item-icon">
<i class="far fa-comments"></i> <i class="fas fa-solid fa-comments"></i>
</span> </span>
<span class="post-meta-item-text" title="{{ T "PostMeta.comments" }}"> <span class="post-meta-item-text" title="{{ T "PostMeta.comments" }}">
{{ print (T "PostMeta.comments") (T "Symbol.colon") }} {{ print (T "PostMeta.comments") (T "Symbol.colon") }}

View File

@ -3,7 +3,7 @@
{{ $createdTime := (.Date.Format $timeF) | default (.Date.Format $timeF) }} {{ $createdTime := (.Date.Format $timeF) | default (.Date.Format $timeF) }}
<span class="post-meta-item"> <span class="post-meta-item">
<span class="post-meta-item-icon"> <span class="post-meta-item-icon">
<i class="far fa-calendar"></i> <i class="fas fa-solid fa-calendar"></i>
</span> </span>
<span class="post-meta-item-text" title="{{ T "PostMeta.publish.date" }}"> <span class="post-meta-item-text" title="{{ T "PostMeta.publish.date" }}">
{{ print (T "PostMeta.publish.date") (T "Symbol.colon") }} {{ print (T "PostMeta.publish.date") (T "Symbol.colon") }}

View File

@ -1,7 +1,7 @@
{{ if .Site.Params.postMeta.readTime }} {{ if .Site.Params.postMeta.readTime }}
<span class="post-meta-item" title="{{ T "PostMeta.reading.title" }}"> <span class="post-meta-item" title="{{ T "PostMeta.reading.title" }}">
<span class="post-meta-item-icon"> <span class="post-meta-item-icon">
<i class="far fa-clock"></i> <i class="fas fa-solid fa-clock"></i>
</span> </span>
<span class="post-meta-item-text">{{ print (T "PostMeta.reading.title") (T "Symbol.colon") }}&asymp;</span> <span class="post-meta-item-text">{{ print (T "PostMeta.reading.title") (T "Symbol.colon") }}&asymp;</span>
<span>{{ T "PostMeta.reading.time" . }}</span> <span>{{ T "PostMeta.reading.time" . }}</span>

View File

@ -3,7 +3,7 @@
{{ $modTime := .Lastmod.Format .Site.Params.timeFormat }} {{ $modTime := .Lastmod.Format .Site.Params.timeFormat }}
<span class="post-meta-item"> <span class="post-meta-item">
<span class="post-meta-item-icon"> <span class="post-meta-item-icon">
<i class="far fa-calendar-check"></i> <i class="fas fa-solid fa-calendar-check"></i>
</span> </span>
<span class="post-meta-item-text" title="{{ T "PostMeta.lastmod.date" }}"> <span class="post-meta-item-text" title="{{ T "PostMeta.lastmod.date" }}">
{{ print (T "PostMeta.lastmod.date") (T "Symbol.colon") }} {{ print (T "PostMeta.lastmod.date") (T "Symbol.colon") }}

View File

@ -7,7 +7,7 @@
{{ end }} {{ end }}
<span class="post-meta-item" title="{{ T "PostMeta.views" }}"> <span class="post-meta-item" title="{{ T "PostMeta.views" }}">
<span class="post-meta-item-icon"> <span class="post-meta-item-icon">
<i class="far fa-eye"></i> <i class="fas fa-solid fa-eye"></i>
</span> </span>
<span class="post-meta-item-text"> <span class="post-meta-item-text">
{{ print (T "PostMeta.views") (T "Symbol.colon") }} {{ print (T "PostMeta.views") (T "Symbol.colon") }}

View File

@ -1,7 +1,7 @@
{{ if .Site.Params.postMeta.wordCount }} {{ if .Site.Params.postMeta.wordCount }}
<span class="post-meta-item" title="{{ T "PostMeta.words.title" }}"> <span class="post-meta-item" title="{{ T "PostMeta.words.title" }}">
<span class="post-meta-item-icon"> <span class="post-meta-item-icon">
<i class="far fa-file-word"></i> <i class="fas fa-solid fa-file-word"></i>
</span> </span>
<span class="post-meta-item-text">{{ print (T "PostMeta.words.title") (T "Symbol.colon") }}</span> <span class="post-meta-item-text">{{ print (T "PostMeta.words.title") (T "Symbol.colon") }}</span>
<span>{{ T "PostMeta.words.count" . }}</span> <span>{{ T "PostMeta.words.count" . }}</span>

View File

@ -3,8 +3,8 @@
{{ $vendor := .Site.Params.vendors.plugins }} {{ $vendor := .Site.Params.vendors.plugins }}
{{ $router := .Scratch.Get "router" }} {{ $router := .Scratch.Get "router" }}
{{ range $jsRes }} {{ range $jsRes }}
{{ $pluginJS := partial "_funs/get_res.html" (dict "res" . "vendor" $vendor "router" $router) }} {{ $pluginJS := partial "_funs/get_res.html" (dict "res" . "vendor" $vendor "router" $router) }}
<script type="text/javascript" src="{{ $pluginJS }}" defer></script> <script type="text/javascript" src="{{ $pluginJS }}" crossorigin="anonymous" defer></script>
{{ end }} {{ end }}
<script class="next-config" data-name="main" type="application/json">{{ .Scratch.Get "config" }}</script> <script class="next-config" data-name="main" type="application/json">{{ .Scratch.Get "config" }}</script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

8
static/3rd/animejs/3.2.2/anime.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

7
static/3rd/artalk/2.6.4/Artalk.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,(function(e){return function(){"use strict";var t={771:function(t){t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var o={};return function(){r.d(o,{default:function(){return d}});var e=r(771),t=r.n(e);const n=function(e,t,n){let r=n,o=0;const i=e.length;for(;r<t.length;){const n=t[r];if(o<=0&&t.slice(r,r+i)===e)return r;"\\"===n?r++:"{"===n?o++:"}"===n&&o--,r++}return-1},i=/^\\begin{/;var a=function(e,t){let r;const o=[],a=new RegExp("("+t.map((e=>e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"))).join("|")+")");for(;r=e.search(a),-1!==r;){r>0&&(o.push({type:"text",data:e.slice(0,r)}),e=e.slice(r));const a=t.findIndex((t=>e.startsWith(t.left)));if(r=n(t[a].right,e,t[a].left.length),-1===r)break;const l=e.slice(0,r+t[a].right.length),s=i.test(l)?l:e.slice(t[a].left.length,r);o.push({type:"math",data:s,rawData:l,display:t[a].display}),e=e.slice(r+t[a].right.length)}return""!==e&&o.push({type:"text",data:e}),o};const l=function(e,n){const r=a(e,n.delimiters);if(1===r.length&&"text"===r[0].type)return null;const o=document.createDocumentFragment();for(let e=0;e<r.length;e++)if("text"===r[e].type)o.appendChild(document.createTextNode(r[e].data));else{const i=document.createElement("span");let a=r[e].data;n.displayMode=r[e].display;try{n.preProcess&&(a=n.preProcess(a)),t().render(a,i,n)}catch(i){if(!(i instanceof t().ParseError))throw i;n.errorCallback("KaTeX auto-render: Failed to parse `"+r[e].data+"` with ",i),o.appendChild(document.createTextNode(r[e].rawData));continue}o.appendChild(i)}return o},s=function(e,t){for(let n=0;n<e.childNodes.length;n++){const r=e.childNodes[n];if(3===r.nodeType){let o=r.textContent,i=r.nextSibling,a=0;for(;i&&i.nodeType===Node.TEXT_NODE;)o+=i.textContent,i=i.nextSibling,a++;const s=l(o,t);if(s){for(let e=0;e<a;e++)r.nextSibling.remove();n+=s.childNodes.length-1,e.replaceChild(s,r)}else n+=a}else if(1===r.nodeType){const e=" "+r.className+" ";-1===t.ignoredTags.indexOf(r.nodeName.toLowerCase())&&t.ignoredClasses.every((t=>-1===e.indexOf(" "+t+" ")))&&s(r,t)}}};var d=function(e,t){if(!e)throw new Error("No element provided to render");const n={};for(const e in t)t.hasOwnProperty(e)&&(n[e]=t[e]);n.delimiters=n.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],n.ignoredTags=n.ignoredTags||["script","noscript","style","textarea","pre","code","option"],n.ignoredClasses=n.ignoredClasses||[],n.errorCallback=n.errorCallback||console.error,n.macros=n.macros||{},s(e,n)}}(),o=o.default}()}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,(function(e){return function(){"use strict";var t={771:function(t){t.exports=e}},r={};function n(e){var i=r[e];if(void 0!==i)return i.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,n),a.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var i={};return function(){n.d(i,{default:function(){return s}});var e=n(771),t=n.n(e),r=function(e,t,r){for(var n=r,i=0,a=e.length;n<t.length;){var o=t[n];if(i<=0&&t.slice(n,n+a)===e)return n;"\\"===o?n++:"{"===o?i++:"}"===o&&i--,n++}return-1},a=/^\\begin{/,o=function(e,t){for(var n,i=[],o=new RegExp("("+t.map((function(e){return e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")})).join("|")+")");-1!==(n=e.search(o));){n>0&&(i.push({type:"text",data:e.slice(0,n)}),e=e.slice(n));var l=t.findIndex((function(t){return e.startsWith(t.left)}));if(-1===(n=r(t[l].right,e,t[l].left.length)))break;var d=e.slice(0,n+t[l].right.length),s=a.test(d)?d:e.slice(t[l].left.length,n);i.push({type:"math",data:s,rawData:d,display:t[l].display}),e=e.slice(n+t[l].right.length)}return""!==e&&i.push({type:"text",data:e}),i},l=function(e,r){var n=o(e,r.delimiters);if(1===n.length&&"text"===n[0].type)return null;for(var i=document.createDocumentFragment(),a=0;a<n.length;a++)if("text"===n[a].type)i.appendChild(document.createTextNode(n[a].data));else{var l=document.createElement("span"),d=n[a].data;r.displayMode=n[a].display;try{r.preProcess&&(d=r.preProcess(d)),t().render(d,l,r)}catch(e){if(!(e instanceof t().ParseError))throw e;r.errorCallback("KaTeX auto-render: Failed to parse `"+n[a].data+"` with ",e),i.appendChild(document.createTextNode(n[a].rawData));continue}i.appendChild(l)}return i},d=function e(t,r){for(var n=0;n<t.childNodes.length;n++){var i=t.childNodes[n];if(3===i.nodeType){for(var a=i.textContent,o=i.nextSibling,d=0;o&&o.nodeType===Node.TEXT_NODE;)a+=o.textContent,o=o.nextSibling,d++;var s=l(a,r);if(s){for(var f=0;f<d;f++)i.nextSibling.remove();n+=s.childNodes.length-1,t.replaceChild(s,i)}else n+=d}else 1===i.nodeType&&function(){var t=" "+i.className+" ";-1===r.ignoredTags.indexOf(i.nodeName.toLowerCase())&&r.ignoredClasses.every((function(e){return-1===t.indexOf(" "+e+" ")}))&&e(i,r)}()}},s=function(e,t){if(!e)throw new Error("No element provided to render");var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);r.delimiters=r.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code","option"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},d(e,r)}}(),i=i.default}()}));

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1
static/3rd/katex/0.16.9/katex.min.css vendored Normal file

File diff suppressed because one or more lines are too long

1
static/3rd/katex/0.16.9/katex.min.js vendored Normal file

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More