From defbb6bb8ab958c3cff667130d89a1dabf1802ee Mon Sep 17 00:00:00 2001 From: dravenww Date: Fri, 29 Mar 2024 12:33:17 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=202107f?= =?UTF-8?q?8f34a14947cd4938e31fc4b49441bd27eda=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2024/2024-03-22.html | 4 ++-- 2024/2024-03-29.html | 6 +++--- 404.html | 4 ++-- about.html | 4 ++-- assets/js/{11.0f1344b7.js => 11.85585f3e.js} | 2 +- assets/js/{12.e222a855.js => 12.e7ee1f64.js} | 2 +- assets/js/{13.86802d55.js => 13.35945132.js} | 2 +- assets/js/{14.10adb632.js => 14.8b9a7799.js} | 2 +- assets/js/{app.8424b04e.js => app.8637dea9.js} | 6 +++--- categories/index.html | 4 ++-- index.html | 4 ++-- menu.html | 4 ++-- tag/index.html | 6 +++--- timeline/index.html | 4 ++-- 14 files changed, 27 insertions(+), 27 deletions(-) rename assets/js/{11.0f1344b7.js => 11.85585f3e.js} (65%) rename assets/js/{12.e222a855.js => 12.e7ee1f64.js} (95%) rename assets/js/{13.86802d55.js => 13.35945132.js} (97%) rename assets/js/{14.10adb632.js => 14.8b9a7799.js} (95%) rename assets/js/{app.8424b04e.js => app.8637dea9.js} (99%) diff --git a/2024/2024-03-22.html b/2024/2024-03-22.html index c9ccb7b0..e2bf8bb2 100644 --- a/2024/2024-03-22.html +++ b/2024/2024-03-22.html @@ -18,7 +18,7 @@ - + @@ -65,6 +65,6 @@ 2021 - 2024

收集各大技术社区网站每周热文,个人技术博客 (opens new window) 在此

每周更新,展示当前周的数据,进行查看,欢迎关注公众号 (opens new window),点个star呀

# CSDN

# 数据结构与算法

# javascript

# java

# php

# python

# 运维

# 移动开发

# c/c++

# 掘金

# 前端

# 前端-JavaScript

# 前端-Vue.js

# 前端-面试

# 前端-React.js

# 前端-Node.js

# 前端-CSS

# 前端-后端

# 前端-TypeScript

# 前端-前端框架

# 前端-GitHub

# 前端-Webpack

# 前端-NestJS

# 前端-微信小程序

# 后端

# Android

  • Android FD水位监控实现原理 (opens new window): 前言 在操作系统中,任何资源的使用都是受限制的,诸如进程数量、fd最大数量、信号缓存数量都是受到限制的。对于FD而言,FD不足可能引发OOM,其他情况下,还会造成Socket网络连接打开失败、进程无法----👍🏻点赞量:25
  • Flutter 知识集锦 | extension 拓展类方法 (opens new window): Dart 的拓展类方法已经支持很久了,之前忘了写篇文章介绍一下。最近写了几个拓展方法,借此机会,好好介绍一下 extension 关键字对类的拓展。 1. 从密文的字符串开始说起 比如现在有个需求: ----👍🏻点赞量:21
  • Android 纯代码布局编写手游sdk (opens new window): 前言 : 最近因为公司需求 上Google被查的很严, 所以就想着把代码重构 然后写布局也改成用代码写,所以就写了一个demo 然后我这边就想着 分享给各位同学 具体实现: 精简View的Base封装----👍🏻点赞量:12
  • Flutter & GLSL#8 | 乘法与矩形 (opens new window): 张风捷特烈 Flutter & GLSL 系列文章: 《Flutter & GLSL#1 | Shader 让绘制无限强大》 《Flutter & GLSL#2 | 从坐标到颜色》 《Flutter ----👍🏻点赞量:10
  • Android 基于绘制缓冲的代码雨效果 (opens new window): 前言 看过很多代码雨的前端实现,却很少看到过Android代码雨效果的实现,当然 open gl es的实现是有的。一个主要的原因是,在Android Canvas绘制时,很少有人考虑使用绘制缓冲,我----👍🏻点赞量:15
  • Compose编程思想 -- 初识Compose (opens new window): 本文主要介绍了JetPack Compose中常用的一些组件,以及Compose设计的一些小思路,通过本文的学习,可以动手简单写一些简单的页面。----👍🏻点赞量:7
  • Flutter鸿蒙终端一体化—鹊桥相会 (opens new window): 在鸿蒙中开发Flutter项目,一个最大的问题,就是「不太会写鸿蒙代码」,这对于一个Flutter开发者来说,虽然不是一件很麻烦的事,但由于现在鸿蒙的版本和文档还略有一些混乱,所以要写好还是有一些麻烦----👍🏻点赞量:9
  • 【面试基础】读写多个大文件,有哪些优化方案? (opens new window): 面试官:假如我们对客户端的一些日志信息需要写入文件,然后把文件上传云端。在这种场景中有大量的文件读写操作,你有什么优化方案?----👍🏻点赞量:16

# IOS

# GitHub

# javascript

  • obsidianmd/jsoncanvas (opens new window): An open file format for infinite canvas data.----总⭐️1,787; 今日⭐️255
  • plankanban/planka (opens new window): The realtime kanban board for workgroups built with React and Redux.----总⭐️5,971; 今日⭐️1,657
  • projectdiscovery/nuclei-templates (opens new window): Community curated list of templates for the nuclei engine to find security vulnerabilities.----总⭐️7,859; 今日⭐️43
  • sunner/ChatALL (opens new window): Concurrently chat with ChatGPT, Bing Chat, Bard, Alpaca, Vicuna, Claude, ChatGLM, MOSS, 讯飞星火, 文心一言 and more, discover the best answers----总⭐️13,566; 今日⭐️171
  • usebruno/bruno (opens new window): Opensource IDE For Exploring and Testing Api's (lightweight alternative to postman/insomnia)----总⭐️16,992; 今日⭐️1,159
  • songquanpeng/one-api (opens new window): OpenAI 接口管理 & 分发系统,支持 Azure、Anthropic Claude、Google PaLM 2 & Gemini、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元,可用于二次分发管理 key,仅单可执行文件,已打包好 Docker 镜像,一键部署,开箱即用. OpenAI key management & redistribution system, using a single API for all LLMs, and features an English UI.----总⭐️11,742; 今日⭐️420
  • Significant-Gravitas/AutoGPT (opens new window): AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.----总⭐️159,749; 今日⭐️727
  • catvod/CatVodOpen (opens new window): Open version of catvod.----总⭐️2,076; 今日⭐️81
  • nodejs/node (opens new window): Node.js JavaScript runtime ✨🐢🚀✨----总⭐️102,683; 今日⭐️332
  • WebGoat/WebGoat (opens new window): WebGoat is a deliberately insecure application----总⭐️6,424; 今日⭐️51

# vue

# typescript

  • tiangolo/full-stack-fastapi-template (opens new window): Full stack, modern web application template. Using FastAPI, React, SQLModel, PostgreSQL, Docker, GitHub Actions, automatic HTTPS and more.----总⭐️21,094; 今日⭐️5,297
  • teableio/teable (opens new window): ✨ A Super fast, Real-time, Professional, Developer friendly, No code database----总⭐️4,353; 今日⭐️2,130
  • clash-verge-rev/clash-verge-rev (opens new window): Continuation of Clash Verge - A Clash Meta GUI based on Tauri (Windows, MacOS, Linux)----总⭐️13,787; 今日⭐️1,725
  • superagent-ai/superagent (opens new window): 🥷 Run AI-agents with an API----总⭐️4,126; 今日⭐️116
  • Project-DARC/DARC (opens new window): Decentralized Autonomous Regulated Company (DARC), a company virtual machine that runs on any EVM-compatible blockchain, with on-chain law system, multi-level tokens and dividends mechanism.----总⭐️8,364; 今日⭐️1,455
  • enricoros/big-AGI (opens new window): Generative AI suite powered by the newest LLMs. Bundling AI personas, AGI functions, text-to-image, voice, response streaming, code highlighting and execution, PDF import, presets for developers, much more. Deploy on-prem or in the cloud.----总⭐️3,270; 今日⭐️183
  • fdundjer/solana-sniper-bot (opens new window): Solana Sniper Bot - Proof of Concept----总⭐️267; 今日⭐️125
  • vercel/ai-chatbot (opens new window): A full-featured, hackable Next.js AI chatbot built by Vercel----总⭐️4,340; 今日⭐️127
  • Deeptrain-Community/chatnio (opens new window): 🚀 Next Generation AI One-Stop Internationalization Solution. 🚀 下一代 AI 一站式 B/C 端解决方案,支持 OpenAI,Midjourney,Claude,讯飞星火,Stable Diffusion,DALL·E,ChatGLM,通义千问,腾讯混元,360 智脑,百川 AI,火山方舟,新必应,Gemini,Moonshot 等模型,支持对话分享,自定义预设,云端同步,模型市场,支持弹性计费和订阅计划模式,支持图片解析,支持联网搜索,支持模型缓存,丰富美观的后台管理与仪表盘数据统计。----总⭐️2,020; 今日⭐️394
  • solana-labs/solana-web3.js (opens new window): Solana JavaScript SDK----总⭐️1,731; 今日⭐️57

# python

# go

# rust

# object-c

# css

- + diff --git a/2024/2024-03-29.html b/2024/2024-03-29.html index c5282260..a6932f91 100644 --- a/2024/2024-03-29.html +++ b/2024/2024-03-29.html @@ -18,7 +18,7 @@ - + @@ -64,7 +64,7 @@    2021 - 2024 -

收集各大技术社区网站每周热文,个人技术博客 (opens new window) 在此

每周更新,展示当前周的数据,进行查看,欢迎关注公众号 (opens new window),点个star呀

# CSDN

# 数据结构与算法

# javascript

# java

# php

# python

# 运维

# 移动开发

# c/c++

# 掘金

# 前端

# 前端-JavaScript

# 前端-Vue.js

# 前端-面试

# 前端-React.js

# 前端-Node.js

# 前端-CSS

# 前端-后端

# 前端-TypeScript

# 前端-前端框架

# 前端-GitHub

# 前端-Webpack

# 前端-微信小程序

# 前端-NestJS

# 后端

# Android

# IOS

# GitHub

# javascript

# vue

# typescript

# python

# go

# rust

# object-c

# css

- +

收集各大技术社区网站每周热文,个人技术博客 (opens new window) 在此

每周更新,展示当前周的数据,进行查看,欢迎关注公众号 (opens new window),点个star呀

# CSDN

# 数据结构与算法

# javascript

# java

# php

# python

# 运维

# 移动开发

# c/c++

# 掘金

# 前端

# 前端-JavaScript

# 前端-Vue.js

# 前端-面试

# 前端-React.js

# 前端-Node.js

# 前端-CSS

# 前端-后端

# 前端-TypeScript

# 前端-前端框架

# 前端-GitHub

# 前端-Webpack

# 前端-微信小程序

# 前端-NestJS

# 后端

# Android

# IOS

# GitHub

# javascript

# vue

# typescript

# python

# go

# rust

# object-c

# css

+ diff --git a/404.html b/404.html index 79b67191..674566fb 100644 --- a/404.html +++ b/404.html @@ -18,11 +18,11 @@ - +
- + diff --git a/about.html b/about.html index 0cdef980..db45f542 100644 --- a/about.html +++ b/about.html @@ -18,7 +18,7 @@ - + @@ -66,6 +66,6 @@ 2024

关于我

# 杂活

  • 做小程序
  • 做鸿蒙
  • 做设计
  • 讲段子

# 联系我

欢迎关注我的公众号,每天获取最新高质量技术文章

- + diff --git a/assets/js/11.0f1344b7.js b/assets/js/11.85585f3e.js similarity index 65% rename from assets/js/11.0f1344b7.js rename to assets/js/11.85585f3e.js index e5f5dabf..52697856 100644 --- a/assets/js/11.0f1344b7.js +++ b/assets/js/11.85585f3e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{527:function(e,t,r){"use strict";r.r(t);var n=r(7),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("p",[e._v("收集各大技术社区网站每周热文,"),r("a",{attrs:{href:"https://github.com/dravenww/blob",target:"_blank",rel:"noopener noreferrer"}},[e._v("个人技术博客"),r("OutboundLink")],1),e._v(" 在此")]),e._v(" "),r("p",[e._v("每周更新,展示当前周的数据,进行查看,欢迎"),r("a",{attrs:{href:"https://www.dravenwu.top",target:"_blank",rel:"noopener noreferrer"}},[e._v("关注公众号"),r("OutboundLink")],1),e._v(",点个star呀")]),e._v(" "),r("h2",{attrs:{id:"csdn"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#csdn"}},[e._v("#")]),e._v(" CSDN")]),e._v(" "),r("h3",{attrs:{id:"数据结构与算法"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#数据结构与算法"}},[e._v("#")]),e._v(" 数据结构与算法")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/qq_46009046/article/details/136989142",target:"_blank",rel:"noopener noreferrer"}},[e._v("基于SVM的PLOSAR图像分类"),r("OutboundLink")],1),e._v(": 张小殊.-基于SVM的PLOSAR图像分类----🔥 热度:18859")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/xiongyajun123/article/details/137091240",target:"_blank",rel:"noopener noreferrer"}},[e._v("【启发式算法】同核分子优化算法 Homonuclear Molecules Optimization HMO算法【Matlab代码#70】"),r("OutboundLink")],1),e._v(": 天`南-【启发式算法】同核分子优化算法 Homonuclear Molecules Optimization HMO算法【Matlab代码#70】----🔥 热度:15251")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/q601046124/article/details/137050272",target:"_blank",rel:"noopener noreferrer"}},[e._v("动态规划核贪心算法 在服务器业务开发的具体场景中的应用"),r("OutboundLink")],1),e._v(": 免费编程培训-动态规划核贪心算法 在服务器业务开发的具体场景中的应用----🔥 热度:13458")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_43889767/article/details/137118758",target:"_blank",rel:"noopener noreferrer"}},[e._v("day56 动态规划part13"),r("OutboundLink")],1),e._v(": 司徒北-day56 动态规划part13----🔥 热度:11324")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/zaizai1007/article/details/137054254",target:"_blank",rel:"noopener noreferrer"}},[e._v("十大经典排序算法"),r("OutboundLink")],1),e._v(": zaizai1007-十大经典排序算法----🔥 热度:10489")])]),e._v(" "),r("h3",{attrs:{id:"javascript"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#javascript"}},[e._v("#")]),e._v(" javascript")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/qq_39029949/article/details/137127561",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue-esign手写签字、鼠标写名字目前兼容pc、桌面端(electron)、移动端;可返回base64或者文件流"),r("OutboundLink")],1),e._v(": 小白兔-cium-Vue-esign手写签字、鼠标写名字目前兼容pc、桌面端(electron)、移动端;可返回base64或者文件流----🔥 热度:29330")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/LlanyW/article/details/137083395",target:"_blank",rel:"noopener noreferrer"}},[e._v("vue3全局控制Element plus所有组件的文字大小"),r("OutboundLink")],1),e._v(": Lan.W-vue3全局控制Element plus所有组件的文字大小----🔥 热度:22035")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_42554191/article/details/137092367",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue 3中ref和reactive的区别"),r("OutboundLink")],1),e._v(": 阿珊和她的猫-Vue 3中ref和reactive的区别----🔥 热度:22029")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/m0_60721823/article/details/137097511",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue 核心之数据劫持,web前端开发现状"),r("OutboundLink")],1),e._v(": Java老杨-Vue 核心之数据劫持,web前端开发现状----🔥 热度:22021")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/ladymorgana/article/details/137128062",target:"_blank",rel:"noopener noreferrer"}},[e._v("【vue核心技术实战精讲】1.9 Vue指令之v-model双向数据绑定"),r("OutboundLink")],1),e._v(": ladymorgana-【vue核心技术实战精讲】1.9 Vue指令之v-model双向数据绑定----🔥 热度:20492")])]),e._v(" "),r("h3",{attrs:{id:"java"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#java"}},[e._v("#")]),e._v(" java")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/m0_53190754/article/details/137052739",target:"_blank",rel:"noopener noreferrer"}},[e._v("SpringBootWeb最新相关技术(上接maven):IDEA2023-Spring环境,http协议复习概览,web服务器Tomcat,请求响应java服务器项目编写(BS模型,IOC,DI等)"),r("OutboundLink")],1),e._v(": mckl-SpringBootWeb最新相关技术(上接maven):IDEA2023-Spring环境,http协议复习概览,web服务器Tomcat,请求响应java服务器项目编写(BS模型,IOC,DI等)----🔥 热度:26304")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_49140482/article/details/137043998",target:"_blank",rel:"noopener noreferrer"}},[e._v("用IDEA构建的maven+SpringBoot项目生成的文件详解(.idea .mvn src HELP.md mvnw mvnw.cmd .gitignore pom.xml)"),r("OutboundLink")],1),e._v(": 婼熙颜-用IDEA构建的maven+SpringBoot项目生成的文件详解(.idea .mvn src HELP.md mvnw mvnw.cmd .gitignore pom.xml)----🔥 热度:23425")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_39314736/article/details/137038229",target:"_blank",rel:"noopener noreferrer"}},[e._v("Springboot maven加入本地jar,提示找不到类"),r("OutboundLink")],1),e._v(": jasperLiu17-Springboot maven加入本地jar,提示找不到类----🔥 热度:23001")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/sumMStar/article/details/137078279",target:"_blank",rel:"noopener noreferrer"}},[e._v("若依 3.8.7版本springboot前后端分离 整合mabatis plus"),r("OutboundLink")],1),e._v(": sumMStar-若依 3.8.7版本springboot前后端分离 整合mabatis plus----🔥 热度:21528")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/howard2005/article/details/137090915",target:"_blank",rel:"noopener noreferrer"}},[e._v("Spring实战:采用Spring配置文件管理Bean"),r("OutboundLink")],1),e._v(": howard2005-Spring实战:采用Spring配置文件管理Bean----🔥 热度:20370")])]),e._v(" "),r("h3",{attrs:{id:"php"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#php"}},[e._v("#")]),e._v(" php")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_43707759/article/details/137109674",target:"_blank",rel:"noopener noreferrer"}},[e._v("系统分析师-参考模型"),r("OutboundLink")],1),e._v(": steamone-系统分析师-参考模型----🔥 热度:9984")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/m0_71203750/article/details/137055704",target:"_blank",rel:"noopener noreferrer"}},[e._v("以太网链路聚合——增加带宽,解决生成树收敛慢的问题"),r("OutboundLink")],1),e._v(": 一名努力的码农-以太网链路聚合——增加带宽,解决生成树收敛慢的问题----🔥 热度:8900")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_51562484/article/details/137074140",target:"_blank",rel:"noopener noreferrer"}},[e._v("HCIP —— 链路聚合"),r("OutboundLink")],1),e._v(": 你我的怡宝乐-HCIP —— 链路聚合----🔥 热度:8877")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/zgh419566/article/details/137062682",target:"_blank",rel:"noopener noreferrer"}},[e._v("使用PHP+workerman实现基于UDP的异步SIP服务器,服务器端可主动发送UDP数据给客户端"),r("OutboundLink")],1),e._v(": zgh419566-使用PHP+workerman实现基于UDP的异步SIP服务器,服务器端可主动发送UDP数据给客户端----🔥 热度:8750")])]),e._v(" "),r("h3",{attrs:{id:"python"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#python"}},[e._v("#")]),e._v(" python")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/LOVEmy134611/article/details/137094747",target:"_blank",rel:"noopener noreferrer"}},[e._v("图神经网络实战(6)——使用PyTorch构建图神经网络"),r("OutboundLink")],1),e._v(": 盼小辉丶-图神经网络实战(6)——使用PyTorch构建图神经网络----🔥 热度:33634")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/QQ_1963288475/article/details/136986949",target:"_blank",rel:"noopener noreferrer"}},[e._v("nodejs+vue河北任丘非物质文化遗产数字化传承python-flask-django-php"),r("OutboundLink")],1),e._v(": QQ_1963288475-nodejs+vue河北任丘非物质文化遗产数字化传承python-flask-django-php----🔥 热度:24940")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/QQ511008285/article/details/136993726",target:"_blank",rel:"noopener noreferrer"}},[e._v("基于python+vue河北任丘非物质文化遗产数字化传承flask-django-php-nodejs"),r("OutboundLink")],1),e._v(": QQ511008285-基于python+vue河北任丘非物质文化遗产数字化传承flask-django-php-nodejs----🔥 热度:24938")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/littlefun591/article/details/137108883",target:"_blank",rel:"noopener noreferrer"}},[e._v("【python】flask模板渲染引擎Jinja2中的模板继承,简化前端模块化开发"),r("OutboundLink")],1),e._v(": 景天科技苑-【python】flask模板渲染引擎Jinja2中的模板继承,简化前端模块化开发----🔥 热度:24829")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/m0_62640704/article/details/136880137",target:"_blank",rel:"noopener noreferrer"}},[e._v("【NVIDIA JETSON AGX XAVIER】解决使用Python中的sklearn(scikit-learn)库遇到的问题"),r("OutboundLink")],1),e._v(": 元_汐-【NVIDIA JETSON AGX XAVIER】解决使用Python中的sklearn(scikit-learn)库遇到的问题----🔥 热度:24297")])]),e._v(" "),r("h3",{attrs:{id:"运维"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#运维"}},[e._v("#")]),e._v(" 运维")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/qq_32682301/article/details/137085187",target:"_blank",rel:"noopener noreferrer"}},[e._v("自动化与智能化并行:数字化运维体系助力企业腾飞"),r("OutboundLink")],1),e._v(": 程序边界-自动化与智能化并行:数字化运维体系助力企业腾飞----🔥 热度:72150")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/Why_does_it_work/article/details/137087250",target:"_blank",rel:"noopener noreferrer"}},[e._v("自动化与智能化并行:数字化运维体系助力企业腾飞"),r("OutboundLink")],1),e._v(": 雪碧有白泡泡-自动化与智能化并行:数字化运维体系助力企业腾飞----🔥 热度:25574")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_43275466/article/details/137084298",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何在Nginx中实现负载均衡以分发流量到多个后端服务器?"),r("OutboundLink")],1),e._v(": 我的运维人生-如何在Nginx中实现负载均衡以分发流量到多个后端服务器?----🔥 热度:22792")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/dodamce/article/details/137052026",target:"_blank",rel:"noopener noreferrer"}},[e._v("Linux(CentOS)/Windows-C++ 云备份项目(服务器网络通信模块,业务处理模块设计,断点续传设计)"),r("OutboundLink")],1),e._v(": NUC_Dodamce-Linux(CentOS)/Windows-C++ 云备份项目(服务器网络通信模块,业务处理模块设计,断点续传设计)----🔥 热度:22438")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/u014642921/article/details/137030385",target:"_blank",rel:"noopener noreferrer"}},[e._v("linux之挂载磁盘(脚本自动化)"),r("OutboundLink")],1),e._v(": 胡斌附体-linux之挂载磁盘(脚本自动化)----🔥 热度:18468")])]),e._v(" "),r("h3",{attrs:{id:"移动开发"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#移动开发"}},[e._v("#")]),e._v(" 移动开发")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/sheng_er_sheng/article/details/136876916",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flutter高德地图接入Android/IOS(定位&地图)"),r("OutboundLink")],1),e._v(": sheng_er_sheng-Flutter高德地图接入Android/IOS(定位&地图)----🔥 热度:35947")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/Aileenvov/article/details/137127617",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何使用Windows电脑部署Lychee私有图床网站并实现无公网IP远程管理本地图片"),r("OutboundLink")],1),e._v(": Aileen_0v0-如何使用Windows电脑部署Lychee私有图床网站并实现无公网IP远程管理本地图片----🔥 热度:26683")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/WAFxiaoyu/article/details/137127165",target:"_blank",rel:"noopener noreferrer"}},[e._v("Linux小程序: 手写自己的shell"),r("OutboundLink")],1),e._v(": 小宇HOH-Linux小程序: 手写自己的shell----🔥 热度:23654")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/2401_83740129/article/details/137122331",target:"_blank",rel:"noopener noreferrer"}},[e._v("Android-&-Kotlin:Retrofit-+-Hilt-手写实现,看完99%的人都学会了"),r("OutboundLink")],1),e._v(": 2401_83740129-Android-&-Kotlin:Retrofit-+-Hilt-手写实现,看完99%的人都学会了----🔥 热度:22221")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_68658847/article/details/137119094",target:"_blank",rel:"noopener noreferrer"}},[e._v("RN在android/ios手机剪切图片的操作"),r("OutboundLink")],1),e._v(": 萧寂173-RN在android/ios手机剪切图片的操作----🔥 热度:22044")])]),e._v(" "),r("h3",{attrs:{id:"c-c"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#c-c"}},[e._v("#")]),e._v(" c/c++")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/Miracle_86/article/details/137086464",target:"_blank",rel:"noopener noreferrer"}},[e._v("C语言内存操控的艺术探索:踏足四大秘境,铸就内存管理之巅峰传奇"),r("OutboundLink")],1),e._v(": Miracle_86.-C语言内存操控的艺术探索:踏足四大秘境,铸就内存管理之巅峰传奇----🔥 热度:25016")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/office_lgirl/article/details/137072073",target:"_blank",rel:"noopener noreferrer"}},[e._v("C++对C的扩充"),r("OutboundLink")],1),e._v(": 阳光向日葵之沈阳-C++对C的扩充----🔥 热度:17648")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/qq_45087791/article/details/136875680",target:"_blank",rel:"noopener noreferrer"}},[e._v("免杀对抗-C2远控篇&C&C++&SC转换格式&UUID标识&MAC物理&IPV4地址&减少熵值"),r("OutboundLink")],1),e._v(": nihao6666hhhhh-免杀对抗-C2远控篇&C&C++&SC转换格式&UUID标识&MAC物理&IPV4地址&减少熵值----🔥 热度:13270")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/qq_33904382/article/details/136890369",target:"_blank",rel:"noopener noreferrer"}},[e._v("C/C++语言学习路线: 嵌入式开发、底层软件、操作系统方向(持续更新)"),r("OutboundLink")],1),e._v(": 断水客-C/C++语言学习路线: 嵌入式开发、底层软件、操作系统方向(持续更新)----🔥 热度:12995")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/Ivy_mzh19970808/article/details/136133719",target:"_blank",rel:"noopener noreferrer"}},[e._v("【C转C++】(还在继续学习补充中)"),r("OutboundLink")],1),e._v(": Ivy_nsss19970808-【C转C++】(还在继续学习补充中)----🔥 热度:12747")])]),e._v(" "),r("h2",{attrs:{id:"掘金"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#掘金"}},[e._v("#")]),e._v(" 掘金")]),e._v(" "),r("h3",{attrs:{id:"前端"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端"}},[e._v("#")]),e._v(" 前端")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348832432080355379",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024 年 5 个令人兴奋的 JavaScript 新功能"),r("OutboundLink")],1),e._v(": 以下提案很有可能进入今年的 ECMAScript 版本: ECMAScript 更新 JS的新版本总是会引起轰动。自 ES6 更新以来,每年都会有新版本,我们预计今年(ES2024)将在 6 月左右发----👍🏻点赞量:100")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349119662134018063",target:"_blank",rel:"noopener noreferrer"}},[e._v("尤雨溪官宣 VitePress 1.0,第一个主版本横空出世!"),r("OutboundLink")],1),e._v(": 尤大在朋友圈爆料,VitePress 1.0 正式发布,这也是 VitePress 诞生以来升级的第一个语义化主版本,一个值得纪念的里程碑。----👍🏻点赞量:107")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349437605858066443",target:"_blank",rel:"noopener noreferrer"}},[e._v("领导问我:为什么一个点赞功能你做了五天?"),r("OutboundLink")],1),e._v(": 前言 可乐是一名前端切图仔,最近他们团队需要做一个文章社区平台。由于人手不够,前后端部分都是由前端同学来实现,后端部分用的技术栈是 nest.js 。 某一个周一,领导希望做一个给文章点赞的功能,在文----👍🏻点赞量:148")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349940323026485289",target:"_blank",rel:"noopener noreferrer"}},[e._v("汗流浃背的一个小时——海马体一面,第一题就不会"),r("OutboundLink")],1),e._v(": 上次拿到海康的offer之后,信心大增,但是目标不止于此,就想再往上冲一冲,于是目标就转向了海马体。海马体作为2023年AIGC现象级应用的公司之一,其AIGC的能力相对成熟----👍🏻点赞量:125")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349107210658299940",target:"_blank",rel:"noopener noreferrer"}},[e._v("小厂挂了十次之后,迎来了海康威视"),r("OutboundLink")],1),e._v(": 前段时间一直忙着面试和背面经,就没怎么写文章。这段时间那是非常的煎熬,一直面试一直挂,有些感觉面试的还不错,八股和编程题都答上来了,时间也面了一个小时,但最终还是挂了,一度陷入了自我怀疑中。----👍🏻点赞量:63")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350140676615798824",target:"_blank",rel:"noopener noreferrer"}},[e._v("8个小而美的前端库"),r("OutboundLink")],1),e._v(": 前端有很多小而美的库,接入成本很低又能满足日常开发需求,同时无论是 npm 方式引入还是直接复制到本地使用都可以。 2024年推荐以下小而美的库。 radash 实用的工具库,相比与 lodash,更----👍🏻点赞量:170")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350571075547938866",target:"_blank",rel:"noopener noreferrer"}},[e._v("💯 前端要学会自己写shell脚本,让你的项目看起来非常牛逼!💯"),r("OutboundLink")],1),e._v(": Husky 是一个流行的工具,它可以让你轻松地在 Git 钩子中使用脚本,从而在提交(commit)代码前运行诸如代码风格检查、单元测试等任务。这有助于保持代码库的质量和一致性。Husky 的工作原理----👍🏻点赞量:84")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349750846899699764",target:"_blank",rel:"noopener noreferrer"}},[e._v("五年前端这题都做不对?"),r("OutboundLink")],1),e._v(": 实现汗颜,作为一个多年的老前端做了一遍题居然不及格! 一时陷入了反思中备受打击,诚请各位大哥来一探究竟!----👍🏻点赞量:57")])]),e._v(" "),r("h3",{attrs:{id:"前端-javascript"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-javascript"}},[e._v("#")]),e._v(" 前端-JavaScript")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348832432080355379",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024 年 5 个令人兴奋的 JavaScript 新功能"),r("OutboundLink")],1),e._v(": 以下提案很有可能进入今年的 ECMAScript 版本: ECMAScript 更新 JS的新版本总是会引起轰动。自 ES6 更新以来,每年都会有新版本,我们预计今年(ES2024)将在 6 月左右发----👍🏻点赞量:100")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349119662134018063",target:"_blank",rel:"noopener noreferrer"}},[e._v("尤雨溪官宣 VitePress 1.0,第一个主版本横空出世!"),r("OutboundLink")],1),e._v(": 尤大在朋友圈爆料,VitePress 1.0 正式发布,这也是 VitePress 诞生以来升级的第一个语义化主版本,一个值得纪念的里程碑。----👍🏻点赞量:107")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349437605858066443",target:"_blank",rel:"noopener noreferrer"}},[e._v("领导问我:为什么一个点赞功能你做了五天?"),r("OutboundLink")],1),e._v(": 前言 可乐是一名前端切图仔,最近他们团队需要做一个文章社区平台。由于人手不够,前后端部分都是由前端同学来实现,后端部分用的技术栈是 nest.js 。 某一个周一,领导希望做一个给文章点赞的功能,在文----👍🏻点赞量:148")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349940323026485289",target:"_blank",rel:"noopener noreferrer"}},[e._v("汗流浃背的一个小时——海马体一面,第一题就不会"),r("OutboundLink")],1),e._v(": 上次拿到海康的offer之后,信心大增,但是目标不止于此,就想再往上冲一冲,于是目标就转向了海马体。海马体作为2023年AIGC现象级应用的公司之一,其AIGC的能力相对成熟----👍🏻点赞量:125")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349107210658299940",target:"_blank",rel:"noopener noreferrer"}},[e._v("小厂挂了十次之后,迎来了海康威视"),r("OutboundLink")],1),e._v(": 前段时间一直忙着面试和背面经,就没怎么写文章。这段时间那是非常的煎熬,一直面试一直挂,有些感觉面试的还不错,八股和编程题都答上来了,时间也面了一个小时,但最终还是挂了,一度陷入了自我怀疑中。----👍🏻点赞量:63")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350140676615798824",target:"_blank",rel:"noopener noreferrer"}},[e._v("8个小而美的前端库"),r("OutboundLink")],1),e._v(": 前端有很多小而美的库,接入成本很低又能满足日常开发需求,同时无论是 npm 方式引入还是直接复制到本地使用都可以。 2024年推荐以下小而美的库。 radash 实用的工具库,相比与 lodash,更----👍🏻点赞量:170")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350571075547938866",target:"_blank",rel:"noopener noreferrer"}},[e._v("💯 前端要学会自己写shell脚本,让你的项目看起来非常牛逼!💯"),r("OutboundLink")],1),e._v(": Husky 是一个流行的工具,它可以让你轻松地在 Git 钩子中使用脚本,从而在提交(commit)代码前运行诸如代码风格检查、单元测试等任务。这有助于保持代码库的质量和一致性。Husky 的工作原理----👍🏻点赞量:84")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349750846899699764",target:"_blank",rel:"noopener noreferrer"}},[e._v("五年前端这题都做不对?"),r("OutboundLink")],1),e._v(": 实现汗颜,作为一个多年的老前端做了一遍题居然不及格! 一时陷入了反思中备受打击,诚请各位大哥来一探究竟!----👍🏻点赞量:57")])]),e._v(" "),r("h3",{attrs:{id:"前端-vue-js"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-vue-js"}},[e._v("#")]),e._v(" 前端-Vue.js")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349119662134018063",target:"_blank",rel:"noopener noreferrer"}},[e._v("尤雨溪官宣 VitePress 1.0,第一个主版本横空出世!"),r("OutboundLink")],1),e._v(": 尤大在朋友圈爆料,VitePress 1.0 正式发布,这也是 VitePress 诞生以来升级的第一个语义化主版本,一个值得纪念的里程碑。----👍🏻点赞量:107")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350861738973626402",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue 生态最火的元框架,Nuxt 3.10 正式发布!"),r("OutboundLink")],1),e._v(": 不久前,Nuxt 团队官宣 Nuxt 3.10 正式发布,整体非常接近 Nuxt 3.9,但此版本涵盖了更多功能和修复。----👍🏻点赞量:17")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349575576045223973",target:"_blank",rel:"noopener noreferrer"}},[e._v("Varlet Vue3 组件库 3.2 发布 | 拥抱 Nuxt、桌面端体验增强、支持原子化 CSS 框架"),r("OutboundLink")],1),e._v(": Varlet Vue3 组件库 3.2 发布,拥抱 Nuxt、桌面端体验增强、支持原子化框架。Nuxt3、Material Design 3 主题配色、桌面端支持。----👍🏻点赞量:44")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349936384512131107",target:"_blank",rel:"noopener noreferrer"}},[e._v("面试官:只知道v-model是:modelValue和@onUpdate语法糖,那你可以走了"),r("OutboundLink")],1),e._v(": 你知道v-model指令是如何变成组件上的modelValue属性和@update:modelValue事件呢?这一过程是在编译时还是运行时进行的呢?----👍🏻点赞量:26")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350874162011750400",target:"_blank",rel:"noopener noreferrer"}},[e._v("后台管理模板的最佳实现方式"),r("OutboundLink")],1),e._v(": 换一套UI框架就换一套代码模板?不存在,我直接一套适配所有!无UI框架依赖的后台管理模板:兼容性、拓展性极高,保证了常用功能的完整性之余,模板中每个部分都是可以独立抽离和替换的,并无上手成本----👍🏻点赞量:13")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349427412357316608",target:"_blank",rel:"noopener noreferrer"}},[e._v("vue3+elementPlus 二次封装表单"),r("OutboundLink")],1),e._v(": 功能 Input输入框 autocomplete自动补齐输入框 radio 单选框 checkbox 复选框 date 日期选择框 select 下拉框 如需添加更多功能参考elementPlus或者----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350140676615323688",target:"_blank",rel:"noopener noreferrer"}},[e._v("Radix UI 3.0 发布,新的布局引擎"),r("OutboundLink")],1),e._v(": Radix UI 3.0 刚刚发布,带来了新的布局引擎、新的组件和自定义调色板生成器,这个版本的发布是向着成为构建现代应用程序的最佳组件库迈出了一大步。我们将在本文中介绍主要亮点。 自定义调色板 Ra----👍🏻点赞量:14")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349119682002599936",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue3中Hook函数,解锁新技能!"),r("OutboundLink")],1),e._v(": 小熊猫带你深入理解Vue3的hook函数!Vue3带来了Composition API,在这其中,Hooks是其重要组成部分,本文将深入探讨Vue3中Hooks,帮助你在Vue3开发中更加得心应手!----👍🏻点赞量:13")])]),e._v(" "),r("h3",{attrs:{id:"前端-面试"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-面试"}},[e._v("#")]),e._v(" 前端-面试")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348832432080355379",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024 年 5 个令人兴奋的 JavaScript 新功能"),r("OutboundLink")],1),e._v(": 以下提案很有可能进入今年的 ECMAScript 版本: ECMAScript 更新 JS的新版本总是会引起轰动。自 ES6 更新以来,每年都会有新版本,我们预计今年(ES2024)将在 6 月左右发----👍🏻点赞量:100")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349940323026485289",target:"_blank",rel:"noopener noreferrer"}},[e._v("汗流浃背的一个小时——海马体一面,第一题就不会"),r("OutboundLink")],1),e._v(": 上次拿到海康的offer之后,信心大增,但是目标不止于此,就想再往上冲一冲,于是目标就转向了海马体。海马体作为2023年AIGC现象级应用的公司之一,其AIGC的能力相对成熟----👍🏻点赞量:125")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349107210658299940",target:"_blank",rel:"noopener noreferrer"}},[e._v("小厂挂了十次之后,迎来了海康威视"),r("OutboundLink")],1),e._v(": 前段时间一直忙着面试和背面经,就没怎么写文章。这段时间那是非常的煎熬,一直面试一直挂,有些感觉面试的还不错,八股和编程题都答上来了,时间也面了一个小时,但最终还是挂了,一度陷入了自我怀疑中。----👍🏻点赞量:63")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7336831338119921679",target:"_blank",rel:"noopener noreferrer"}},[e._v("探寻HTTP革新 — 为什么HTTP/3是未来的前沿?"),r("OutboundLink")],1),e._v(": 最近,公司在面试新的小伙伴时,其中有一道面试题就是关于“HTTP”的,这是一个表面上看似简单但实际上颇具挑战性的问题:“你对 HTTP 协议了解多少?能不能把你知道的都详细说一下?” 问题虽简单,但其----👍🏻点赞量:20")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350094390436134951",target:"_blank",rel:"noopener noreferrer"}},[e._v("熟悉 React 原理,却答不对这道简单的 setState 面试题"),r("OutboundLink")],1),e._v(": 大家好,我是双越老师~ 最近春季招聘季节,好多同学找我 1v1 模拟面试。对于 React 技术栈的同学,我会问一个非常基础的 setState 应用题,但却很少有同学能回答正确。----👍🏻点赞量:19")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350555794145837093",target:"_blank",rel:"noopener noreferrer"}},[e._v("浅谈【XSS & CSRF】攻击"),r("OutboundLink")],1),e._v(": XSS和CSRF也是面试中常常被问到的东西,本期就带大家认识下这两个网络攻击 XSS XSS(Cross Site Scripting)跨站脚本攻击 跨站脚本攻击就是用脚本攻击,看下面这个🌰 这里先简----👍🏻点赞量:20")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350535815132659749",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024前端高频面试题之-- 前端工程化篇"),r("OutboundLink")],1),e._v(": 【前端面试复习系列文章】 2024前端高频面试题-- html篇 2024前端高频面试题-- CSS篇 2024前端高频面试题-- JS篇 2024前端高频面试题-- VUE篇 2024前端高频面试题----👍🏻点赞量:10")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349360417091928090",target:"_blank",rel:"noopener noreferrer"}},[e._v("小厂一面: 请准备好水(二)"),r("OutboundLink")],1),e._v(": 前言 现在到了春招的黄金时期,本人和小伙伴们也都开始了面试,今天在这篇文章中记录我的第一个面试经历,不知道小伙伴们是否跟我一样,在第一次面试时都很紧张呢? 查看对象里的所有属性 使用Object.ke----👍🏻点赞量:10")])]),e._v(" "),r("h3",{attrs:{id:"前端-react-js"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-react-js"}},[e._v("#")]),e._v(" 前端-React.js")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349437605858066443",target:"_blank",rel:"noopener noreferrer"}},[e._v("领导问我:为什么一个点赞功能你做了五天?"),r("OutboundLink")],1),e._v(": 前言 可乐是一名前端切图仔,最近他们团队需要做一个文章社区平台。由于人手不够,前后端部分都是由前端同学来实现,后端部分用的技术栈是 nest.js 。 某一个周一,领导希望做一个给文章点赞的功能,在文----👍🏻点赞量:148")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350140676615798824",target:"_blank",rel:"noopener noreferrer"}},[e._v("8个小而美的前端库"),r("OutboundLink")],1),e._v(": 前端有很多小而美的库,接入成本很低又能满足日常开发需求,同时无论是 npm 方式引入还是直接复制到本地使用都可以。 2024年推荐以下小而美的库。 radash 实用的工具库,相比与 lodash,更----👍🏻点赞量:170")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349189143798399003",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何使用 Router 为你页面带来更快的加载速度"),r("OutboundLink")],1),e._v(": React Router 新版 release 了一系列 data apis 为你的应用站点带来更快的加载速度,文章会从概念、用法、原理三方面来带你领略 Data Apis 的魅力。----👍🏻点赞量:22")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349513798698713088",target:"_blank",rel:"noopener noreferrer"}},[e._v("译文:⚛️ React中最有用的10个自定义Hook"),r("OutboundLink")],1),e._v(": React 内置的 hooks 彻底改变了我们开发组件的方式,但是 hooks 的真正威力在于创建自定义 hooks,将可复用的逻辑封装起来,增强组件的组合能力。自定义 hooks 允许您抽象出复杂的----👍🏻点赞量:16")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350094390436134951",target:"_blank",rel:"noopener noreferrer"}},[e._v("熟悉 React 原理,却答不对这道简单的 setState 面试题"),r("OutboundLink")],1),e._v(": 大家好,我是双越老师~ 最近春季招聘季节,好多同学找我 1v1 模拟面试。对于 React 技术栈的同学,我会问一个非常基础的 setState 应用题,但却很少有同学能回答正确。----👍🏻点赞量:19")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349752708385570870",target:"_blank",rel:"noopener noreferrer"}},[e._v("web3实战课01:链接你的钱包"),r("OutboundLink")],1),e._v(": 链接用户的钱包,是开发DAPP的第一步,跟着我,用最简单清晰的思路理解钱包链接协议,并完成一次实战链接吧!----👍🏻点赞量:28")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350200488455520267",target:"_blank",rel:"noopener noreferrer"}},[e._v("我为独立开发者开发落地页模板(二)"),r("OutboundLink")],1),e._v(": 系列文章第二篇,本文内容包含了:落地页开发理念、rough notation与framer-motion的应用、暗黑模式的支持与国际化最佳实践。----👍🏻点赞量:11")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349971654590857216",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024前端高频面试题之-- react篇"),r("OutboundLink")],1),e._v(": 【前端面试复习系列文章】 2024前端高频面试题-- html篇 2024前端高频面试题-- CSS篇 2024前端高频面试题-- JS篇 2024前端高频面试题-- VUE篇 【导读】本文总结了前端----👍🏻点赞量:8")])]),e._v(" "),r("h3",{attrs:{id:"前端-node-js"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-node-js"}},[e._v("#")]),e._v(" 前端-Node.js")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350581011262373928",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024 年排名前 5 的 Node.js 后端框架"),r("OutboundLink")],1),e._v(": 自 2009 年以来,Node.js 一直是人们谈论的话题,大多数后端开发人员都倾向于使用 Node.js。在过去的几年里,它的受欢迎程度有所增加。它被认为是美国最受欢迎的网络开发工具,包括 Netf----👍🏻点赞量:27")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350094390436134951",target:"_blank",rel:"noopener noreferrer"}},[e._v("熟悉 React 原理,却答不对这道简单的 setState 面试题"),r("OutboundLink")],1),e._v(": 大家好,我是双越老师~ 最近春季招聘季节,好多同学找我 1v1 模拟面试。对于 React 技术栈的同学,我会问一个非常基础的 setState 应用题,但却很少有同学能回答正确。----👍🏻点赞量:19")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349327791554641932",target:"_blank",rel:"noopener noreferrer"}},[e._v("MQTT 服务搭建"),r("OutboundLink")],1),e._v(": MQTT 服务搭建(Node.js) 最近在写自己的毕设,采用的技术栈是 node + MySQL 和 Vue3 + Element Plus,还用了一个即时通讯协议 MQTT。 对这个 MQTT 的----👍🏻点赞量:9")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350168797637558272",target:"_blank",rel:"noopener noreferrer"}},[e._v("前端如何用密文跟后端互通?原来那么简单!"),r("OutboundLink")],1),e._v(": 后端:密码得走密文哇! 我:base64?md5? 后端:这次不行哇,新来的测试不好糊弄呢!必须要国密sm2加密捏 我: 好吧,看我的。----👍🏻点赞量:12")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350099019836850217",target:"_blank",rel:"noopener noreferrer"}},[e._v("跟我用 node.js + ffmpeg 写一个视频服务器"),r("OutboundLink")],1),e._v(": Node.js 使用事件驱动和非阻塞 I/O 模型,这使得它能够有效地处理大量 IO 请求并发连接,这对于流媒体服务器非常重要。而 ffmpeg 对于视频处理的功能非常强大。----👍🏻点赞量:19")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349880999259766821",target:"_blank",rel:"noopener noreferrer"}},[e._v("技术周刊 117:Node 纪录片、AI 音视频助理、Suno v3、Node 作者专访播客、React 编译器"),r("OutboundLink")],1),e._v(": Node 纪录片、AI 音视频助理、Suno v3、Node 作者专访播客、React 编译器、VitePress 1.0----👍🏻点赞量:4")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350549827674849292",target:"_blank",rel:"noopener noreferrer"}},[e._v("node + express,手把手教你写大文件分片上传(1)"),r("OutboundLink")],1),e._v(": 在网上看到许多分片上传的案例,但是很少见前后端通用的代码,于是在吸收了一些思路之后,写下该文章,手把手教你如何写分片上传。----👍🏻点赞量:3")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350501693089792011",target:"_blank",rel:"noopener noreferrer"}},[e._v("【悄咪咪学Node.js】6. require/import 模块化"),r("OutboundLink")],1),e._v(": 模块化编程在复杂系统中十分重要,其优点在于:有利于完成设计、提高开发效率、有利于问题排查、易维护、可复用。----👍🏻点赞量:0")])]),e._v(" "),r("h3",{attrs:{id:"前端-css"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-css"}},[e._v("#")]),e._v(" 前端-CSS")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350571075548397618",target:"_blank",rel:"noopener noreferrer"}},[e._v("写html页面没意思,来挑战chrome插件开发"),r("OutboundLink")],1),e._v(": 作为前端开发者,写烦了页面布局,给自己找点乐子,开发一个自己的谷歌浏览器插件。谷歌浏览器插件通常由HTML、CSS和JavaScript组成,非常利于前端开发。插件,可以为用户提供定制化的体验。----👍🏻点赞量:59")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349561234932367401",target:"_blank",rel:"noopener noreferrer"}},[e._v("Uiverse.io:打造 超炫酷 界面 的秘密武器!!!"),r("OutboundLink")],1),e._v(": 偶尔闲逛国外网站,会不经意看到一些炫酷的网页元素,不禁呆呆的观察一会,相信你也遇到过吧,特别是新颖炫酷的界面元素,那么我们如何实现这些炫酷的效果的呢? 如果你特别精通 css 的话, 可能这些实现起来----👍🏻点赞量:53")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349427412357611520",target:"_blank",rel:"noopener noreferrer"}},[e._v("仿百亿补贴,H5 中图片先模糊后清晰的效果如何实现"),r("OutboundLink")],1),e._v(": 百亿补贴图片加载非常快,为什么呢?因为百亿补贴先加载了一张模糊小图、再加载了一张清晰大图,用户很难感知到模糊到清晰的过程,误以为图片加载很快。接下来我会先给出证据、再分析原理、并提供关键代码。----👍🏻点赞量:23")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350556449615085608",target:"_blank",rel:"noopener noreferrer"}},[e._v("堪比 ES6 的史诗级升级,2023 年度 CSS 牛逼闪闪的新特性!"),r("OutboundLink")],1),e._v(": 谷歌官网贴心地列举了 CSS 2023 的诸多年度重量级更新,我会科普一下 3 个个人觉得牛逼闪闪的 CSS 新功能。----👍🏻点赞量:24")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349360925185802251",target:"_blank",rel:"noopener noreferrer"}},[e._v("15 分钟带你感受 CSS :has() 选择器的强大"),r("OutboundLink")],1),e._v(": 最近看到了许多关于 :has() 选择器的知识点,在此总结下来。 MDN 对 :has() 选择器 的解释是这样的: 下面一起来感受下 :has() 选择器的强大之处吧。 :has() 选择器选择父元----👍🏻点赞量:20")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350529104082583564",target:"_blank",rel:"noopener noreferrer"}},[e._v("CSS Tips:水波纹"),r("OutboundLink")],1),e._v(": 通常情况之下,开发者都习惯了规则的矩形布局的效果,对于 Web 设计师提供的不规则布局,难免会带有一种恐惧。这篇文章将告诉你如何使用 CSS 和 SVG 来实现类似水波纹这样不规则的 UI 效果!----👍🏻点赞量:16")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349752708386553910",target:"_blank",rel:"noopener noreferrer"}},[e._v("🥳CSS实现经典打字小游戏《生死时速》"),r("OutboundLink")],1),e._v(": 前言 CSS 中有这样一个模块:Motion Path 运动模块,它可以使元素按照自定义的路径进行移动。本文将利用它实现我小时候电脑课经常玩的一个打字游戏:金山打字的《生死时速》----👍🏻点赞量:12")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349863595729616931",target:"_blank",rel:"noopener noreferrer"}},[e._v("麦当劳扭蛋抽奖小动画"),r("OutboundLink")],1),e._v(": 前言 最近新增抽奖盲盒,就是扭蛋机的形式,由于前端使用GIF图会很大,而且图片会很大,所以扭蛋机中的扭蛋进行分离,前端单独使用css进行。 麦当劳扭蛋机效果 扭蛋机窗口大小 第一步先固定扭蛋机的窗口,----👍🏻点赞量:10")])]),e._v(" "),r("h3",{attrs:{id:"前端-后端"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-后端"}},[e._v("#")]),e._v(" 前端-后端")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350571075547938866",target:"_blank",rel:"noopener noreferrer"}},[e._v("💯 前端要学会自己写shell脚本,让你的项目看起来非常牛逼!💯"),r("OutboundLink")],1),e._v(": Husky 是一个流行的工具,它可以让你轻松地在 Git 钩子中使用脚本,从而在提交(commit)代码前运行诸如代码风格检查、单元测试等任务。这有助于保持代码库的质量和一致性。Husky 的工作原理----👍🏻点赞量:84")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350581011262373928",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024 年排名前 5 的 Node.js 后端框架"),r("OutboundLink")],1),e._v(": 自 2009 年以来,Node.js 一直是人们谈论的话题,大多数后端开发人员都倾向于使用 Node.js。在过去的几年里,它的受欢迎程度有所增加。它被认为是美国最受欢迎的网络开发工具,包括 Netf----👍🏻点赞量:27")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349410791579959331",target:"_blank",rel:"noopener noreferrer"}},[e._v("轻量级 C++ UI 库:快速、可移植、自包含 | 开源日报 No.168"),r("OutboundLink")],1),e._v(": imgui 是 C++ 的无臃肿图形用户界面,具有最小的依赖关系。 该项目的主要功能、关键特性、核心优势包括: * 为 C++ 提供了一个轻量级的图形用户界面库 * 输出优化的顶点缓冲区,可----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349776224829521961",target:"_blank",rel:"noopener noreferrer"}},[e._v("初探富文本之MarkDown/Word/PDF导出能力设计"),r("OutboundLink")],1),e._v(": 当我们实现在线文档的系统时,通常需要考虑到文档的导出能力,特别是对于私有化部署的复杂"),r("code",[e._v("ToB")]),e._v("产品来说,文档的私有化版本交付能力就显得非常重要。----👍🏻点赞量:23")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349835041995128866",target:"_blank",rel:"noopener noreferrer"}},[e._v("一文吃透 Cookie"),r("OutboundLink")],1),e._v(": 前言 在大多数情况下,设置 Set-Cookie时,大家可能只会设置 key 和 value 属性。当然大部分场景下也只需要做到这样。但是其实 Cookie 在此之外也有很多重要的属性。----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350181789530357811",target:"_blank",rel:"noopener noreferrer"}},[e._v("AI辅助提效"),r("OutboundLink")],1),e._v(": 本文会推荐分享我常用的一些ai工具的使用方式与使用体验,我认为它们能够大幅提升工作效率与质量。欢迎交流👏🏻----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349382887571701760",target:"_blank",rel:"noopener noreferrer"}},[e._v("Restful API 设计规范"),r("OutboundLink")],1),e._v(": RESTful API(Representational State Transfer API)是一种设计风格的网络接口,用于网络应用之间的交互。REST 是一组架构原则和约束条件,而不是一种标准或协----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349377083552383011",target:"_blank",rel:"noopener noreferrer"}},[e._v("第12天:如何使用SVG绘制三次贝塞尔曲线"),r("OutboundLink")],1),e._v(": 当我们想要弯曲一条线时,二次贝塞尔曲线是很好的,但通常它不够灵活。使用三次贝塞尔曲线,我们不仅有一个控制点,而是两个。第一个控制点设置曲线的初始方向,第二个控制点定义曲线从哪个方向到达端点。 同样,让----👍🏻点赞量:1")])]),e._v(" "),r("h3",{attrs:{id:"前端-typescript"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-typescript"}},[e._v("#")]),e._v(" 前端-TypeScript")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349382887572258816",target:"_blank",rel:"noopener noreferrer"}},[e._v("JS 即将推出的 Set 新特性:交并差集"),r("OutboundLink")],1),e._v(": TC39 委员会和浏览器致力于可以在 JS Set 提案中看到诸如 union、intersection 和 difference 之类的全新函数。----👍🏻点赞量:23")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349107210658496548",target:"_blank",rel:"noopener noreferrer"}},[e._v("用 interface 会报错改成 type 就好了?从一个报错深入 typescript 中 interface 和 type 的区别"),r("OutboundLink")],1),e._v(": typeScript 的类型系统并不是完全健全的。在类型系统的术语中,“健全”(sound)意味着类型系统能够保证所有的程序都不会在运行时出现类型错误。----👍🏻点赞量:5")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350142836622917695",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何计算地球任意两点之间距离"),r("OutboundLink")],1),e._v(": 本文通过百度地图api实现一个地球地图模型,通过运用Haversine公式和Vincenty公式,计算出这两个坐标点之间的实际距离----👍🏻点赞量:3")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350209063520927782",target:"_blank",rel:"noopener noreferrer"}},[e._v("学会satisfies操作符,让你的Typescript功力倍增!"),r("OutboundLink")],1),e._v(": 今日鸡汤: 人生是海, 总有波涛,需要一颗勇敢的心去乘风破浪!大家好,我是心灵。 本文是在Typescript中旅行的第 5 篇。将介绍satisfies操作符。----👍🏻点赞量:12")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349588906910761012",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue3 + TS 中使用 Provide/Inject 需要考虑的三大问题"),r("OutboundLink")],1),e._v(": Provide/Inject的作用 在组件通信的场景中,必然会遇到跨层级组件间传值的问题,尤其是爷——孙组件,甚至是更深层级的组件。比如下图中,App.vue 文件将属性 name 一层层地往下传给组----👍🏻点赞量:7")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349426928947331084",target:"_blank",rel:"noopener noreferrer"}},[e._v("使用 ts 还需要 zod 吗?使用 zod 进行运行时类型校验的几个场景"),r("OutboundLink")],1),e._v(': zod 是什么?官网上的解释说:Zod 是一个以 TypeScript 为首的模式声明和验证库。我使用术语 "schema" 来广义地指任何数据类型,从简单的 '),r("code",[e._v("字符串")]),e._v(" 到复杂的嵌套对象。----👍🏻点赞量:8")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349791638111600650",target:"_blank",rel:"noopener noreferrer"}},[e._v("🈲拒绝类型体操,打通TypeScript类型复用的任督二脉"),r("OutboundLink")],1),e._v(": 快速了解如何去封装接口类型,页面表单如何去复用已定义的接口类型,避免多次重复定义同一字段类型。其中涉及到ts中的Pick----👍🏻点赞量:5")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349569626341081140",target:"_blank",rel:"noopener noreferrer"}},[e._v("还不会搭建 Node 服务?一文带你了解如何用 express + ts 搞定后端"),r("OutboundLink")],1),e._v(": 前端开发全栈化趋势 卷的前端小伙伴们日益焦虑,不会搭建后端服务怎么办;不了解 node 应用怎么办;不会组织业务接口怎么办;不用怕!今天我们一起来梳理 express 搭建后端全流程----👍🏻点赞量:4")])]),e._v(" "),r("h3",{attrs:{id:"前端-前端框架"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-前端框架"}},[e._v("#")]),e._v(" 前端-前端框架")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348842402826436649",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue3 如何封装一个超级好用的Hook👾"),r("OutboundLink")],1),e._v(": 本文将通过介绍什么是Hook、如何在Vue使用Hook,以及在实践场景中如何封装自己的 Vue Hook,带你走进Hook的世界,写出更优雅的代码。 什么是Hook? Vue3官方文档是这样定义组合式----👍🏻点赞量:17")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349124917378023436",target:"_blank",rel:"noopener noreferrer"}},[e._v("Web 画图技术之画布滚动方案"),r("OutboundLink")],1),e._v(": 介绍 Web 画图技术之画布的滚动方案,对 Plait 框架的滚动方案实现进行介绍: 1.支持缩放 2.支持隐藏显示滚动条 3.支持视口的控制----👍🏻点赞量:5")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349551248516333605",target:"_blank",rel:"noopener noreferrer"}},[e._v("解析 webpack , vite 处理 commonjs 和 esm 的原理"),r("OutboundLink")],1),e._v(": webpack 和 vite 的流程大致一样,都需要分析抽象语法树获取模块的导入导出, 对每个模块进行编译转换,但是他们两个在开发模式下对于模块的处理是正好相反的----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349107210658988068",target:"_blank",rel:"noopener noreferrer"}},[e._v("为什么做开源画图框架 - Plait"),r("OutboundLink")],1),e._v(": 虽然社区中有不少优秀流程图的开源项目,但是 Plait 同样是特别的存在,而且目前社区还没有做一体化的画图框架,也没有好的开源思维导图项目,这都是我们研发 Plait 框架的理由。----👍🏻点赞量:4")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349065708050759714",target:"_blank",rel:"noopener noreferrer"}},[e._v("自己动手写 React源码 ——【7】实现 ReactDOM"),r("OutboundLink")],1),e._v(": 深入理解 React 源码,带你从零实现 React v18 的核心功能,构建自己的 React 库。----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350924101941215258",target:"_blank",rel:"noopener noreferrer"}},[e._v("啥?控制反转?啥是控制反转?"),r("OutboundLink")],1),e._v(": 控制反转(Inversion of Control,IoC)是一种软件设计原则,它将应用程序的控制权从应用程序本身转移到了外部容器或框架。----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350473432197627942",target:"_blank",rel:"noopener noreferrer"}},[e._v("前端项目中<代理> or <环境变量>是啥?"),r("OutboundLink")],1),e._v(": 最近做项目发现,有些女朋友对于前端项目中的代理和环境变量傻傻分不清,不知道它们长什么样子,有什么作用,这篇文章不探讨太深层的东西,只说实际应用,如有错误,希望指出!----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7351321295068872713",target:"_blank",rel:"noopener noreferrer"}},[e._v("React并发机制揭秘"),r("OutboundLink")],1),e._v(": React新版本的并发机制提供了一系列新特性,包括自动批处理、异步渲染、新的 Hooks 和 Suspense 配置等。这些特性旨在帮助开发者更好地控制和优化应用程序的性能和用户体验。通过这些新特性我----👍🏻点赞量:0")])]),e._v(" "),r("h3",{attrs:{id:"前端-github"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-github"}},[e._v("#")]),e._v(" 前端-GitHub")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349465019325661203",target:"_blank",rel:"noopener noreferrer"}},[e._v("纯前端实现 JPG 图片压缩 | canvas"),r("OutboundLink")],1),e._v(": 在迭代图床应用时,需要用到图片压缩,在之前分享了使用UPNG.js 处理 PNG 图片,这里记录分享一下如何处理JPG图片,并附上完整 Demo。----👍🏻点赞量:9")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350557995896029211",target:"_blank",rel:"noopener noreferrer"}},[e._v("分享 Github 上 7 个 Rust 编写的高星级工具"),r("OutboundLink")],1),e._v(": 这是学习 Rust 时不可错过的资源,读代码是学习编程语言的最好方式之一。本文分享 7 个用 Rust 编写的开源软件,其中有些工具不提供统一的安装包,需要从源代码编译。----👍🏻点赞量:10")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349650519810228234",target:"_blank",rel:"noopener noreferrer"}},[e._v(" umi + Nest.js 实现高效权限管理系统"),r("OutboundLink")],1),e._v(": 利用 umimax 和 Nest.js 构建一个高效的权限管理系统。通过详细的代码示例和解释,读者可以深入了解如何设计和实现一个完整的权限管理系统,以及如何利用现代技术栈提升开发效率和系统性能。----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349094068843872265",target:"_blank",rel:"noopener noreferrer"}},[e._v("双非大四这一年 总结"),r("OutboundLink")],1),e._v(": 在这一年,我到底做了什么呢? 首先先聊自己工作 的情况吧。 从23年暑假就开始实习,满打满算 实习了加起来差不多6个多月吧,从北京到杭州。----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350549827675029516",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何使用Tocbot创建博客目录?"),r("OutboundLink")],1),e._v(": 目录可以帮助访问者快速了解文章的摘要,并导航至他们感兴趣的部分。 在本文中,我将向你展示如何结合Contentlayer和Next.js使用Tocbot创建目录。----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350880189836918820",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何实现快速访问github"),r("OutboundLink")],1),e._v(": github是每位程序开发人员的聚集地,当在国内直接进行访问的时候,会出现网络很慢,甚至无法访问的情况。今天教大家如何流畅的访问github!----👍🏻点赞量:0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349047049869131791",target:"_blank",rel:"noopener noreferrer"}},[e._v("git rebase+rever实现git代码回滚"),r("OutboundLink")],1),e._v(": 前言 今天准备上线时,突然产品有大变动需要把这个版本的内容都废弃掉。因此我需要将dev分支的代码进行回滚,但我并没有dev分支的权限找leader操作又觉得太麻烦了。那么有没有办法从dev切出来一个f----👍🏻点赞量:0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350835151871705127",target:"_blank",rel:"noopener noreferrer"}},[e._v("taro-solid小程序插件版本迭代第二期"),r("OutboundLink")],1),e._v(": 前情提要 在上一期taro-solid小程序插件版本迭代中,我们解决了h函数带来的问题。这一期主要解决button input等标签渲染不出来的bug----👍🏻点赞量:0")])]),e._v(" "),r("h3",{attrs:{id:"前端-webpack"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-webpack"}},[e._v("#")]),e._v(" 前端-Webpack")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349087888049291299",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何解决项目依赖重复打包问题"),r("OutboundLink")],1),e._v(": 由于最近面试经常被问到这个问题(简历上写了),感觉答的时候不是很系统清晰,于是便有了这篇文章。 为啥对这个问题这么上心? 在上家公司最后一段时间是做前端工程基建相关的,不说是最有成长的一段时间,但绝对----👍🏻点赞量:35")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350535815132659749",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024前端高频面试题之-- 前端工程化篇"),r("OutboundLink")],1),e._v(": 【前端面试复习系列文章】 2024前端高频面试题-- html篇 2024前端高频面试题-- CSS篇 2024前端高频面试题-- JS篇 2024前端高频面试题-- VUE篇 2024前端高频面试题----👍🏻点赞量:10")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349101755090518043",target:"_blank",rel:"noopener noreferrer"}},[e._v("从0到1 将静态网页项目进行工程化(第二章)"),r("OutboundLink")],1),e._v(": 前言: 上一章节,完成了对静态网页进行了代码首页以及登录页的移植以及通过webpack进行项目工程化改造。本章重点是对打包产物进行优化。----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349551248516333605",target:"_blank",rel:"noopener noreferrer"}},[e._v("解析 webpack , vite 处理 commonjs 和 esm 的原理"),r("OutboundLink")],1),e._v(": webpack 和 vite 的流程大致一样,都需要分析抽象语法树获取模块的导入导出, 对每个模块进行编译转换,但是他们两个在开发模式下对于模块的处理是正好相反的----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350233011671564299",target:"_blank",rel:"noopener noreferrer"}},[e._v("我是如何用GPT优化vue组件库的(下)"),r("OutboundLink")],1),e._v(": vue组件库npm包安装方式和script引入方式各有啥优缺点 这个问题可以直接问通义千问,答案挺靠谱的。这里总结通义千问的答案:npm 包安装方式更优,结合webpack解决模块依赖、更好的性能优化----👍🏻点赞量:0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350231743591792640",target:"_blank",rel:"noopener noreferrer"}},[e._v("👊超给力的webpack实战三之vue单页面和多页面配置"),r("OutboundLink")],1),e._v(": 前言 这是一个系列专栏,将会更新一系列 webpack 的实战内容,主要围绕着旧前端项目现代化,以及现代化前端项目的再优化。下面开始第三篇:vue单页面和多页面配置----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349087888049242147",target:"_blank",rel:"noopener noreferrer"}},[e._v("webpack从入门到进阶(三)---webpack优化"),r("OutboundLink")],1),e._v(": 本章在上一章节的基础上对配置文件进行了进一步的优化;通过本章的学习,可以了解到js代码分类,多入口配置,css优化等----👍🏻点赞量:0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349863595730010147",target:"_blank",rel:"noopener noreferrer"}},[e._v("一文学会webpack-loader | Markdown转React组件"),r("OutboundLink")],1),e._v(": 在一个组件开发团队或其他团队中,通常使用markdown写文档,现在有这么一个需求,需要在项目中将markdown转为React组件,可以直接当做React组件直接import进来并使用,这个组件可以----👍🏻点赞量:1")])]),e._v(" "),r("h3",{attrs:{id:"前端-微信小程序"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-微信小程序"}},[e._v("#")]),e._v(" 前端-微信小程序")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350140676615716904",target:"_blank",rel:"noopener noreferrer"}},[e._v("想在小程序中实现一个计算属性来监控表单的必填属性,失败了"),r("OutboundLink")],1),e._v(": 背景 小程序中的表单提交,需要校验表单填写完成按钮才是可点击状态,一般做法是每个表单变化的时候都去看是不是所有都填完成,也就是需要在每个可输入的地方做处理,希望能像vue的计算属性一样,在计算属性里面----👍🏻点赞量:0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350227491993354240",target:"_blank",rel:"noopener noreferrer"}},[e._v("微信扫二维码,跳转到小程序"),r("OutboundLink")],1),e._v(": 微信扫二维码,通过配置小程序规则,指定URL链接,跳转到小程序,并获取页面参数...........----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350482843532886054",target:"_blank",rel:"noopener noreferrer"}},[e._v("微信小程序里关于checkbox的坑"),r("OutboundLink")],1),e._v(": 需求背景 小程序项目内,需要添加一个checkbox,用来判断用户是否同意某种协议。 遇到的坑 我只打算使用一个checkbox,而非checkbox-group,最初给checkbox添加bindc----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7351430820713791514",target:"_blank",rel:"noopener noreferrer"}},[e._v("【通识篇】小程序上手开发实践总结"),r("OutboundLink")],1),e._v(": Why 为什么要上手小程序开发 最简单直接的原因:市场需要!其他原因如下: Before 前置技能 🚀 强烈推荐先掌握前端基础(HTML, CSS, JS),尤其是 Vue 或 React 框架,能提----👍🏻点赞量:0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350835151871705127",target:"_blank",rel:"noopener noreferrer"}},[e._v("taro-solid小程序插件版本迭代第二期"),r("OutboundLink")],1),e._v(": 前情提要 在上一期taro-solid小程序插件版本迭代中,我们解决了h函数带来的问题。这一期主要解决button input等标签渲染不出来的bug----👍🏻点赞量:0")])]),e._v(" "),r("h3",{attrs:{id:"前端-nestjs"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-nestjs"}},[e._v("#")]),e._v(" 前端-NestJS")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349437605858066443",target:"_blank",rel:"noopener noreferrer"}},[e._v("领导问我:为什么一个点赞功能你做了五天?"),r("OutboundLink")],1),e._v(": 前言 可乐是一名前端切图仔,最近他们团队需要做一个文章社区平台。由于人手不够,前后端部分都是由前端同学来实现,后端部分用的技术栈是 nest.js 。 某一个周一,领导希望做一个给文章点赞的功能,在文----👍🏻点赞量:148")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7351612144527835177",target:"_blank",rel:"noopener noreferrer"}},[e._v("NestJS中如何使用Swagger生成在线接口文档"),r("OutboundLink")],1),e._v(": 在前后端分离开发中,为了确保前端和后端的开发人员能够有效地协作,后端需要为前端提供接口文档。接口文档应包含请求类型、传参格式、响应格式等详细信息。在 NestJS 中,Swagger 可以将接口文档集----👍🏻点赞量:4")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7351439648592789567",target:"_blank",rel:"noopener noreferrer"}},[e._v("小白从0开始——NestJS官网文档精读:管道"),r("OutboundLink")],1),e._v(": 基本概念 管道(Pipes)是处理输入数据并在它实际到达路由处理程序之前执行某些操作的类。管道可以做的操作包括但不限于: 数据转换(Transformation) :更改输入数据的格式或类型,例如将字----👍🏻点赞量:0")])]),e._v(" "),r("h3",{attrs:{id:"后端"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#后端"}},[e._v("#")]),e._v(" 后端")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350354672862330932",target:"_blank",rel:"noopener noreferrer"}},[e._v("飞书很好,但赢不了,只能裁员"),r("OutboundLink")],1),e._v(": 心碎飞书 3 月 26 日,字节跳动旗下产品飞书的 CEO 谢欣发布全员信,正式宣布进行新一轮的组织调整,即裁员。 内部全员信如下: 我有不少朋友是在字节跳动,甚至就在 Lark 的。 同时我也因为会----👍🏻点赞量:114")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350585600858898484",target:"_blank",rel:"noopener noreferrer"}},[e._v("腾讯女后端设计了一套短链系统,当场就想给她offer!"),r("OutboundLink")],1),e._v(": 手机里的营销短信,背后运作的秘密是什么? 什么是短链?什么是短链系统?如何设计一套高性能的短链系统?----👍🏻点赞量:113")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349971654590283776",target:"_blank",rel:"noopener noreferrer"}},[e._v("刚刚,百度和苹果宣布联名"),r("OutboundLink")],1),e._v(": 百度 × Apple 就在刚刚,财联社报道,百度将为苹果今年发布的 iPhone16、Mac 系统和 iOS18 提供 AI 功能。 苹果曾与阿里以及另外一家国产大模型公司进行过洽谈,最后确定由百度提----👍🏻点赞量:26")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348981169481990195",target:"_blank",rel:"noopener noreferrer"}},[e._v("eBPF驱动下的突破:打造高效大规模 Kubernetes Service 运行场景"),r("OutboundLink")],1),e._v(": Cilium 强大安全性和灵活性,优雅替代传统的 kube-proxy,重塑大规模 Kubernetes 集群的网络架构。一个必读的技术深度解析,适合所有对现代网络技术感兴趣的读者。----👍🏻点赞量:10")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349569626341490740",target:"_blank",rel:"noopener noreferrer"}},[e._v("舒服了,学习了,踩到一个 Lombok 的坑!"),r("OutboundLink")],1),e._v(": 你好呀,我是歪歪。 踩坑了啊,最近踩了一个 lombok 的坑,有点意思,给你分享一波。 我之前写过一个公共的服务接口,这个接口已经有好几个系统对接并稳定运行了很长一段时间了,长到这个接口都已经交接给----👍🏻点赞量:37")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349182232442191884",target:"_blank",rel:"noopener noreferrer"}},[e._v("辞职 4 个月后,我用 Rust 实现了个简单的 Spring Boot"),r("OutboundLink")],1),e._v(": 大家好,我是 ZihanType,一个热爱 Rust 的程序员。我在 2023 年 11 月辞职,目前正在找工作。在这段时间里,我用 Rust 写了一个 Spring Boot,这个项目叫做 pred----👍🏻点赞量:23")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349360417053474867",target:"_blank",rel:"noopener noreferrer"}},[e._v("架构解析系列-OTeL & Micrometer 在 Spring Boot 中的应用与分析"),r("OutboundLink")],1),e._v(": 希望通过本文能够帮助大家使用和理解 Springboot 中对于 micrometer 和 otlp 收集指标数据的基本流程和原理。----👍🏻点赞量:14")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349588906909958196",target:"_blank",rel:"noopener noreferrer"}},[e._v("倾情奉献 ,HBase 快速入门手册 - Java "),r("OutboundLink")],1),e._v(": 👈👈👈 欢迎点赞收藏关注哟 一. 前言 之前 Hadoop 入门 时讲过 , Hadoop 本身属于底层框架,在其上层有很多功能上的实现 ,并且这些实现都取得了不错的成绩。 HBase 就是其中一个,----👍🏻点赞量:9")])]),e._v(" "),r("h3",{attrs:{id:"android"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#android"}},[e._v("#")]),e._v(" Android")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349124917378695180",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flutter - 升级3.19之后页面多次rebuild?🤨"),r("OutboundLink")],1),e._v(": 升到到 "),r("code",[e._v("3.19.3")]),e._v(" 后发现,从 "),r("code",[e._v("页面A")]),e._v(" 跳转到 "),r("code",[e._v("页面B")]),e._v(" 和返回 "),r("code",[e._v("页面A")]),e._v(" 时,"),r("code",[e._v("页面A")]),e._v(" 的 "),r("code",[e._v("build")]),e._v(" 方法都会被执行,降回 "),r("code",[e._v("3.16.9")]),e._v(" 则不会----👍🏻点赞量:17")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349001116598091810",target:"_blank",rel:"noopener noreferrer"}},[e._v("跟🤡杰哥一起学Flutter (十三、从Widget源码 ✈ InheritedWidget)"),r("OutboundLink")],1),e._v(": 🤡本节来扒一扒Widget的源码,搞清楚StatefulWidget的生命周期/方法调用过程,为什么State可以跨帧存在?InheritedWidget的实现原理等..为后面的状态管理章节做准备~----👍🏻点赞量:15")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348994520590270490",target:"_blank",rel:"noopener noreferrer"}},[e._v("鸿蒙踩坑记之一招解决等待多个并发结果"),r("OutboundLink")],1),e._v(": 年前公司与华为签订了合作备忘录,加入了鸿蒙生态这个大家庭。。公司想赶着鸿蒙纯血系统上市之前,发布自己的鸿蒙软件。开发鸿蒙NEXT版本软件----👍🏻点赞量:11")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348707728921853971",target:"_blank",rel:"noopener noreferrer"}},[e._v("Android RecyclerView宫格拖拽效果实现"),r("OutboundLink")],1),e._v(": 前言 在Android发展的进程中,网格布局一直比较有热度,其中一个原因是对用户来说便捷操作,对app厂商而言也会带来很多的曝光量,对于很多头部app,展示网格菜单几乎是必选项。实现网格的方式有很多种----👍🏻点赞量:15")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349446682826948617",target:"_blank",rel:"noopener noreferrer"}},[e._v("几乎是当下最详细的 AOSP 编译与调试运行指南"),r("OutboundLink")],1),e._v(": 几乎是当下最详细的 AOSP 编译与调试运行指南,用于想要对系统源码深入调试或者定制自己的 framework----👍🏻点赞量:21")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349791638112452618",target:"_blank",rel:"noopener noreferrer"}},[e._v("PLT Hook从入门到实战 "),r("OutboundLink")],1),e._v(": PLT Hook是Android进阶必须掌握的技术之一,该技术在性能优化上有着广泛的应用,笔者这里以Native 内存泄漏检测,来带大家掌握PLT Hook技术----👍🏻点赞量:22")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350571075547676722",target:"_blank",rel:"noopener noreferrer"}},[e._v("Android Perfetto 系列 2:Perfetto Trace 抓取"),r("OutboundLink")],1),e._v(": 上一篇文章 Android Perfetto 系列 1:Perfetto 工具简介 介绍了 Perfetto 是什么,这篇简单介绍一下 Perfetto 的抓取。----👍🏻点赞量:23")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348824894157160474",target:"_blank",rel:"noopener noreferrer"}},[e._v("WebView组件封装(五)——实现H5页面秒开方案总结"),r("OutboundLink")],1),e._v(": 一、WebView组件封装系列文章 WebView组件封装(一)——怎样使用全局缓存池管理提高WebView加载速度 WebView组件封装(二)——怎样用设计模式封装WebView,轻松实现个性化定----👍🏻点赞量:6")])]),e._v(" "),r("h3",{attrs:{id:"ios"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#ios"}},[e._v("#")]),e._v(" IOS")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349895521395884069",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024 Flutter iOS 隐私清单上线,5 月 1 号最后期限,你收到 「ITMS-91053」 了吗?"),r("OutboundLink")],1),e._v(": 2023 年底的时候,我就发过了 《Flutter 上了 Apple 第三方重大列表,2024 春季 iOS 的隐私清单究竟是什么?》 相关内容,如果你还对隐私清单等相关要求不了解,建议先看看前文。 ----👍🏻点赞量:32")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349002962868305920",target:"_blank",rel:"noopener noreferrer"}},[e._v("iOS实现收钱时播放语音提醒总结"),r("OutboundLink")],1),e._v(": 一、背景 在WWDC2019发布了新的iOS13,苹果不再允许PushKit应用在非voip电话的场景上。这篇文章总结了在iOS13下的语音播报迁移方案以及一些需要注意的问题。 二、技术方案 Noti----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349027817306308617",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何使用 SwiftUI 构建 visionOS 应用"),r("OutboundLink")],1),e._v(": Apple Vision Pro 即将推出,现在是看看 SwiftUI API 的完美时机,这使我们能够将我们的应用程序适应 visionOS 提供的沉浸式世界。苹果表示,构建应用程序的最佳方式是使用----👍🏻点赞量:8")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349835041993916450",target:"_blank",rel:"noopener noreferrer"}},[e._v("超级干干干干货!丝滑的 iOS 进度条解锁交互到底是怎么制作的?"),r("OutboundLink")],1),e._v(": 这篇是拆解 吉光卡片 App 底部彩蛋入口的动画实现。将这个入口发到社区后,很多小伙伴表示对实现原理比较感兴趣,于是便有了这篇文章,我将从思路和原理入手,带大家抽丝剥茧地带大家了解这个动画是如何实现的----👍🏻点赞量:9")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349189143799398427",target:"_blank",rel:"noopener noreferrer"}},[e._v("RSA详解"),r("OutboundLink")],1),e._v(": 本文尝试使用最基础的方式解释RSA中的每一步的计算步骤、理论依据及证明;填补了在e、n不互质;m、n不互质情况下的处理方法和补充证明。----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350143110495207474",target:"_blank",rel:"noopener noreferrer"}},[e._v("Swift 定制 Core Data 迁移"),r("OutboundLink")],1),e._v(": 随着应用程序和用户群的增长,你需要添加新功能,删除其他功能,并改变应用程序的工作方式。这是软件开发生命周期的自然结果,我们应该接受。 随着应用程序的发展,你的数据模型也会发生变化。你需要更改数据----👍🏻点赞量:4")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350473432197431334",target:"_blank",rel:"noopener noreferrer"}},[e._v("08-📝Flutter核心知识|网络请求和Json转Model【网络处理封装、Json转Model、Json解析 、自动反序列化配置等】"),r("OutboundLink")],1),e._v(": 一、前言 本系列文章旨在快速复习并上手Flutter开发,并在适当分享在项目实战过程中遇到的一些比较有价值的知识内容: 01-📝Flutter核心知识|了解Flutter【诞生背景、应用简介、页面渲染----👍🏻点赞量:3")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350308310824091698",target:"_blank",rel:"noopener noreferrer"}},[e._v("UserAgent获取与修改"),r("OutboundLink")],1),e._v(": 从19年 iOS 13开始Apple就建议我们将App中使用UIWebView的地方切换为WKWebView了。 按照Apple2019年12月13日的文档,20年4月,新应用必须使用WKWebViw----👍🏻点赞量:2")])]),e._v(" "),r("h2",{attrs:{id:"github"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#github"}},[e._v("#")]),e._v(" GitHub")]),e._v(" "),r("h3",{attrs:{id:"javascript-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#javascript-2"}},[e._v("#")]),e._v(" javascript")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/jaywcjlove/awesome-mac",target:"_blank",rel:"noopener noreferrer"}},[e._v("jaywcjlove/awesome-mac"),r("OutboundLink")],1),e._v(":  Now we have become very big, Different from the original idea. Collect premium software in various categories.----总⭐️70,551; 今日⭐️537")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/nodejs/node",target:"_blank",rel:"noopener noreferrer"}},[e._v("nodejs/node"),r("OutboundLink")],1),e._v(": Node.js JavaScript runtime ✨🐢🚀✨----总⭐️103,061; 今日⭐️478")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/Mintplex-Labs/anything-llm",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintplex-Labs/anything-llm"),r("OutboundLink")],1),e._v(": A multi-user ChatGPT for any LLMs and vector database. Unlimited documents, messages, and storage in one privacy-focused app. Now available as a desktop application with a built-in LLM!----总⭐️9,823; 今日⭐️359")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/SuhailTechInfo/Suhail-Md",target:"_blank",rel:"noopener noreferrer"}},[e._v("SuhailTechInfo/Suhail-Md"),r("OutboundLink")],1),e._v(": meet Suhail-Md, Your All-in-One WhatsApp Excitement Buddy! Enjoy a thrilling messaging experience like never before. Suhail-Md brings a world of excitement and joy to your chats ✨🤖----总⭐️1,494; 今日⭐️201")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/end-4/dots-hyprland",target:"_blank",rel:"noopener noreferrer"}},[e._v("end-4/dots-hyprland"),r("OutboundLink")],1),e._v(": Modern, feature-rich and accessible desktop configuration.----总⭐️2,173; 今日⭐️271")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/kkevsekk1/AutoX",target:"_blank",rel:"noopener noreferrer"}},[e._v("kkevsekk1/AutoX"),r("OutboundLink")],1),e._v(": A UiAutomator on android, does not need root access(安卓平台上的JavaScript自动化工具)----总⭐️5,735; 今日⭐️73")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/louislam/uptime-kuma",target:"_blank",rel:"noopener noreferrer"}},[e._v("louislam/uptime-kuma"),r("OutboundLink")],1),e._v(": A fancy self-hosted monitoring tool----总⭐️48,025; 今日⭐️367")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/projectdiscovery/nuclei-templates",target:"_blank",rel:"noopener noreferrer"}},[e._v("projectdiscovery/nuclei-templates"),r("OutboundLink")],1),e._v(": Community curated list of templates for the nuclei engine to find security vulnerabilities.----总⭐️7,904; 今日⭐️50")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/Superalgos/Superalgos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Superalgos/Superalgos"),r("OutboundLink")],1),e._v(": Free, open-source crypto trading bot, automated bitcoin / cryptocurrency trading software, algorithmic trading bots. Visually design your crypto trading bot, leveraging an integrated charting system, data-mining, backtesting, paper trading, and multi-server crypto bot deployments.----总⭐️3,810; 今日⭐️28")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/trekhleb/javascript-algorithms",target:"_blank",rel:"noopener noreferrer"}},[e._v("trekhleb/javascript-algorithms"),r("OutboundLink")],1),e._v(": 📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings----总⭐️181,225; 今日⭐️247")])]),e._v(" "),r("h3",{attrs:{id:"vue"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#vue"}},[e._v("#")]),e._v(" vue")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/CorentinTh/it-tools",target:"_blank",rel:"noopener noreferrer"}},[e._v("CorentinTh/it-tools"),r("OutboundLink")],1),e._v(": Collection of handy online tools for developers, with great UX.----总⭐️9,096; 今日⭐️229")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/vueComponent/ant-design-vue",target:"_blank",rel:"noopener noreferrer"}},[e._v("vueComponent/ant-design-vue"),r("OutboundLink")],1),e._v(": 🌈 An enterprise-class UI components based on Ant Design and Vue. 🐜----总⭐️19,478; 今日⭐️47")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/wanglin2/mind-map",target:"_blank",rel:"noopener noreferrer"}},[e._v("wanglin2/mind-map"),r("OutboundLink")],1),e._v(": 一个还算强大的Web思维导图。A relatively powerful web mind map.----总⭐️3,307; 今日⭐️144")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/hslr-s/sun-panel",target:"_blank",rel:"noopener noreferrer"}},[e._v("hslr-s/sun-panel"),r("OutboundLink")],1),e._v(": A server, NAS navigation panel, Homepage, browser homepage. | 一个服务器、NAS导航面板、Homepage、浏览器首页。----总⭐️1,639; 今日⭐️135")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/pure-admin/vue-pure-admin",target:"_blank",rel:"noopener noreferrer"}},[e._v("pure-admin/vue-pure-admin"),r("OutboundLink")],1),e._v(": 🔥 全面ESM+Vue3+Vite+Element-Plus+TypeScript编写的一款后台管理系统(兼容移动端)----总⭐️13,626; 今日⭐️287")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/didi/xiaoju-survey",target:"_blank",rel:"noopener noreferrer"}},[e._v("didi/xiaoju-survey"),r("OutboundLink")],1),e._v(": 「快速」打造「专属」问卷系统, 让调研「更轻松」----总⭐️263; 今日⭐️83")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/kailong321200875/vue-element-plus-admin",target:"_blank",rel:"noopener noreferrer"}},[e._v("kailong321200875/vue-element-plus-admin"),r("OutboundLink")],1),e._v(": A backend management system based on vue3, typescript, element-plus, and vite----总⭐️2,156; 今日⭐️36")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/sugarforever/chat-ollama",target:"_blank",rel:"noopener noreferrer"}},[e._v("sugarforever/chat-ollama"),r("OutboundLink")],1),e._v(": ----总⭐️712; 今日⭐️150")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/zclzone/vue-naive-admin",target:"_blank",rel:"noopener noreferrer"}},[e._v("zclzone/vue-naive-admin"),r("OutboundLink")],1),e._v(": ⚡️基于 Vue3 + Vite + Pinia + Unocss + Naive UI 的轻量级后台管理模板。----总⭐️2,447; 今日⭐️65")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/Lissy93/dashy",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lissy93/dashy"),r("OutboundLink")],1),e._v(": 🚀 A self-hostable personal dashboard built for you. Includes status-checking, widgets, themes, icon packs, a UI editor and tons more!----总⭐️14,931; 今日⭐️100")])]),e._v(" "),r("h3",{attrs:{id:"typescript"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#typescript"}},[e._v("#")]),e._v(" typescript")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/fdundjer/solana-sniper-bot",target:"_blank",rel:"noopener noreferrer"}},[e._v("fdundjer/solana-sniper-bot"),r("OutboundLink")],1),e._v(": Solana Sniper Bot - Proof of Concept----总⭐️583; 今日⭐️322")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/janhq/jan",target:"_blank",rel:"noopener noreferrer"}},[e._v("janhq/jan"),r("OutboundLink")],1),e._v(": Jan is an open source alternative to ChatGPT that runs 100% offline on your computer----总⭐️14,074; 今日⭐️2,103")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/kamranahmedse/developer-roadmap",target:"_blank",rel:"noopener noreferrer"}},[e._v("kamranahmedse/developer-roadmap"),r("OutboundLink")],1),e._v(": Interactive roadmaps, guides and other educational content to help developers grow in their careers.----总⭐️270,459; 今日⭐️1,165")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/lobehub/lobe-chat",target:"_blank",rel:"noopener noreferrer"}},[e._v("lobehub/lobe-chat"),r("OutboundLink")],1),e._v(": 🤯 Lobe Chat - an open-source, modern-design LLMs/AI chat framework. Supports Multi AI Providers( OpenAI / Claude 3 / Gemini / Perplexity / Bedrock / Azure / Mistral / Ollama ), Multi-Modals (Vision/TTS) and plugin system. One-click FREE deployment of your private ChatGPT chat application.----总⭐️25,594; 今日⭐️2,103")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/nodejs/nodejs.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("nodejs/nodejs.org"),r("OutboundLink")],1),e._v(": The Node.js® Website----总⭐️4,785; 今日⭐️1,144")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/Project-DARC/DARC",target:"_blank",rel:"noopener noreferrer"}},[e._v("Project-DARC/DARC"),r("OutboundLink")],1),e._v(": Decentralized Autonomous Regulated Company (DARC), a company virtual machine that runs on any EVM-compatible blockchain, with on-chain law system, multi-level tokens and dividends mechanism.----总⭐️9,357; 今日⭐️1,110")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/yangshun/tech-interview-handbook",target:"_blank",rel:"noopener noreferrer"}},[e._v("yangshun/tech-interview-handbook"),r("OutboundLink")],1),e._v(": 💯 Curated coding interview preparation materials for busy software engineers----总⭐️108,542; 今日⭐️583")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/linkwarden/linkwarden",target:"_blank",rel:"noopener noreferrer"}},[e._v("linkwarden/linkwarden"),r("OutboundLink")],1),e._v(": ⚡️⚡️⚡️Self-hosted collaborative bookmark manager to collect, organize, and preserve webpages and articles.----总⭐️5,696; 今日⭐️719")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/midday-ai/midday",target:"_blank",rel:"noopener noreferrer"}},[e._v("midday-ai/midday"),r("OutboundLink")],1),e._v(": Run your business smarter.----总⭐️1,066; 今日⭐️467")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/medusajs/medusa",target:"_blank",rel:"noopener noreferrer"}},[e._v("medusajs/medusa"),r("OutboundLink")],1),e._v(": Building blocks for digital commerce----总⭐️22,438; 今日⭐️219")])]),e._v(" "),r("h3",{attrs:{id:"python-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#python-2"}},[e._v("#")]),e._v(" python")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/stitionai/devika",target:"_blank",rel:"noopener noreferrer"}},[e._v("stitionai/devika"),r("OutboundLink")],1),e._v(": Devika is an Agentic AI Software Engineer that can understand high-level human instructions, break them down into steps, research relevant information, and write code to achieve the given objective. Devika aims to be a competitive open-source alternative to Devin by Cognition AI.----总⭐️12,436; 今日⭐️11,540")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/OpenInterpreter/open-interpreter",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenInterpreter/open-interpreter"),r("OutboundLink")],1),e._v(": A natural language interface for computers----总⭐️45,825; 今日⭐️3,541")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/JoeanAmier/TikTokDownloader",target:"_blank",rel:"noopener noreferrer"}},[e._v("JoeanAmier/TikTokDownloader"),r("OutboundLink")],1),e._v(": 完全免费开源,基于 Requests 模块实现:TikTok 主页/视频/图集/原声;抖音主页/视频/图集/收藏/直播/原声/合集/评论/账号/搜索/热榜数据采集工具----总⭐️5,124; 今日⭐️356")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/Doriandarko/maestro",target:"_blank",rel:"noopener noreferrer"}},[e._v("Doriandarko/maestro"),r("OutboundLink")],1),e._v(": A framework for Claude Opus to intelligently orchestrate subagents.----总⭐️478; 今日⭐️163")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/goauthentik/authentik",target:"_blank",rel:"noopener noreferrer"}},[e._v("goauthentik/authentik"),r("OutboundLink")],1),e._v(": The authentication glue you need.----总⭐️6,346; 今日⭐️273")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/roboflow/supervision",target:"_blank",rel:"noopener noreferrer"}},[e._v("roboflow/supervision"),r("OutboundLink")],1),e._v(": We write your reusable computer vision tools. 💜----总⭐️13,371; 今日⭐️1,534")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/vllm-project/vllm",target:"_blank",rel:"noopener noreferrer"}},[e._v("vllm-project/vllm"),r("OutboundLink")],1),e._v(": A high-throughput and memory-efficient inference and serving engine for LLMs----总⭐️16,815; 今日⭐️404")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/StevenBlack/hosts",target:"_blank",rel:"noopener noreferrer"}},[e._v("StevenBlack/hosts"),r("OutboundLink")],1),e._v(": 🔒 Consolidating and extending hosts files from several well-curated sources. Optionally pick extensions for porn, social media, and other categories.----总⭐️25,228; 今日⭐️251")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/OpenInterpreter/01",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenInterpreter/01"),r("OutboundLink")],1),e._v(": The open-source language model computer----总⭐️3,685; 今日⭐️2,491")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/harry0703/MoneyPrinterTurbo",target:"_blank",rel:"noopener noreferrer"}},[e._v("harry0703/MoneyPrinterTurbo"),r("OutboundLink")],1),e._v(": 利用AI大模型,一键生成高清短视频 Generate short videos with one click using AI LLM.----总⭐️4,572; 今日⭐️2,574")])]),e._v(" "),r("h3",{attrs:{id:"go"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#go"}},[e._v("#")]),e._v(" go")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/microsoft/retina",target:"_blank",rel:"noopener noreferrer"}},[e._v("microsoft/retina"),r("OutboundLink")],1),e._v(": eBPF distributed networking observability tool for Kubernetes----总⭐️2,150; 今日⭐️1,499")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/jesseduffield/lazygit",target:"_blank",rel:"noopener noreferrer"}},[e._v("jesseduffield/lazygit"),r("OutboundLink")],1),e._v(": simple terminal UI for git commands----总⭐️44,690; 今日⭐️607")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/iawia002/lux",target:"_blank",rel:"noopener noreferrer"}},[e._v("iawia002/lux"),r("OutboundLink")],1),e._v(": 👾 Fast and simple video download library and CLI tool written in Go----总⭐️24,419; 今日⭐️468")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/omriharel/deej",target:"_blank",rel:"noopener noreferrer"}},[e._v("omriharel/deej"),r("OutboundLink")],1),e._v(": Set app volumes with real sliders! deej is an Arduino & Go project to let you build your own hardware mixer for Windows and Linux----总⭐️3,793; 今日⭐️682")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/go-gitea/gitea",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-gitea/gitea"),r("OutboundLink")],1),e._v(": Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD----总⭐️41,459; 今日⭐️169")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/k8sgpt-ai/k8sgpt",target:"_blank",rel:"noopener noreferrer"}},[e._v("k8sgpt-ai/k8sgpt"),r("OutboundLink")],1),e._v(": Giving Kubernetes Superpowers to everyone----总⭐️4,781; 今日⭐️74")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/cli/cli",target:"_blank",rel:"noopener noreferrer"}},[e._v("cli/cli"),r("OutboundLink")],1),e._v(": GitHub’s official command line tool----总⭐️35,120; 今日⭐️157")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/libp2p/go-libp2p",target:"_blank",rel:"noopener noreferrer"}},[e._v("libp2p/go-libp2p"),r("OutboundLink")],1),e._v(": libp2p implementation in Go----总⭐️5,698; 今日⭐️26")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/tailscale/tailscale",target:"_blank",rel:"noopener noreferrer"}},[e._v("tailscale/tailscale"),r("OutboundLink")],1),e._v(": The easiest, most secure way to use WireGuard and 2FA.----总⭐️16,052; 今日⭐️168")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/quii/learn-go-with-tests",target:"_blank",rel:"noopener noreferrer"}},[e._v("quii/learn-go-with-tests"),r("OutboundLink")],1),e._v(": Learn Go with test-driven development----总⭐️21,114; 今日⭐️55")])]),e._v(" "),r("h3",{attrs:{id:"rust"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#rust"}},[e._v("#")]),e._v(" rust")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/juspay/hyperswitch",target:"_blank",rel:"noopener noreferrer"}},[e._v("juspay/hyperswitch"),r("OutboundLink")],1),e._v(": An open source payments switch written in Rust to make payments fast, reliable and affordable----总⭐️9,679; 今日⭐️285")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/ynqa/jnv",target:"_blank",rel:"noopener noreferrer"}},[e._v("ynqa/jnv"),r("OutboundLink")],1),e._v(": interactive JSON filter using jq----总⭐️3,776; 今日⭐️2,065")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/Wilfred/difftastic",target:"_blank",rel:"noopener noreferrer"}},[e._v("Wilfred/difftastic"),r("OutboundLink")],1),e._v(": a structural diff that understands syntax 🟥🟩----总⭐️19,041; 今日⭐️1,625")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/ordinals/ord",target:"_blank",rel:"noopener noreferrer"}},[e._v("ordinals/ord"),r("OutboundLink")],1),e._v(": 👁‍🗨 Rare and exotic sats----总⭐️3,142; 今日⭐️56")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/rerun-io/rerun",target:"_blank",rel:"noopener noreferrer"}},[e._v("rerun-io/rerun"),r("OutboundLink")],1),e._v(": Visualize streams of multimodal data. Fast, easy to use, and simple to integrate. Built in Rust using egui.----总⭐️4,856; 今日⭐️155")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/paritytech/substrate",target:"_blank",rel:"noopener noreferrer"}},[e._v("paritytech/substrate"),r("OutboundLink")],1),e._v(": Substrate: The platform for blockchain innovators----总⭐️8,384; 今日⭐️30")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/uutils/coreutils",target:"_blank",rel:"noopener noreferrer"}},[e._v("uutils/coreutils"),r("OutboundLink")],1),e._v(": Cross-platform Rust rewrite of the GNU coreutils----总⭐️16,717; 今日⭐️85")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/martinvonz/jj",target:"_blank",rel:"noopener noreferrer"}},[e._v("martinvonz/jj"),r("OutboundLink")],1),e._v(": A Git-compatible VCS that is both simple and powerful----总⭐️6,303; 今日⭐️318")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/tikv/tikv",target:"_blank",rel:"noopener noreferrer"}},[e._v("tikv/tikv"),r("OutboundLink")],1),e._v(": Distributed transactional key-value database, originally created to complement TiDB----总⭐️14,396; 今日⭐️54")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/seanmonstar/reqwest",target:"_blank",rel:"noopener noreferrer"}},[e._v("seanmonstar/reqwest"),r("OutboundLink")],1),e._v(": An easy and powerful Rust HTTP Client----总⭐️8,976; 今日⭐️123")])]),e._v(" "),r("h3",{attrs:{id:"object-c"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#object-c"}},[e._v("#")]),e._v(" object-c")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/amowu/arduimo",target:"_blank",rel:"noopener noreferrer"}},[e._v("amowu/arduimo"),r("OutboundLink")],1),e._v(": Amo + Arduino = Arduimo----总⭐️7; 今日⭐️0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/schacon/blink",target:"_blank",rel:"noopener noreferrer"}},[e._v("schacon/blink"),r("OutboundLink")],1),e._v(": Example file to blink the LED on an Arduino----总⭐️95; 今日⭐️0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/prisonerjohn/FBZ-BEAT",target:"_blank",rel:"noopener noreferrer"}},[e._v("prisonerjohn/FBZ-BEAT"),r("OutboundLink")],1),e._v(": ----总⭐️4; 今日⭐️0")])]),e._v(" "),r("h3",{attrs:{id:"css"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#css"}},[e._v("#")]),e._v(" css")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/cloudflare/cloudflare-docs",target:"_blank",rel:"noopener noreferrer"}},[e._v("cloudflare/cloudflare-docs"),r("OutboundLink")],1),e._v(": Cloudflare’s documentation----总⭐️2,513; 今日⭐️19")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/datawhalechina/hugging-multi-agent",target:"_blank",rel:"noopener noreferrer"}},[e._v("datawhalechina/hugging-multi-agent"),r("OutboundLink")],1),e._v(": A tutorial based on MetaGPT to quickly help you understand the concept of agent and muti-agent and get started with coding development----总⭐️598; 今日⭐️203")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/chokcoco/iCSS",target:"_blank",rel:"noopener noreferrer"}},[e._v("chokcoco/iCSS"),r("OutboundLink")],1),e._v(": 不止于 CSS----总⭐️18,612; 今日⭐️73")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/nanxiaobei/hugo-paper",target:"_blank",rel:"noopener noreferrer"}},[e._v("nanxiaobei/hugo-paper"),r("OutboundLink")],1),e._v(": 🪺 A simple, clean, customizable Hugo theme----总⭐️1,941; 今日⭐️13")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/refact0r/midnight-discord",target:"_blank",rel:"noopener noreferrer"}},[e._v("refact0r/midnight-discord"),r("OutboundLink")],1),e._v(": A dark, rounded discord theme.----总⭐️298; 今日⭐️14")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/primefaces/sakai-vue",target:"_blank",rel:"noopener noreferrer"}},[e._v("primefaces/sakai-vue"),r("OutboundLink")],1),e._v(": ----总⭐️350; 今日⭐️4")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/primefaces/primeng",target:"_blank",rel:"noopener noreferrer"}},[e._v("primefaces/primeng"),r("OutboundLink")],1),e._v(": The Most Complete Angular UI Component Library----总⭐️9,327; 今日⭐️30")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/primefaces/primereact",target:"_blank",rel:"noopener noreferrer"}},[e._v("primefaces/primereact"),r("OutboundLink")],1),e._v(": The Most Complete React UI Component Library----总⭐️5,572; 今日⭐️56")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/aprxi/letsbuild-ai",target:"_blank",rel:"noopener noreferrer"}},[e._v("aprxi/letsbuild-ai"),r("OutboundLink")],1),e._v(": Community-driven platform dedicated to sharing resources, tools, and knowledge for AI enthusiasts and developers----总⭐️177; 今日⭐️61")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/progit/progit2",target:"_blank",rel:"noopener noreferrer"}},[e._v("progit/progit2"),r("OutboundLink")],1),e._v(": Pro Git 2nd Edition----总⭐️5,585; 今日⭐️15")])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{527:function(e,t,r){"use strict";r.r(t);var n=r(7),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("p",[e._v("收集各大技术社区网站每周热文,"),r("a",{attrs:{href:"https://github.com/dravenww/blob",target:"_blank",rel:"noopener noreferrer"}},[e._v("个人技术博客"),r("OutboundLink")],1),e._v(" 在此")]),e._v(" "),r("p",[e._v("每周更新,展示当前周的数据,进行查看,欢迎"),r("a",{attrs:{href:"https://www.dravenwu.top",target:"_blank",rel:"noopener noreferrer"}},[e._v("关注公众号"),r("OutboundLink")],1),e._v(",点个star呀")]),e._v(" "),r("h2",{attrs:{id:"csdn"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#csdn"}},[e._v("#")]),e._v(" CSDN")]),e._v(" "),r("h3",{attrs:{id:"数据结构与算法"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#数据结构与算法"}},[e._v("#")]),e._v(" 数据结构与算法")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/qq_46009046/article/details/136989142",target:"_blank",rel:"noopener noreferrer"}},[e._v("基于SVM的PLOSAR图像分类"),r("OutboundLink")],1),e._v(": 张小殊.-基于SVM的PLOSAR图像分类----🔥 热度:18859")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/xiongyajun123/article/details/137091240",target:"_blank",rel:"noopener noreferrer"}},[e._v("【启发式算法】同核分子优化算法 Homonuclear Molecules Optimization HMO算法【Matlab代码#70】"),r("OutboundLink")],1),e._v(": 天`南-【启发式算法】同核分子优化算法 Homonuclear Molecules Optimization HMO算法【Matlab代码#70】----🔥 热度:15251")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/q601046124/article/details/137050272",target:"_blank",rel:"noopener noreferrer"}},[e._v("动态规划核贪心算法 在服务器业务开发的具体场景中的应用"),r("OutboundLink")],1),e._v(": 免费编程培训-动态规划核贪心算法 在服务器业务开发的具体场景中的应用----🔥 热度:13458")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_43889767/article/details/137118758",target:"_blank",rel:"noopener noreferrer"}},[e._v("day56 动态规划part13"),r("OutboundLink")],1),e._v(": 司徒北-day56 动态规划part13----🔥 热度:11324")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/zaizai1007/article/details/137054254",target:"_blank",rel:"noopener noreferrer"}},[e._v("十大经典排序算法"),r("OutboundLink")],1),e._v(": zaizai1007-十大经典排序算法----🔥 热度:10489")])]),e._v(" "),r("h3",{attrs:{id:"javascript"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#javascript"}},[e._v("#")]),e._v(" javascript")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/qq_39029949/article/details/137127561",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue-esign手写签字、鼠标写名字目前兼容pc、桌面端(electron)、移动端;可返回base64或者文件流"),r("OutboundLink")],1),e._v(": 小白兔-cium-Vue-esign手写签字、鼠标写名字目前兼容pc、桌面端(electron)、移动端;可返回base64或者文件流----🔥 热度:29330")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/LlanyW/article/details/137083395",target:"_blank",rel:"noopener noreferrer"}},[e._v("vue3全局控制Element plus所有组件的文字大小"),r("OutboundLink")],1),e._v(": Lan.W-vue3全局控制Element plus所有组件的文字大小----🔥 热度:22035")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_42554191/article/details/137092367",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue 3中ref和reactive的区别"),r("OutboundLink")],1),e._v(": 阿珊和她的猫-Vue 3中ref和reactive的区别----🔥 热度:22029")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/m0_60721823/article/details/137097511",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue 核心之数据劫持,web前端开发现状"),r("OutboundLink")],1),e._v(": Java老杨-Vue 核心之数据劫持,web前端开发现状----🔥 热度:22021")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/ladymorgana/article/details/137128062",target:"_blank",rel:"noopener noreferrer"}},[e._v("【vue核心技术实战精讲】1.9 Vue指令之v-model双向数据绑定"),r("OutboundLink")],1),e._v(": ladymorgana-【vue核心技术实战精讲】1.9 Vue指令之v-model双向数据绑定----🔥 热度:20492")])]),e._v(" "),r("h3",{attrs:{id:"java"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#java"}},[e._v("#")]),e._v(" java")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/m0_53190754/article/details/137052739",target:"_blank",rel:"noopener noreferrer"}},[e._v("SpringBootWeb最新相关技术(上接maven):IDEA2023-Spring环境,http协议复习概览,web服务器Tomcat,请求响应java服务器项目编写(BS模型,IOC,DI等)"),r("OutboundLink")],1),e._v(": mckl-SpringBootWeb最新相关技术(上接maven):IDEA2023-Spring环境,http协议复习概览,web服务器Tomcat,请求响应java服务器项目编写(BS模型,IOC,DI等)----🔥 热度:26304")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_49140482/article/details/137043998",target:"_blank",rel:"noopener noreferrer"}},[e._v("用IDEA构建的maven+SpringBoot项目生成的文件详解(.idea .mvn src HELP.md mvnw mvnw.cmd .gitignore pom.xml)"),r("OutboundLink")],1),e._v(": 婼熙颜-用IDEA构建的maven+SpringBoot项目生成的文件详解(.idea .mvn src HELP.md mvnw mvnw.cmd .gitignore pom.xml)----🔥 热度:23425")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_39314736/article/details/137038229",target:"_blank",rel:"noopener noreferrer"}},[e._v("Springboot maven加入本地jar,提示找不到类"),r("OutboundLink")],1),e._v(": jasperLiu17-Springboot maven加入本地jar,提示找不到类----🔥 热度:23001")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/sumMStar/article/details/137078279",target:"_blank",rel:"noopener noreferrer"}},[e._v("若依 3.8.7版本springboot前后端分离 整合mabatis plus"),r("OutboundLink")],1),e._v(": sumMStar-若依 3.8.7版本springboot前后端分离 整合mabatis plus----🔥 热度:21528")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/howard2005/article/details/137090915",target:"_blank",rel:"noopener noreferrer"}},[e._v("Spring实战:采用Spring配置文件管理Bean"),r("OutboundLink")],1),e._v(": howard2005-Spring实战:采用Spring配置文件管理Bean----🔥 热度:20370")])]),e._v(" "),r("h3",{attrs:{id:"php"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#php"}},[e._v("#")]),e._v(" php")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_43707759/article/details/137109674",target:"_blank",rel:"noopener noreferrer"}},[e._v("系统分析师-参考模型"),r("OutboundLink")],1),e._v(": steamone-系统分析师-参考模型----🔥 热度:9984")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/m0_71203750/article/details/137055704",target:"_blank",rel:"noopener noreferrer"}},[e._v("以太网链路聚合——增加带宽,解决生成树收敛慢的问题"),r("OutboundLink")],1),e._v(": 一名努力的码农-以太网链路聚合——增加带宽,解决生成树收敛慢的问题----🔥 热度:8900")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_51562484/article/details/137074140",target:"_blank",rel:"noopener noreferrer"}},[e._v("HCIP —— 链路聚合"),r("OutboundLink")],1),e._v(": 你我的怡宝乐-HCIP —— 链路聚合----🔥 热度:8877")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/zgh419566/article/details/137062682",target:"_blank",rel:"noopener noreferrer"}},[e._v("使用PHP+workerman实现基于UDP的异步SIP服务器,服务器端可主动发送UDP数据给客户端"),r("OutboundLink")],1),e._v(": zgh419566-使用PHP+workerman实现基于UDP的异步SIP服务器,服务器端可主动发送UDP数据给客户端----🔥 热度:8750")])]),e._v(" "),r("h3",{attrs:{id:"python"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#python"}},[e._v("#")]),e._v(" python")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/LOVEmy134611/article/details/137094747",target:"_blank",rel:"noopener noreferrer"}},[e._v("图神经网络实战(6)——使用PyTorch构建图神经网络"),r("OutboundLink")],1),e._v(": 盼小辉丶-图神经网络实战(6)——使用PyTorch构建图神经网络----🔥 热度:33634")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/QQ_1963288475/article/details/136986949",target:"_blank",rel:"noopener noreferrer"}},[e._v("nodejs+vue河北任丘非物质文化遗产数字化传承python-flask-django-php"),r("OutboundLink")],1),e._v(": QQ_1963288475-nodejs+vue河北任丘非物质文化遗产数字化传承python-flask-django-php----🔥 热度:24940")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/QQ511008285/article/details/136993726",target:"_blank",rel:"noopener noreferrer"}},[e._v("基于python+vue河北任丘非物质文化遗产数字化传承flask-django-php-nodejs"),r("OutboundLink")],1),e._v(": QQ511008285-基于python+vue河北任丘非物质文化遗产数字化传承flask-django-php-nodejs----🔥 热度:24938")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/littlefun591/article/details/137108883",target:"_blank",rel:"noopener noreferrer"}},[e._v("【python】flask模板渲染引擎Jinja2中的模板继承,简化前端模块化开发"),r("OutboundLink")],1),e._v(": 景天科技苑-【python】flask模板渲染引擎Jinja2中的模板继承,简化前端模块化开发----🔥 热度:24829")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/m0_62640704/article/details/136880137",target:"_blank",rel:"noopener noreferrer"}},[e._v("【NVIDIA JETSON AGX XAVIER】解决使用Python中的sklearn(scikit-learn)库遇到的问题"),r("OutboundLink")],1),e._v(": 元_汐-【NVIDIA JETSON AGX XAVIER】解决使用Python中的sklearn(scikit-learn)库遇到的问题----🔥 热度:24297")])]),e._v(" "),r("h3",{attrs:{id:"运维"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#运维"}},[e._v("#")]),e._v(" 运维")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/qq_32682301/article/details/137085187",target:"_blank",rel:"noopener noreferrer"}},[e._v("自动化与智能化并行:数字化运维体系助力企业腾飞"),r("OutboundLink")],1),e._v(": 程序边界-自动化与智能化并行:数字化运维体系助力企业腾飞----🔥 热度:72150")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/Why_does_it_work/article/details/137087250",target:"_blank",rel:"noopener noreferrer"}},[e._v("自动化与智能化并行:数字化运维体系助力企业腾飞"),r("OutboundLink")],1),e._v(": 雪碧有白泡泡-自动化与智能化并行:数字化运维体系助力企业腾飞----🔥 热度:25574")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_43275466/article/details/137084298",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何在Nginx中实现负载均衡以分发流量到多个后端服务器?"),r("OutboundLink")],1),e._v(": 我的运维人生-如何在Nginx中实现负载均衡以分发流量到多个后端服务器?----🔥 热度:22792")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/dodamce/article/details/137052026",target:"_blank",rel:"noopener noreferrer"}},[e._v("Linux(CentOS)/Windows-C++ 云备份项目(服务器网络通信模块,业务处理模块设计,断点续传设计)"),r("OutboundLink")],1),e._v(": NUC_Dodamce-Linux(CentOS)/Windows-C++ 云备份项目(服务器网络通信模块,业务处理模块设计,断点续传设计)----🔥 热度:22438")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/u014642921/article/details/137030385",target:"_blank",rel:"noopener noreferrer"}},[e._v("linux之挂载磁盘(脚本自动化)"),r("OutboundLink")],1),e._v(": 胡斌附体-linux之挂载磁盘(脚本自动化)----🔥 热度:18468")])]),e._v(" "),r("h3",{attrs:{id:"移动开发"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#移动开发"}},[e._v("#")]),e._v(" 移动开发")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/sheng_er_sheng/article/details/136876916",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flutter高德地图接入Android/IOS(定位&地图)"),r("OutboundLink")],1),e._v(": sheng_er_sheng-Flutter高德地图接入Android/IOS(定位&地图)----🔥 热度:35947")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/Aileenvov/article/details/137127617",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何使用Windows电脑部署Lychee私有图床网站并实现无公网IP远程管理本地图片"),r("OutboundLink")],1),e._v(": Aileen_0v0-如何使用Windows电脑部署Lychee私有图床网站并实现无公网IP远程管理本地图片----🔥 热度:26683")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/WAFxiaoyu/article/details/137127165",target:"_blank",rel:"noopener noreferrer"}},[e._v("Linux小程序: 手写自己的shell"),r("OutboundLink")],1),e._v(": 小宇HOH-Linux小程序: 手写自己的shell----🔥 热度:23654")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/2401_83740129/article/details/137122331",target:"_blank",rel:"noopener noreferrer"}},[e._v("Android-&-Kotlin:Retrofit-+-Hilt-手写实现,看完99%的人都学会了"),r("OutboundLink")],1),e._v(": 2401_83740129-Android-&-Kotlin:Retrofit-+-Hilt-手写实现,看完99%的人都学会了----🔥 热度:22221")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/weixin_68658847/article/details/137119094",target:"_blank",rel:"noopener noreferrer"}},[e._v("RN在android/ios手机剪切图片的操作"),r("OutboundLink")],1),e._v(": 萧寂173-RN在android/ios手机剪切图片的操作----🔥 热度:22044")])]),e._v(" "),r("h3",{attrs:{id:"c-c"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#c-c"}},[e._v("#")]),e._v(" c/c++")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://blog.csdn.net/Miracle_86/article/details/137086464",target:"_blank",rel:"noopener noreferrer"}},[e._v("C语言内存操控的艺术探索:踏足四大秘境,铸就内存管理之巅峰传奇"),r("OutboundLink")],1),e._v(": Miracle_86.-C语言内存操控的艺术探索:踏足四大秘境,铸就内存管理之巅峰传奇----🔥 热度:25016")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/office_lgirl/article/details/137072073",target:"_blank",rel:"noopener noreferrer"}},[e._v("C++对C的扩充"),r("OutboundLink")],1),e._v(": 阳光向日葵之沈阳-C++对C的扩充----🔥 热度:17648")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/qq_45087791/article/details/136875680",target:"_blank",rel:"noopener noreferrer"}},[e._v("免杀对抗-C2远控篇&C&C++&SC转换格式&UUID标识&MAC物理&IPV4地址&减少熵值"),r("OutboundLink")],1),e._v(": nihao6666hhhhh-免杀对抗-C2远控篇&C&C++&SC转换格式&UUID标识&MAC物理&IPV4地址&减少熵值----🔥 热度:13270")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/qq_33904382/article/details/136890369",target:"_blank",rel:"noopener noreferrer"}},[e._v("C/C++语言学习路线: 嵌入式开发、底层软件、操作系统方向(持续更新)"),r("OutboundLink")],1),e._v(": 断水客-C/C++语言学习路线: 嵌入式开发、底层软件、操作系统方向(持续更新)----🔥 热度:12995")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://blog.csdn.net/Ivy_mzh19970808/article/details/136133719",target:"_blank",rel:"noopener noreferrer"}},[e._v("【C转C++】(还在继续学习补充中)"),r("OutboundLink")],1),e._v(": Ivy_nsss19970808-【C转C++】(还在继续学习补充中)----🔥 热度:12747")])]),e._v(" "),r("h2",{attrs:{id:"掘金"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#掘金"}},[e._v("#")]),e._v(" 掘金")]),e._v(" "),r("h3",{attrs:{id:"前端"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端"}},[e._v("#")]),e._v(" 前端")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348832432080355379",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024 年 5 个令人兴奋的 JavaScript 新功能"),r("OutboundLink")],1),e._v(": 以下提案很有可能进入今年的 ECMAScript 版本: ECMAScript 更新 JS的新版本总是会引起轰动。自 ES6 更新以来,每年都会有新版本,我们预计今年(ES2024)将在 6 月左右发----👍🏻点赞量:100")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349119662134018063",target:"_blank",rel:"noopener noreferrer"}},[e._v("尤雨溪官宣 VitePress 1.0,第一个主版本横空出世!"),r("OutboundLink")],1),e._v(": 尤大在朋友圈爆料,VitePress 1.0 正式发布,这也是 VitePress 诞生以来升级的第一个语义化主版本,一个值得纪念的里程碑。----👍🏻点赞量:107")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349437605858066443",target:"_blank",rel:"noopener noreferrer"}},[e._v("领导问我:为什么一个点赞功能你做了五天?"),r("OutboundLink")],1),e._v(": 前言 可乐是一名前端切图仔,最近他们团队需要做一个文章社区平台。由于人手不够,前后端部分都是由前端同学来实现,后端部分用的技术栈是 nest.js 。 某一个周一,领导希望做一个给文章点赞的功能,在文----👍🏻点赞量:148")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349940323026485289",target:"_blank",rel:"noopener noreferrer"}},[e._v("汗流浃背的一个小时——海马体一面,第一题就不会"),r("OutboundLink")],1),e._v(": 上次拿到海康的offer之后,信心大增,但是目标不止于此,就想再往上冲一冲,于是目标就转向了海马体。海马体作为2023年AIGC现象级应用的公司之一,其AIGC的能力相对成熟----👍🏻点赞量:125")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349107210658299940",target:"_blank",rel:"noopener noreferrer"}},[e._v("小厂挂了十次之后,迎来了海康威视"),r("OutboundLink")],1),e._v(": 前段时间一直忙着面试和背面经,就没怎么写文章。这段时间那是非常的煎熬,一直面试一直挂,有些感觉面试的还不错,八股和编程题都答上来了,时间也面了一个小时,但最终还是挂了,一度陷入了自我怀疑中。----👍🏻点赞量:63")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350140676615798824",target:"_blank",rel:"noopener noreferrer"}},[e._v("8个小而美的前端库"),r("OutboundLink")],1),e._v(": 前端有很多小而美的库,接入成本很低又能满足日常开发需求,同时无论是 npm 方式引入还是直接复制到本地使用都可以。 2024年推荐以下小而美的库。 radash 实用的工具库,相比与 lodash,更----👍🏻点赞量:170")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350571075547938866",target:"_blank",rel:"noopener noreferrer"}},[e._v("💯 前端要学会自己写shell脚本,让你的项目看起来非常牛逼!💯"),r("OutboundLink")],1),e._v(": Husky 是一个流行的工具,它可以让你轻松地在 Git 钩子中使用脚本,从而在提交(commit)代码前运行诸如代码风格检查、单元测试等任务。这有助于保持代码库的质量和一致性。Husky 的工作原理----👍🏻点赞量:84")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349750846899699764",target:"_blank",rel:"noopener noreferrer"}},[e._v("五年前端这题都做不对?"),r("OutboundLink")],1),e._v(": 实现汗颜,作为一个多年的老前端做了一遍题居然不及格! 一时陷入了反思中备受打击,诚请各位大哥来一探究竟!----👍🏻点赞量:57")])]),e._v(" "),r("h3",{attrs:{id:"前端-javascript"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-javascript"}},[e._v("#")]),e._v(" 前端-JavaScript")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348832432080355379",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024 年 5 个令人兴奋的 JavaScript 新功能"),r("OutboundLink")],1),e._v(": 以下提案很有可能进入今年的 ECMAScript 版本: ECMAScript 更新 JS的新版本总是会引起轰动。自 ES6 更新以来,每年都会有新版本,我们预计今年(ES2024)将在 6 月左右发----👍🏻点赞量:100")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349119662134018063",target:"_blank",rel:"noopener noreferrer"}},[e._v("尤雨溪官宣 VitePress 1.0,第一个主版本横空出世!"),r("OutboundLink")],1),e._v(": 尤大在朋友圈爆料,VitePress 1.0 正式发布,这也是 VitePress 诞生以来升级的第一个语义化主版本,一个值得纪念的里程碑。----👍🏻点赞量:107")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349437605858066443",target:"_blank",rel:"noopener noreferrer"}},[e._v("领导问我:为什么一个点赞功能你做了五天?"),r("OutboundLink")],1),e._v(": 前言 可乐是一名前端切图仔,最近他们团队需要做一个文章社区平台。由于人手不够,前后端部分都是由前端同学来实现,后端部分用的技术栈是 nest.js 。 某一个周一,领导希望做一个给文章点赞的功能,在文----👍🏻点赞量:148")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349940323026485289",target:"_blank",rel:"noopener noreferrer"}},[e._v("汗流浃背的一个小时——海马体一面,第一题就不会"),r("OutboundLink")],1),e._v(": 上次拿到海康的offer之后,信心大增,但是目标不止于此,就想再往上冲一冲,于是目标就转向了海马体。海马体作为2023年AIGC现象级应用的公司之一,其AIGC的能力相对成熟----👍🏻点赞量:125")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349107210658299940",target:"_blank",rel:"noopener noreferrer"}},[e._v("小厂挂了十次之后,迎来了海康威视"),r("OutboundLink")],1),e._v(": 前段时间一直忙着面试和背面经,就没怎么写文章。这段时间那是非常的煎熬,一直面试一直挂,有些感觉面试的还不错,八股和编程题都答上来了,时间也面了一个小时,但最终还是挂了,一度陷入了自我怀疑中。----👍🏻点赞量:63")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350140676615798824",target:"_blank",rel:"noopener noreferrer"}},[e._v("8个小而美的前端库"),r("OutboundLink")],1),e._v(": 前端有很多小而美的库,接入成本很低又能满足日常开发需求,同时无论是 npm 方式引入还是直接复制到本地使用都可以。 2024年推荐以下小而美的库。 radash 实用的工具库,相比与 lodash,更----👍🏻点赞量:170")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350571075547938866",target:"_blank",rel:"noopener noreferrer"}},[e._v("💯 前端要学会自己写shell脚本,让你的项目看起来非常牛逼!💯"),r("OutboundLink")],1),e._v(": Husky 是一个流行的工具,它可以让你轻松地在 Git 钩子中使用脚本,从而在提交(commit)代码前运行诸如代码风格检查、单元测试等任务。这有助于保持代码库的质量和一致性。Husky 的工作原理----👍🏻点赞量:84")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349750846899699764",target:"_blank",rel:"noopener noreferrer"}},[e._v("五年前端这题都做不对?"),r("OutboundLink")],1),e._v(": 实现汗颜,作为一个多年的老前端做了一遍题居然不及格! 一时陷入了反思中备受打击,诚请各位大哥来一探究竟!----👍🏻点赞量:57")])]),e._v(" "),r("h3",{attrs:{id:"前端-vue-js"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-vue-js"}},[e._v("#")]),e._v(" 前端-Vue.js")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349119662134018063",target:"_blank",rel:"noopener noreferrer"}},[e._v("尤雨溪官宣 VitePress 1.0,第一个主版本横空出世!"),r("OutboundLink")],1),e._v(": 尤大在朋友圈爆料,VitePress 1.0 正式发布,这也是 VitePress 诞生以来升级的第一个语义化主版本,一个值得纪念的里程碑。----👍🏻点赞量:107")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350861738973626402",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue 生态最火的元框架,Nuxt 3.10 正式发布!"),r("OutboundLink")],1),e._v(": 不久前,Nuxt 团队官宣 Nuxt 3.10 正式发布,整体非常接近 Nuxt 3.9,但此版本涵盖了更多功能和修复。----👍🏻点赞量:17")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349575576045223973",target:"_blank",rel:"noopener noreferrer"}},[e._v("Varlet Vue3 组件库 3.2 发布 | 拥抱 Nuxt、桌面端体验增强、支持原子化 CSS 框架"),r("OutboundLink")],1),e._v(": Varlet Vue3 组件库 3.2 发布,拥抱 Nuxt、桌面端体验增强、支持原子化框架。Nuxt3、Material Design 3 主题配色、桌面端支持。----👍🏻点赞量:44")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349936384512131107",target:"_blank",rel:"noopener noreferrer"}},[e._v("面试官:只知道v-model是:modelValue和@onUpdate语法糖,那你可以走了"),r("OutboundLink")],1),e._v(": 你知道v-model指令是如何变成组件上的modelValue属性和@update:modelValue事件呢?这一过程是在编译时还是运行时进行的呢?----👍🏻点赞量:26")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350874162011750400",target:"_blank",rel:"noopener noreferrer"}},[e._v("后台管理模板的最佳实现方式"),r("OutboundLink")],1),e._v(": 换一套UI框架就换一套代码模板?不存在,我直接一套适配所有!无UI框架依赖的后台管理模板:兼容性、拓展性极高,保证了常用功能的完整性之余,模板中每个部分都是可以独立抽离和替换的,并无上手成本----👍🏻点赞量:13")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349427412357316608",target:"_blank",rel:"noopener noreferrer"}},[e._v("vue3+elementPlus 二次封装表单"),r("OutboundLink")],1),e._v(": 功能 Input输入框 autocomplete自动补齐输入框 radio 单选框 checkbox 复选框 date 日期选择框 select 下拉框 如需添加更多功能参考elementPlus或者----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350140676615323688",target:"_blank",rel:"noopener noreferrer"}},[e._v("Radix UI 3.0 发布,新的布局引擎"),r("OutboundLink")],1),e._v(": Radix UI 3.0 刚刚发布,带来了新的布局引擎、新的组件和自定义调色板生成器,这个版本的发布是向着成为构建现代应用程序的最佳组件库迈出了一大步。我们将在本文中介绍主要亮点。 自定义调色板 Ra----👍🏻点赞量:14")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349119682002599936",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue3中Hook函数,解锁新技能!"),r("OutboundLink")],1),e._v(": 小熊猫带你深入理解Vue3的hook函数!Vue3带来了Composition API,在这其中,Hooks是其重要组成部分,本文将深入探讨Vue3中Hooks,帮助你在Vue3开发中更加得心应手!----👍🏻点赞量:13")])]),e._v(" "),r("h3",{attrs:{id:"前端-面试"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-面试"}},[e._v("#")]),e._v(" 前端-面试")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348832432080355379",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024 年 5 个令人兴奋的 JavaScript 新功能"),r("OutboundLink")],1),e._v(": 以下提案很有可能进入今年的 ECMAScript 版本: ECMAScript 更新 JS的新版本总是会引起轰动。自 ES6 更新以来,每年都会有新版本,我们预计今年(ES2024)将在 6 月左右发----👍🏻点赞量:100")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349940323026485289",target:"_blank",rel:"noopener noreferrer"}},[e._v("汗流浃背的一个小时——海马体一面,第一题就不会"),r("OutboundLink")],1),e._v(": 上次拿到海康的offer之后,信心大增,但是目标不止于此,就想再往上冲一冲,于是目标就转向了海马体。海马体作为2023年AIGC现象级应用的公司之一,其AIGC的能力相对成熟----👍🏻点赞量:125")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349107210658299940",target:"_blank",rel:"noopener noreferrer"}},[e._v("小厂挂了十次之后,迎来了海康威视"),r("OutboundLink")],1),e._v(": 前段时间一直忙着面试和背面经,就没怎么写文章。这段时间那是非常的煎熬,一直面试一直挂,有些感觉面试的还不错,八股和编程题都答上来了,时间也面了一个小时,但最终还是挂了,一度陷入了自我怀疑中。----👍🏻点赞量:63")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7336831338119921679",target:"_blank",rel:"noopener noreferrer"}},[e._v("探寻HTTP革新 — 为什么HTTP/3是未来的前沿?"),r("OutboundLink")],1),e._v(": 最近,公司在面试新的小伙伴时,其中有一道面试题就是关于“HTTP”的,这是一个表面上看似简单但实际上颇具挑战性的问题:“你对 HTTP 协议了解多少?能不能把你知道的都详细说一下?” 问题虽简单,但其----👍🏻点赞量:20")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350094390436134951",target:"_blank",rel:"noopener noreferrer"}},[e._v("熟悉 React 原理,却答不对这道简单的 setState 面试题"),r("OutboundLink")],1),e._v(": 大家好,我是双越老师~ 最近春季招聘季节,好多同学找我 1v1 模拟面试。对于 React 技术栈的同学,我会问一个非常基础的 setState 应用题,但却很少有同学能回答正确。----👍🏻点赞量:19")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350555794145837093",target:"_blank",rel:"noopener noreferrer"}},[e._v("浅谈【XSS & CSRF】攻击"),r("OutboundLink")],1),e._v(": XSS和CSRF也是面试中常常被问到的东西,本期就带大家认识下这两个网络攻击 XSS XSS(Cross Site Scripting)跨站脚本攻击 跨站脚本攻击就是用脚本攻击,看下面这个🌰 这里先简----👍🏻点赞量:20")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350535815132659749",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024前端高频面试题之-- 前端工程化篇"),r("OutboundLink")],1),e._v(": 【前端面试复习系列文章】 2024前端高频面试题-- html篇 2024前端高频面试题-- CSS篇 2024前端高频面试题-- JS篇 2024前端高频面试题-- VUE篇 2024前端高频面试题----👍🏻点赞量:10")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349360417091928090",target:"_blank",rel:"noopener noreferrer"}},[e._v("小厂一面: 请准备好水(二)"),r("OutboundLink")],1),e._v(": 前言 现在到了春招的黄金时期,本人和小伙伴们也都开始了面试,今天在这篇文章中记录我的第一个面试经历,不知道小伙伴们是否跟我一样,在第一次面试时都很紧张呢? 查看对象里的所有属性 使用Object.ke----👍🏻点赞量:10")])]),e._v(" "),r("h3",{attrs:{id:"前端-react-js"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-react-js"}},[e._v("#")]),e._v(" 前端-React.js")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349437605858066443",target:"_blank",rel:"noopener noreferrer"}},[e._v("领导问我:为什么一个点赞功能你做了五天?"),r("OutboundLink")],1),e._v(": 前言 可乐是一名前端切图仔,最近他们团队需要做一个文章社区平台。由于人手不够,前后端部分都是由前端同学来实现,后端部分用的技术栈是 nest.js 。 某一个周一,领导希望做一个给文章点赞的功能,在文----👍🏻点赞量:148")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350140676615798824",target:"_blank",rel:"noopener noreferrer"}},[e._v("8个小而美的前端库"),r("OutboundLink")],1),e._v(": 前端有很多小而美的库,接入成本很低又能满足日常开发需求,同时无论是 npm 方式引入还是直接复制到本地使用都可以。 2024年推荐以下小而美的库。 radash 实用的工具库,相比与 lodash,更----👍🏻点赞量:170")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349189143798399003",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何使用 Router 为你页面带来更快的加载速度"),r("OutboundLink")],1),e._v(": React Router 新版 release 了一系列 data apis 为你的应用站点带来更快的加载速度,文章会从概念、用法、原理三方面来带你领略 Data Apis 的魅力。----👍🏻点赞量:22")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349513798698713088",target:"_blank",rel:"noopener noreferrer"}},[e._v("译文:⚛️ React中最有用的10个自定义Hook"),r("OutboundLink")],1),e._v(": React 内置的 hooks 彻底改变了我们开发组件的方式,但是 hooks 的真正威力在于创建自定义 hooks,将可复用的逻辑封装起来,增强组件的组合能力。自定义 hooks 允许您抽象出复杂的----👍🏻点赞量:16")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350094390436134951",target:"_blank",rel:"noopener noreferrer"}},[e._v("熟悉 React 原理,却答不对这道简单的 setState 面试题"),r("OutboundLink")],1),e._v(": 大家好,我是双越老师~ 最近春季招聘季节,好多同学找我 1v1 模拟面试。对于 React 技术栈的同学,我会问一个非常基础的 setState 应用题,但却很少有同学能回答正确。----👍🏻点赞量:19")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349752708385570870",target:"_blank",rel:"noopener noreferrer"}},[e._v("web3实战课01:链接你的钱包"),r("OutboundLink")],1),e._v(": 链接用户的钱包,是开发DAPP的第一步,跟着我,用最简单清晰的思路理解钱包链接协议,并完成一次实战链接吧!----👍🏻点赞量:28")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350200488455520267",target:"_blank",rel:"noopener noreferrer"}},[e._v("我为独立开发者开发落地页模板(二)"),r("OutboundLink")],1),e._v(": 系列文章第二篇,本文内容包含了:落地页开发理念、rough notation与framer-motion的应用、暗黑模式的支持与国际化最佳实践。----👍🏻点赞量:11")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349971654590857216",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024前端高频面试题之-- react篇"),r("OutboundLink")],1),e._v(": 【前端面试复习系列文章】 2024前端高频面试题-- html篇 2024前端高频面试题-- CSS篇 2024前端高频面试题-- JS篇 2024前端高频面试题-- VUE篇 【导读】本文总结了前端----👍🏻点赞量:8")])]),e._v(" "),r("h3",{attrs:{id:"前端-node-js"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-node-js"}},[e._v("#")]),e._v(" 前端-Node.js")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350581011262373928",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024 年排名前 5 的 Node.js 后端框架"),r("OutboundLink")],1),e._v(": 自 2009 年以来,Node.js 一直是人们谈论的话题,大多数后端开发人员都倾向于使用 Node.js。在过去的几年里,它的受欢迎程度有所增加。它被认为是美国最受欢迎的网络开发工具,包括 Netf----👍🏻点赞量:27")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350094390436134951",target:"_blank",rel:"noopener noreferrer"}},[e._v("熟悉 React 原理,却答不对这道简单的 setState 面试题"),r("OutboundLink")],1),e._v(": 大家好,我是双越老师~ 最近春季招聘季节,好多同学找我 1v1 模拟面试。对于 React 技术栈的同学,我会问一个非常基础的 setState 应用题,但却很少有同学能回答正确。----👍🏻点赞量:19")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349327791554641932",target:"_blank",rel:"noopener noreferrer"}},[e._v("MQTT 服务搭建"),r("OutboundLink")],1),e._v(": MQTT 服务搭建(Node.js) 最近在写自己的毕设,采用的技术栈是 node + MySQL 和 Vue3 + Element Plus,还用了一个即时通讯协议 MQTT。 对这个 MQTT 的----👍🏻点赞量:9")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350168797637558272",target:"_blank",rel:"noopener noreferrer"}},[e._v("前端如何用密文跟后端互通?原来那么简单!"),r("OutboundLink")],1),e._v(": 后端:密码得走密文哇! 我:base64?md5? 后端:这次不行哇,新来的测试不好糊弄呢!必须要国密sm2加密捏 我: 好吧,看我的。----👍🏻点赞量:12")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350099019836850217",target:"_blank",rel:"noopener noreferrer"}},[e._v("跟我用 node.js + ffmpeg 写一个视频服务器"),r("OutboundLink")],1),e._v(": Node.js 使用事件驱动和非阻塞 I/O 模型,这使得它能够有效地处理大量 IO 请求并发连接,这对于流媒体服务器非常重要。而 ffmpeg 对于视频处理的功能非常强大。----👍🏻点赞量:19")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349880999259766821",target:"_blank",rel:"noopener noreferrer"}},[e._v("技术周刊 117:Node 纪录片、AI 音视频助理、Suno v3、Node 作者专访播客、React 编译器"),r("OutboundLink")],1),e._v(": Node 纪录片、AI 音视频助理、Suno v3、Node 作者专访播客、React 编译器、VitePress 1.0----👍🏻点赞量:4")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350549827674849292",target:"_blank",rel:"noopener noreferrer"}},[e._v("node + express,手把手教你写大文件分片上传(1)"),r("OutboundLink")],1),e._v(": 在网上看到许多分片上传的案例,但是很少见前后端通用的代码,于是在吸收了一些思路之后,写下该文章,手把手教你如何写分片上传。----👍🏻点赞量:3")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350501693089792011",target:"_blank",rel:"noopener noreferrer"}},[e._v("【悄咪咪学Node.js】6. require/import 模块化"),r("OutboundLink")],1),e._v(": 模块化编程在复杂系统中十分重要,其优点在于:有利于完成设计、提高开发效率、有利于问题排查、易维护、可复用。----👍🏻点赞量:0")])]),e._v(" "),r("h3",{attrs:{id:"前端-css"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-css"}},[e._v("#")]),e._v(" 前端-CSS")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350571075548397618",target:"_blank",rel:"noopener noreferrer"}},[e._v("写html页面没意思,来挑战chrome插件开发"),r("OutboundLink")],1),e._v(": 作为前端开发者,写烦了页面布局,给自己找点乐子,开发一个自己的谷歌浏览器插件。谷歌浏览器插件通常由HTML、CSS和JavaScript组成,非常利于前端开发。插件,可以为用户提供定制化的体验。----👍🏻点赞量:59")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349561234932367401",target:"_blank",rel:"noopener noreferrer"}},[e._v("Uiverse.io:打造 超炫酷 界面 的秘密武器!!!"),r("OutboundLink")],1),e._v(": 偶尔闲逛国外网站,会不经意看到一些炫酷的网页元素,不禁呆呆的观察一会,相信你也遇到过吧,特别是新颖炫酷的界面元素,那么我们如何实现这些炫酷的效果的呢? 如果你特别精通 css 的话, 可能这些实现起来----👍🏻点赞量:53")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349427412357611520",target:"_blank",rel:"noopener noreferrer"}},[e._v("仿百亿补贴,H5 中图片先模糊后清晰的效果如何实现"),r("OutboundLink")],1),e._v(": 百亿补贴图片加载非常快,为什么呢?因为百亿补贴先加载了一张模糊小图、再加载了一张清晰大图,用户很难感知到模糊到清晰的过程,误以为图片加载很快。接下来我会先给出证据、再分析原理、并提供关键代码。----👍🏻点赞量:23")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350556449615085608",target:"_blank",rel:"noopener noreferrer"}},[e._v("堪比 ES6 的史诗级升级,2023 年度 CSS 牛逼闪闪的新特性!"),r("OutboundLink")],1),e._v(": 谷歌官网贴心地列举了 CSS 2023 的诸多年度重量级更新,我会科普一下 3 个个人觉得牛逼闪闪的 CSS 新功能。----👍🏻点赞量:24")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349360925185802251",target:"_blank",rel:"noopener noreferrer"}},[e._v("15 分钟带你感受 CSS :has() 选择器的强大"),r("OutboundLink")],1),e._v(": 最近看到了许多关于 :has() 选择器的知识点,在此总结下来。 MDN 对 :has() 选择器 的解释是这样的: 下面一起来感受下 :has() 选择器的强大之处吧。 :has() 选择器选择父元----👍🏻点赞量:20")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350529104082583564",target:"_blank",rel:"noopener noreferrer"}},[e._v("CSS Tips:水波纹"),r("OutboundLink")],1),e._v(": 通常情况之下,开发者都习惯了规则的矩形布局的效果,对于 Web 设计师提供的不规则布局,难免会带有一种恐惧。这篇文章将告诉你如何使用 CSS 和 SVG 来实现类似水波纹这样不规则的 UI 效果!----👍🏻点赞量:16")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349752708386553910",target:"_blank",rel:"noopener noreferrer"}},[e._v("🥳CSS实现经典打字小游戏《生死时速》"),r("OutboundLink")],1),e._v(": 前言 CSS 中有这样一个模块:Motion Path 运动模块,它可以使元素按照自定义的路径进行移动。本文将利用它实现我小时候电脑课经常玩的一个打字游戏:金山打字的《生死时速》----👍🏻点赞量:12")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349863595729616931",target:"_blank",rel:"noopener noreferrer"}},[e._v("麦当劳扭蛋抽奖小动画"),r("OutboundLink")],1),e._v(": 前言 最近新增抽奖盲盒,就是扭蛋机的形式,由于前端使用GIF图会很大,而且图片会很大,所以扭蛋机中的扭蛋进行分离,前端单独使用css进行。 麦当劳扭蛋机效果 扭蛋机窗口大小 第一步先固定扭蛋机的窗口,----👍🏻点赞量:10")])]),e._v(" "),r("h3",{attrs:{id:"前端-后端"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-后端"}},[e._v("#")]),e._v(" 前端-后端")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350571075547938866",target:"_blank",rel:"noopener noreferrer"}},[e._v("💯 前端要学会自己写shell脚本,让你的项目看起来非常牛逼!💯"),r("OutboundLink")],1),e._v(": Husky 是一个流行的工具,它可以让你轻松地在 Git 钩子中使用脚本,从而在提交(commit)代码前运行诸如代码风格检查、单元测试等任务。这有助于保持代码库的质量和一致性。Husky 的工作原理----👍🏻点赞量:84")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350581011262373928",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024 年排名前 5 的 Node.js 后端框架"),r("OutboundLink")],1),e._v(": 自 2009 年以来,Node.js 一直是人们谈论的话题,大多数后端开发人员都倾向于使用 Node.js。在过去的几年里,它的受欢迎程度有所增加。它被认为是美国最受欢迎的网络开发工具,包括 Netf----👍🏻点赞量:27")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349410791579959331",target:"_blank",rel:"noopener noreferrer"}},[e._v("轻量级 C++ UI 库:快速、可移植、自包含 | 开源日报 No.168"),r("OutboundLink")],1),e._v(": imgui 是 C++ 的无臃肿图形用户界面,具有最小的依赖关系。 该项目的主要功能、关键特性、核心优势包括: * 为 C++ 提供了一个轻量级的图形用户界面库 * 输出优化的顶点缓冲区,可----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349776224829521961",target:"_blank",rel:"noopener noreferrer"}},[e._v("初探富文本之MarkDown/Word/PDF导出能力设计"),r("OutboundLink")],1),e._v(": 当我们实现在线文档的系统时,通常需要考虑到文档的导出能力,特别是对于私有化部署的复杂"),r("code",[e._v("ToB")]),e._v("产品来说,文档的私有化版本交付能力就显得非常重要。----👍🏻点赞量:23")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349835041995128866",target:"_blank",rel:"noopener noreferrer"}},[e._v("一文吃透 Cookie"),r("OutboundLink")],1),e._v(": 前言 在大多数情况下,设置 Set-Cookie时,大家可能只会设置 key 和 value 属性。当然大部分场景下也只需要做到这样。但是其实 Cookie 在此之外也有很多重要的属性。----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350181789530357811",target:"_blank",rel:"noopener noreferrer"}},[e._v("AI辅助提效"),r("OutboundLink")],1),e._v(": 本文会推荐分享我常用的一些ai工具的使用方式与使用体验,我认为它们能够大幅提升工作效率与质量。欢迎交流👏🏻----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349382887571701760",target:"_blank",rel:"noopener noreferrer"}},[e._v("Restful API 设计规范"),r("OutboundLink")],1),e._v(": RESTful API(Representational State Transfer API)是一种设计风格的网络接口,用于网络应用之间的交互。REST 是一组架构原则和约束条件,而不是一种标准或协----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349377083552383011",target:"_blank",rel:"noopener noreferrer"}},[e._v("第12天:如何使用SVG绘制三次贝塞尔曲线"),r("OutboundLink")],1),e._v(": 当我们想要弯曲一条线时,二次贝塞尔曲线是很好的,但通常它不够灵活。使用三次贝塞尔曲线,我们不仅有一个控制点,而是两个。第一个控制点设置曲线的初始方向,第二个控制点定义曲线从哪个方向到达端点。 同样,让----👍🏻点赞量:1")])]),e._v(" "),r("h3",{attrs:{id:"前端-typescript"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-typescript"}},[e._v("#")]),e._v(" 前端-TypeScript")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349382887572258816",target:"_blank",rel:"noopener noreferrer"}},[e._v("JS 即将推出的 Set 新特性:交并差集"),r("OutboundLink")],1),e._v(": TC39 委员会和浏览器致力于可以在 JS Set 提案中看到诸如 union、intersection 和 difference 之类的全新函数。----👍🏻点赞量:23")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349107210658496548",target:"_blank",rel:"noopener noreferrer"}},[e._v("用 interface 会报错改成 type 就好了?从一个报错深入 typescript 中 interface 和 type 的区别"),r("OutboundLink")],1),e._v(": typeScript 的类型系统并不是完全健全的。在类型系统的术语中,“健全”(sound)意味着类型系统能够保证所有的程序都不会在运行时出现类型错误。----👍🏻点赞量:5")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350142836622917695",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何计算地球任意两点之间距离"),r("OutboundLink")],1),e._v(": 本文通过百度地图api实现一个地球地图模型,通过运用Haversine公式和Vincenty公式,计算出这两个坐标点之间的实际距离----👍🏻点赞量:3")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350209063520927782",target:"_blank",rel:"noopener noreferrer"}},[e._v("学会satisfies操作符,让你的Typescript功力倍增!"),r("OutboundLink")],1),e._v(": 今日鸡汤: 人生是海, 总有波涛,需要一颗勇敢的心去乘风破浪!大家好,我是心灵。 本文是在Typescript中旅行的第 5 篇。将介绍satisfies操作符。----👍🏻点赞量:12")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349588906910761012",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue3 + TS 中使用 Provide/Inject 需要考虑的三大问题"),r("OutboundLink")],1),e._v(": Provide/Inject的作用 在组件通信的场景中,必然会遇到跨层级组件间传值的问题,尤其是爷——孙组件,甚至是更深层级的组件。比如下图中,App.vue 文件将属性 name 一层层地往下传给组----👍🏻点赞量:7")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349426928947331084",target:"_blank",rel:"noopener noreferrer"}},[e._v("使用 ts 还需要 zod 吗?使用 zod 进行运行时类型校验的几个场景"),r("OutboundLink")],1),e._v(': zod 是什么?官网上的解释说:Zod 是一个以 TypeScript 为首的模式声明和验证库。我使用术语 "schema" 来广义地指任何数据类型,从简单的 '),r("code",[e._v("字符串")]),e._v(" 到复杂的嵌套对象。----👍🏻点赞量:8")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349791638111600650",target:"_blank",rel:"noopener noreferrer"}},[e._v("🈲拒绝类型体操,打通TypeScript类型复用的任督二脉"),r("OutboundLink")],1),e._v(": 快速了解如何去封装接口类型,页面表单如何去复用已定义的接口类型,避免多次重复定义同一字段类型。其中涉及到ts中的Pick----👍🏻点赞量:5")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349569626341081140",target:"_blank",rel:"noopener noreferrer"}},[e._v("还不会搭建 Node 服务?一文带你了解如何用 express + ts 搞定后端"),r("OutboundLink")],1),e._v(": 前端开发全栈化趋势 卷的前端小伙伴们日益焦虑,不会搭建后端服务怎么办;不了解 node 应用怎么办;不会组织业务接口怎么办;不用怕!今天我们一起来梳理 express 搭建后端全流程----👍🏻点赞量:4")])]),e._v(" "),r("h3",{attrs:{id:"前端-前端框架"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-前端框架"}},[e._v("#")]),e._v(" 前端-前端框架")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348842402826436649",target:"_blank",rel:"noopener noreferrer"}},[e._v("Vue3 如何封装一个超级好用的Hook👾"),r("OutboundLink")],1),e._v(": 本文将通过介绍什么是Hook、如何在Vue使用Hook,以及在实践场景中如何封装自己的 Vue Hook,带你走进Hook的世界,写出更优雅的代码。 什么是Hook? Vue3官方文档是这样定义组合式----👍🏻点赞量:17")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349124917378023436",target:"_blank",rel:"noopener noreferrer"}},[e._v("Web 画图技术之画布滚动方案"),r("OutboundLink")],1),e._v(": 介绍 Web 画图技术之画布的滚动方案,对 Plait 框架的滚动方案实现进行介绍: 1.支持缩放 2.支持隐藏显示滚动条 3.支持视口的控制----👍🏻点赞量:5")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349551248516333605",target:"_blank",rel:"noopener noreferrer"}},[e._v("解析 webpack , vite 处理 commonjs 和 esm 的原理"),r("OutboundLink")],1),e._v(": webpack 和 vite 的流程大致一样,都需要分析抽象语法树获取模块的导入导出, 对每个模块进行编译转换,但是他们两个在开发模式下对于模块的处理是正好相反的----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349107210658988068",target:"_blank",rel:"noopener noreferrer"}},[e._v("为什么做开源画图框架 - Plait"),r("OutboundLink")],1),e._v(": 虽然社区中有不少优秀流程图的开源项目,但是 Plait 同样是特别的存在,而且目前社区还没有做一体化的画图框架,也没有好的开源思维导图项目,这都是我们研发 Plait 框架的理由。----👍🏻点赞量:4")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349065708050759714",target:"_blank",rel:"noopener noreferrer"}},[e._v("自己动手写 React源码 ——【7】实现 ReactDOM"),r("OutboundLink")],1),e._v(": 深入理解 React 源码,带你从零实现 React v18 的核心功能,构建自己的 React 库。----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350924101941215258",target:"_blank",rel:"noopener noreferrer"}},[e._v("啥?控制反转?啥是控制反转?"),r("OutboundLink")],1),e._v(": 控制反转(Inversion of Control,IoC)是一种软件设计原则,它将应用程序的控制权从应用程序本身转移到了外部容器或框架。----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350473432197627942",target:"_blank",rel:"noopener noreferrer"}},[e._v("前端项目中<代理> or <环境变量>是啥?"),r("OutboundLink")],1),e._v(": 最近做项目发现,有些女朋友对于前端项目中的代理和环境变量傻傻分不清,不知道它们长什么样子,有什么作用,这篇文章不探讨太深层的东西,只说实际应用,如有错误,希望指出!----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7351321295068872713",target:"_blank",rel:"noopener noreferrer"}},[e._v("React并发机制揭秘"),r("OutboundLink")],1),e._v(": React新版本的并发机制提供了一系列新特性,包括自动批处理、异步渲染、新的 Hooks 和 Suspense 配置等。这些特性旨在帮助开发者更好地控制和优化应用程序的性能和用户体验。通过这些新特性我----👍🏻点赞量:0")])]),e._v(" "),r("h3",{attrs:{id:"前端-github"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-github"}},[e._v("#")]),e._v(" 前端-GitHub")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349465019325661203",target:"_blank",rel:"noopener noreferrer"}},[e._v("纯前端实现 JPG 图片压缩 | canvas"),r("OutboundLink")],1),e._v(": 在迭代图床应用时,需要用到图片压缩,在之前分享了使用UPNG.js 处理 PNG 图片,这里记录分享一下如何处理JPG图片,并附上完整 Demo。----👍🏻点赞量:9")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350557995896029211",target:"_blank",rel:"noopener noreferrer"}},[e._v("分享 Github 上 7 个 Rust 编写的高星级工具"),r("OutboundLink")],1),e._v(": 这是学习 Rust 时不可错过的资源,读代码是学习编程语言的最好方式之一。本文分享 7 个用 Rust 编写的开源软件,其中有些工具不提供统一的安装包,需要从源代码编译。----👍🏻点赞量:10")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349650519810228234",target:"_blank",rel:"noopener noreferrer"}},[e._v(" umi + Nest.js 实现高效权限管理系统"),r("OutboundLink")],1),e._v(": 利用 umimax 和 Nest.js 构建一个高效的权限管理系统。通过详细的代码示例和解释,读者可以深入了解如何设计和实现一个完整的权限管理系统,以及如何利用现代技术栈提升开发效率和系统性能。----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349094068843872265",target:"_blank",rel:"noopener noreferrer"}},[e._v("双非大四这一年 总结"),r("OutboundLink")],1),e._v(": 在这一年,我到底做了什么呢? 首先先聊自己工作 的情况吧。 从23年暑假就开始实习,满打满算 实习了加起来差不多6个多月吧,从北京到杭州。----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350549827675029516",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何使用Tocbot创建博客目录?"),r("OutboundLink")],1),e._v(": 目录可以帮助访问者快速了解文章的摘要,并导航至他们感兴趣的部分。 在本文中,我将向你展示如何结合Contentlayer和Next.js使用Tocbot创建目录。----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350880189836918820",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何实现快速访问github"),r("OutboundLink")],1),e._v(": github是每位程序开发人员的聚集地,当在国内直接进行访问的时候,会出现网络很慢,甚至无法访问的情况。今天教大家如何流畅的访问github!----👍🏻点赞量:0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349047049869131791",target:"_blank",rel:"noopener noreferrer"}},[e._v("git rebase+rever实现git代码回滚"),r("OutboundLink")],1),e._v(": 前言 今天准备上线时,突然产品有大变动需要把这个版本的内容都废弃掉。因此我需要将dev分支的代码进行回滚,但我并没有dev分支的权限找leader操作又觉得太麻烦了。那么有没有办法从dev切出来一个f----👍🏻点赞量:0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350835151871705127",target:"_blank",rel:"noopener noreferrer"}},[e._v("taro-solid小程序插件版本迭代第二期"),r("OutboundLink")],1),e._v(": 前情提要 在上一期taro-solid小程序插件版本迭代中,我们解决了h函数带来的问题。这一期主要解决button input等标签渲染不出来的bug----👍🏻点赞量:0")])]),e._v(" "),r("h3",{attrs:{id:"前端-webpack"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-webpack"}},[e._v("#")]),e._v(" 前端-Webpack")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349087888049291299",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何解决项目依赖重复打包问题"),r("OutboundLink")],1),e._v(": 由于最近面试经常被问到这个问题(简历上写了),感觉答的时候不是很系统清晰,于是便有了这篇文章。 为啥对这个问题这么上心? 在上家公司最后一段时间是做前端工程基建相关的,不说是最有成长的一段时间,但绝对----👍🏻点赞量:35")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350535815132659749",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024前端高频面试题之-- 前端工程化篇"),r("OutboundLink")],1),e._v(": 【前端面试复习系列文章】 2024前端高频面试题-- html篇 2024前端高频面试题-- CSS篇 2024前端高频面试题-- JS篇 2024前端高频面试题-- VUE篇 2024前端高频面试题----👍🏻点赞量:10")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349101755090518043",target:"_blank",rel:"noopener noreferrer"}},[e._v("从0到1 将静态网页项目进行工程化(第二章)"),r("OutboundLink")],1),e._v(": 前言: 上一章节,完成了对静态网页进行了代码首页以及登录页的移植以及通过webpack进行项目工程化改造。本章重点是对打包产物进行优化。----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349551248516333605",target:"_blank",rel:"noopener noreferrer"}},[e._v("解析 webpack , vite 处理 commonjs 和 esm 的原理"),r("OutboundLink")],1),e._v(": webpack 和 vite 的流程大致一样,都需要分析抽象语法树获取模块的导入导出, 对每个模块进行编译转换,但是他们两个在开发模式下对于模块的处理是正好相反的----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350233011671564299",target:"_blank",rel:"noopener noreferrer"}},[e._v("我是如何用GPT优化vue组件库的(下)"),r("OutboundLink")],1),e._v(": vue组件库npm包安装方式和script引入方式各有啥优缺点 这个问题可以直接问通义千问,答案挺靠谱的。这里总结通义千问的答案:npm 包安装方式更优,结合webpack解决模块依赖、更好的性能优化----👍🏻点赞量:0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350231743591792640",target:"_blank",rel:"noopener noreferrer"}},[e._v("👊超给力的webpack实战三之vue单页面和多页面配置"),r("OutboundLink")],1),e._v(": 前言 这是一个系列专栏,将会更新一系列 webpack 的实战内容,主要围绕着旧前端项目现代化,以及现代化前端项目的再优化。下面开始第三篇:vue单页面和多页面配置----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349087888049242147",target:"_blank",rel:"noopener noreferrer"}},[e._v("webpack从入门到进阶(三)---webpack优化"),r("OutboundLink")],1),e._v(": 本章在上一章节的基础上对配置文件进行了进一步的优化;通过本章的学习,可以了解到js代码分类,多入口配置,css优化等----👍🏻点赞量:0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349863595730010147",target:"_blank",rel:"noopener noreferrer"}},[e._v("一文学会webpack-loader | Markdown转React组件"),r("OutboundLink")],1),e._v(": 在一个组件开发团队或其他团队中,通常使用markdown写文档,现在有这么一个需求,需要在项目中将markdown转为React组件,可以直接当做React组件直接import进来并使用,这个组件可以----👍🏻点赞量:1")])]),e._v(" "),r("h3",{attrs:{id:"前端-微信小程序"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-微信小程序"}},[e._v("#")]),e._v(" 前端-微信小程序")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350140676615716904",target:"_blank",rel:"noopener noreferrer"}},[e._v("想在小程序中实现一个计算属性来监控表单的必填属性,失败了"),r("OutboundLink")],1),e._v(": 背景 小程序中的表单提交,需要校验表单填写完成按钮才是可点击状态,一般做法是每个表单变化的时候都去看是不是所有都填完成,也就是需要在每个可输入的地方做处理,希望能像vue的计算属性一样,在计算属性里面----👍🏻点赞量:0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350227491993354240",target:"_blank",rel:"noopener noreferrer"}},[e._v("微信扫二维码,跳转到小程序"),r("OutboundLink")],1),e._v(": 微信扫二维码,通过配置小程序规则,指定URL链接,跳转到小程序,并获取页面参数...........----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350482843532886054",target:"_blank",rel:"noopener noreferrer"}},[e._v("微信小程序里关于checkbox的坑"),r("OutboundLink")],1),e._v(": 需求背景 小程序项目内,需要添加一个checkbox,用来判断用户是否同意某种协议。 遇到的坑 我只打算使用一个checkbox,而非checkbox-group,最初给checkbox添加bindc----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7351430820713791514",target:"_blank",rel:"noopener noreferrer"}},[e._v("【通识篇】小程序上手开发实践总结"),r("OutboundLink")],1),e._v(": Why 为什么要上手小程序开发 最简单直接的原因:市场需要!其他原因如下: Before 前置技能 🚀 强烈推荐先掌握前端基础(HTML, CSS, JS),尤其是 Vue 或 React 框架,能提----👍🏻点赞量:0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350835151871705127",target:"_blank",rel:"noopener noreferrer"}},[e._v("taro-solid小程序插件版本迭代第二期"),r("OutboundLink")],1),e._v(": 前情提要 在上一期taro-solid小程序插件版本迭代中,我们解决了h函数带来的问题。这一期主要解决button input等标签渲染不出来的bug----👍🏻点赞量:0")])]),e._v(" "),r("h3",{attrs:{id:"前端-nestjs"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#前端-nestjs"}},[e._v("#")]),e._v(" 前端-NestJS")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349437605858066443",target:"_blank",rel:"noopener noreferrer"}},[e._v("领导问我:为什么一个点赞功能你做了五天?"),r("OutboundLink")],1),e._v(": 前言 可乐是一名前端切图仔,最近他们团队需要做一个文章社区平台。由于人手不够,前后端部分都是由前端同学来实现,后端部分用的技术栈是 nest.js 。 某一个周一,领导希望做一个给文章点赞的功能,在文----👍🏻点赞量:148")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7351612144527835177",target:"_blank",rel:"noopener noreferrer"}},[e._v("NestJS中如何使用Swagger生成在线接口文档"),r("OutboundLink")],1),e._v(": 在前后端分离开发中,为了确保前端和后端的开发人员能够有效地协作,后端需要为前端提供接口文档。接口文档应包含请求类型、传参格式、响应格式等详细信息。在 NestJS 中,Swagger 可以将接口文档集----👍🏻点赞量:4")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7351439648592789567",target:"_blank",rel:"noopener noreferrer"}},[e._v("小白从0开始——NestJS官网文档精读:管道"),r("OutboundLink")],1),e._v(": 基本概念 管道(Pipes)是处理输入数据并在它实际到达路由处理程序之前执行某些操作的类。管道可以做的操作包括但不限于: 数据转换(Transformation) :更改输入数据的格式或类型,例如将字----👍🏻点赞量:0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7351631768477433895",target:"_blank",rel:"noopener noreferrer"}},[e._v("[四期 - 1] 探索系列 - Nest 中如何自定义协议?(P1-开胃菜)"),r("OutboundLink")],1),e._v(": 本文介绍了Nestjs微服务中常见的问题,包括自定义序列化和自定义协议,以及补充了Nestjs官方文档中对于非标准场景的介绍。同时简要介绍了一个用于构建自定义transporter的消息中间件。----👍🏻点赞量:0")])]),e._v(" "),r("h3",{attrs:{id:"后端"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#后端"}},[e._v("#")]),e._v(" 后端")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350354672862330932",target:"_blank",rel:"noopener noreferrer"}},[e._v("飞书很好,但赢不了,只能裁员"),r("OutboundLink")],1),e._v(": 心碎飞书 3 月 26 日,字节跳动旗下产品飞书的 CEO 谢欣发布全员信,正式宣布进行新一轮的组织调整,即裁员。 内部全员信如下: 我有不少朋友是在字节跳动,甚至就在 Lark 的。 同时我也因为会----👍🏻点赞量:114")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350585600858898484",target:"_blank",rel:"noopener noreferrer"}},[e._v("腾讯女后端设计了一套短链系统,当场就想给她offer!"),r("OutboundLink")],1),e._v(": 手机里的营销短信,背后运作的秘密是什么? 什么是短链?什么是短链系统?如何设计一套高性能的短链系统?----👍🏻点赞量:113")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349971654590283776",target:"_blank",rel:"noopener noreferrer"}},[e._v("刚刚,百度和苹果宣布联名"),r("OutboundLink")],1),e._v(": 百度 × Apple 就在刚刚,财联社报道,百度将为苹果今年发布的 iPhone16、Mac 系统和 iOS18 提供 AI 功能。 苹果曾与阿里以及另外一家国产大模型公司进行过洽谈,最后确定由百度提----👍🏻点赞量:26")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348981169481990195",target:"_blank",rel:"noopener noreferrer"}},[e._v("eBPF驱动下的突破:打造高效大规模 Kubernetes Service 运行场景"),r("OutboundLink")],1),e._v(": Cilium 强大安全性和灵活性,优雅替代传统的 kube-proxy,重塑大规模 Kubernetes 集群的网络架构。一个必读的技术深度解析,适合所有对现代网络技术感兴趣的读者。----👍🏻点赞量:10")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349569626341490740",target:"_blank",rel:"noopener noreferrer"}},[e._v("舒服了,学习了,踩到一个 Lombok 的坑!"),r("OutboundLink")],1),e._v(": 你好呀,我是歪歪。 踩坑了啊,最近踩了一个 lombok 的坑,有点意思,给你分享一波。 我之前写过一个公共的服务接口,这个接口已经有好几个系统对接并稳定运行了很长一段时间了,长到这个接口都已经交接给----👍🏻点赞量:37")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349182232442191884",target:"_blank",rel:"noopener noreferrer"}},[e._v("辞职 4 个月后,我用 Rust 实现了个简单的 Spring Boot"),r("OutboundLink")],1),e._v(": 大家好,我是 ZihanType,一个热爱 Rust 的程序员。我在 2023 年 11 月辞职,目前正在找工作。在这段时间里,我用 Rust 写了一个 Spring Boot,这个项目叫做 pred----👍🏻点赞量:23")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349360417053474867",target:"_blank",rel:"noopener noreferrer"}},[e._v("架构解析系列-OTeL & Micrometer 在 Spring Boot 中的应用与分析"),r("OutboundLink")],1),e._v(": 希望通过本文能够帮助大家使用和理解 Springboot 中对于 micrometer 和 otlp 收集指标数据的基本流程和原理。----👍🏻点赞量:14")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349588906909958196",target:"_blank",rel:"noopener noreferrer"}},[e._v("倾情奉献 ,HBase 快速入门手册 - Java "),r("OutboundLink")],1),e._v(": 👈👈👈 欢迎点赞收藏关注哟 一. 前言 之前 Hadoop 入门 时讲过 , Hadoop 本身属于底层框架,在其上层有很多功能上的实现 ,并且这些实现都取得了不错的成绩。 HBase 就是其中一个,----👍🏻点赞量:9")])]),e._v(" "),r("h3",{attrs:{id:"android"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#android"}},[e._v("#")]),e._v(" Android")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349124917378695180",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flutter - 升级3.19之后页面多次rebuild?🤨"),r("OutboundLink")],1),e._v(": 升到到 "),r("code",[e._v("3.19.3")]),e._v(" 后发现,从 "),r("code",[e._v("页面A")]),e._v(" 跳转到 "),r("code",[e._v("页面B")]),e._v(" 和返回 "),r("code",[e._v("页面A")]),e._v(" 时,"),r("code",[e._v("页面A")]),e._v(" 的 "),r("code",[e._v("build")]),e._v(" 方法都会被执行,降回 "),r("code",[e._v("3.16.9")]),e._v(" 则不会----👍🏻点赞量:17")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349001116598091810",target:"_blank",rel:"noopener noreferrer"}},[e._v("跟🤡杰哥一起学Flutter (十三、从Widget源码 ✈ InheritedWidget)"),r("OutboundLink")],1),e._v(": 🤡本节来扒一扒Widget的源码,搞清楚StatefulWidget的生命周期/方法调用过程,为什么State可以跨帧存在?InheritedWidget的实现原理等..为后面的状态管理章节做准备~----👍🏻点赞量:15")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348994520590270490",target:"_blank",rel:"noopener noreferrer"}},[e._v("鸿蒙踩坑记之一招解决等待多个并发结果"),r("OutboundLink")],1),e._v(": 年前公司与华为签订了合作备忘录,加入了鸿蒙生态这个大家庭。。公司想赶着鸿蒙纯血系统上市之前,发布自己的鸿蒙软件。开发鸿蒙NEXT版本软件----👍🏻点赞量:11")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348707728921853971",target:"_blank",rel:"noopener noreferrer"}},[e._v("Android RecyclerView宫格拖拽效果实现"),r("OutboundLink")],1),e._v(": 前言 在Android发展的进程中,网格布局一直比较有热度,其中一个原因是对用户来说便捷操作,对app厂商而言也会带来很多的曝光量,对于很多头部app,展示网格菜单几乎是必选项。实现网格的方式有很多种----👍🏻点赞量:15")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349446682826948617",target:"_blank",rel:"noopener noreferrer"}},[e._v("几乎是当下最详细的 AOSP 编译与调试运行指南"),r("OutboundLink")],1),e._v(": 几乎是当下最详细的 AOSP 编译与调试运行指南,用于想要对系统源码深入调试或者定制自己的 framework----👍🏻点赞量:21")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349791638112452618",target:"_blank",rel:"noopener noreferrer"}},[e._v("PLT Hook从入门到实战 "),r("OutboundLink")],1),e._v(": PLT Hook是Android进阶必须掌握的技术之一,该技术在性能优化上有着广泛的应用,笔者这里以Native 内存泄漏检测,来带大家掌握PLT Hook技术----👍🏻点赞量:22")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350571075547676722",target:"_blank",rel:"noopener noreferrer"}},[e._v("Android Perfetto 系列 2:Perfetto Trace 抓取"),r("OutboundLink")],1),e._v(": 上一篇文章 Android Perfetto 系列 1:Perfetto 工具简介 介绍了 Perfetto 是什么,这篇简单介绍一下 Perfetto 的抓取。----👍🏻点赞量:23")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7348824894157160474",target:"_blank",rel:"noopener noreferrer"}},[e._v("WebView组件封装(五)——实现H5页面秒开方案总结"),r("OutboundLink")],1),e._v(": 一、WebView组件封装系列文章 WebView组件封装(一)——怎样使用全局缓存池管理提高WebView加载速度 WebView组件封装(二)——怎样用设计模式封装WebView,轻松实现个性化定----👍🏻点赞量:6")])]),e._v(" "),r("h3",{attrs:{id:"ios"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#ios"}},[e._v("#")]),e._v(" IOS")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349895521395884069",target:"_blank",rel:"noopener noreferrer"}},[e._v("2024 Flutter iOS 隐私清单上线,5 月 1 号最后期限,你收到 「ITMS-91053」 了吗?"),r("OutboundLink")],1),e._v(": 2023 年底的时候,我就发过了 《Flutter 上了 Apple 第三方重大列表,2024 春季 iOS 的隐私清单究竟是什么?》 相关内容,如果你还对隐私清单等相关要求不了解,建议先看看前文。 ----👍🏻点赞量:32")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349002962868305920",target:"_blank",rel:"noopener noreferrer"}},[e._v("iOS实现收钱时播放语音提醒总结"),r("OutboundLink")],1),e._v(": 一、背景 在WWDC2019发布了新的iOS13,苹果不再允许PushKit应用在非voip电话的场景上。这篇文章总结了在iOS13下的语音播报迁移方案以及一些需要注意的问题。 二、技术方案 Noti----👍🏻点赞量:1")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349027817306308617",target:"_blank",rel:"noopener noreferrer"}},[e._v("如何使用 SwiftUI 构建 visionOS 应用"),r("OutboundLink")],1),e._v(": Apple Vision Pro 即将推出,现在是看看 SwiftUI API 的完美时机,这使我们能够将我们的应用程序适应 visionOS 提供的沉浸式世界。苹果表示,构建应用程序的最佳方式是使用----👍🏻点赞量:8")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349835041993916450",target:"_blank",rel:"noopener noreferrer"}},[e._v("超级干干干干货!丝滑的 iOS 进度条解锁交互到底是怎么制作的?"),r("OutboundLink")],1),e._v(": 这篇是拆解 吉光卡片 App 底部彩蛋入口的动画实现。将这个入口发到社区后,很多小伙伴表示对实现原理比较感兴趣,于是便有了这篇文章,我将从思路和原理入手,带大家抽丝剥茧地带大家了解这个动画是如何实现的----👍🏻点赞量:9")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7349189143799398427",target:"_blank",rel:"noopener noreferrer"}},[e._v("RSA详解"),r("OutboundLink")],1),e._v(": 本文尝试使用最基础的方式解释RSA中的每一步的计算步骤、理论依据及证明;填补了在e、n不互质;m、n不互质情况下的处理方法和补充证明。----👍🏻点赞量:2")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350143110495207474",target:"_blank",rel:"noopener noreferrer"}},[e._v("Swift 定制 Core Data 迁移"),r("OutboundLink")],1),e._v(": 随着应用程序和用户群的增长,你需要添加新功能,删除其他功能,并改变应用程序的工作方式。这是软件开发生命周期的自然结果,我们应该接受。 随着应用程序的发展,你的数据模型也会发生变化。你需要更改数据----👍🏻点赞量:4")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350473432197431334",target:"_blank",rel:"noopener noreferrer"}},[e._v("08-📝Flutter核心知识|网络请求和Json转Model【网络处理封装、Json转Model、Json解析 、自动反序列化配置等】"),r("OutboundLink")],1),e._v(": 一、前言 本系列文章旨在快速复习并上手Flutter开发,并在适当分享在项目实战过程中遇到的一些比较有价值的知识内容: 01-📝Flutter核心知识|了解Flutter【诞生背景、应用简介、页面渲染----👍🏻点赞量:3")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://juejin.cn/post/7350308310824091698",target:"_blank",rel:"noopener noreferrer"}},[e._v("UserAgent获取与修改"),r("OutboundLink")],1),e._v(": 从19年 iOS 13开始Apple就建议我们将App中使用UIWebView的地方切换为WKWebView了。 按照Apple2019年12月13日的文档,20年4月,新应用必须使用WKWebViw----👍🏻点赞量:2")])]),e._v(" "),r("h2",{attrs:{id:"github"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#github"}},[e._v("#")]),e._v(" GitHub")]),e._v(" "),r("h3",{attrs:{id:"javascript-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#javascript-2"}},[e._v("#")]),e._v(" javascript")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/jaywcjlove/awesome-mac",target:"_blank",rel:"noopener noreferrer"}},[e._v("jaywcjlove/awesome-mac"),r("OutboundLink")],1),e._v(":  Now we have become very big, Different from the original idea. Collect premium software in various categories.----总⭐️70,551; 今日⭐️537")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/nodejs/node",target:"_blank",rel:"noopener noreferrer"}},[e._v("nodejs/node"),r("OutboundLink")],1),e._v(": Node.js JavaScript runtime ✨🐢🚀✨----总⭐️103,061; 今日⭐️478")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/Mintplex-Labs/anything-llm",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mintplex-Labs/anything-llm"),r("OutboundLink")],1),e._v(": A multi-user ChatGPT for any LLMs and vector database. Unlimited documents, messages, and storage in one privacy-focused app. Now available as a desktop application with a built-in LLM!----总⭐️9,823; 今日⭐️359")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/SuhailTechInfo/Suhail-Md",target:"_blank",rel:"noopener noreferrer"}},[e._v("SuhailTechInfo/Suhail-Md"),r("OutboundLink")],1),e._v(": meet Suhail-Md, Your All-in-One WhatsApp Excitement Buddy! Enjoy a thrilling messaging experience like never before. Suhail-Md brings a world of excitement and joy to your chats ✨🤖----总⭐️1,494; 今日⭐️201")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/end-4/dots-hyprland",target:"_blank",rel:"noopener noreferrer"}},[e._v("end-4/dots-hyprland"),r("OutboundLink")],1),e._v(": Modern, feature-rich and accessible desktop configuration.----总⭐️2,173; 今日⭐️271")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/kkevsekk1/AutoX",target:"_blank",rel:"noopener noreferrer"}},[e._v("kkevsekk1/AutoX"),r("OutboundLink")],1),e._v(": A UiAutomator on android, does not need root access(安卓平台上的JavaScript自动化工具)----总⭐️5,735; 今日⭐️73")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/louislam/uptime-kuma",target:"_blank",rel:"noopener noreferrer"}},[e._v("louislam/uptime-kuma"),r("OutboundLink")],1),e._v(": A fancy self-hosted monitoring tool----总⭐️48,025; 今日⭐️367")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/projectdiscovery/nuclei-templates",target:"_blank",rel:"noopener noreferrer"}},[e._v("projectdiscovery/nuclei-templates"),r("OutboundLink")],1),e._v(": Community curated list of templates for the nuclei engine to find security vulnerabilities.----总⭐️7,904; 今日⭐️50")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/Superalgos/Superalgos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Superalgos/Superalgos"),r("OutboundLink")],1),e._v(": Free, open-source crypto trading bot, automated bitcoin / cryptocurrency trading software, algorithmic trading bots. Visually design your crypto trading bot, leveraging an integrated charting system, data-mining, backtesting, paper trading, and multi-server crypto bot deployments.----总⭐️3,810; 今日⭐️28")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/trekhleb/javascript-algorithms",target:"_blank",rel:"noopener noreferrer"}},[e._v("trekhleb/javascript-algorithms"),r("OutboundLink")],1),e._v(": 📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings----总⭐️181,225; 今日⭐️247")])]),e._v(" "),r("h3",{attrs:{id:"vue"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#vue"}},[e._v("#")]),e._v(" vue")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/CorentinTh/it-tools",target:"_blank",rel:"noopener noreferrer"}},[e._v("CorentinTh/it-tools"),r("OutboundLink")],1),e._v(": Collection of handy online tools for developers, with great UX.----总⭐️9,096; 今日⭐️229")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/vueComponent/ant-design-vue",target:"_blank",rel:"noopener noreferrer"}},[e._v("vueComponent/ant-design-vue"),r("OutboundLink")],1),e._v(": 🌈 An enterprise-class UI components based on Ant Design and Vue. 🐜----总⭐️19,478; 今日⭐️47")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/wanglin2/mind-map",target:"_blank",rel:"noopener noreferrer"}},[e._v("wanglin2/mind-map"),r("OutboundLink")],1),e._v(": 一个还算强大的Web思维导图。A relatively powerful web mind map.----总⭐️3,308; 今日⭐️144")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/hslr-s/sun-panel",target:"_blank",rel:"noopener noreferrer"}},[e._v("hslr-s/sun-panel"),r("OutboundLink")],1),e._v(": A server, NAS navigation panel, Homepage, browser homepage. | 一个服务器、NAS导航面板、Homepage、浏览器首页。----总⭐️1,639; 今日⭐️135")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/pure-admin/vue-pure-admin",target:"_blank",rel:"noopener noreferrer"}},[e._v("pure-admin/vue-pure-admin"),r("OutboundLink")],1),e._v(": 🔥 全面ESM+Vue3+Vite+Element-Plus+TypeScript编写的一款后台管理系统(兼容移动端)----总⭐️13,626; 今日⭐️287")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/didi/xiaoju-survey",target:"_blank",rel:"noopener noreferrer"}},[e._v("didi/xiaoju-survey"),r("OutboundLink")],1),e._v(": 「快速」打造「专属」问卷系统, 让调研「更轻松」----总⭐️263; 今日⭐️83")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/kailong321200875/vue-element-plus-admin",target:"_blank",rel:"noopener noreferrer"}},[e._v("kailong321200875/vue-element-plus-admin"),r("OutboundLink")],1),e._v(": A backend management system based on vue3, typescript, element-plus, and vite----总⭐️2,156; 今日⭐️36")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/sugarforever/chat-ollama",target:"_blank",rel:"noopener noreferrer"}},[e._v("sugarforever/chat-ollama"),r("OutboundLink")],1),e._v(": ----总⭐️712; 今日⭐️150")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/zclzone/vue-naive-admin",target:"_blank",rel:"noopener noreferrer"}},[e._v("zclzone/vue-naive-admin"),r("OutboundLink")],1),e._v(": ⚡️基于 Vue3 + Vite + Pinia + Unocss + Naive UI 的轻量级后台管理模板。----总⭐️2,447; 今日⭐️65")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/Lissy93/dashy",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lissy93/dashy"),r("OutboundLink")],1),e._v(": 🚀 A self-hostable personal dashboard built for you. Includes status-checking, widgets, themes, icon packs, a UI editor and tons more!----总⭐️14,931; 今日⭐️100")])]),e._v(" "),r("h3",{attrs:{id:"typescript"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#typescript"}},[e._v("#")]),e._v(" typescript")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/fdundjer/solana-sniper-bot",target:"_blank",rel:"noopener noreferrer"}},[e._v("fdundjer/solana-sniper-bot"),r("OutboundLink")],1),e._v(": Solana Sniper Bot - Proof of Concept----总⭐️583; 今日⭐️322")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/janhq/jan",target:"_blank",rel:"noopener noreferrer"}},[e._v("janhq/jan"),r("OutboundLink")],1),e._v(": Jan is an open source alternative to ChatGPT that runs 100% offline on your computer----总⭐️14,074; 今日⭐️2,103")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/kamranahmedse/developer-roadmap",target:"_blank",rel:"noopener noreferrer"}},[e._v("kamranahmedse/developer-roadmap"),r("OutboundLink")],1),e._v(": Interactive roadmaps, guides and other educational content to help developers grow in their careers.----总⭐️270,460; 今日⭐️1,165")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/lobehub/lobe-chat",target:"_blank",rel:"noopener noreferrer"}},[e._v("lobehub/lobe-chat"),r("OutboundLink")],1),e._v(": 🤯 Lobe Chat - an open-source, modern-design LLMs/AI chat framework. Supports Multi AI Providers( OpenAI / Claude 3 / Gemini / Perplexity / Bedrock / Azure / Mistral / Ollama ), Multi-Modals (Vision/TTS) and plugin system. One-click FREE deployment of your private ChatGPT chat application.----总⭐️25,594; 今日⭐️2,103")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/nodejs/nodejs.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("nodejs/nodejs.org"),r("OutboundLink")],1),e._v(": The Node.js® Website----总⭐️4,785; 今日⭐️1,144")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/Project-DARC/DARC",target:"_blank",rel:"noopener noreferrer"}},[e._v("Project-DARC/DARC"),r("OutboundLink")],1),e._v(": Decentralized Autonomous Regulated Company (DARC), a company virtual machine that runs on any EVM-compatible blockchain, with on-chain law system, multi-level tokens and dividends mechanism.----总⭐️9,357; 今日⭐️1,110")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/yangshun/tech-interview-handbook",target:"_blank",rel:"noopener noreferrer"}},[e._v("yangshun/tech-interview-handbook"),r("OutboundLink")],1),e._v(": 💯 Curated coding interview preparation materials for busy software engineers----总⭐️108,542; 今日⭐️583")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/linkwarden/linkwarden",target:"_blank",rel:"noopener noreferrer"}},[e._v("linkwarden/linkwarden"),r("OutboundLink")],1),e._v(": ⚡️⚡️⚡️Self-hosted collaborative bookmark manager to collect, organize, and preserve webpages and articles.----总⭐️5,696; 今日⭐️719")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/midday-ai/midday",target:"_blank",rel:"noopener noreferrer"}},[e._v("midday-ai/midday"),r("OutboundLink")],1),e._v(": Run your business smarter.----总⭐️1,066; 今日⭐️467")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/medusajs/medusa",target:"_blank",rel:"noopener noreferrer"}},[e._v("medusajs/medusa"),r("OutboundLink")],1),e._v(": Building blocks for digital commerce----总⭐️22,438; 今日⭐️219")])]),e._v(" "),r("h3",{attrs:{id:"python-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#python-2"}},[e._v("#")]),e._v(" python")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/stitionai/devika",target:"_blank",rel:"noopener noreferrer"}},[e._v("stitionai/devika"),r("OutboundLink")],1),e._v(": Devika is an Agentic AI Software Engineer that can understand high-level human instructions, break them down into steps, research relevant information, and write code to achieve the given objective. Devika aims to be a competitive open-source alternative to Devin by Cognition AI.----总⭐️12,436; 今日⭐️11,540")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/OpenInterpreter/open-interpreter",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenInterpreter/open-interpreter"),r("OutboundLink")],1),e._v(": A natural language interface for computers----总⭐️45,827; 今日⭐️3,541")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/JoeanAmier/TikTokDownloader",target:"_blank",rel:"noopener noreferrer"}},[e._v("JoeanAmier/TikTokDownloader"),r("OutboundLink")],1),e._v(": 完全免费开源,基于 Requests 模块实现:TikTok 主页/视频/图集/原声;抖音主页/视频/图集/收藏/直播/原声/合集/评论/账号/搜索/热榜数据采集工具----总⭐️5,124; 今日⭐️356")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/Doriandarko/maestro",target:"_blank",rel:"noopener noreferrer"}},[e._v("Doriandarko/maestro"),r("OutboundLink")],1),e._v(": A framework for Claude Opus to intelligently orchestrate subagents.----总⭐️478; 今日⭐️163")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/goauthentik/authentik",target:"_blank",rel:"noopener noreferrer"}},[e._v("goauthentik/authentik"),r("OutboundLink")],1),e._v(": The authentication glue you need.----总⭐️6,346; 今日⭐️273")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/roboflow/supervision",target:"_blank",rel:"noopener noreferrer"}},[e._v("roboflow/supervision"),r("OutboundLink")],1),e._v(": We write your reusable computer vision tools. 💜----总⭐️13,371; 今日⭐️1,534")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/vllm-project/vllm",target:"_blank",rel:"noopener noreferrer"}},[e._v("vllm-project/vllm"),r("OutboundLink")],1),e._v(": A high-throughput and memory-efficient inference and serving engine for LLMs----总⭐️16,816; 今日⭐️404")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/StevenBlack/hosts",target:"_blank",rel:"noopener noreferrer"}},[e._v("StevenBlack/hosts"),r("OutboundLink")],1),e._v(": 🔒 Consolidating and extending hosts files from several well-curated sources. Optionally pick extensions for porn, social media, and other categories.----总⭐️25,228; 今日⭐️251")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/OpenInterpreter/01",target:"_blank",rel:"noopener noreferrer"}},[e._v("OpenInterpreter/01"),r("OutboundLink")],1),e._v(": The open-source language model computer----总⭐️3,685; 今日⭐️2,491")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/harry0703/MoneyPrinterTurbo",target:"_blank",rel:"noopener noreferrer"}},[e._v("harry0703/MoneyPrinterTurbo"),r("OutboundLink")],1),e._v(": 利用AI大模型,一键生成高清短视频 Generate short videos with one click using AI LLM.----总⭐️4,580; 今日⭐️2,574")])]),e._v(" "),r("h3",{attrs:{id:"go"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#go"}},[e._v("#")]),e._v(" go")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/microsoft/retina",target:"_blank",rel:"noopener noreferrer"}},[e._v("microsoft/retina"),r("OutboundLink")],1),e._v(": eBPF distributed networking observability tool for Kubernetes----总⭐️2,150; 今日⭐️1,499")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/jesseduffield/lazygit",target:"_blank",rel:"noopener noreferrer"}},[e._v("jesseduffield/lazygit"),r("OutboundLink")],1),e._v(": simple terminal UI for git commands----总⭐️44,690; 今日⭐️607")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/iawia002/lux",target:"_blank",rel:"noopener noreferrer"}},[e._v("iawia002/lux"),r("OutboundLink")],1),e._v(": 👾 Fast and simple video download library and CLI tool written in Go----总⭐️24,419; 今日⭐️468")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/omriharel/deej",target:"_blank",rel:"noopener noreferrer"}},[e._v("omriharel/deej"),r("OutboundLink")],1),e._v(": Set app volumes with real sliders! deej is an Arduino & Go project to let you build your own hardware mixer for Windows and Linux----总⭐️3,794; 今日⭐️682")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/go-gitea/gitea",target:"_blank",rel:"noopener noreferrer"}},[e._v("go-gitea/gitea"),r("OutboundLink")],1),e._v(": Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD----总⭐️41,459; 今日⭐️169")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/k8sgpt-ai/k8sgpt",target:"_blank",rel:"noopener noreferrer"}},[e._v("k8sgpt-ai/k8sgpt"),r("OutboundLink")],1),e._v(": Giving Kubernetes Superpowers to everyone----总⭐️4,782; 今日⭐️74")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/cli/cli",target:"_blank",rel:"noopener noreferrer"}},[e._v("cli/cli"),r("OutboundLink")],1),e._v(": GitHub’s official command line tool----总⭐️35,120; 今日⭐️157")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/libp2p/go-libp2p",target:"_blank",rel:"noopener noreferrer"}},[e._v("libp2p/go-libp2p"),r("OutboundLink")],1),e._v(": libp2p implementation in Go----总⭐️5,698; 今日⭐️26")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/tailscale/tailscale",target:"_blank",rel:"noopener noreferrer"}},[e._v("tailscale/tailscale"),r("OutboundLink")],1),e._v(": The easiest, most secure way to use WireGuard and 2FA.----总⭐️16,052; 今日⭐️168")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/quii/learn-go-with-tests",target:"_blank",rel:"noopener noreferrer"}},[e._v("quii/learn-go-with-tests"),r("OutboundLink")],1),e._v(": Learn Go with test-driven development----总⭐️21,114; 今日⭐️55")])]),e._v(" "),r("h3",{attrs:{id:"rust"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#rust"}},[e._v("#")]),e._v(" rust")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/juspay/hyperswitch",target:"_blank",rel:"noopener noreferrer"}},[e._v("juspay/hyperswitch"),r("OutboundLink")],1),e._v(": An open source payments switch written in Rust to make payments fast, reliable and affordable----总⭐️9,679; 今日⭐️285")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/ynqa/jnv",target:"_blank",rel:"noopener noreferrer"}},[e._v("ynqa/jnv"),r("OutboundLink")],1),e._v(": interactive JSON filter using jq----总⭐️3,777; 今日⭐️2,065")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/Wilfred/difftastic",target:"_blank",rel:"noopener noreferrer"}},[e._v("Wilfred/difftastic"),r("OutboundLink")],1),e._v(": a structural diff that understands syntax 🟥🟩----总⭐️19,041; 今日⭐️1,625")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/ordinals/ord",target:"_blank",rel:"noopener noreferrer"}},[e._v("ordinals/ord"),r("OutboundLink")],1),e._v(": 👁‍🗨 Rare and exotic sats----总⭐️3,142; 今日⭐️56")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/rerun-io/rerun",target:"_blank",rel:"noopener noreferrer"}},[e._v("rerun-io/rerun"),r("OutboundLink")],1),e._v(": Visualize streams of multimodal data. Fast, easy to use, and simple to integrate. Built in Rust using egui.----总⭐️4,856; 今日⭐️155")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/paritytech/substrate",target:"_blank",rel:"noopener noreferrer"}},[e._v("paritytech/substrate"),r("OutboundLink")],1),e._v(": Substrate: The platform for blockchain innovators----总⭐️8,384; 今日⭐️30")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/uutils/coreutils",target:"_blank",rel:"noopener noreferrer"}},[e._v("uutils/coreutils"),r("OutboundLink")],1),e._v(": Cross-platform Rust rewrite of the GNU coreutils----总⭐️16,717; 今日⭐️85")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/martinvonz/jj",target:"_blank",rel:"noopener noreferrer"}},[e._v("martinvonz/jj"),r("OutboundLink")],1),e._v(": A Git-compatible VCS that is both simple and powerful----总⭐️6,303; 今日⭐️318")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/tikv/tikv",target:"_blank",rel:"noopener noreferrer"}},[e._v("tikv/tikv"),r("OutboundLink")],1),e._v(": Distributed transactional key-value database, originally created to complement TiDB----总⭐️14,396; 今日⭐️54")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/seanmonstar/reqwest",target:"_blank",rel:"noopener noreferrer"}},[e._v("seanmonstar/reqwest"),r("OutboundLink")],1),e._v(": An easy and powerful Rust HTTP Client----总⭐️8,976; 今日⭐️123")])]),e._v(" "),r("h3",{attrs:{id:"object-c"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#object-c"}},[e._v("#")]),e._v(" object-c")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/amowu/arduimo",target:"_blank",rel:"noopener noreferrer"}},[e._v("amowu/arduimo"),r("OutboundLink")],1),e._v(": Amo + Arduino = Arduimo----总⭐️7; 今日⭐️0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/schacon/blink",target:"_blank",rel:"noopener noreferrer"}},[e._v("schacon/blink"),r("OutboundLink")],1),e._v(": Example file to blink the LED on an Arduino----总⭐️95; 今日⭐️0")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/prisonerjohn/FBZ-BEAT",target:"_blank",rel:"noopener noreferrer"}},[e._v("prisonerjohn/FBZ-BEAT"),r("OutboundLink")],1),e._v(": ----总⭐️4; 今日⭐️0")])]),e._v(" "),r("h3",{attrs:{id:"css"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#css"}},[e._v("#")]),e._v(" css")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/cloudflare/cloudflare-docs",target:"_blank",rel:"noopener noreferrer"}},[e._v("cloudflare/cloudflare-docs"),r("OutboundLink")],1),e._v(": Cloudflare’s documentation----总⭐️2,513; 今日⭐️19")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/datawhalechina/hugging-multi-agent",target:"_blank",rel:"noopener noreferrer"}},[e._v("datawhalechina/hugging-multi-agent"),r("OutboundLink")],1),e._v(": A tutorial based on MetaGPT to quickly help you understand the concept of agent and muti-agent and get started with coding development----总⭐️598; 今日⭐️203")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/chokcoco/iCSS",target:"_blank",rel:"noopener noreferrer"}},[e._v("chokcoco/iCSS"),r("OutboundLink")],1),e._v(": 不止于 CSS----总⭐️18,612; 今日⭐️73")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/nanxiaobei/hugo-paper",target:"_blank",rel:"noopener noreferrer"}},[e._v("nanxiaobei/hugo-paper"),r("OutboundLink")],1),e._v(": 🪺 A simple, clean, customizable Hugo theme----总⭐️1,941; 今日⭐️13")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/refact0r/midnight-discord",target:"_blank",rel:"noopener noreferrer"}},[e._v("refact0r/midnight-discord"),r("OutboundLink")],1),e._v(": A dark, rounded discord theme.----总⭐️298; 今日⭐️14")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/primefaces/sakai-vue",target:"_blank",rel:"noopener noreferrer"}},[e._v("primefaces/sakai-vue"),r("OutboundLink")],1),e._v(": ----总⭐️350; 今日⭐️4")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/primefaces/primeng",target:"_blank",rel:"noopener noreferrer"}},[e._v("primefaces/primeng"),r("OutboundLink")],1),e._v(": The Most Complete Angular UI Component Library----总⭐️9,327; 今日⭐️30")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/primefaces/primereact",target:"_blank",rel:"noopener noreferrer"}},[e._v("primefaces/primereact"),r("OutboundLink")],1),e._v(": The Most Complete React UI Component Library----总⭐️5,572; 今日⭐️56")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/aprxi/letsbuild-ai",target:"_blank",rel:"noopener noreferrer"}},[e._v("aprxi/letsbuild-ai"),r("OutboundLink")],1),e._v(": Community-driven platform dedicated to sharing resources, tools, and knowledge for AI enthusiasts and developers----总⭐️177; 今日⭐️61")]),e._v(" "),r("li",[r("a",{attrs:{href:"https://github.com/progit/progit2",target:"_blank",rel:"noopener noreferrer"}},[e._v("progit/progit2"),r("OutboundLink")],1),e._v(": Pro Git 2nd Edition----总⭐️5,585; 今日⭐️15")])])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/12.e222a855.js b/assets/js/12.e7ee1f64.js similarity index 95% rename from assets/js/12.e222a855.js rename to assets/js/12.e7ee1f64.js index bb06a1ee..14767719 100644 --- a/assets/js/12.e222a855.js +++ b/assets/js/12.e7ee1f64.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{530:function(t,r,e){"use strict";e.r(r);var a=e(7),s=Object(a.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"初衷"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#初衷"}},[t._v("#")]),t._v(" 初衷")]),t._v(" "),e("ul",[e("li",[t._v("互联网越来越流行,程序员内卷越来越严重,技术层出不穷,更新迭代不断;")]),t._v(" "),e("li",[t._v("有可能是为了让技术精进,也有可能是害怕技术落后而掉队;总之需要获取一些前沿信息;")]),t._v(" "),e("li",[t._v("这个项目会基本涵盖大部分技术体系。内容会按照日期进行分类,每天各大社区排行前几的文章会被收录;")]),t._v(" "),e("li",[t._v("如果这个网站的分享对你有所帮助,还请大家给个 ⭐️ 让更多的人知道 "),e("a",{attrs:{href:"https://github.com/dravenww/curated-article",target:"_blank",rel:"noopener noreferrer"}},[t._v("它"),e("OutboundLink")],1),t._v(" .")])]),t._v(" "),e("h1",{attrs:{id:"联系我"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#联系我"}},[t._v("#")]),t._v(" 联系我")]),t._v(" "),e("p",[t._v("欢迎关注我的公众号,每天获取最新高质量技术文章")]),t._v(" "),e("p",[e("img",{attrs:{src:"https://raw.githubusercontent.com/dravenww/blob/master/241625904836_.pic.jpg",alt:""}})])])}),[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{528:function(t,r,e){"use strict";e.r(r);var a=e(7),s=Object(a.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"初衷"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#初衷"}},[t._v("#")]),t._v(" 初衷")]),t._v(" "),e("ul",[e("li",[t._v("互联网越来越流行,程序员内卷越来越严重,技术层出不穷,更新迭代不断;")]),t._v(" "),e("li",[t._v("有可能是为了让技术精进,也有可能是害怕技术落后而掉队;总之需要获取一些前沿信息;")]),t._v(" "),e("li",[t._v("这个项目会基本涵盖大部分技术体系。内容会按照日期进行分类,每天各大社区排行前几的文章会被收录;")]),t._v(" "),e("li",[t._v("如果这个网站的分享对你有所帮助,还请大家给个 ⭐️ 让更多的人知道 "),e("a",{attrs:{href:"https://github.com/dravenww/curated-article",target:"_blank",rel:"noopener noreferrer"}},[t._v("它"),e("OutboundLink")],1),t._v(" .")])]),t._v(" "),e("h1",{attrs:{id:"联系我"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#联系我"}},[t._v("#")]),t._v(" 联系我")]),t._v(" "),e("p",[t._v("欢迎关注我的公众号,每天获取最新高质量技术文章")]),t._v(" "),e("p",[e("img",{attrs:{src:"https://raw.githubusercontent.com/dravenww/blob/master/241625904836_.pic.jpg",alt:""}})])])}),[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/13.86802d55.js b/assets/js/13.35945132.js similarity index 97% rename from assets/js/13.86802d55.js rename to assets/js/13.35945132.js index ab5569fb..e6b3ea8e 100644 --- a/assets/js/13.86802d55.js +++ b/assets/js/13.35945132.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{528:function(t,e,r){"use strict";r.r(e);var n=r(7),a=Object(n.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("ul",[r("li",[t._v("一个做前端的,专注于大前端,勇往无前,披荆斩棘")]),t._v(" "),r("li",[t._v("一个会点node,会点js,会点vue,会点react,还会点工程化的")]),t._v(" "),r("li",[t._v("目前在北京,就职于腾讯,服务于PCG")]),t._v(" "),r("li",[t._v("个人掘金地址:"),r("a",{attrs:{href:"https://juejin.cn/user/1732486056921614",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://juejin.cn/user/1732486056921614"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("个人csdn地址:"),r("a",{attrs:{href:"https://blog.csdn.net/jackwen110200",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://blog.csdn.net/jackwen110200"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("我的github: "),r("a",{attrs:{href:"https://github.com/dravenww",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/dravenww"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("热爱开源共建,喜欢折腾,热衷于重构,感性于性能,服务于用户体验")]),t._v(" "),r("li",[t._v("想和落地是两回事,敢想不如敢干,敢干不如想好了再干")]),t._v(" "),r("li",[t._v("去旅游和撸代码是两大爱好,当然王者荣耀也是可以的")]),t._v(" "),r("li",[t._v("联系我:"),r("a",{attrs:{href:"mailto:dravenwu110200@gmail.com"}},[t._v("dravenwu110200@gmail.com ")]),t._v(" /\n"),r("a",{attrs:{href:"mailto:jackwen110200@163.com"}},[t._v("jackwen110200@163.com ")])])]),t._v(" "),r("h1",{attrs:{id:"杂活"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#杂活"}},[t._v("#")]),t._v(" 杂活")]),t._v(" "),r("ul",[r("li",[t._v("做小程序")]),t._v(" "),r("li",[t._v("做鸿蒙")]),t._v(" "),r("li",[t._v("做设计")]),t._v(" "),r("li",[t._v("讲段子")])]),t._v(" "),r("h1",{attrs:{id:"联系我"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#联系我"}},[t._v("#")]),t._v(" 联系我")]),t._v(" "),r("p",[t._v("欢迎关注我的公众号,每天获取最新高质量技术文章")]),t._v(" "),r("p",[r("img",{attrs:{src:"https://raw.githubusercontent.com/dravenww/blob/master/241625904836_.pic.jpg",alt:""}})])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{529:function(t,e,r){"use strict";r.r(e);var n=r(7),a=Object(n.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("ul",[r("li",[t._v("一个做前端的,专注于大前端,勇往无前,披荆斩棘")]),t._v(" "),r("li",[t._v("一个会点node,会点js,会点vue,会点react,还会点工程化的")]),t._v(" "),r("li",[t._v("目前在北京,就职于腾讯,服务于PCG")]),t._v(" "),r("li",[t._v("个人掘金地址:"),r("a",{attrs:{href:"https://juejin.cn/user/1732486056921614",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://juejin.cn/user/1732486056921614"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("个人csdn地址:"),r("a",{attrs:{href:"https://blog.csdn.net/jackwen110200",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://blog.csdn.net/jackwen110200"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("我的github: "),r("a",{attrs:{href:"https://github.com/dravenww",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://github.com/dravenww"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("热爱开源共建,喜欢折腾,热衷于重构,感性于性能,服务于用户体验")]),t._v(" "),r("li",[t._v("想和落地是两回事,敢想不如敢干,敢干不如想好了再干")]),t._v(" "),r("li",[t._v("去旅游和撸代码是两大爱好,当然王者荣耀也是可以的")]),t._v(" "),r("li",[t._v("联系我:"),r("a",{attrs:{href:"mailto:dravenwu110200@gmail.com"}},[t._v("dravenwu110200@gmail.com ")]),t._v(" /\n"),r("a",{attrs:{href:"mailto:jackwen110200@163.com"}},[t._v("jackwen110200@163.com ")])])]),t._v(" "),r("h1",{attrs:{id:"杂活"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#杂活"}},[t._v("#")]),t._v(" 杂活")]),t._v(" "),r("ul",[r("li",[t._v("做小程序")]),t._v(" "),r("li",[t._v("做鸿蒙")]),t._v(" "),r("li",[t._v("做设计")]),t._v(" "),r("li",[t._v("讲段子")])]),t._v(" "),r("h1",{attrs:{id:"联系我"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#联系我"}},[t._v("#")]),t._v(" 联系我")]),t._v(" "),r("p",[t._v("欢迎关注我的公众号,每天获取最新高质量技术文章")]),t._v(" "),r("p",[r("img",{attrs:{src:"https://raw.githubusercontent.com/dravenww/blob/master/241625904836_.pic.jpg",alt:""}})])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/14.10adb632.js b/assets/js/14.8b9a7799.js similarity index 95% rename from assets/js/14.10adb632.js rename to assets/js/14.8b9a7799.js index b58570e3..505fa383 100644 --- a/assets/js/14.10adb632.js +++ b/assets/js/14.8b9a7799.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{529:function(t,r,e){"use strict";e.r(r);var a=e(7),l=Object(a.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("ul",[e("li",[t._v("互联网越来越流行,程序员内卷越来越严重,技术层出不穷,更新迭代不断;")]),t._v(" "),e("li",[t._v("有可能是为了让技术精进,也有可能是害怕技术落后而掉队;总之需要获取一些前沿信息;")]),t._v(" "),e("li",[t._v("这个项目会基本涵盖大部分技术体系。内容会按照日期进行分类,每天排行前几的文章会被收录;")]),t._v(" "),e("li",[t._v("如果这个网站的分享对你有所帮助,还请大家给个 ⭐️ 让更多的人知道 "),e("a",{attrs:{href:"https://github.com/dravenww/curated-article",target:"_blank",rel:"noopener noreferrer"}},[t._v("它"),e("OutboundLink")],1),t._v(" .")])]),t._v(" "),e("h2",{attrs:{id:"_2024"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_2024"}},[t._v("#")]),t._v(" 2024")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"/2024/2024-03-29"}},[t._v("2024-03-29")]),t._v(":2024-03-29的文章合集")]),t._v(" "),e("li",[e("a",{attrs:{href:"/2024/2024-03-22"}},[t._v("2024-03-22")]),t._v(":2024-03-22的文章合集")])])])}),[],!1,null,null,null);r.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{530:function(t,r,e){"use strict";e.r(r);var a=e(7),l=Object(a.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("ul",[e("li",[t._v("互联网越来越流行,程序员内卷越来越严重,技术层出不穷,更新迭代不断;")]),t._v(" "),e("li",[t._v("有可能是为了让技术精进,也有可能是害怕技术落后而掉队;总之需要获取一些前沿信息;")]),t._v(" "),e("li",[t._v("这个项目会基本涵盖大部分技术体系。内容会按照日期进行分类,每天排行前几的文章会被收录;")]),t._v(" "),e("li",[t._v("如果这个网站的分享对你有所帮助,还请大家给个 ⭐️ 让更多的人知道 "),e("a",{attrs:{href:"https://github.com/dravenww/curated-article",target:"_blank",rel:"noopener noreferrer"}},[t._v("它"),e("OutboundLink")],1),t._v(" .")])]),t._v(" "),e("h2",{attrs:{id:"_2024"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#_2024"}},[t._v("#")]),t._v(" 2024")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"/2024/2024-03-29"}},[t._v("2024-03-29")]),t._v(":2024-03-29的文章合集")]),t._v(" "),e("li",[e("a",{attrs:{href:"/2024/2024-03-22"}},[t._v("2024-03-22")]),t._v(":2024-03-22的文章合集")])])])}),[],!1,null,null,null);r.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/app.8424b04e.js b/assets/js/app.8637dea9.js similarity index 99% rename from assets/js/app.8424b04e.js rename to assets/js/app.8637dea9.js index 62babcd1..720944ca 100644 --- a/assets/js/app.8424b04e.js +++ b/assets/js/app.8637dea9.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,s=e[0],c=e[1],u=e[2],f=0,p=[];f1){for(var r={},i=0,a=n.length;i-1&&(n[e[r]]=this.get(e[r]));return n}};var l=null;for(var f in s.prototype)c[f]=s.prototype[f];e.default=c},function(t,e,n){"use strict";var r=n(12),o=n(9),i=n(11),a=n(13),s=n(49),c=r(a());o(c,{getPolyfill:a,implementation:i,shim:s}),t.exports=c},function(t,e,n){"use strict";var r=n(1),o=r("%String%"),i=r("%TypeError%");t.exports=function(t){if("symbol"==typeof t)throw new i("Cannot convert a Symbol value to a string");return o(t)}},function(t,e,n){"use strict";var r=n(1)("%TypeError%");t.exports=function(t,e){if(null==t)throw new r(e||"Cannot call method on "+t);return t}},function(t,e,n){"use strict";var r=n(1),o=n(12),i=o(r("String.prototype.indexOf"));t.exports=function(t,e){var n=r(t,!!e);return"function"==typeof n&&i(t,".prototype.")?o(n):n}},function(t,e,n){"use strict";(function(e){var r=e.Symbol,o=n(48);t.exports=function(){return"function"==typeof r&&"function"==typeof Symbol&&"symbol"==typeof r("foo")&&"symbol"==typeof Symbol("bar")&&o()}}).call(e,n(14))},function(t,e,n){"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),n=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(e in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var r=Object.getOwnPropertySymbols(t);if(1!==r.length||r[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var o=Object.getOwnPropertyDescriptor(t,e);if(42!==o.value||!0!==o.enumerable)return!1}return!0}},function(t,e,n){"use strict";var r=n(9),o=n(13);t.exports=function(){var t=o();return r(String.prototype,{trim:t},{trim:function(){return String.prototype.trim!==t}}),t}},function(t,e,n){"use strict";(function(e){var n=function(){};if("production"!==e.env.NODE_ENV){var r=function(t,e){var n=arguments.length;e=new Array(n>1?n-1:0);for(var r=1;r2?o-2:0);for(var i=2;i";var y=function(t){var e=l.spaceIndex(t);if(-1===e)return{html:"",closing:"/"===t[t.length-2]};var n="/"===(t=l.trim(t.slice(e+1,-1)))[t.length-1];return n&&(t=l.trim(t.slice(0,-1))),{html:t,closing:n}}(c),b=n[a],w=u(y.html,(function(t,e){var n,o=-1!==l.indexOf(b,t);return r(n=s(a,t,e,o))?o?(e=p(a,t,e,h))?t+'="'+e+'"':t:r(n=f(a,t,e,o))?void 0:n:n}));return c="<"+a,w&&(c+=" "+w),y.closing&&(c+=" /"),c+">"}return r(m=i(a,c,g))?d(c):m}),d);return v&&(m=v.remove(m)),m},t.exports=o},function(t,e){t.exports={smile:"e3/2018new_weixioa02_org.png",lovely:"09/2018new_keai_org.png",happy:"1e/2018new_taikaixin_org.png",clap:"6e/2018new_guzhang_thumb.png",whee:"33/2018new_xixi_thumb.png",haha:"8f/2018new_haha_thumb.png","laugh and cry":"4a/2018new_xiaoku_thumb.png",wink:"43/2018new_jiyan_org.png",greddy:"fa/2018new_chanzui_org.png",awkward:"a3/2018new_heixian_thumb.png",sweat:"28/2018new_han_org.png","pick nose":"9a/2018new_wabi_thumb.png",hum:"7c/2018new_heng_thumb.png",angry:"f6/2018new_nu_thumb.png",grievance:"a5/2018new_weiqu_thumb.png",poor:"96/2018new_kelian_org.png",disappoint:"aa/2018new_shiwang_thumb.png",sad:"ee/2018new_beishang_org.png",tear:"6e/2018new_leimu_org.png","no way":"83/2018new_kuxiao_org.png",shy:"c1/2018new_haixiu_org.png",dirt:"10/2018new_wu_thumb.png","love you":"f6/2018new_aini_org.png",kiss:"2c/2018new_qinqin_thumb.png",amorousness:"9d/2018new_huaxin_org.png",longing:"c9/2018new_chongjing_org.png",desire:"3e/2018new_tianping_thumb.png","bad laugh":"4d/2018new_huaixiao_org.png",blackness:"9e/2018new_yinxian_org.png","laugh without word":"2d/2018new_xiaoerbuyu_org.png",titter:"71/2018new_touxiao_org.png",cool:"c4/2018new_ku_org.png","not easy":"aa/2018new_bingbujiandan_thumb.png",think:"30/2018new_sikao_org.png",question:"b8/2018new_ningwen_org.png","no idea":"2a/2018new_wenhao_thumb.png",dizzy:"07/2018new_yun_thumb.png",bomb:"a2/2018new_shuai_thumb.png",bone:"a1/2018new_kulou_thumb.png","be quiet":"b0/2018new_xu_org.png","shut up":"62/2018new_bizui_org.png",stupid:"dd/2018new_shayan_org.png","surprise ":"49/2018new_chijing_org.png",vomit:"08/2018new_tu_org.png",cold:"40/2018new_kouzhao_thumb.png",sick:"3b/2018new_shengbing_thumb.png",bye:"fd/2018new_baibai_thumb.png","look down on":"da/2018new_bishi_org.png","white eye":"ef/2018new_landelini_org.png","left hum":"43/2018new_zuohengheng_thumb.png","right hum":"c1/2018new_youhengheng_thumb.png",crazy:"17/2018new_zhuakuang_org.png","scold ":"87/2018new_zhouma_thumb.png","hit on face":"cb/2018new_dalian_org.png",wow:"ae/2018new_ding_org.png",fan:"86/2018new_hufen02_org.png",money:"a2/2018new_qian_thumb.png",yawn:"55/2018new_dahaqian_org.png",sleepy:"3c/2018new_kun_thumb.png",sleep:"e2/2018new_shuijiao_thumb.png","watermelon ":"01/2018new_chigua_thumb.png",doge:"a1/2018new_doge02_org.png",dog:"22/2018new_erha_org.png",cat:"7b/2018new_miaomiao_thumb.png",thumb:"e6/2018new_zan_org.png",good:"8a/2018new_good_org.png",ok:"45/2018new_ok_org.png",yeah:"29/2018new_ye_thumb.png","shack hand":"e9/2018new_woshou_thumb.png",bow:"e7/2018new_zuoyi_org.png",come:"42/2018new_guolai_thumb.png",punch:"86/2018new_quantou_thumb.png"}},function(t,e){t.exports={nick:"NickName",mail:"E-Mail",link:"Website(http://)",nickFail:"NickName cannot be less than 3 bytes.",mailFail:"Please confirm your email address.",sofa:"No comment yet.",submit:"Submit",reply:"Reply",cancelReply:"Cancel reply",comments:"Comments",cancel:"Cancel",confirm:"Confirm",continue:"Continue",more:"Load More...",preview:"Preview",emoji:"Emoji",expand:"See more....",seconds:"seconds ago",minutes:"minutes ago",hours:"hours ago",days:"days ago",now:"just now",uploading:"Uploading ...",uploadDone:"Upload completed!",busy:"Submit is busy, please wait...","code-98":"Valine initialization failed, please check your version of av-min.js.","code-99":"Valine initialization failed, Please check the `el` element in the init method.","code-100":"Valine initialization failed, Please check your appId and appKey.","code-140":"The total number of API calls today has exceeded the development version limit.","code-401":"Unauthorized operation, Please check your appId and appKey.","code-403":"Access denied by API domain white list, Please check your security domain."}},function(t,e){t.exports={nick:"ニックネーム",mail:"メールアドレス",link:"サイト(http://)",nickFail:"3バイト以上のニックネームをご入力ください.",mailFail:"メールアドレスをご確認ください.",sofa:"コメントしましょう~",submit:"提出する",reply:"返信する",cancelReply:"キャンセル",comments:"コメント",cancel:"キャンセル",confirm:"確認する",continue:"继续",more:"さらに読み込む...",preview:"プレビュー",emoji:"絵文字",expand:"もっと見る",seconds:"秒前",minutes:"分前",hours:"時間前",days:"日前",now:"たっだ今",uploading:"アップロード中...",uploadDone:"アップロードが完了しました!",busy:"20 秒間隔で提出してください ...","code-98":"ロードエラーです。av-min.js のバージョンを確認してください.","code-99":"ロードエラーです。initにある`el`エレメントを確認ください.","code-100":"ロードエラーです。AppIdとAppKeyを確認ください.","code-140":"今日のAPIコールの総数が開発バージョンの上限を超えた.","code-401":"権限が制限されています。AppIdとAppKeyを確認ください.","code-403":"アクセスがAPIなどに制限されました、ドメイン名のセキュリティ設定を確認ください"}},function(t,e){t.exports={nick:"昵称",mail:"邮箱",link:"网址(http://)",nickFail:"昵称不能少于3个字符",mailFail:"请填写正确的邮件地址",sofa:"来发评论吧~",submit:"提交",reply:"回复",cancelReply:"取消回复",comments:"评论",cancel:"取消",confirm:"确认",continue:"继续",more:"加载更多...",preview:"预览",emoji:"表情",expand:"查看更多...",seconds:"秒前",minutes:"分钟前",hours:"小时前",days:"天前",now:"刚刚",uploading:"正在传输...",uploadDone:"传输完成!",busy:"操作频繁,请稍候再试...","code-98":"Valine 初始化失败,请检查 av-min.js 版本","code-99":"Valine 初始化失败,请检查init中的`el`元素.","code-100":"Valine 初始化失败,请检查你的AppId和AppKey.","code-140":"今日 API 调用总次数已超过开发版限制.","code-401":"未经授权的操作,请检查你的AppId和AppKey.","code-403":"访问被API域名白名单拒绝,请检查你的安全域名设置."}},function(t,e){t.exports={nick:"暱稱",mail:"郵箱",link:"網址(http://)",nickFail:"昵稱不能少於3個字符",mailFail:"請填寫正確的郵件地址",sofa:"來發評論吧~",submit:"提交",reply:"回覆",cancelReply:"取消回覆",comments:"評論",cancel:"取消",confirm:"確認",continue:"繼續",more:"加載更多...",preview:"預覽",emoji:"表情",expand:"查看更多...",seconds:"秒前",minutes:"分鐘前",hours:"小時前",days:"天前",now:"剛剛",uploading:"正在上傳...",uploadDone:"上傳完成!",busy:"操作頻繁,請稍候再試...","code-98":"Valine 初始化失敗,請檢查 av-min.js 版本","code-99":"Valine 初始化失敗,請檢查init中的`el`元素.","code-100":"Valine 初始化失敗,請檢查你的AppId和AppKey.","code-140":"今日 API 調用總次數已超過開發版限制.","code-401":"未經授權的操作,請檢查你的AppId和AppKey.","code-403":"訪問被API域名白名單拒絕,請檢查你的安全域名設置."}},function(t,e,n){var r=n(59);"string"==typeof r&&(r=[[t.i,r,""]]);var o={transform:void 0};n(61)(r,o),r.locals&&(t.exports=r.locals)},function(t,e,n){(t.exports=n(60)(!1)).push([t.i,'.v[data-class=v]{font-size:16px;text-align:left}.v[data-class=v] *{-webkit-box-sizing:border-box;box-sizing:border-box;line-height:1.75}.v[data-class=v] .status-bar,.v[data-class=v] .veditor,.v[data-class=v] .vinput,.v[data-class=v] p,.v[data-class=v] pre code{color:#555}.v[data-class=v] .vsys,.v[data-class=v] .vtime{color:#b3b3b3}.v[data-class=v] .text-right{text-align:right}.v[data-class=v] .text-center{text-align:center}.v[data-class=v] img{max-width:100%;border:none}.v[data-class=v] hr{margin:.825em 0;border-color:#f6f6f6;border-style:dashed}.v[data-class=v].hide-avatar .vimg{display:none}.v[data-class=v] a{position:relative;cursor:pointer;color:#1abc9c;text-decoration:none;display:inline-block}.v[data-class=v] a:hover{color:#d7191a}.v[data-class=v] code,.v[data-class=v] pre{background-color:#f8f8f8;padding:.2em .4em;border-radius:3px;font-size:85%;margin:0}.v[data-class=v] pre{padding:10px;overflow:auto;line-height:1.45}.v[data-class=v] pre code{padding:0;background:transparent;white-space:pre-wrap;word-break:keep-all}.v[data-class=v] blockquote{color:#666;margin:.5em 0;padding:0 0 0 1em;border-left:8px solid hsla(0,0%,93%,.5)}.v[data-class=v] .vinput{border:none;resize:none;outline:none;padding:10px 5px;max-width:100%;font-size:.775em}.v[data-class=v] input[type=checkbox],.v[data-class=v] input[type=radio]{display:inline-block;vertical-align:middle;margin-top:-2px}.v[data-class=v] .vicon{cursor:pointer;display:inline-block;overflow:hidden;fill:#555;vertical-align:middle}.v[data-class=v] .vicon+.vicon{margin-left:10px}.v[data-class=v] .vicon.actived{fill:#66b1ff}.v[data-class=v] .vrow{font-size:0;padding:10px 0}.v[data-class=v] .vrow .vcol{display:inline-block;vertical-align:middle;font-size:14px}.v[data-class=v] .vrow .vcol.vcol-20{width:20%}.v[data-class=v] .vrow .vcol.vcol-30{width:30%}.v[data-class=v] .vrow .vcol.vcol-40{width:40%}.v[data-class=v] .vrow .vcol.vcol-50{width:50%}.v[data-class=v] .vrow .vcol.vcol-60{width:60%}.v[data-class=v] .vrow .vcol.vcol-70{width:70%}.v[data-class=v] .vrow .vcol.vcol-80{width:80%}.v[data-class=v] .vrow .vcol.vctrl{font-size:12px}.v[data-class=v] .emoji,.v[data-class=v] .vemoji{max-width:25px;vertical-align:middle;margin:0 1px;display:inline-block}.v[data-class=v] .vwrap{border:1px solid #f0f0f0;border-radius:4px;margin-bottom:10px;overflow:hidden;position:relative;padding:10px}.v[data-class=v] .vwrap input{background:transparent}.v[data-class=v] .vwrap .vedit{position:relative;padding-top:10px}.v[data-class=v] .vwrap .cancel-reply-btn{position:absolute;right:5px;top:5px;cursor:pointer}.v[data-class=v] .vwrap .vemojis{display:none;font-size:18px;max-height:145px;overflow:auto;padding-bottom:10px;-webkit-box-shadow:0 0 1px #f0f0f0;box-shadow:0 0 1px #f0f0f0}.v[data-class=v] .vwrap .vemojis i{font-style:normal;padding-top:7px;width:36px;cursor:pointer;text-align:center;display:inline-block;vertical-align:middle}.v[data-class=v] .vwrap .vpreview{padding:7px;-webkit-box-shadow:0 0 1px #f0f0f0;box-shadow:0 0 1px #f0f0f0}.v[data-class=v] .vwrap .vheader .vinput{width:33.33%;border-bottom:1px dashed #dedede}.v[data-class=v] .vwrap .vheader.item2 .vinput{width:50%}.v[data-class=v] .vwrap .vheader.item1 .vinput{width:100%}.v[data-class=v] .vwrap .vheader .vinput:focus{border-bottom-color:#eb5055}@media screen and (max-width:520px){.v[data-class=v] .vwrap .vheader.item2 .vinput,.v[data-class=v] .vwrap .vheader .vinput{width:100%}}.v[data-class=v] .vpower{color:#999;font-size:.75em;padding:.5em 0}.v[data-class=v] .vpower a{font-size:.75em}.v[data-class=v] .vcount{padding:5px;font-weight:600;font-size:1.25em}.v[data-class=v] ol,.v[data-class=v] ul{padding:0;margin-left:1.25em}.v[data-class=v] .txt-center{text-align:center}.v[data-class=v] .txt-right{text-align:right}.v[data-class=v] .pd5{padding:5px}.v[data-class=v] .pd10{padding:10px}.v[data-class=v] .veditor{width:100%;min-height:8.75em;font-size:.875em;background:transparent;resize:vertical;-webkit-transition:all .25s ease;transition:all .25s ease}.v[data-class=v] .vbtn{-webkit-transition-duration:.4s;transition-duration:.4s;text-align:center;color:#555;border:1px solid #ededed;border-radius:.3em;display:inline-block;background:transparent;margin-bottom:0;font-weight:400;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;white-space:nowrap;padding:.5em 1.25em;font-size:.875em;line-height:1.42857143;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none}.v[data-class=v] .vbtn+.vbtn{margin-left:1.25em}.v[data-class=v] .vbtn:active,.v[data-class=v] .vbtn:hover{color:#3090e4;border-color:#3090e4}.v[data-class=v] .vbtn:disabled{border-color:#e1e1e1;color:#e1e1e1;background-color:#fdfafa;cursor:not-allowed}.v[data-class=v] .vempty{padding:1.25em;text-align:center;color:#555;overflow:auto}.v[data-class=v] .vsys{display:inline-block;padding:.2em .5em;font-size:.75em;border-radius:.2em;margin-right:.3em}@media screen and (max-width:520px){.v[data-class=v] .vsys{display:none}}.v[data-class=v] .vcards{width:100%}.v[data-class=v] .vcards .vcard{padding-top:1.25em;position:relative;display:block}.v[data-class=v] .vcards .vcard:after{content:"";clear:both;display:block}.v[data-class=v] .vcards .vcard .vimg{width:3.125em;height:3.125em;float:left;border-radius:50%;margin-right:.7525em;border:1px solid #f5f5f5;padding:.125em}@media screen and (max-width:720px){.v[data-class=v] .vcards .vcard .vimg{width:2.5em;height:2.5em}}.v[data-class=v] .vcards .vcard .vhead{line-height:1.5;margin-top:0}.v[data-class=v] .vcards .vcard .vhead .vnick{position:relative;font-size:.875em;font-weight:500;margin-right:.875em;cursor:pointer;text-decoration:none;display:inline-block}.v[data-class=v] .vcards .vcard .vhead .vnick:hover{color:#d7191a}.v[data-class=v] .vcards .vcard .vh{overflow:hidden;padding-bottom:.5em;border-bottom:1px dashed #f5f5f5}.v[data-class=v] .vcards .vcard .vh .vtime{font-size:.75em;margin-right:.875em}.v[data-class=v] .vcards .vcard .vh .vmeta{line-height:1;position:relative}.v[data-class=v] .vcards .vcard .vh .vmeta .vat{font-size:.8125em;color:#ef2f11;cursor:pointer;float:right}.v[data-class=v] .vcards .vcard:last-child .vh{border-bottom:none}.v[data-class=v] .vcards .vcard .vcontent{word-wrap:break-word;word-break:break-all;font-size:.875em;line-height:2;position:relative;margin-bottom:.75em;padding-top:.625em}.v[data-class=v] .vcards .vcard .vcontent.expand{cursor:pointer;max-height:8em;overflow:hidden}.v[data-class=v] .vcards .vcard .vcontent.expand:before{display:block;content:"";position:absolute;width:100%;left:0;top:0;bottom:3.15em;background:-webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,0)),to(hsla(0,0%,100%,.9)));background:linear-gradient(180deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.9));z-index:999}.v[data-class=v] .vcards .vcard .vcontent.expand:after{display:block;content:attr(data-expand);text-align:center;color:#828586;position:absolute;width:100%;height:3.15em;line-height:3.15em;left:0;bottom:0;z-index:999;background:hsla(0,0%,100%,.9)}.v[data-class=v] .vcards .vcard .vquote{padding-left:1em;border-left:1px dashed hsla(0,0%,93%,.5)}.v[data-class=v] .vcards .vcard .vquote .vimg{width:2.225em;height:2.225em}.v[data-class=v] .vpage .vmore{margin:1em 0}.v[data-class=v] .clear{content:"";display:block;clear:both}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes pulse{50%{background:#dcdcdc}}@keyframes pulse{50%{background:#dcdcdc}}.v[data-class=v] .vspinner{width:22px;height:22px;display:inline-block;border:6px double #a0a0a0;border-top-color:transparent;border-bottom-color:transparent;border-radius:50%;-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear;position:relative;vertical-align:middle;margin:0 5px}.dark .v[data-class=v] .status-bar,.dark .v[data-class=v] .veditor,.dark .v[data-class=v] .vinput,.dark .v[data-class=v] p,.dark .v[data-class=v] pre code,.night .v[data-class=v] .status-bar,.night .v[data-class=v] .veditor,.night .v[data-class=v] .vinput,.night .v[data-class=v] p,.night .v[data-class=v] pre code,.theme__dark .v[data-class=v] .status-bar,.theme__dark .v[data-class=v] .veditor,.theme__dark .v[data-class=v] .vinput,.theme__dark .v[data-class=v] p,.theme__dark .v[data-class=v] pre code,[data-theme=dark] .v[data-class=v] .status-bar,[data-theme=dark] .v[data-class=v] .veditor,[data-theme=dark] .v[data-class=v] .vinput,[data-theme=dark] .v[data-class=v] p,[data-theme=dark] .v[data-class=v] pre code{color:#b2b2b5}.dark .v[data-class=v] .vsys,.dark .v[data-class=v] .vtime,.night .v[data-class=v] .vsys,.night .v[data-class=v] .vtime,.theme__dark .v[data-class=v] .vsys,.theme__dark .v[data-class=v] .vtime,[data-theme=dark] .v[data-class=v] .vsys,[data-theme=dark] .v[data-class=v] .vtime{color:#929298}.dark .v[data-class=v] code,.dark .v[data-class=v] pre,.dark .v[data-class=v] pre code,.night .v[data-class=v] code,.night .v[data-class=v] pre,.night .v[data-class=v] pre code,.theme__dark .v[data-class=v] code,.theme__dark .v[data-class=v] pre,.theme__dark .v[data-class=v] pre code,[data-theme=dark] .v[data-class=v] code,[data-theme=dark] .v[data-class=v] pre,[data-theme=dark] .v[data-class=v] pre code{color:#929298;background-color:#151414}.dark .v[data-class=v] .vwrap,.night .v[data-class=v] .vwrap,.theme__dark .v[data-class=v] .vwrap,[data-theme=dark] .v[data-class=v] .vwrap{border-color:#b2b2b5}.dark .v[data-class=v] .vicon,.night .v[data-class=v] .vicon,.theme__dark .v[data-class=v] .vicon,[data-theme=dark] .v[data-class=v] .vicon{fill:#b2b2b5}.dark .v[data-class=v] .vicon.actived,.night .v[data-class=v] .vicon.actived,.theme__dark .v[data-class=v] .vicon.actived,[data-theme=dark] .v[data-class=v] .vicon.actived{fill:#66b1ff}.dark .v[data-class=v] .vbtn,.night .v[data-class=v] .vbtn,.theme__dark .v[data-class=v] .vbtn,[data-theme=dark] .v[data-class=v] .vbtn{color:#b2b2b5;border-color:#b2b2b5}.dark .v[data-class=v] .vbtn:hover,.night .v[data-class=v] .vbtn:hover,.theme__dark .v[data-class=v] .vbtn:hover,[data-theme=dark] .v[data-class=v] .vbtn:hover{color:#66b1ff;border-color:#66b1ff}.dark .v[data-class=v] a:hover,.night .v[data-class=v] a:hover,.theme__dark .v[data-class=v] a:hover,[data-theme=dark] .v[data-class=v] a:hover{color:#d7191a}.dark .v[data-class=v] .vcards .vcard .vcontent.expand:before,.night .v[data-class=v] .vcards .vcard .vcontent.expand:before,.theme__dark .v[data-class=v] .vcards .vcard .vcontent.expand:before,[data-theme=dark] .v[data-class=v] .vcards .vcard .vcontent.expand:before{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.7)));background:linear-gradient(180deg,rgba(0,0,0,.3),rgba(0,0,0,.7))}.dark .v[data-class=v] .vcards .vcard .vcontent.expand:after,.night .v[data-class=v] .vcards .vcard .vcontent.expand:after,.theme__dark .v[data-class=v] .vcards .vcard .vcontent.expand:after,[data-theme=dark] .v[data-class=v] .vcards .vcard .vcontent.expand:after{background:rgba(0,0,0,.7)}@media (prefers-color-scheme:dark){.v[data-class=v] .status-bar,.v[data-class=v] .veditor,.v[data-class=v] .vinput,.v[data-class=v] p,.v[data-class=v] pre code{color:#b2b2b5}.v[data-class=v] .vsys,.v[data-class=v] .vtime{color:#929298}.v[data-class=v] code,.v[data-class=v] pre,.v[data-class=v] pre code{color:#929298;background-color:#151414}.v[data-class=v] .vwrap{border-color:#b2b2b5}.v[data-class=v] .vicon{fill:#b2b2b5}.v[data-class=v] .vicon.actived{fill:#66b1ff}.v[data-class=v] .vbtn{color:#b2b2b5;border-color:#b2b2b5}.v[data-class=v] .vbtn:hover{color:#66b1ff;border-color:#66b1ff}.v[data-class=v] a:hover{color:#d7191a}.v[data-class=v] .vcards .vcard .vcontent.expand:before{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.7)));background:linear-gradient(180deg,rgba(0,0,0,.3),rgba(0,0,0,.7))}.v[data-class=v] .vcards .vcard .vcontent.expand:after{background:rgba(0,0,0,.7)}}',""])},function(t,e){function n(t,e){var n=t[1]||"",r=t[3];if(!r)return n;if(e&&"function"==typeof btoa){var o=function(t){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+" */"}(r);return[n].concat(r.sources.map((function(t){return"/*# sourceURL="+r.sourceRoot+t+" */"}))).concat([o]).join("\n")}return[n].join("\n")}t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var r=n(e,t);return e[2]?"@media "+e[2]+"{"+r+"}":r})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},o=0;o=0&&b.splice(e,1)}function s(t){var e=document.createElement("style");return t.attrs.type="text/css",u(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement("link");return t.attrs.type="text/css",t.attrs.rel="stylesheet",u(e,t.attrs),i(t,e),e}function u(t,e){Object.keys(e).forEach((function(n){t.setAttribute(n,e[n])}))}function l(t,e){var n,r,o,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var u=y++;n=g||(g=s(e)),r=f.bind(null,n,u,!1),o=f.bind(null,n,u,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=c(e),r=d.bind(null,n,e),o=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),r=p.bind(null,n),o=function(){a(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else o()}}function f(t,e,n,r){var o=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=_(e,o);else{var i=document.createTextNode(o),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function p(t,e){var n=e.css,r=e.media;if(r&&t.setAttribute("media",r),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function d(t,e,n){var r=n.css,o=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&o;(e.convertToAbsoluteUrls||i)&&(r=w(r)),o&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var a=new Blob([r],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var h={},v=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}((function(){return window&&document&&document.all&&!window.atob})),m=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}((function(t){return document.querySelector(t)})),g=null,y=0,b=[],w=n(62);t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=v()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=o(t,e);return r(n,e),function(t){for(var i=[],a=0;a0?x.join(",")||null:void 0}];else if(c(f))k=f;else{var S=Object.keys(x);k=p?S.sort(p):S}for(var $=0;$0?w+b:""}},function(t,e,n){"use strict";var r=n(125),o=n(388),i=n(390),a=r("%TypeError%"),s=r("%WeakMap%",!0),c=r("%Map%",!0),u=o("WeakMap.prototype.get",!0),l=o("WeakMap.prototype.set",!0),f=o("WeakMap.prototype.has",!0),p=o("Map.prototype.get",!0),d=o("Map.prototype.set",!0),h=o("Map.prototype.has",!0),v=function(t,e){for(var n,r=t;null!==(n=r.next);r=n)if(n.key===e)return r.next=n.next,n.next=t.next,t.next=n,n};t.exports=function(){var t,e,n,r={assert:function(t){if(!r.has(t))throw new a("Side channel does not contain "+i(t))},get:function(r){if(s&&r&&("object"==typeof r||"function"==typeof r)){if(t)return u(t,r)}else if(c){if(e)return p(e,r)}else if(n)return function(t,e){var n=v(t,e);return n&&n.value}(n,r)},has:function(r){if(s&&r&&("object"==typeof r||"function"==typeof r)){if(t)return f(t,r)}else if(c){if(e)return h(e,r)}else if(n)return function(t,e){return!!v(t,e)}(n,r);return!1},set:function(r,o){s&&r&&("object"==typeof r||"function"==typeof r)?(t||(t=new s),l(t,r,o)):c?(e||(e=new c),d(e,r,o)):(n||(n={key:{},next:null}),function(t,e,n){var r=v(t,e);r?r.value=n:t.next={key:e,next:t.next,value:n}}(n,r,o))}};return r}},function(t,e,n){"use strict";var r="undefined"!=typeof Symbol&&Symbol,o=n(385);t.exports=function(){return"function"==typeof r&&("function"==typeof Symbol&&("symbol"==typeof r("foo")&&("symbol"==typeof Symbol("bar")&&o())))}},function(t,e,n){"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),n=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(e in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var r=Object.getOwnPropertySymbols(t);if(1!==r.length||r[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var o=Object.getOwnPropertyDescriptor(t,e);if(42!==o.value||!0!==o.enumerable)return!1}return!0}},function(t,e,n){"use strict";var r="Function.prototype.bind called on incompatible ",o=Array.prototype.slice,i=Object.prototype.toString;t.exports=function(t){var e=this;if("function"!=typeof e||"[object Function]"!==i.call(e))throw new TypeError(r+e);for(var n,a=o.call(arguments,1),s=function(){if(this instanceof n){var r=e.apply(this,a.concat(o.call(arguments)));return Object(r)===r?r:this}return e.apply(t,a.concat(o.call(arguments)))},c=Math.max(0,e.length-a.length),u=[],l=0;l-1?o(n):n}},function(t,e,n){"use strict";var r=n(126),o=n(125),i=o("%Function.prototype.apply%"),a=o("%Function.prototype.call%"),s=o("%Reflect.apply%",!0)||r.call(a,i),c=o("%Object.getOwnPropertyDescriptor%",!0),u=o("%Object.defineProperty%",!0),l=o("%Math.max%");if(u)try{u({},"a",{value:1})}catch(t){u=null}t.exports=function(t){var e=s(r,a,arguments);if(c&&u){var n=c(e,"length");n.configurable&&u(e,"length",{value:1+l(0,t.length-(arguments.length-1))})}return e};var f=function(){return s(r,i,arguments)};u?u(t.exports,"apply",{value:f}):t.exports.apply=f},function(t,e,n){var r="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=r&&o&&"function"==typeof o.get?o.get:null,a=r&&Map.prototype.forEach,s="function"==typeof Set&&Set.prototype,c=Object.getOwnPropertyDescriptor&&s?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,u=s&&c&&"function"==typeof c.get?c.get:null,l=s&&Set.prototype.forEach,f="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,p="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,d="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,h=Boolean.prototype.valueOf,v=Object.prototype.toString,m=Function.prototype.toString,g=String.prototype.match,y="function"==typeof BigInt?BigInt.prototype.valueOf:null,b=Object.getOwnPropertySymbols,w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,_="function"==typeof Symbol&&"object"==typeof Symbol.iterator,x=Object.prototype.propertyIsEnumerable,k=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null),O=n(391).custom,S=O&&E(O)?O:null,$="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function C(t,e,n){var r="double"===(n.quoteStyle||e)?'"':"'";return r+t+r}function A(t){return String(t).replace(/"/g,""")}function j(t){return!("[object Array]"!==I(t)||$&&"object"==typeof t&&$ in t)}function E(t){if(_)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!w)return!1;try{return w.call(t),!0}catch(t){}return!1}t.exports=function t(e,n,r,o){var s=n||{};if(P(s,"quoteStyle")&&"single"!==s.quoteStyle&&"double"!==s.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(P(s,"maxStringLength")&&("number"==typeof s.maxStringLength?s.maxStringLength<0&&s.maxStringLength!==1/0:null!==s.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var c=!P(s,"customInspect")||s.customInspect;if("boolean"!=typeof c&&"symbol"!==c)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(P(s,"indent")&&null!==s.indent&&"\t"!==s.indent&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return function t(e,n){if(e.length>n.maxStringLength){var r=e.length-n.maxStringLength,o="... "+r+" more character"+(r>1?"s":"");return t(e.slice(0,n.maxStringLength),n)+o}return C(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,M),"single",n)}(e,s);if("number"==typeof e)return 0===e?1/0/e>0?"0":"-0":String(e);if("bigint"==typeof e)return String(e)+"n";var v=void 0===s.depth?5:s.depth;if(void 0===r&&(r=0),r>=v&&v>0&&"object"==typeof e)return j(e)?"[Array]":"[Object]";var b=function(t,e){var n;if("\t"===t.indent)n="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;n=Array(t.indent+1).join(" ")}return{base:n,prev:Array(e+1).join(n)}}(s,r);if(void 0===o)o=[];else if(R(o,e)>=0)return"[Circular]";function x(e,n,i){if(n&&(o=o.slice()).push(n),i){var a={depth:s.depth};return P(s,"quoteStyle")&&(a.quoteStyle=s.quoteStyle),t(e,a,r+1,o)}return t(e,s,r+1,o)}if("function"==typeof e){var O=function(t){if(t.name)return t.name;var e=g.call(m.call(t),/^function\s*([\w$]+)/);if(e)return e[1];return null}(e),T=D(e,x);return"[Function"+(O?": "+O:" (anonymous)")+"]"+(T.length>0?" { "+T.join(", ")+" }":"")}if(E(e)){var U=_?String(e).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):w.call(e);return"object"!=typeof e||_?U:L(U)}if(function(t){if(!t||"object"!=typeof t)return!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement)return!0;return"string"==typeof t.nodeName&&"function"==typeof t.getAttribute}(e)){for(var B="<"+String(e.nodeName).toLowerCase(),q=e.attributes||[],V=0;V"}if(j(e)){if(0===e.length)return"[]";var H=D(e,x);return b&&!function(t){for(var e=0;e=0)return!1;return!0}(H)?"["+z(H,b)+"]":"[ "+H.join(", ")+" ]"}if(function(t){return!("[object Error]"!==I(t)||$&&"object"==typeof t&&$ in t)}(e)){var W=D(e,x);return 0===W.length?"["+String(e)+"]":"{ ["+String(e)+"] "+W.join(", ")+" }"}if("object"==typeof e&&c){if(S&&"function"==typeof e[S])return e[S]();if("symbol"!==c&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!i||!t||"object"!=typeof t)return!1;try{i.call(t);try{u.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var Q=[];return a.call(e,(function(t,n){Q.push(x(n,e,!0)+" => "+x(t,e))})),F("Map",i.call(e),Q,b)}if(function(t){if(!u||!t||"object"!=typeof t)return!1;try{u.call(t);try{i.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var G=[];return l.call(e,(function(t){G.push(x(t,e))})),F("Set",u.call(e),G,b)}if(function(t){if(!f||!t||"object"!=typeof t)return!1;try{f.call(t,f);try{p.call(t,p)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return N("WeakMap");if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{p.call(t,p);try{f.call(t,f)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return N("WeakSet");if(function(t){if(!d||!t||"object"!=typeof t)return!1;try{return d.call(t),!0}catch(t){}return!1}(e))return N("WeakRef");if(function(t){return!("[object Number]"!==I(t)||$&&"object"==typeof t&&$ in t)}(e))return L(x(Number(e)));if(function(t){if(!t||"object"!=typeof t||!y)return!1;try{return y.call(t),!0}catch(t){}return!1}(e))return L(x(y.call(e)));if(function(t){return!("[object Boolean]"!==I(t)||$&&"object"==typeof t&&$ in t)}(e))return L(h.call(e));if(function(t){return!("[object String]"!==I(t)||$&&"object"==typeof t&&$ in t)}(e))return L(x(String(e)));if(!function(t){return!("[object Date]"!==I(t)||$&&"object"==typeof t&&$ in t)}(e)&&!function(t){return!("[object RegExp]"!==I(t)||$&&"object"==typeof t&&$ in t)}(e)){var Y=D(e,x),K=k?k(e)===Object.prototype:e instanceof Object||e.constructor===Object,J=e instanceof Object?"":"null prototype",X=!K&&$&&Object(e)===e&&$ in e?I(e).slice(8,-1):J?"Object":"",Z=(K||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(X||J?"["+[].concat(X||[],J||[]).join(": ")+"] ":"");return 0===Y.length?Z+"{}":b?Z+"{"+z(Y,b)+"}":Z+"{ "+Y.join(", ")+" }"}return String(e)};var T=Object.prototype.hasOwnProperty||function(t){return t in this};function P(t,e){return T.call(t,e)}function I(t){return v.call(t)}function R(t,e){if(t.indexOf)return t.indexOf(e);for(var n=0,r=t.length;n-1?t.split(","):t},u=function(t,e,n,r){if(t){var i=n.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t,a=/(\[[^[\]]*])/g,s=n.depth>0&&/(\[[^[\]]*])/.exec(i),u=s?i.slice(0,s.index):i,l=[];if(u){if(!n.plainObjects&&o.call(Object.prototype,u)&&!n.allowPrototypes)return;l.push(u)}for(var f=0;n.depth>0&&null!==(s=a.exec(i))&&f=0;--i){var a,s=t[i];if("[]"===s&&n.parseArrays)a=[].concat(o);else{a=n.plainObjects?Object.create(null):{};var u="["===s.charAt(0)&&"]"===s.charAt(s.length-1)?s.slice(1,-1):s,l=parseInt(u,10);n.parseArrays||""!==u?!isNaN(l)&&s!==u&&String(l)===u&&l>=0&&n.parseArrays&&l<=n.arrayLimit?(a=[])[l]=o:a[u]=o:a={0:o}}o=a}return o}(l,e,n,r)}};t.exports=function(t,e){var n=function(t){if(!t)return a;if(null!==t.decoder&&void 0!==t.decoder&&"function"!=typeof t.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==t.charset&&"utf-8"!==t.charset&&"iso-8859-1"!==t.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var e=void 0===t.charset?a.charset:t.charset;return{allowDots:void 0===t.allowDots?a.allowDots:!!t.allowDots,allowPrototypes:"boolean"==typeof t.allowPrototypes?t.allowPrototypes:a.allowPrototypes,allowSparse:"boolean"==typeof t.allowSparse?t.allowSparse:a.allowSparse,arrayLimit:"number"==typeof t.arrayLimit?t.arrayLimit:a.arrayLimit,charset:e,charsetSentinel:"boolean"==typeof t.charsetSentinel?t.charsetSentinel:a.charsetSentinel,comma:"boolean"==typeof t.comma?t.comma:a.comma,decoder:"function"==typeof t.decoder?t.decoder:a.decoder,delimiter:"string"==typeof t.delimiter||r.isRegExp(t.delimiter)?t.delimiter:a.delimiter,depth:"number"==typeof t.depth||!1===t.depth?+t.depth:a.depth,ignoreQueryPrefix:!0===t.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof t.interpretNumericEntities?t.interpretNumericEntities:a.interpretNumericEntities,parameterLimit:"number"==typeof t.parameterLimit?t.parameterLimit:a.parameterLimit,parseArrays:!1!==t.parseArrays,plainObjects:"boolean"==typeof t.plainObjects?t.plainObjects:a.plainObjects,strictNullHandling:"boolean"==typeof t.strictNullHandling?t.strictNullHandling:a.strictNullHandling}}(e);if(""===t||null==t)return n.plainObjects?Object.create(null):{};for(var l="string"==typeof t?function(t,e){var n,u={},l=e.ignoreQueryPrefix?t.replace(/^\?/,""):t,f=e.parameterLimit===1/0?void 0:e.parameterLimit,p=l.split(e.delimiter,f),d=-1,h=e.charset;if(e.charsetSentinel)for(n=0;n-1&&(m=i(m)?[m]:m),o.call(u,v)?u[v]=r.combine(u[v],m):u[v]=m}return u}(t,n):t,f=n.plainObjects?Object.create(null):{},p=Object.keys(l),d=0;d0?"in "+o:o+" ago":o}}}},function(t,e,n){var r=n(405);t.exports=function(){var t=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],e=["January","February","March","April","May","June","July","August","September","October","November","December"],n=["Su","Mo","Tu","We","Th","Fr","Sa"],o=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["AM","PM"],s=["am","pm"],c=["a.m.","p.m."],u={MMM:function(e){return t[e.getMonth()]},MMMM:function(t){return e[t.getMonth()]},dd:function(t){return n[t.getDay()]},ddd:function(t){return o[t.getDay()]},dddd:function(t){return i[t.getDay()]},A:function(t){return t.getHours()/12>=1?a[1]:a[0]},a:function(t){return t.getHours()/12>=1?s[1]:s[0]},aa:function(t){return t.getHours()/12>=1?c[1]:c[0]}};return["M","D","DDD","d","Q","W"].forEach((function(t){u[t+"o"]=function(e,n){return function(t){var e=t%100;if(e>20||e<10)switch(e%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"}(n[t](e))}})),{formatters:u,formattingTokensRegExp:r(u)}}},function(t,e){var n=["M","MM","Q","D","DD","DDD","DDDD","d","E","W","WW","YY","YYYY","GG","GGGG","H","HH","h","hh","m","mm","s","ss","S","SS","SSS","Z","ZZ","X","x"];t.exports=function(t){var e=[];for(var r in t)t.hasOwnProperty(r)&&e.push(r);var o=n.concat(e).sort().reverse();return new RegExp("(\\[[^\\[]*\\])|(\\\\)?("+o.join("|")+"|.)","g")}},function(t,e,n){"use strict";var r=n(16),o=n(210),i=n(407),a=n(216);function s(t){var e=new i(t),n=o(i.prototype.request,e);return r.extend(n,i.prototype,e),r.extend(n,e),n}var c=s(n(213));c.Axios=i,c.create=function(t){return s(a(c.defaults,t))},c.Cancel=n(217),c.CancelToken=n(420),c.isCancel=n(212),c.all=function(t){return Promise.all(t)},c.spread=n(421),c.isAxiosError=n(422),t.exports=c,t.exports.default=c},function(t,e,n){"use strict";var r=n(16),o=n(211),i=n(408),a=n(409),s=n(216);function c(t){this.defaults=t,this.interceptors={request:new i,response:new i}}c.prototype.request=function(t){"string"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=s(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var e=[a,void 0],n=Promise.resolve(t);for(this.interceptors.request.forEach((function(t){e.unshift(t.fulfilled,t.rejected)})),this.interceptors.response.forEach((function(t){e.push(t.fulfilled,t.rejected)}));e.length;)n=n.then(e.shift(),e.shift());return n},c.prototype.getUri=function(t){return t=s(this.defaults,t),o(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(t){c.prototype[t]=function(e,n){return this.request(s(n||{},{method:t,url:e,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function(t){c.prototype[t]=function(e,n,r){return this.request(s(r||{},{method:t,url:e,data:n}))}})),t.exports=c},function(t,e,n){"use strict";var r=n(16);function o(){this.handlers=[]}o.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},o.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},o.prototype.forEach=function(t){r.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=o},function(t,e,n){"use strict";var r=n(16),o=n(410),i=n(212),a=n(213);function s(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return s(t),t.headers=t.headers||{},t.data=o(t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||a.adapter)(t).then((function(e){return s(t),e.data=o(e.data,e.headers,t.transformResponse),e}),(function(e){return i(e)||(s(t),e&&e.response&&(e.response.data=o(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},function(t,e,n){"use strict";var r=n(16);t.exports=function(t,e,n){return r.forEach(n,(function(n){t=n(t,e)})),t}},function(t,e,n){"use strict";var r=n(16);t.exports=function(t,e){r.forEach(t,(function(n,r){r!==e&&r.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[r])}))}},function(t,e,n){"use strict";var r=n(215);t.exports=function(t,e,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?e(r("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)}},function(t,e,n){"use strict";t.exports=function(t,e,n,r,o){return t.config=e,n&&(t.code=n),t.request=r,t.response=o,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},function(t,e,n){"use strict";var r=n(16);t.exports=r.isStandardBrowserEnv()?{write:function(t,e,n,o,i,a){var s=[];s.push(t+"="+encodeURIComponent(e)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(o)&&s.push("path="+o),r.isString(i)&&s.push("domain="+i),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,n){"use strict";var r=n(416),o=n(417);t.exports=function(t,e){return t&&!r(e)?o(t,e):e}},function(t,e,n){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},function(t,e,n){"use strict";var r=n(16),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var e,n,i,a={};return t?(r.forEach(t.split("\n"),(function(t){if(i=t.indexOf(":"),e=r.trim(t.substr(0,i)).toLowerCase(),n=r.trim(t.substr(i+1)),e){if(a[e]&&o.indexOf(e)>=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([n]):a[e]?a[e]+", "+n:n}})),a):a}},function(t,e,n){"use strict";var r=n(16);t.exports=r.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=o(window.location.href),function(e){var n=r.isString(e)?o(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}},function(t,e,n){"use strict";var r=n(217);function o(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new r(t),e(n.reason))}))}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var t;return{token:new o((function(e){t=e})),cancel:t}},t.exports=o},function(t,e,n){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e,n){"use strict";t.exports=function(t){return"object"==typeof t&&!0===t.isAxiosError}},function(t,e,n){},function(t,e,n){"use strict";n(218)},function(t,e,n){},function(t,e,n){var r;function o(t){function n(){if(n.enabled){var t=n,o=+new Date,i=o-(r||o);t.diff=i,t.prev=r,t.curr=o,r=o;for(var a=new Array(arguments.length),s=0;s0)return function(t){if((t=String(t)).length>100)return;var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!e)return;var a=parseFloat(e[1]);switch((e[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"days":case"day":case"d":return a*i;case"hours":case"hour":case"hrs":case"hr":case"h":return a*o;case"minutes":case"minute":case"mins":case"min":case"m":return a*r;case"seconds":case"second":case"secs":case"sec":case"s":return a*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}(t);if("number"===c&&!1===isNaN(t))return e.long?a(s=t,i,"day")||a(s,o,"hour")||a(s,r,"minute")||a(s,n,"second")||s+" ms":function(t){if(t>=i)return Math.round(t/i)+"d";if(t>=o)return Math.round(t/o)+"h";if(t>=r)return Math.round(t/r)+"m";if(t>=n)return Math.round(t/n)+"s";return t+"ms"}(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},function(t,e,n){"use strict";n(221)},function(t,e,n){"use strict";n(222)},function(t,e,n){"use strict";n.r(e);n(139),n(243),n(252),n(254),n(18);function r(t,e,n,r,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(r,o)}function o(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var a=t.apply(e,n);function s(t){r(a,o,i,s,c,"next",t)}function c(t){r(a,o,i,s,c,"throw",t)}s(void 0)}))}}n(162),n(34),n(24),n(26),n(42),n(21);var i=n(0);function a(t,e){for(var n in e)t[n]=e[n];return t}var s=/[!'()*]/g,c=function(t){return"%"+t.charCodeAt(0).toString(16)},u=/%2C/g,l=function(t){return encodeURIComponent(t).replace(s,c).replace(u,",")};function f(t){try{return decodeURIComponent(t)}catch(t){0}return t}var p=function(t){return null==t||"object"==typeof t?t:String(t)};function d(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=f(n.shift()),o=n.length>0?f(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function h(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return l(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(l(e)):r.push(l(e)+"="+l(t)))})),r.join("&")}return l(e)+"="+l(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var v=/\/?$/;function m(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=g(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:w(e,o),matched:t?b(t):[]};return n&&(a.redirectedFrom=w(n,o)),Object.freeze(a)}function g(t){if(Array.isArray(t))return t.map(g);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=g(t[n]);return e}return t}var y=m(null,{path:"/"});function b(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function w(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;return void 0===o&&(o=""),(n||"/")+(e||h)(r)+o}function _(t,e,n){return e===y?t===e:!!e&&(t.path&&e.path?t.path.replace(v,"")===e.path.replace(v,"")&&(n||t.hash===e.hash&&x(t.query,e.query)):!(!t.name||!e.name)&&(t.name===e.name&&(n||t.hash===e.hash&&x(t.query,e.query)&&x(t.params,e.params))))}function x(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t).sort(),r=Object.keys(e).sort();return n.length===r.length&&n.every((function(n,o){var i=t[n];if(r[o]!==n)return!1;var a=e[n];return null==i||null==a?i===a:"object"==typeof i&&"object"==typeof a?x(i,a):String(i)===String(a)}))}function k(t){for(var e=0;e=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),l=e&&e.path||"/",f=u.path?$(u.path,l,n||o.append):l,h=function(t,e,n){void 0===e&&(e={});var r,o=n||d;try{r=o(t||"")}catch(t){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(p):p(a)}return r}(u.query,o.query,r&&r.options.parseQuery),v=o.hash||u.hash;return v&&"#"!==v.charAt(0)&&(v="#"+v),{_normalized:!0,path:f,query:h,hash:v}}var Q,G=function(){},Y={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,s=o.route,c=o.href,u={},l=n.options.linkActiveClass,f=n.options.linkExactActiveClass,p=null==l?"router-link-active":l,d=null==f?"router-link-exact-active":f,h=null==this.activeClass?p:this.activeClass,g=null==this.exactActiveClass?d:this.exactActiveClass,y=s.redirectedFrom?m(null,W(s.redirectedFrom),null,n):s;u[g]=_(r,y,this.exactPath),u[h]=this.exact||this.exactPath?u[g]:function(t,e){return 0===t.path.replace(v,"/").indexOf(e.path.replace(v,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,y);var b=u[g]?this.ariaCurrentValue:null,w=function(t){K(t)&&(e.replace?n.replace(i,G):n.push(i,G))},x={click:K};Array.isArray(this.event)?this.event.forEach((function(t){x[t]=w})):x[this.event]=w;var k={class:u},O=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:c,route:s,navigate:w,isActive:u[h],isExactActive:u[g]});if(O){if(1===O.length)return O[0];if(O.length>1||!O.length)return 0===O.length?t():t("span",{},O)}if("a"===this.tag)k.on=x,k.attrs={href:c,"aria-current":b};else{var S=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=H(l.path,s.params),c(l,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}var xt={redirected:2,aborted:4,cancelled:8,duplicated:16};function kt(t,e){return St(t,e,xt.redirected,'Redirected when going from "'+t.fullPath+'" to "'+function(t){if("string"==typeof t)return t;if("path"in t)return t.path;var e={};return $t.forEach((function(n){n in t&&(e[n]=t[n])})),JSON.stringify(e,null,2)}(e)+'" via a navigation guard.')}function Ot(t,e){return St(t,e,xt.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function St(t,e,n,r){var o=new Error(r);return o._isRouter=!0,o.from=t,o.to=e,o.type=n,o}var $t=["params","query","hash"];function Ct(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function At(t,e){return Ct(t)&&t._isRouter&&(null==e||t.type===e)}function jt(t){return function(e,n,r){var o=!1,i=0,a=null;Et(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var c,u=It((function(e){var o;((o=e).__esModule||Pt&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:Q.extend(e),n.components[s]=e,--i<=0&&r()})),l=It((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Ct(t)?t:new Error(e),r(a))}));try{c=t(u,l)}catch(t){l(t)}if(c)if("function"==typeof c.then)c.then(u,l);else{var f=c.component;f&&"function"==typeof f.then&&f.then(u,l)}}})),o||r()}}function Et(t,e){return Tt(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function Tt(t){return Array.prototype.concat.apply([],t)}var Pt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function It(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var Rt=function(t,e){this.router=t,this.base=function(t){if(!t)if(J){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=y,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Mt(t,e,n,r){var o=Et(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=Q.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return Tt(r?o.reverse():o)}function Lt(t,e){if(e)return function(){return t.apply(e,arguments)}}Rt.prototype.listen=function(t){this.cb=t},Rt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Rt.prototype.onError=function(t){this.errorCbs.push(t)},Rt.prototype.transitionTo=function(t,e,n){var r,o=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),e&&e(r),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!o.ready&&(At(t,xt.redirected)&&i===y||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},Rt.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current;this.pending=t;var i=function(t){!At(t)&&Ct(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},a=t.matched.length-1,s=o.matched.length-1;if(_(t,o)&&a===s&&t.matched[a]===o.matched[s])return this.ensureURL(),i(function(t,e){var n=St(t,e,xt.duplicated,'Avoided redundant navigation to current location: "'+t.fullPath+'".');return n.name="NavigationDuplicated",n}(o,t));var c=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=yt&&n;r&&this.listeners.push(ct());var o=function(){var n=t.current,o=Ft(t.base);t.current===y&&o===t._startLocation||t.transitionTo(o,(function(t){r&&ut(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){bt(C(r.base+t.fullPath)),ut(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){wt(C(r.base+t.fullPath)),ut(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(Ft(this.base)!==this.current.fullPath){var e=C(this.base+this.current.fullPath);t?bt(e):wt(e)}},e.prototype.getCurrentLocation=function(){return Ft(this.base)},e}(Rt);function Ft(t){var e=window.location.pathname,n=e.toLowerCase(),r=t.toLowerCase();return!t||n!==r&&0!==n.indexOf(C(r+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var zt=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=Ft(t);if(!/^\/#/.test(e))return window.location.replace(C(t+"/#"+e)),!0}(this.base)||Dt()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,n=yt&&e;n&&this.listeners.push(ct());var r=function(){var e=t.current;Dt()&&t.transitionTo(Ut(),(function(r){n&&ut(t.router,r,e,!0),yt||Vt(r.fullPath)}))},o=yt?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){qt(t.fullPath),ut(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Vt(t.fullPath),ut(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Ut()!==e&&(t?qt(e):Vt(e))},e.prototype.getCurrentLocation=function(){return Ut()},e}(Rt);function Dt(){var t=Ut();return"/"===t.charAt(0)||(Vt("/"+t),!1)}function Ut(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Bt(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function qt(t){yt?bt(Bt(t)):window.location.hash=t}function Vt(t){yt?wt(Bt(t)):window.location.replace(Bt(t))}var Ht=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){At(t,xt.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Rt),Wt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=tt(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!yt&&!1!==t.fallback,this.fallback&&(e="hash"),J||(e="abstract"),this.mode=e,e){case"history":this.history=new Nt(this,t.base);break;case"hash":this.history=new zt(this,t.base,this.fallback);break;case"abstract":this.history=new Ht(this,t.base);break;default:0}},Qt={currentRoute:{configurable:!0}};function Gt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Wt.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Qt.currentRoute.get=function(){return this.history&&this.history.current},Wt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof Nt||n instanceof zt){var r=function(t){n.setupListeners(),function(t){var r=n.current,o=e.options.scrollBehavior;yt&&o&&"fullPath"in t&&ut(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Wt.prototype.beforeEach=function(t){return Gt(this.beforeHooks,t)},Wt.prototype.beforeResolve=function(t){return Gt(this.resolveHooks,t)},Wt.prototype.afterEach=function(t){return Gt(this.afterHooks,t)},Wt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Wt.prototype.onError=function(t){this.history.onError(t)},Wt.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},Wt.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},Wt.prototype.go=function(t){this.history.go(t)},Wt.prototype.back=function(){this.go(-1)},Wt.prototype.forward=function(){this.go(1)},Wt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Wt.prototype.resolve=function(t,e,n){var r=W(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?C(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Wt.prototype.getRoutes=function(){return this.matcher.getRoutes()},Wt.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==y&&this.history.transitionTo(this.history.getCurrentLocation())},Wt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==y&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Wt.prototype,Qt),Wt.install=function t(e){if(!t.installed||Q!==e){t.installed=!0,Q=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",O),e.component("RouterLink",Y);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Wt.version="3.5.2",Wt.isNavigationFailure=At,Wt.NavigationFailureType=xt,Wt.START_LOCATION=y,J&&window.Vue&&window.Vue.use(Wt);var Yt=Wt;n(165),n(166),n(167),n(72),n(258),n(61),n(62),n(259);function Kt(t){t.locales&&Object.keys(t.locales).forEach((function(e){t.locales[e].path=e})),Object.freeze(t)}n(134);var Jt=n(52),Xt=(n(176),n(43),n(50),n(265),n(266),{NotFound:function(){return Promise.all([n.e(0),n.e(7)]).then(n.bind(null,521))},Category:function(){return Promise.all([n.e(0),n.e(1),n.e(6)]).then(n.bind(null,522))},Layout:function(){return Promise.all([n.e(0),n.e(1),n.e(3)]).then(n.bind(null,520))},Tag:function(){return Promise.all([n.e(0),n.e(1),n.e(4)]).then(n.bind(null,523))},Tags:function(){return Promise.all([n.e(0),n.e(1),n.e(5)]).then(n.bind(null,524))},TimeLines:function(){return Promise.all([n.e(0),n.e(1),n.e(9)]).then(n.bind(null,525))}}),Zt={"v-5a1b77a6":function(){return n.e(10).then(n.bind(null,526))},"v-7c364b8d":function(){return n.e(11).then(n.bind(null,527))},"v-30bc9f8d":function(){return n.e(13).then(n.bind(null,528))},"v-d2c6fb4a":function(){return n.e(14).then(n.bind(null,529))},"v-5c479aae":function(){return n.e(12).then(n.bind(null,530))}};function te(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var ee=/-(\w)/g,ne=te((function(t){return t.replace(ee,(function(t,e){return e?e.toUpperCase():""}))})),re=/\B([A-Z])/g,oe=te((function(t){return t.replace(re,"-$1").toLowerCase()})),ie=te((function(t){return t.charAt(0).toUpperCase()+t.slice(1)}));function ae(t,e){if(e)return t(e)?t(e):e.includes("-")?t(ie(ne(e))):t(ie(e))||t(oe(e))}var se=Object.assign({},Xt,Zt),ce=function(t){return se[t]},ue=function(t){return Zt[t]},le=function(t){return Xt[t]},fe=function(t){return i.default.component(t)};function pe(t){return ae(ue,t)}function de(t){return ae(le,t)}function he(t){return ae(ce,t)}function ve(t){return ae(fe,t)}function me(){for(var t=arguments.length,e=new Array(t),n=0;n"})).join("\n "):"",this.$ssrContext.canonicalLink=Oe(this.$canonicalUrl)}var e},mounted:function(){this.currentMetaTags=Object(Jt.a)(document.querySelectorAll("meta")),this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta:function(){document.title=this.$title,document.documentElement.lang=this.$lang;var t=this.getMergedMetaTags();this.currentMetaTags=Se(t,this.currentMetaTags)},getMergedMetaTags:function(){var t=this.$page.frontmatter.meta||[];return _e()([{name:"description",content:this.$description}],t,this.siteMeta,$e)},updateCanonicalLink:function(){ke(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",Oe(this.$canonicalUrl))}},watch:{$page:function(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy:function(){Se(null,this.currentMetaTags),ke()}};function ke(){var t=document.querySelector("link[rel='canonical']");t&&t.remove()}function Oe(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return t?''):""}function Se(t,e){if(e&&Object(Jt.a)(e).filter((function(t){return t.parentNode===document.head})).forEach((function(t){return document.head.removeChild(t)})),t)return t.map((function(t){var e=document.createElement("meta");return Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])})),document.head.appendChild(e),e}))}function $e(t){for(var e=0,n=["name","property","itemprop"];e=s.parentElement.offsetTop+10&&(!c||r1&&void 0!==arguments[1]?arguments[1]:{},r=window.Promise||function(t){function e(){}t(e,e)},o=function(t){var e=t.target;e!==S?-1!==b.indexOf(e)&&v({target:e}):h()},i=function(){if(!_&&O.original){var t=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(x-t)>k.scrollOffset&&setTimeout(h,150)}},a=function(t){var e=t.key||t.keyCode;"Escape"!==e&&"Esc"!==e&&27!==e||h()},s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t;if(t.background&&(S.style.background=t.background),t.container&&t.container instanceof Object&&(e.container=je({},k.container,t.container)),t.template){var n=Te(t.template)?t.template:document.querySelector(t.template);e.template=n}return k=je({},k,e),b.forEach((function(t){t.dispatchEvent(Le("medium-zoom:update",{detail:{zoom:$}}))})),$},c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(je({},k,e))},u=function(){for(var t=arguments.length,e=Array(t),n=0;n0?e.reduce((function(t,e){return[].concat(t,Ie(e))}),[]):b;return r.forEach((function(t){t.classList.remove("medium-zoom-image"),t.dispatchEvent(Le("medium-zoom:detach",{detail:{zoom:$}}))})),b=b.filter((function(t){return-1===r.indexOf(t)})),$},f=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.addEventListener("medium-zoom:"+t,e,n)})),w.push({type:"medium-zoom:"+t,listener:e,options:n}),$},p=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.removeEventListener("medium-zoom:"+t,e,n)})),w=w.filter((function(n){return!(n.type==="medium-zoom:"+t&&n.listener.toString()===e.toString())})),$},d=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.target,n=function(){var t={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},e=void 0,n=void 0;if(k.container)if(k.container instanceof Object)e=(t=je({},t,k.container)).width-t.left-t.right-2*k.margin,n=t.height-t.top-t.bottom-2*k.margin;else{var r=(Te(k.container)?k.container:document.querySelector(k.container)).getBoundingClientRect(),o=r.width,i=r.height,a=r.left,s=r.top;t=je({},t,{width:o,height:i,left:a,top:s})}e=e||t.width-2*k.margin,n=n||t.height-2*k.margin;var c=O.zoomedHd||O.original,u=Pe(c)?e:c.naturalWidth||e,l=Pe(c)?n:c.naturalHeight||n,f=c.getBoundingClientRect(),p=f.top,d=f.left,h=f.width,v=f.height,m=Math.min(u,e)/h,g=Math.min(l,n)/v,y=Math.min(m,g),b="scale("+y+") translate3d("+((e-h)/2-d+k.margin+t.left)/y+"px, "+((n-v)/2-p+k.margin+t.top)/y+"px, 0)";O.zoomed.style.transform=b,O.zoomedHd&&(O.zoomedHd.style.transform=b)};return new r((function(t){if(e&&-1===b.indexOf(e))t($);else{if(O.zoomed)t($);else{if(e)O.original=e;else{if(!(b.length>0))return void t($);var r=b;O.original=r[0]}if(O.original.dispatchEvent(Le("medium-zoom:open",{detail:{zoom:$}})),x=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,_=!0,O.zoomed=Me(O.original),document.body.appendChild(S),k.template){var o=Te(k.template)?k.template:document.querySelector(k.template);O.template=document.createElement("div"),O.template.appendChild(o.content.cloneNode(!0)),document.body.appendChild(O.template)}if(document.body.appendChild(O.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),O.original.classList.add("medium-zoom-image--hidden"),O.zoomed.classList.add("medium-zoom-image--opened"),O.zoomed.addEventListener("click",h),O.zoomed.addEventListener("transitionend",(function e(){_=!1,O.zoomed.removeEventListener("transitionend",e),O.original.dispatchEvent(Le("medium-zoom:opened",{detail:{zoom:$}})),t($)})),O.original.getAttribute("data-zoom-src")){O.zoomedHd=O.zoomed.cloneNode(),O.zoomedHd.removeAttribute("srcset"),O.zoomedHd.removeAttribute("sizes"),O.zoomedHd.src=O.zoomed.getAttribute("data-zoom-src"),O.zoomedHd.onerror=function(){clearInterval(i),console.warn("Unable to reach the zoom image target "+O.zoomedHd.src),O.zoomedHd=null,n()};var i=setInterval((function(){O.zoomedHd.complete&&(clearInterval(i),O.zoomedHd.classList.add("medium-zoom-image--opened"),O.zoomedHd.addEventListener("click",h),document.body.appendChild(O.zoomedHd),n())}),10)}else if(O.original.hasAttribute("srcset")){O.zoomedHd=O.zoomed.cloneNode(),O.zoomedHd.removeAttribute("sizes"),O.zoomedHd.removeAttribute("loading");var a=O.zoomedHd.addEventListener("load",(function(){O.zoomedHd.removeEventListener("load",a),O.zoomedHd.classList.add("medium-zoom-image--opened"),O.zoomedHd.addEventListener("click",h),document.body.appendChild(O.zoomedHd),n()}))}else n()}}}))},h=function(){return new r((function(t){if(!_&&O.original){_=!0,document.body.classList.remove("medium-zoom--opened"),O.zoomed.style.transform="",O.zoomedHd&&(O.zoomedHd.style.transform=""),O.template&&(O.template.style.transition="opacity 150ms",O.template.style.opacity=0),O.original.dispatchEvent(Le("medium-zoom:close",{detail:{zoom:$}})),O.zoomed.addEventListener("transitionend",(function e(){O.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(O.zoomed),O.zoomedHd&&document.body.removeChild(O.zoomedHd),document.body.removeChild(S),O.zoomed.classList.remove("medium-zoom-image--opened"),O.template&&document.body.removeChild(O.template),_=!1,O.zoomed.removeEventListener("transitionend",e),O.original.dispatchEvent(Le("medium-zoom:closed",{detail:{zoom:$}})),O.original=null,O.zoomed=null,O.zoomedHd=null,O.template=null,t($)}))}else t($)}))},v=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.target;return O.original?h():d({target:e})},m=function(){return k},g=function(){return b},y=function(){return O.original},b=[],w=[],_=!1,x=0,k=n,O={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(e)?k=e:(e||"string"==typeof e)&&u(e),k=je({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},k);var S=Re(k.background);document.addEventListener("click",o),document.addEventListener("keyup",a),document.addEventListener("scroll",i),window.addEventListener("resize",h);var $={open:d,close:h,toggle:v,update:s,clone:c,attach:u,detach:l,on:f,off:p,getOptions:m,getImages:g,getZoomedImage:y};return $},Fe={data:function(){return{zoom:null}},mounted:function(){this.updateZoom()},updated:function(){this.updateZoom()},methods:{updateZoom:function(){var t=this;setTimeout((function(){t.zoom&&t.zoom.detach(),t.zoom=Ne(".theme-reco-content :not(a) > img",void 0)}),1e3)}}},ze=(n(95),n(93)),De=n.n(ze),Ue={mounted:function(){var t=this;De.a.configure({showSpinner:!1}),this.$router.beforeEach((function(t,e,n){t.path===e.path||i.default.component(t.name)||De.a.start(),n()})),this.$router.afterEach((function(){De.a.done(),t.isSidebarOpen=!1}))}},Be=n(225),qe=n.n(Be),Ve=(n(363),[xe,Ae,Fe,Ue,{mounted:function(){qe.a.polyfill()}}]),He={name:"GlobalLayout",computed:{layout:function(){var t=this.getLayout();return ge("layout",t),i.default.component(t)}},methods:{getLayout:function(){if(this.$page.path){var t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}}},We=n(7),Qe=Object(We.a)(He,(function(){var t=this.$createElement;return(this._self._c||t)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(t,e,n){var r;switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),(r=t[e]).push.apply(r,Object(Jt.a)(n));break;default:throw new Error("Unknown option name.")}}(Qe,"mixins",Ve);var Ge=[{name:"v-5a1b77a6",path:"/2024/2024-03-22.html",component:Qe,beforeEnter:function(t,e,n){me("Layout","v-5a1b77a6").then(n)}},{name:"v-7c364b8d",path:"/2024/2024-03-29.html",component:Qe,beforeEnter:function(t,e,n){me("Layout","v-7c364b8d").then(n)}},{name:"v-30bc9f8d",path:"/about.html",component:Qe,beforeEnter:function(t,e,n){me("Layout","v-30bc9f8d").then(n)}},{name:"v-d2c6fb4a",path:"/menu.html",component:Qe,beforeEnter:function(t,e,n){me("Layout","v-d2c6fb4a").then(n)}},{name:"v-5c479aae",path:"/",component:Qe,beforeEnter:function(t,e,n){me("Layout","v-5c479aae").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-b1564aac",path:"/tag/",component:Qe,beforeEnter:function(t,e,n){me("Tags","v-b1564aac").then(n)},meta:{pid:"tags",id:"tags"}},{path:"/tag/index.html",redirect:"/tag/"},{name:"v-ef9325c4",path:"/categories/",component:Qe,beforeEnter:function(t,e,n){me("FrontmatterKey","v-ef9325c4").then(n)},meta:{pid:"categories",id:"categories"}},{path:"/categories/index.html",redirect:"/categories/"},{name:"v-6319eb4e",path:"/timeline/",component:Qe,beforeEnter:function(t,e,n){me("TimeLines","v-6319eb4e").then(n)},meta:{pid:"timeline",id:"timeline"}},{path:"/timeline/index.html",redirect:"/timeline/"},{path:"*",component:Qe}],Ye={title:"每周精选文章合集",description:"精选文章, 每周更新,每周热文,文章合集",base:"/",headTags:[["meta",{name:"viewport",content:"width=device-width,initial-scale=1,user-scalable=no"}],["meta",{name:"apple-mobile-web-app-capable",content:"yes"}],["meta",{name:"apple-mobile-web-app-status-bar-style",content:"black"}],["meta",{name:"keywords",content:"draven, blog, 前端, 技术博客, 德莱问"}],["script",{},'var _hmt = _hmt || [];\n (function() {\n var hm = document.createElement("script");\n hm.src = "https://hm.baidu.com/hm.js?f7e6799f17989e184072a05d38820494";\n var s = document.getElementsByTagName("script")[0]; \n s.parentNode.insertBefore(hm, s);\n })();']],pages:[{frontmatter:{},regularPath:"/2024/2024-03-22.html",relativePath:"2024/2024-03-22.md",key:"v-5a1b77a6",path:"/2024/2024-03-22.html",headers:[{level:2,title:"CSDN",slug:"csdn"},{level:3,title:"数据结构与算法",slug:"数据结构与算法"},{level:3,title:"javascript",slug:"javascript"},{level:3,title:"java",slug:"java"},{level:3,title:"php",slug:"php"},{level:3,title:"python",slug:"python"},{level:3,title:"运维",slug:"运维"},{level:3,title:"移动开发",slug:"移动开发"},{level:3,title:"c/c++",slug:"c-c"},{level:2,title:"掘金",slug:"掘金"},{level:3,title:"前端",slug:"前端"},{level:3,title:"前端-JavaScript",slug:"前端-javascript"},{level:3,title:"前端-Vue.js",slug:"前端-vue-js"},{level:3,title:"前端-面试",slug:"前端-面试"},{level:3,title:"前端-React.js",slug:"前端-react-js"},{level:3,title:"前端-Node.js",slug:"前端-node-js"},{level:3,title:"前端-CSS",slug:"前端-css"},{level:3,title:"前端-后端",slug:"前端-后端"},{level:3,title:"前端-TypeScript",slug:"前端-typescript"},{level:3,title:"前端-前端框架",slug:"前端-前端框架"},{level:3,title:"前端-GitHub",slug:"前端-github"},{level:3,title:"前端-Webpack",slug:"前端-webpack"},{level:3,title:"前端-NestJS",slug:"前端-nestjs"},{level:3,title:"前端-微信小程序",slug:"前端-微信小程序"},{level:3,title:"后端",slug:"后端"},{level:3,title:"Android",slug:"android"},{level:3,title:"IOS",slug:"ios"},{level:2,title:"GitHub",slug:"github"},{level:3,title:"javascript",slug:"javascript-2"},{level:3,title:"vue",slug:"vue"},{level:3,title:"typescript",slug:"typescript"},{level:3,title:"python",slug:"python-2"},{level:3,title:"go",slug:"go"},{level:3,title:"rust",slug:"rust"},{level:3,title:"object-c",slug:"object-c"},{level:3,title:"css",slug:"css"}]},{frontmatter:{},regularPath:"/2024/2024-03-29.html",relativePath:"2024/2024-03-29.md",key:"v-7c364b8d",path:"/2024/2024-03-29.html",headers:[{level:2,title:"CSDN",slug:"csdn"},{level:3,title:"数据结构与算法",slug:"数据结构与算法"},{level:3,title:"javascript",slug:"javascript"},{level:3,title:"java",slug:"java"},{level:3,title:"php",slug:"php"},{level:3,title:"python",slug:"python"},{level:3,title:"运维",slug:"运维"},{level:3,title:"移动开发",slug:"移动开发"},{level:3,title:"c/c++",slug:"c-c"},{level:2,title:"掘金",slug:"掘金"},{level:3,title:"前端",slug:"前端"},{level:3,title:"前端-JavaScript",slug:"前端-javascript"},{level:3,title:"前端-Vue.js",slug:"前端-vue-js"},{level:3,title:"前端-面试",slug:"前端-面试"},{level:3,title:"前端-React.js",slug:"前端-react-js"},{level:3,title:"前端-Node.js",slug:"前端-node-js"},{level:3,title:"前端-CSS",slug:"前端-css"},{level:3,title:"前端-后端",slug:"前端-后端"},{level:3,title:"前端-TypeScript",slug:"前端-typescript"},{level:3,title:"前端-前端框架",slug:"前端-前端框架"},{level:3,title:"前端-GitHub",slug:"前端-github"},{level:3,title:"前端-Webpack",slug:"前端-webpack"},{level:3,title:"前端-微信小程序",slug:"前端-微信小程序"},{level:3,title:"前端-NestJS",slug:"前端-nestjs"},{level:3,title:"后端",slug:"后端"},{level:3,title:"Android",slug:"android"},{level:3,title:"IOS",slug:"ios"},{level:2,title:"GitHub",slug:"github"},{level:3,title:"javascript",slug:"javascript-2"},{level:3,title:"vue",slug:"vue"},{level:3,title:"typescript",slug:"typescript"},{level:3,title:"python",slug:"python-2"},{level:3,title:"go",slug:"go"},{level:3,title:"rust",slug:"rust"},{level:3,title:"object-c",slug:"object-c"},{level:3,title:"css",slug:"css"}]},{title:"关于我",frontmatter:{title:"关于我"},regularPath:"/about.html",relativePath:"about.md",key:"v-30bc9f8d",path:"/about.html"},{title:"目录",frontmatter:{title:"目录"},regularPath:"/menu.html",relativePath:"menu.md",key:"v-d2c6fb4a",path:"/menu.html",headers:[{level:2,title:"2024",slug:"_2024"}]},{title:"Home",frontmatter:{home:!0,heroImage:"/hero.png",heroImageStyle:{maxHeight:"200px",maxWidth:"100%",display:"block",margin:"6rem auto 1.5rem",borderRadius:"5px",boxShadow:"0 5px 18px rgba(0,0,0,0.2)"},actionText:"开始 →",actionLink:"/menu",features:[{title:"质量优先",details:"各大技术社区每周精选优质文章"},{title:"文章合集",details:"收录历史精选文章,不再遗忘"},{title:"每周更新",details:"每周进行收集,发布"}]},regularPath:"/",relativePath:"README.md",key:"v-5c479aae",path:"/"},{frontmatter:{layout:"Tags",title:"Tags"},regularPath:"/tag/",key:"v-b1564aac",path:"/tag/"},{frontmatter:{layout:"FrontmatterKey",title:"Categories"},regularPath:"/categories/",key:"v-ef9325c4",path:"/categories/"},{frontmatter:{layout:"TimeLines",title:"Timeline"},regularPath:"/timeline/",key:"v-6319eb4e",path:"/timeline/"}],themeConfig:{author:"dravenwu",startYear:"2021",valineConfig:{appId:"j2HkS1t6CpVpw4mzhvpRyVQA-gzGzoHsz",appKey:"i5YI6RXIUCeVja0t1DQjphDI",meta:["nick","mail"],requiredFields:["mail"]},nav:[{text:"文章列表",link:"/menu.html",icon:"reco-menu"},{text:"关于我",link:"/about.html",icon:"reco-account"},{text:"掘金",link:"https://juejin.cn/user/1732486056921614",icon:"reco-juejin"},{text:"GitHub",link:"https://github.com/dravenww/curated-article",icon:"reco-github"},{text:"工程化模板",items:[{text:"vite|element-ui|Vue2",link:"https://github.com/tnfe/vite-vue2-pro"},{text:"vite|antd|react",link:"https://github.com/tnfe/vite-concent-pro"},{text:"webpack|react|concent",link:"https://github.com/tnfe/concent-pro"}],icon:"reco-github"}],displayAllHeaders:!0,sidebar:"auto",sidebarDepth:2}},Ke=(n(51),n(231),n(232),n(70),n(233),n(66)),Je={computed:{$recoPosts:function(){var t=this.$site.pages;return t=Object(Ke.a)(t,!1),Object(Ke.c)(t),t},$recoPostsForTimeline:function(){var t=this.$recoPosts,e={},n=[];t=Object(Ke.a)(t,!0),this.pages=0==t.length?[]:t;for(var r=0,o=t.length;r-1)&&([o,i].indexOf("auto")>-1&&a.length>0||[e,n].indexOf("auto")>-1&&a.length>0)}}};function Xe(t,e){t=function(t){var e=new Date(t).toJSON();return new Date(+new Date(e)+288e5).toISOString().replace(/T/g," ").replace(/\.[\d]{3}Z/,"").replace(/-/g,"/")}(t);var n=new Date(t),r=n.getFullYear(),o=n.getMonth()+1,i=n.getDate();return"year"==e?r:"".concat(o,"-").concat(i)}var Ze=n(8),tn={all:"全部",article:"文章",tag:"标签",category:"分类",friendLink:"友情链接",timeLine:"时间轴",timeLineMsg:"昨日重现!"},en={all:"全部",article:"文章",tag:"標簽",category:"分類",friendLink:"友情鏈接",timeLine:"時間軸",timeLineMsg:"昨日重現!"},nn={all:"All",article:"Articles",tag:"Tags",category:"Categories",friendLink:"Friend Links",timeLine:"TimeLine",timeLineMsg:"Yesterday Once More!"},rn={all:"全部",article:"文章",tag:"ラベル",category:"分類",friendLink:"友情リンク",timeLine:"タイムライン",timeLineMsg:"昨日また!"},on={all:"전체",article:"글",tag:"태그",category:"분류",friendLink:"링크 참조",timeLine:"타임 라인",timeLineMsg:"어제 또!"},an={all:"Todas",article:"Artículos",tag:"Etiquetas",category:"Categorías",friendLink:"Páginas amigas",timeLine:"Cronología",timeLineMsg:"¡Ayer otra vez!"},sn={computed:{$recoLocales:function(){var t=this.$themeLocaleConfig.recoLocales||{};return/^zh\-(CN|SG)$/.test(this.$lang)?Object(Ze.a)(Object(Ze.a)({},tn),t):/^zh\-(HK|MO|TW)$/.test(this.$lang)?Object(Ze.a)(Object(Ze.a)({},en),t):/^ja\-JP$/.test(this.$lang)?Object(Ze.a)(Object(Ze.a)({},rn),t):/^ko\-KR$/.test(this.$lang)?Object(Ze.a)(Object(Ze.a)({},on),t):/^es(\-[A-Z]+)?$/.test(this.$lang)?Object(Ze.a)(Object(Ze.a)({},an),t):Object(Ze.a)(Object(Ze.a)({},nn),t)}}},cn=n(27),un=n(71),ln=n(129);n(373);i.default.component("Badge",(function(){return Promise.all([n.e(0),n.e(8)]).then(n.bind(null,531))}));n(374);var fn={name:"BackToTop",data:function(){return{visible:!1,customStyle:{right:"1rem",bottom:"6rem",width:"2.5rem",height:"2.5rem","border-radius":".25rem","line-height":"2.5rem"},visibilityHeight:400}},mounted:function(){window.addEventListener("scroll",this.throttle(this.handleScroll,500))},beforeDestroy:function(){window.removeEventListener("scroll",this.throttle(this.handleScroll,500))},methods:{handleScroll:function(){this.visible=window.pageYOffset>this.visibilityHeight},backToTop:function(){window.scrollTo(0,0)},throttle:function(t,e){var n=null,r=Date.now();return function(){var o=Date.now(),i=e-(o-r),a=this,s=arguments;clearTimeout(n),i<=0?(t.apply(a,s),r=Date.now()):n=setTimeout(t,i)}}}},pn=(n(375),Object(We.a)(fn,(function(){var t=this.$createElement,e=this._self._c||t;return e("transition",{attrs:{name:"fade"}},[e("div",{directives:[{name:"show",rawName:"v-show",value:this.visible,expression:"visible"}],staticClass:"back-to-ceiling",style:this.customStyle,on:{click:this.backToTop}},[e("svg",{staticClass:"icon",attrs:{t:"1574745035067",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"5404"}},[e("path",{attrs:{d:"M526.60727968 10.90185116a27.675 27.675 0 0 0-29.21455937 0c-131.36607665 82.28402758-218.69155461 228.01873535-218.69155402 394.07834331a462.20625001 462.20625001 0 0 0 5.36959153 69.94390903c1.00431239 6.55289093-0.34802892 13.13561351-3.76865779 18.80351572-32.63518765 54.11355614-51.75690182 118.55860487-51.7569018 187.94566865a371.06718723 371.06718723 0 0 0 11.50484808 91.98906777c6.53300375 25.50556257 41.68394495 28.14064038 52.69160883 4.22606766 17.37162448-37.73630017 42.14135425-72.50938081 72.80769204-103.21549295 2.18761121 3.04276886 4.15646224 6.24463696 6.40373557 9.22774369a1871.4375 1871.4375 0 0 0 140.04691725 5.34970492 1866.36093723 1866.36093723 0 0 0 140.04691723-5.34970492c2.24727335-2.98310674 4.21612437-6.18497483 6.3937923-9.2178004 30.66633723 30.70611158 55.4360664 65.4791928 72.80769147 103.21549355 11.00766384 23.91457269 46.15860503 21.27949489 52.69160879-4.22606768a371.15156223 371.15156223 0 0 0 11.514792-91.99901164c0-69.36717486-19.13165746-133.82216804-51.75690182-187.92578088-3.42062944-5.66790279-4.76302748-12.26056868-3.76865837-18.80351632a462.20625001 462.20625001 0 0 0 5.36959269-69.943909c-0.00994388-166.08943902-87.32547796-311.81420293-218.6915546-394.09823051zM605.93803103 357.87693858a93.93749974 93.93749974 0 1 1-187.89594924 6.1e-7 93.93749974 93.93749974 0 0 1 187.89594924-6.1e-7z","p-id":"5405"}}),e("path",{attrs:{d:"M429.50777625 765.63860547C429.50777625 803.39355007 466.44236686 1000.39046097 512.00932183 1000.39046097c45.56695499 0 82.4922232-197.00623328 82.5015456-234.7518555 0-37.75494459-36.9345906-68.35043303-82.4922232-68.34111062-45.57627738-0.00932239-82.52019037 30.59548842-82.51086798 68.34111062z","p-id":"5406"}})])])])}),[],!1,null,"c6073ba8",null).exports),dn=(n(376),Object(We.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{attrs:{id:"loader-wrapper"}},[n("div",{staticClass:"loader-main"},t._l(4,(function(t){return n("div",{key:"out"+t})})),0),t._v(" "),t.$frontmatter.home?n("h3",{staticClass:"title"},[t._v(t._s(t.$site.title||t.$localeConfig.title))]):t._e(),t._v(" "),t.$frontmatter.home?n("p",{staticClass:"description"},[t._v(t._s(t.$site.description||t.$localeConfig.description))]):t._e()])}),[],!1,null,"d48f4d20",null).exports),hn=(n(377),n(229),{prev:"上一页",next:"下一页",go:"前往",jump:"跳转至"}),vn={prev:"上壹頁",next:"下壹頁",go:"前往",jump:"跳轉至"},mn={prev:"Prev",next:"Next",go:"Go",jump:"Jump To"},gn={prev:"前のページ",next:"次のページ",go:"へ",jump:"ジャンプ"},yn={prev:"이전 페이지",next:"다음 페이지",go:"행",jump:"건너뛰기"};var bn={data:function(){return{changePage:"",pageSize:10}},props:{total:{type:Number,default:10},perPage:{type:Number,default:10},currentPage:{type:Number,default:1}},computed:{pages:function(){var t=this.pageSize||this.perPage;return Math.ceil(this.total/t)},show:function(){return this.pages&&1!=this.pages},efont:function(){return!(this.pages<=7)&&this.currentPage>5},indexs:function(){var t=1,e=this.pages,n=[];for(this.pages>=7&&(this.currentPage>5&&this.currentPage1&&this.emit(--t)},goNext:function(){var t=this.currentPage;t0?this.emit(e):alert("请输入大于0,并且小于".concat(this.pages,"的页码!"))},emit:function(t){this.$emit("getCurrentPage",t)}}},wn=(n(379),Object(We.a)(bn,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{directives:[{name:"show",rawName:"v-show",value:t.show,expression:"show"}],staticClass:"pagation"},[n("div",{staticClass:"pagation-list"},[n("span",{directives:[{name:"show",rawName:"v-show",value:t.currentPage>1,expression:"currentPage > 1"}],staticClass:"jump",attrs:{unselectable:"on"},on:{click:t.goPrev}},[t._v(t._s(t.pagationLocales.prev))]),t._v(" "),n("span",{directives:[{name:"show",rawName:"v-show",value:t.efont,expression:"efont"}],staticClass:"jump",on:{click:function(e){return t.jumpPage(1)}}},[t._v("1")]),t._v(" "),n("span",{directives:[{name:"show",rawName:"v-show",value:t.efont,expression:"efont"}],staticClass:"ellipsis"},[t._v("...")]),t._v(" "),t._l(t.indexs,(function(e){return n("span",{key:e,staticClass:"jump",class:{bgprimary:t.currentPage==e},on:{click:function(n){return t.jumpPage(e)}}},[t._v(t._s(e))])})),t._v(" "),n("span",{directives:[{name:"show",rawName:"v-show",value:t.efont&&t.currentPageObject(In.stringify)(t),Mn=(t,e)=>`${t}${Object(In.stringify)(e,{addQueryPrefix:!0})}`,Ln=(t,e)=>`${t.replace(/\/$/,"")}/${e.replace(/^\//,"")}`;var Nn=n(226),Fn=n.n(Nn);const zn=t=>Fn()(t,"YYYY-MM-DD HH:mm:ss"),Dn=t=>(t.split("#")[0]||"").split("?")[0]||"",Un=t=>Object(In.parse)(t,{ignoreQueryPrefix:!0}) +var u=window.localStorage;u=function(t){var e="_Is_Incognit";try{t.setItem(e,"yes")}catch(e){if("QuotaExceededError"===e.name){var n=function(){};t.__proto__={setItem:n,getItem:n,removeItem:n,clear:n}}}finally{"yes"===t.getItem(e)&&t.removeItem(e)}return t}(u),s.prototype={set:function(t,e){if(t&&!r(t))u.setItem(t,function(t){return void 0===t||"function"==typeof t?t+"":JSON.stringify(t)}(e));else if(r(t))for(var n in t)this.set(n,t[n]);return this},get:function(t){if(!t){var e={};return this.forEach((function(t,n){return e[t]=n})),e}if("?"===t.charAt(0))return this.has(t.substr(1));var n=arguments;if(n.length>1){for(var r={},i=0,a=n.length;i-1&&(n[e[r]]=this.get(e[r]));return n}};var l=null;for(var f in s.prototype)c[f]=s.prototype[f];e.default=c},function(t,e,n){"use strict";var r=n(12),o=n(9),i=n(11),a=n(13),s=n(49),c=r(a());o(c,{getPolyfill:a,implementation:i,shim:s}),t.exports=c},function(t,e,n){"use strict";var r=n(1),o=r("%String%"),i=r("%TypeError%");t.exports=function(t){if("symbol"==typeof t)throw new i("Cannot convert a Symbol value to a string");return o(t)}},function(t,e,n){"use strict";var r=n(1)("%TypeError%");t.exports=function(t,e){if(null==t)throw new r(e||"Cannot call method on "+t);return t}},function(t,e,n){"use strict";var r=n(1),o=n(12),i=o(r("String.prototype.indexOf"));t.exports=function(t,e){var n=r(t,!!e);return"function"==typeof n&&i(t,".prototype.")?o(n):n}},function(t,e,n){"use strict";(function(e){var r=e.Symbol,o=n(48);t.exports=function(){return"function"==typeof r&&"function"==typeof Symbol&&"symbol"==typeof r("foo")&&"symbol"==typeof Symbol("bar")&&o()}}).call(e,n(14))},function(t,e,n){"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),n=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(e in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var r=Object.getOwnPropertySymbols(t);if(1!==r.length||r[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var o=Object.getOwnPropertyDescriptor(t,e);if(42!==o.value||!0!==o.enumerable)return!1}return!0}},function(t,e,n){"use strict";var r=n(9),o=n(13);t.exports=function(){var t=o();return r(String.prototype,{trim:t},{trim:function(){return String.prototype.trim!==t}}),t}},function(t,e,n){"use strict";(function(e){var n=function(){};if("production"!==e.env.NODE_ENV){var r=function(t,e){var n=arguments.length;e=new Array(n>1?n-1:0);for(var r=1;r2?o-2:0);for(var i=2;i";var y=function(t){var e=l.spaceIndex(t);if(-1===e)return{html:"",closing:"/"===t[t.length-2]};var n="/"===(t=l.trim(t.slice(e+1,-1)))[t.length-1];return n&&(t=l.trim(t.slice(0,-1))),{html:t,closing:n}}(c),b=n[a],w=u(y.html,(function(t,e){var n,o=-1!==l.indexOf(b,t);return r(n=s(a,t,e,o))?o?(e=p(a,t,e,h))?t+'="'+e+'"':t:r(n=f(a,t,e,o))?void 0:n:n}));return c="<"+a,w&&(c+=" "+w),y.closing&&(c+=" /"),c+">"}return r(m=i(a,c,g))?d(c):m}),d);return v&&(m=v.remove(m)),m},t.exports=o},function(t,e){t.exports={smile:"e3/2018new_weixioa02_org.png",lovely:"09/2018new_keai_org.png",happy:"1e/2018new_taikaixin_org.png",clap:"6e/2018new_guzhang_thumb.png",whee:"33/2018new_xixi_thumb.png",haha:"8f/2018new_haha_thumb.png","laugh and cry":"4a/2018new_xiaoku_thumb.png",wink:"43/2018new_jiyan_org.png",greddy:"fa/2018new_chanzui_org.png",awkward:"a3/2018new_heixian_thumb.png",sweat:"28/2018new_han_org.png","pick nose":"9a/2018new_wabi_thumb.png",hum:"7c/2018new_heng_thumb.png",angry:"f6/2018new_nu_thumb.png",grievance:"a5/2018new_weiqu_thumb.png",poor:"96/2018new_kelian_org.png",disappoint:"aa/2018new_shiwang_thumb.png",sad:"ee/2018new_beishang_org.png",tear:"6e/2018new_leimu_org.png","no way":"83/2018new_kuxiao_org.png",shy:"c1/2018new_haixiu_org.png",dirt:"10/2018new_wu_thumb.png","love you":"f6/2018new_aini_org.png",kiss:"2c/2018new_qinqin_thumb.png",amorousness:"9d/2018new_huaxin_org.png",longing:"c9/2018new_chongjing_org.png",desire:"3e/2018new_tianping_thumb.png","bad laugh":"4d/2018new_huaixiao_org.png",blackness:"9e/2018new_yinxian_org.png","laugh without word":"2d/2018new_xiaoerbuyu_org.png",titter:"71/2018new_touxiao_org.png",cool:"c4/2018new_ku_org.png","not easy":"aa/2018new_bingbujiandan_thumb.png",think:"30/2018new_sikao_org.png",question:"b8/2018new_ningwen_org.png","no idea":"2a/2018new_wenhao_thumb.png",dizzy:"07/2018new_yun_thumb.png",bomb:"a2/2018new_shuai_thumb.png",bone:"a1/2018new_kulou_thumb.png","be quiet":"b0/2018new_xu_org.png","shut up":"62/2018new_bizui_org.png",stupid:"dd/2018new_shayan_org.png","surprise ":"49/2018new_chijing_org.png",vomit:"08/2018new_tu_org.png",cold:"40/2018new_kouzhao_thumb.png",sick:"3b/2018new_shengbing_thumb.png",bye:"fd/2018new_baibai_thumb.png","look down on":"da/2018new_bishi_org.png","white eye":"ef/2018new_landelini_org.png","left hum":"43/2018new_zuohengheng_thumb.png","right hum":"c1/2018new_youhengheng_thumb.png",crazy:"17/2018new_zhuakuang_org.png","scold ":"87/2018new_zhouma_thumb.png","hit on face":"cb/2018new_dalian_org.png",wow:"ae/2018new_ding_org.png",fan:"86/2018new_hufen02_org.png",money:"a2/2018new_qian_thumb.png",yawn:"55/2018new_dahaqian_org.png",sleepy:"3c/2018new_kun_thumb.png",sleep:"e2/2018new_shuijiao_thumb.png","watermelon ":"01/2018new_chigua_thumb.png",doge:"a1/2018new_doge02_org.png",dog:"22/2018new_erha_org.png",cat:"7b/2018new_miaomiao_thumb.png",thumb:"e6/2018new_zan_org.png",good:"8a/2018new_good_org.png",ok:"45/2018new_ok_org.png",yeah:"29/2018new_ye_thumb.png","shack hand":"e9/2018new_woshou_thumb.png",bow:"e7/2018new_zuoyi_org.png",come:"42/2018new_guolai_thumb.png",punch:"86/2018new_quantou_thumb.png"}},function(t,e){t.exports={nick:"NickName",mail:"E-Mail",link:"Website(http://)",nickFail:"NickName cannot be less than 3 bytes.",mailFail:"Please confirm your email address.",sofa:"No comment yet.",submit:"Submit",reply:"Reply",cancelReply:"Cancel reply",comments:"Comments",cancel:"Cancel",confirm:"Confirm",continue:"Continue",more:"Load More...",preview:"Preview",emoji:"Emoji",expand:"See more....",seconds:"seconds ago",minutes:"minutes ago",hours:"hours ago",days:"days ago",now:"just now",uploading:"Uploading ...",uploadDone:"Upload completed!",busy:"Submit is busy, please wait...","code-98":"Valine initialization failed, please check your version of av-min.js.","code-99":"Valine initialization failed, Please check the `el` element in the init method.","code-100":"Valine initialization failed, Please check your appId and appKey.","code-140":"The total number of API calls today has exceeded the development version limit.","code-401":"Unauthorized operation, Please check your appId and appKey.","code-403":"Access denied by API domain white list, Please check your security domain."}},function(t,e){t.exports={nick:"ニックネーム",mail:"メールアドレス",link:"サイト(http://)",nickFail:"3バイト以上のニックネームをご入力ください.",mailFail:"メールアドレスをご確認ください.",sofa:"コメントしましょう~",submit:"提出する",reply:"返信する",cancelReply:"キャンセル",comments:"コメント",cancel:"キャンセル",confirm:"確認する",continue:"继续",more:"さらに読み込む...",preview:"プレビュー",emoji:"絵文字",expand:"もっと見る",seconds:"秒前",minutes:"分前",hours:"時間前",days:"日前",now:"たっだ今",uploading:"アップロード中...",uploadDone:"アップロードが完了しました!",busy:"20 秒間隔で提出してください ...","code-98":"ロードエラーです。av-min.js のバージョンを確認してください.","code-99":"ロードエラーです。initにある`el`エレメントを確認ください.","code-100":"ロードエラーです。AppIdとAppKeyを確認ください.","code-140":"今日のAPIコールの総数が開発バージョンの上限を超えた.","code-401":"権限が制限されています。AppIdとAppKeyを確認ください.","code-403":"アクセスがAPIなどに制限されました、ドメイン名のセキュリティ設定を確認ください"}},function(t,e){t.exports={nick:"昵称",mail:"邮箱",link:"网址(http://)",nickFail:"昵称不能少于3个字符",mailFail:"请填写正确的邮件地址",sofa:"来发评论吧~",submit:"提交",reply:"回复",cancelReply:"取消回复",comments:"评论",cancel:"取消",confirm:"确认",continue:"继续",more:"加载更多...",preview:"预览",emoji:"表情",expand:"查看更多...",seconds:"秒前",minutes:"分钟前",hours:"小时前",days:"天前",now:"刚刚",uploading:"正在传输...",uploadDone:"传输完成!",busy:"操作频繁,请稍候再试...","code-98":"Valine 初始化失败,请检查 av-min.js 版本","code-99":"Valine 初始化失败,请检查init中的`el`元素.","code-100":"Valine 初始化失败,请检查你的AppId和AppKey.","code-140":"今日 API 调用总次数已超过开发版限制.","code-401":"未经授权的操作,请检查你的AppId和AppKey.","code-403":"访问被API域名白名单拒绝,请检查你的安全域名设置."}},function(t,e){t.exports={nick:"暱稱",mail:"郵箱",link:"網址(http://)",nickFail:"昵稱不能少於3個字符",mailFail:"請填寫正確的郵件地址",sofa:"來發評論吧~",submit:"提交",reply:"回覆",cancelReply:"取消回覆",comments:"評論",cancel:"取消",confirm:"確認",continue:"繼續",more:"加載更多...",preview:"預覽",emoji:"表情",expand:"查看更多...",seconds:"秒前",minutes:"分鐘前",hours:"小時前",days:"天前",now:"剛剛",uploading:"正在上傳...",uploadDone:"上傳完成!",busy:"操作頻繁,請稍候再試...","code-98":"Valine 初始化失敗,請檢查 av-min.js 版本","code-99":"Valine 初始化失敗,請檢查init中的`el`元素.","code-100":"Valine 初始化失敗,請檢查你的AppId和AppKey.","code-140":"今日 API 調用總次數已超過開發版限制.","code-401":"未經授權的操作,請檢查你的AppId和AppKey.","code-403":"訪問被API域名白名單拒絕,請檢查你的安全域名設置."}},function(t,e,n){var r=n(59);"string"==typeof r&&(r=[[t.i,r,""]]);var o={transform:void 0};n(61)(r,o),r.locals&&(t.exports=r.locals)},function(t,e,n){(t.exports=n(60)(!1)).push([t.i,'.v[data-class=v]{font-size:16px;text-align:left}.v[data-class=v] *{-webkit-box-sizing:border-box;box-sizing:border-box;line-height:1.75}.v[data-class=v] .status-bar,.v[data-class=v] .veditor,.v[data-class=v] .vinput,.v[data-class=v] p,.v[data-class=v] pre code{color:#555}.v[data-class=v] .vsys,.v[data-class=v] .vtime{color:#b3b3b3}.v[data-class=v] .text-right{text-align:right}.v[data-class=v] .text-center{text-align:center}.v[data-class=v] img{max-width:100%;border:none}.v[data-class=v] hr{margin:.825em 0;border-color:#f6f6f6;border-style:dashed}.v[data-class=v].hide-avatar .vimg{display:none}.v[data-class=v] a{position:relative;cursor:pointer;color:#1abc9c;text-decoration:none;display:inline-block}.v[data-class=v] a:hover{color:#d7191a}.v[data-class=v] code,.v[data-class=v] pre{background-color:#f8f8f8;padding:.2em .4em;border-radius:3px;font-size:85%;margin:0}.v[data-class=v] pre{padding:10px;overflow:auto;line-height:1.45}.v[data-class=v] pre code{padding:0;background:transparent;white-space:pre-wrap;word-break:keep-all}.v[data-class=v] blockquote{color:#666;margin:.5em 0;padding:0 0 0 1em;border-left:8px solid hsla(0,0%,93%,.5)}.v[data-class=v] .vinput{border:none;resize:none;outline:none;padding:10px 5px;max-width:100%;font-size:.775em}.v[data-class=v] input[type=checkbox],.v[data-class=v] input[type=radio]{display:inline-block;vertical-align:middle;margin-top:-2px}.v[data-class=v] .vicon{cursor:pointer;display:inline-block;overflow:hidden;fill:#555;vertical-align:middle}.v[data-class=v] .vicon+.vicon{margin-left:10px}.v[data-class=v] .vicon.actived{fill:#66b1ff}.v[data-class=v] .vrow{font-size:0;padding:10px 0}.v[data-class=v] .vrow .vcol{display:inline-block;vertical-align:middle;font-size:14px}.v[data-class=v] .vrow .vcol.vcol-20{width:20%}.v[data-class=v] .vrow .vcol.vcol-30{width:30%}.v[data-class=v] .vrow .vcol.vcol-40{width:40%}.v[data-class=v] .vrow .vcol.vcol-50{width:50%}.v[data-class=v] .vrow .vcol.vcol-60{width:60%}.v[data-class=v] .vrow .vcol.vcol-70{width:70%}.v[data-class=v] .vrow .vcol.vcol-80{width:80%}.v[data-class=v] .vrow .vcol.vctrl{font-size:12px}.v[data-class=v] .emoji,.v[data-class=v] .vemoji{max-width:25px;vertical-align:middle;margin:0 1px;display:inline-block}.v[data-class=v] .vwrap{border:1px solid #f0f0f0;border-radius:4px;margin-bottom:10px;overflow:hidden;position:relative;padding:10px}.v[data-class=v] .vwrap input{background:transparent}.v[data-class=v] .vwrap .vedit{position:relative;padding-top:10px}.v[data-class=v] .vwrap .cancel-reply-btn{position:absolute;right:5px;top:5px;cursor:pointer}.v[data-class=v] .vwrap .vemojis{display:none;font-size:18px;max-height:145px;overflow:auto;padding-bottom:10px;-webkit-box-shadow:0 0 1px #f0f0f0;box-shadow:0 0 1px #f0f0f0}.v[data-class=v] .vwrap .vemojis i{font-style:normal;padding-top:7px;width:36px;cursor:pointer;text-align:center;display:inline-block;vertical-align:middle}.v[data-class=v] .vwrap .vpreview{padding:7px;-webkit-box-shadow:0 0 1px #f0f0f0;box-shadow:0 0 1px #f0f0f0}.v[data-class=v] .vwrap .vheader .vinput{width:33.33%;border-bottom:1px dashed #dedede}.v[data-class=v] .vwrap .vheader.item2 .vinput{width:50%}.v[data-class=v] .vwrap .vheader.item1 .vinput{width:100%}.v[data-class=v] .vwrap .vheader .vinput:focus{border-bottom-color:#eb5055}@media screen and (max-width:520px){.v[data-class=v] .vwrap .vheader.item2 .vinput,.v[data-class=v] .vwrap .vheader .vinput{width:100%}}.v[data-class=v] .vpower{color:#999;font-size:.75em;padding:.5em 0}.v[data-class=v] .vpower a{font-size:.75em}.v[data-class=v] .vcount{padding:5px;font-weight:600;font-size:1.25em}.v[data-class=v] ol,.v[data-class=v] ul{padding:0;margin-left:1.25em}.v[data-class=v] .txt-center{text-align:center}.v[data-class=v] .txt-right{text-align:right}.v[data-class=v] .pd5{padding:5px}.v[data-class=v] .pd10{padding:10px}.v[data-class=v] .veditor{width:100%;min-height:8.75em;font-size:.875em;background:transparent;resize:vertical;-webkit-transition:all .25s ease;transition:all .25s ease}.v[data-class=v] .vbtn{-webkit-transition-duration:.4s;transition-duration:.4s;text-align:center;color:#555;border:1px solid #ededed;border-radius:.3em;display:inline-block;background:transparent;margin-bottom:0;font-weight:400;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;white-space:nowrap;padding:.5em 1.25em;font-size:.875em;line-height:1.42857143;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none}.v[data-class=v] .vbtn+.vbtn{margin-left:1.25em}.v[data-class=v] .vbtn:active,.v[data-class=v] .vbtn:hover{color:#3090e4;border-color:#3090e4}.v[data-class=v] .vbtn:disabled{border-color:#e1e1e1;color:#e1e1e1;background-color:#fdfafa;cursor:not-allowed}.v[data-class=v] .vempty{padding:1.25em;text-align:center;color:#555;overflow:auto}.v[data-class=v] .vsys{display:inline-block;padding:.2em .5em;font-size:.75em;border-radius:.2em;margin-right:.3em}@media screen and (max-width:520px){.v[data-class=v] .vsys{display:none}}.v[data-class=v] .vcards{width:100%}.v[data-class=v] .vcards .vcard{padding-top:1.25em;position:relative;display:block}.v[data-class=v] .vcards .vcard:after{content:"";clear:both;display:block}.v[data-class=v] .vcards .vcard .vimg{width:3.125em;height:3.125em;float:left;border-radius:50%;margin-right:.7525em;border:1px solid #f5f5f5;padding:.125em}@media screen and (max-width:720px){.v[data-class=v] .vcards .vcard .vimg{width:2.5em;height:2.5em}}.v[data-class=v] .vcards .vcard .vhead{line-height:1.5;margin-top:0}.v[data-class=v] .vcards .vcard .vhead .vnick{position:relative;font-size:.875em;font-weight:500;margin-right:.875em;cursor:pointer;text-decoration:none;display:inline-block}.v[data-class=v] .vcards .vcard .vhead .vnick:hover{color:#d7191a}.v[data-class=v] .vcards .vcard .vh{overflow:hidden;padding-bottom:.5em;border-bottom:1px dashed #f5f5f5}.v[data-class=v] .vcards .vcard .vh .vtime{font-size:.75em;margin-right:.875em}.v[data-class=v] .vcards .vcard .vh .vmeta{line-height:1;position:relative}.v[data-class=v] .vcards .vcard .vh .vmeta .vat{font-size:.8125em;color:#ef2f11;cursor:pointer;float:right}.v[data-class=v] .vcards .vcard:last-child .vh{border-bottom:none}.v[data-class=v] .vcards .vcard .vcontent{word-wrap:break-word;word-break:break-all;font-size:.875em;line-height:2;position:relative;margin-bottom:.75em;padding-top:.625em}.v[data-class=v] .vcards .vcard .vcontent.expand{cursor:pointer;max-height:8em;overflow:hidden}.v[data-class=v] .vcards .vcard .vcontent.expand:before{display:block;content:"";position:absolute;width:100%;left:0;top:0;bottom:3.15em;background:-webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,0)),to(hsla(0,0%,100%,.9)));background:linear-gradient(180deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.9));z-index:999}.v[data-class=v] .vcards .vcard .vcontent.expand:after{display:block;content:attr(data-expand);text-align:center;color:#828586;position:absolute;width:100%;height:3.15em;line-height:3.15em;left:0;bottom:0;z-index:999;background:hsla(0,0%,100%,.9)}.v[data-class=v] .vcards .vcard .vquote{padding-left:1em;border-left:1px dashed hsla(0,0%,93%,.5)}.v[data-class=v] .vcards .vcard .vquote .vimg{width:2.225em;height:2.225em}.v[data-class=v] .vpage .vmore{margin:1em 0}.v[data-class=v] .clear{content:"";display:block;clear:both}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes pulse{50%{background:#dcdcdc}}@keyframes pulse{50%{background:#dcdcdc}}.v[data-class=v] .vspinner{width:22px;height:22px;display:inline-block;border:6px double #a0a0a0;border-top-color:transparent;border-bottom-color:transparent;border-radius:50%;-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear;position:relative;vertical-align:middle;margin:0 5px}.dark .v[data-class=v] .status-bar,.dark .v[data-class=v] .veditor,.dark .v[data-class=v] .vinput,.dark .v[data-class=v] p,.dark .v[data-class=v] pre code,.night .v[data-class=v] .status-bar,.night .v[data-class=v] .veditor,.night .v[data-class=v] .vinput,.night .v[data-class=v] p,.night .v[data-class=v] pre code,.theme__dark .v[data-class=v] .status-bar,.theme__dark .v[data-class=v] .veditor,.theme__dark .v[data-class=v] .vinput,.theme__dark .v[data-class=v] p,.theme__dark .v[data-class=v] pre code,[data-theme=dark] .v[data-class=v] .status-bar,[data-theme=dark] .v[data-class=v] .veditor,[data-theme=dark] .v[data-class=v] .vinput,[data-theme=dark] .v[data-class=v] p,[data-theme=dark] .v[data-class=v] pre code{color:#b2b2b5}.dark .v[data-class=v] .vsys,.dark .v[data-class=v] .vtime,.night .v[data-class=v] .vsys,.night .v[data-class=v] .vtime,.theme__dark .v[data-class=v] .vsys,.theme__dark .v[data-class=v] .vtime,[data-theme=dark] .v[data-class=v] .vsys,[data-theme=dark] .v[data-class=v] .vtime{color:#929298}.dark .v[data-class=v] code,.dark .v[data-class=v] pre,.dark .v[data-class=v] pre code,.night .v[data-class=v] code,.night .v[data-class=v] pre,.night .v[data-class=v] pre code,.theme__dark .v[data-class=v] code,.theme__dark .v[data-class=v] pre,.theme__dark .v[data-class=v] pre code,[data-theme=dark] .v[data-class=v] code,[data-theme=dark] .v[data-class=v] pre,[data-theme=dark] .v[data-class=v] pre code{color:#929298;background-color:#151414}.dark .v[data-class=v] .vwrap,.night .v[data-class=v] .vwrap,.theme__dark .v[data-class=v] .vwrap,[data-theme=dark] .v[data-class=v] .vwrap{border-color:#b2b2b5}.dark .v[data-class=v] .vicon,.night .v[data-class=v] .vicon,.theme__dark .v[data-class=v] .vicon,[data-theme=dark] .v[data-class=v] .vicon{fill:#b2b2b5}.dark .v[data-class=v] .vicon.actived,.night .v[data-class=v] .vicon.actived,.theme__dark .v[data-class=v] .vicon.actived,[data-theme=dark] .v[data-class=v] .vicon.actived{fill:#66b1ff}.dark .v[data-class=v] .vbtn,.night .v[data-class=v] .vbtn,.theme__dark .v[data-class=v] .vbtn,[data-theme=dark] .v[data-class=v] .vbtn{color:#b2b2b5;border-color:#b2b2b5}.dark .v[data-class=v] .vbtn:hover,.night .v[data-class=v] .vbtn:hover,.theme__dark .v[data-class=v] .vbtn:hover,[data-theme=dark] .v[data-class=v] .vbtn:hover{color:#66b1ff;border-color:#66b1ff}.dark .v[data-class=v] a:hover,.night .v[data-class=v] a:hover,.theme__dark .v[data-class=v] a:hover,[data-theme=dark] .v[data-class=v] a:hover{color:#d7191a}.dark .v[data-class=v] .vcards .vcard .vcontent.expand:before,.night .v[data-class=v] .vcards .vcard .vcontent.expand:before,.theme__dark .v[data-class=v] .vcards .vcard .vcontent.expand:before,[data-theme=dark] .v[data-class=v] .vcards .vcard .vcontent.expand:before{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.7)));background:linear-gradient(180deg,rgba(0,0,0,.3),rgba(0,0,0,.7))}.dark .v[data-class=v] .vcards .vcard .vcontent.expand:after,.night .v[data-class=v] .vcards .vcard .vcontent.expand:after,.theme__dark .v[data-class=v] .vcards .vcard .vcontent.expand:after,[data-theme=dark] .v[data-class=v] .vcards .vcard .vcontent.expand:after{background:rgba(0,0,0,.7)}@media (prefers-color-scheme:dark){.v[data-class=v] .status-bar,.v[data-class=v] .veditor,.v[data-class=v] .vinput,.v[data-class=v] p,.v[data-class=v] pre code{color:#b2b2b5}.v[data-class=v] .vsys,.v[data-class=v] .vtime{color:#929298}.v[data-class=v] code,.v[data-class=v] pre,.v[data-class=v] pre code{color:#929298;background-color:#151414}.v[data-class=v] .vwrap{border-color:#b2b2b5}.v[data-class=v] .vicon{fill:#b2b2b5}.v[data-class=v] .vicon.actived{fill:#66b1ff}.v[data-class=v] .vbtn{color:#b2b2b5;border-color:#b2b2b5}.v[data-class=v] .vbtn:hover{color:#66b1ff;border-color:#66b1ff}.v[data-class=v] a:hover{color:#d7191a}.v[data-class=v] .vcards .vcard .vcontent.expand:before{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.7)));background:linear-gradient(180deg,rgba(0,0,0,.3),rgba(0,0,0,.7))}.v[data-class=v] .vcards .vcard .vcontent.expand:after{background:rgba(0,0,0,.7)}}',""])},function(t,e){function n(t,e){var n=t[1]||"",r=t[3];if(!r)return n;if(e&&"function"==typeof btoa){var o=function(t){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+" */"}(r);return[n].concat(r.sources.map((function(t){return"/*# sourceURL="+r.sourceRoot+t+" */"}))).concat([o]).join("\n")}return[n].join("\n")}t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var r=n(e,t);return e[2]?"@media "+e[2]+"{"+r+"}":r})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},o=0;o=0&&b.splice(e,1)}function s(t){var e=document.createElement("style");return t.attrs.type="text/css",u(e,t.attrs),i(t,e),e}function c(t){var e=document.createElement("link");return t.attrs.type="text/css",t.attrs.rel="stylesheet",u(e,t.attrs),i(t,e),e}function u(t,e){Object.keys(e).forEach((function(n){t.setAttribute(n,e[n])}))}function l(t,e){var n,r,o,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var u=y++;n=g||(g=s(e)),r=f.bind(null,n,u,!1),o=f.bind(null,n,u,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=c(e),r=d.bind(null,n,e),o=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=s(e),r=p.bind(null,n),o=function(){a(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else o()}}function f(t,e,n,r){var o=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=_(e,o);else{var i=document.createTextNode(o),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function p(t,e){var n=e.css,r=e.media;if(r&&t.setAttribute("media",r),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function d(t,e,n){var r=n.css,o=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&o;(e.convertToAbsoluteUrls||i)&&(r=w(r)),o&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var a=new Blob([r],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}var h={},v=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}((function(){return window&&document&&document.all&&!window.atob})),m=function(t){var e={};return function(n){return void 0===e[n]&&(e[n]=t.call(this,n)),e[n]}}((function(t){return document.querySelector(t)})),g=null,y=0,b=[],w=n(62);t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||(e.singleton=v()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=o(t,e);return r(n,e),function(t){for(var i=[],a=0;a0?x.join(",")||null:void 0}];else if(c(f))k=f;else{var S=Object.keys(x);k=p?S.sort(p):S}for(var $=0;$0?w+b:""}},function(t,e,n){"use strict";var r=n(125),o=n(388),i=n(390),a=r("%TypeError%"),s=r("%WeakMap%",!0),c=r("%Map%",!0),u=o("WeakMap.prototype.get",!0),l=o("WeakMap.prototype.set",!0),f=o("WeakMap.prototype.has",!0),p=o("Map.prototype.get",!0),d=o("Map.prototype.set",!0),h=o("Map.prototype.has",!0),v=function(t,e){for(var n,r=t;null!==(n=r.next);r=n)if(n.key===e)return r.next=n.next,n.next=t.next,t.next=n,n};t.exports=function(){var t,e,n,r={assert:function(t){if(!r.has(t))throw new a("Side channel does not contain "+i(t))},get:function(r){if(s&&r&&("object"==typeof r||"function"==typeof r)){if(t)return u(t,r)}else if(c){if(e)return p(e,r)}else if(n)return function(t,e){var n=v(t,e);return n&&n.value}(n,r)},has:function(r){if(s&&r&&("object"==typeof r||"function"==typeof r)){if(t)return f(t,r)}else if(c){if(e)return h(e,r)}else if(n)return function(t,e){return!!v(t,e)}(n,r);return!1},set:function(r,o){s&&r&&("object"==typeof r||"function"==typeof r)?(t||(t=new s),l(t,r,o)):c?(e||(e=new c),d(e,r,o)):(n||(n={key:{},next:null}),function(t,e,n){var r=v(t,e);r?r.value=n:t.next={key:e,next:t.next,value:n}}(n,r,o))}};return r}},function(t,e,n){"use strict";var r="undefined"!=typeof Symbol&&Symbol,o=n(385);t.exports=function(){return"function"==typeof r&&("function"==typeof Symbol&&("symbol"==typeof r("foo")&&("symbol"==typeof Symbol("bar")&&o())))}},function(t,e,n){"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),n=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(e in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var r=Object.getOwnPropertySymbols(t);if(1!==r.length||r[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var o=Object.getOwnPropertyDescriptor(t,e);if(42!==o.value||!0!==o.enumerable)return!1}return!0}},function(t,e,n){"use strict";var r="Function.prototype.bind called on incompatible ",o=Array.prototype.slice,i=Object.prototype.toString;t.exports=function(t){var e=this;if("function"!=typeof e||"[object Function]"!==i.call(e))throw new TypeError(r+e);for(var n,a=o.call(arguments,1),s=function(){if(this instanceof n){var r=e.apply(this,a.concat(o.call(arguments)));return Object(r)===r?r:this}return e.apply(t,a.concat(o.call(arguments)))},c=Math.max(0,e.length-a.length),u=[],l=0;l-1?o(n):n}},function(t,e,n){"use strict";var r=n(126),o=n(125),i=o("%Function.prototype.apply%"),a=o("%Function.prototype.call%"),s=o("%Reflect.apply%",!0)||r.call(a,i),c=o("%Object.getOwnPropertyDescriptor%",!0),u=o("%Object.defineProperty%",!0),l=o("%Math.max%");if(u)try{u({},"a",{value:1})}catch(t){u=null}t.exports=function(t){var e=s(r,a,arguments);if(c&&u){var n=c(e,"length");n.configurable&&u(e,"length",{value:1+l(0,t.length-(arguments.length-1))})}return e};var f=function(){return s(r,i,arguments)};u?u(t.exports,"apply",{value:f}):t.exports.apply=f},function(t,e,n){var r="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=r&&o&&"function"==typeof o.get?o.get:null,a=r&&Map.prototype.forEach,s="function"==typeof Set&&Set.prototype,c=Object.getOwnPropertyDescriptor&&s?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,u=s&&c&&"function"==typeof c.get?c.get:null,l=s&&Set.prototype.forEach,f="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,p="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,d="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,h=Boolean.prototype.valueOf,v=Object.prototype.toString,m=Function.prototype.toString,g=String.prototype.match,y="function"==typeof BigInt?BigInt.prototype.valueOf:null,b=Object.getOwnPropertySymbols,w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,_="function"==typeof Symbol&&"object"==typeof Symbol.iterator,x=Object.prototype.propertyIsEnumerable,k=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null),O=n(391).custom,S=O&&E(O)?O:null,$="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function C(t,e,n){var r="double"===(n.quoteStyle||e)?'"':"'";return r+t+r}function A(t){return String(t).replace(/"/g,""")}function j(t){return!("[object Array]"!==I(t)||$&&"object"==typeof t&&$ in t)}function E(t){if(_)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!w)return!1;try{return w.call(t),!0}catch(t){}return!1}t.exports=function t(e,n,r,o){var s=n||{};if(P(s,"quoteStyle")&&"single"!==s.quoteStyle&&"double"!==s.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(P(s,"maxStringLength")&&("number"==typeof s.maxStringLength?s.maxStringLength<0&&s.maxStringLength!==1/0:null!==s.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var c=!P(s,"customInspect")||s.customInspect;if("boolean"!=typeof c&&"symbol"!==c)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(P(s,"indent")&&null!==s.indent&&"\t"!==s.indent&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return function t(e,n){if(e.length>n.maxStringLength){var r=e.length-n.maxStringLength,o="... "+r+" more character"+(r>1?"s":"");return t(e.slice(0,n.maxStringLength),n)+o}return C(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,M),"single",n)}(e,s);if("number"==typeof e)return 0===e?1/0/e>0?"0":"-0":String(e);if("bigint"==typeof e)return String(e)+"n";var v=void 0===s.depth?5:s.depth;if(void 0===r&&(r=0),r>=v&&v>0&&"object"==typeof e)return j(e)?"[Array]":"[Object]";var b=function(t,e){var n;if("\t"===t.indent)n="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;n=Array(t.indent+1).join(" ")}return{base:n,prev:Array(e+1).join(n)}}(s,r);if(void 0===o)o=[];else if(R(o,e)>=0)return"[Circular]";function x(e,n,i){if(n&&(o=o.slice()).push(n),i){var a={depth:s.depth};return P(s,"quoteStyle")&&(a.quoteStyle=s.quoteStyle),t(e,a,r+1,o)}return t(e,s,r+1,o)}if("function"==typeof e){var O=function(t){if(t.name)return t.name;var e=g.call(m.call(t),/^function\s*([\w$]+)/);if(e)return e[1];return null}(e),T=D(e,x);return"[Function"+(O?": "+O:" (anonymous)")+"]"+(T.length>0?" { "+T.join(", ")+" }":"")}if(E(e)){var U=_?String(e).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):w.call(e);return"object"!=typeof e||_?U:L(U)}if(function(t){if(!t||"object"!=typeof t)return!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement)return!0;return"string"==typeof t.nodeName&&"function"==typeof t.getAttribute}(e)){for(var B="<"+String(e.nodeName).toLowerCase(),q=e.attributes||[],V=0;V"}if(j(e)){if(0===e.length)return"[]";var H=D(e,x);return b&&!function(t){for(var e=0;e=0)return!1;return!0}(H)?"["+z(H,b)+"]":"[ "+H.join(", ")+" ]"}if(function(t){return!("[object Error]"!==I(t)||$&&"object"==typeof t&&$ in t)}(e)){var W=D(e,x);return 0===W.length?"["+String(e)+"]":"{ ["+String(e)+"] "+W.join(", ")+" }"}if("object"==typeof e&&c){if(S&&"function"==typeof e[S])return e[S]();if("symbol"!==c&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!i||!t||"object"!=typeof t)return!1;try{i.call(t);try{u.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var Q=[];return a.call(e,(function(t,n){Q.push(x(n,e,!0)+" => "+x(t,e))})),F("Map",i.call(e),Q,b)}if(function(t){if(!u||!t||"object"!=typeof t)return!1;try{u.call(t);try{i.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var G=[];return l.call(e,(function(t){G.push(x(t,e))})),F("Set",u.call(e),G,b)}if(function(t){if(!f||!t||"object"!=typeof t)return!1;try{f.call(t,f);try{p.call(t,p)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return N("WeakMap");if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{p.call(t,p);try{f.call(t,f)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return N("WeakSet");if(function(t){if(!d||!t||"object"!=typeof t)return!1;try{return d.call(t),!0}catch(t){}return!1}(e))return N("WeakRef");if(function(t){return!("[object Number]"!==I(t)||$&&"object"==typeof t&&$ in t)}(e))return L(x(Number(e)));if(function(t){if(!t||"object"!=typeof t||!y)return!1;try{return y.call(t),!0}catch(t){}return!1}(e))return L(x(y.call(e)));if(function(t){return!("[object Boolean]"!==I(t)||$&&"object"==typeof t&&$ in t)}(e))return L(h.call(e));if(function(t){return!("[object String]"!==I(t)||$&&"object"==typeof t&&$ in t)}(e))return L(x(String(e)));if(!function(t){return!("[object Date]"!==I(t)||$&&"object"==typeof t&&$ in t)}(e)&&!function(t){return!("[object RegExp]"!==I(t)||$&&"object"==typeof t&&$ in t)}(e)){var Y=D(e,x),K=k?k(e)===Object.prototype:e instanceof Object||e.constructor===Object,J=e instanceof Object?"":"null prototype",X=!K&&$&&Object(e)===e&&$ in e?I(e).slice(8,-1):J?"Object":"",Z=(K||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(X||J?"["+[].concat(X||[],J||[]).join(": ")+"] ":"");return 0===Y.length?Z+"{}":b?Z+"{"+z(Y,b)+"}":Z+"{ "+Y.join(", ")+" }"}return String(e)};var T=Object.prototype.hasOwnProperty||function(t){return t in this};function P(t,e){return T.call(t,e)}function I(t){return v.call(t)}function R(t,e){if(t.indexOf)return t.indexOf(e);for(var n=0,r=t.length;n-1?t.split(","):t},u=function(t,e,n,r){if(t){var i=n.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t,a=/(\[[^[\]]*])/g,s=n.depth>0&&/(\[[^[\]]*])/.exec(i),u=s?i.slice(0,s.index):i,l=[];if(u){if(!n.plainObjects&&o.call(Object.prototype,u)&&!n.allowPrototypes)return;l.push(u)}for(var f=0;n.depth>0&&null!==(s=a.exec(i))&&f=0;--i){var a,s=t[i];if("[]"===s&&n.parseArrays)a=[].concat(o);else{a=n.plainObjects?Object.create(null):{};var u="["===s.charAt(0)&&"]"===s.charAt(s.length-1)?s.slice(1,-1):s,l=parseInt(u,10);n.parseArrays||""!==u?!isNaN(l)&&s!==u&&String(l)===u&&l>=0&&n.parseArrays&&l<=n.arrayLimit?(a=[])[l]=o:a[u]=o:a={0:o}}o=a}return o}(l,e,n,r)}};t.exports=function(t,e){var n=function(t){if(!t)return a;if(null!==t.decoder&&void 0!==t.decoder&&"function"!=typeof t.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==t.charset&&"utf-8"!==t.charset&&"iso-8859-1"!==t.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var e=void 0===t.charset?a.charset:t.charset;return{allowDots:void 0===t.allowDots?a.allowDots:!!t.allowDots,allowPrototypes:"boolean"==typeof t.allowPrototypes?t.allowPrototypes:a.allowPrototypes,allowSparse:"boolean"==typeof t.allowSparse?t.allowSparse:a.allowSparse,arrayLimit:"number"==typeof t.arrayLimit?t.arrayLimit:a.arrayLimit,charset:e,charsetSentinel:"boolean"==typeof t.charsetSentinel?t.charsetSentinel:a.charsetSentinel,comma:"boolean"==typeof t.comma?t.comma:a.comma,decoder:"function"==typeof t.decoder?t.decoder:a.decoder,delimiter:"string"==typeof t.delimiter||r.isRegExp(t.delimiter)?t.delimiter:a.delimiter,depth:"number"==typeof t.depth||!1===t.depth?+t.depth:a.depth,ignoreQueryPrefix:!0===t.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof t.interpretNumericEntities?t.interpretNumericEntities:a.interpretNumericEntities,parameterLimit:"number"==typeof t.parameterLimit?t.parameterLimit:a.parameterLimit,parseArrays:!1!==t.parseArrays,plainObjects:"boolean"==typeof t.plainObjects?t.plainObjects:a.plainObjects,strictNullHandling:"boolean"==typeof t.strictNullHandling?t.strictNullHandling:a.strictNullHandling}}(e);if(""===t||null==t)return n.plainObjects?Object.create(null):{};for(var l="string"==typeof t?function(t,e){var n,u={},l=e.ignoreQueryPrefix?t.replace(/^\?/,""):t,f=e.parameterLimit===1/0?void 0:e.parameterLimit,p=l.split(e.delimiter,f),d=-1,h=e.charset;if(e.charsetSentinel)for(n=0;n-1&&(m=i(m)?[m]:m),o.call(u,v)?u[v]=r.combine(u[v],m):u[v]=m}return u}(t,n):t,f=n.plainObjects?Object.create(null):{},p=Object.keys(l),d=0;d0?"in "+o:o+" ago":o}}}},function(t,e,n){var r=n(405);t.exports=function(){var t=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],e=["January","February","March","April","May","June","July","August","September","October","November","December"],n=["Su","Mo","Tu","We","Th","Fr","Sa"],o=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["AM","PM"],s=["am","pm"],c=["a.m.","p.m."],u={MMM:function(e){return t[e.getMonth()]},MMMM:function(t){return e[t.getMonth()]},dd:function(t){return n[t.getDay()]},ddd:function(t){return o[t.getDay()]},dddd:function(t){return i[t.getDay()]},A:function(t){return t.getHours()/12>=1?a[1]:a[0]},a:function(t){return t.getHours()/12>=1?s[1]:s[0]},aa:function(t){return t.getHours()/12>=1?c[1]:c[0]}};return["M","D","DDD","d","Q","W"].forEach((function(t){u[t+"o"]=function(e,n){return function(t){var e=t%100;if(e>20||e<10)switch(e%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"}(n[t](e))}})),{formatters:u,formattingTokensRegExp:r(u)}}},function(t,e){var n=["M","MM","Q","D","DD","DDD","DDDD","d","E","W","WW","YY","YYYY","GG","GGGG","H","HH","h","hh","m","mm","s","ss","S","SS","SSS","Z","ZZ","X","x"];t.exports=function(t){var e=[];for(var r in t)t.hasOwnProperty(r)&&e.push(r);var o=n.concat(e).sort().reverse();return new RegExp("(\\[[^\\[]*\\])|(\\\\)?("+o.join("|")+"|.)","g")}},function(t,e,n){"use strict";var r=n(16),o=n(210),i=n(407),a=n(216);function s(t){var e=new i(t),n=o(i.prototype.request,e);return r.extend(n,i.prototype,e),r.extend(n,e),n}var c=s(n(213));c.Axios=i,c.create=function(t){return s(a(c.defaults,t))},c.Cancel=n(217),c.CancelToken=n(420),c.isCancel=n(212),c.all=function(t){return Promise.all(t)},c.spread=n(421),c.isAxiosError=n(422),t.exports=c,t.exports.default=c},function(t,e,n){"use strict";var r=n(16),o=n(211),i=n(408),a=n(409),s=n(216);function c(t){this.defaults=t,this.interceptors={request:new i,response:new i}}c.prototype.request=function(t){"string"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=s(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var e=[a,void 0],n=Promise.resolve(t);for(this.interceptors.request.forEach((function(t){e.unshift(t.fulfilled,t.rejected)})),this.interceptors.response.forEach((function(t){e.push(t.fulfilled,t.rejected)}));e.length;)n=n.then(e.shift(),e.shift());return n},c.prototype.getUri=function(t){return t=s(this.defaults,t),o(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(t){c.prototype[t]=function(e,n){return this.request(s(n||{},{method:t,url:e,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function(t){c.prototype[t]=function(e,n,r){return this.request(s(r||{},{method:t,url:e,data:n}))}})),t.exports=c},function(t,e,n){"use strict";var r=n(16);function o(){this.handlers=[]}o.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},o.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},o.prototype.forEach=function(t){r.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=o},function(t,e,n){"use strict";var r=n(16),o=n(410),i=n(212),a=n(213);function s(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return s(t),t.headers=t.headers||{},t.data=o(t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||a.adapter)(t).then((function(e){return s(t),e.data=o(e.data,e.headers,t.transformResponse),e}),(function(e){return i(e)||(s(t),e&&e.response&&(e.response.data=o(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},function(t,e,n){"use strict";var r=n(16);t.exports=function(t,e,n){return r.forEach(n,(function(n){t=n(t,e)})),t}},function(t,e,n){"use strict";var r=n(16);t.exports=function(t,e){r.forEach(t,(function(n,r){r!==e&&r.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[r])}))}},function(t,e,n){"use strict";var r=n(215);t.exports=function(t,e,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?e(r("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)}},function(t,e,n){"use strict";t.exports=function(t,e,n,r,o){return t.config=e,n&&(t.code=n),t.request=r,t.response=o,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},function(t,e,n){"use strict";var r=n(16);t.exports=r.isStandardBrowserEnv()?{write:function(t,e,n,o,i,a){var s=[];s.push(t+"="+encodeURIComponent(e)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(o)&&s.push("path="+o),r.isString(i)&&s.push("domain="+i),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,n){"use strict";var r=n(416),o=n(417);t.exports=function(t,e){return t&&!r(e)?o(t,e):e}},function(t,e,n){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},function(t,e,n){"use strict";var r=n(16),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var e,n,i,a={};return t?(r.forEach(t.split("\n"),(function(t){if(i=t.indexOf(":"),e=r.trim(t.substr(0,i)).toLowerCase(),n=r.trim(t.substr(i+1)),e){if(a[e]&&o.indexOf(e)>=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([n]):a[e]?a[e]+", "+n:n}})),a):a}},function(t,e,n){"use strict";var r=n(16);t.exports=r.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=o(window.location.href),function(e){var n=r.isString(e)?o(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}},function(t,e,n){"use strict";var r=n(217);function o(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new r(t),e(n.reason))}))}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var t;return{token:new o((function(e){t=e})),cancel:t}},t.exports=o},function(t,e,n){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e,n){"use strict";t.exports=function(t){return"object"==typeof t&&!0===t.isAxiosError}},function(t,e,n){},function(t,e,n){"use strict";n(218)},function(t,e,n){},function(t,e,n){var r;function o(t){function n(){if(n.enabled){var t=n,o=+new Date,i=o-(r||o);t.diff=i,t.prev=r,t.curr=o,r=o;for(var a=new Array(arguments.length),s=0;s0)return function(t){if((t=String(t)).length>100)return;var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!e)return;var a=parseFloat(e[1]);switch((e[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"days":case"day":case"d":return a*i;case"hours":case"hour":case"hrs":case"hr":case"h":return a*o;case"minutes":case"minute":case"mins":case"min":case"m":return a*r;case"seconds":case"second":case"secs":case"sec":case"s":return a*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}(t);if("number"===c&&!1===isNaN(t))return e.long?a(s=t,i,"day")||a(s,o,"hour")||a(s,r,"minute")||a(s,n,"second")||s+" ms":function(t){if(t>=i)return Math.round(t/i)+"d";if(t>=o)return Math.round(t/o)+"h";if(t>=r)return Math.round(t/r)+"m";if(t>=n)return Math.round(t/n)+"s";return t+"ms"}(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},function(t,e,n){"use strict";n(221)},function(t,e,n){"use strict";n(222)},function(t,e,n){"use strict";n.r(e);n(139),n(243),n(252),n(254),n(18);function r(t,e,n,r,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(r,o)}function o(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var a=t.apply(e,n);function s(t){r(a,o,i,s,c,"next",t)}function c(t){r(a,o,i,s,c,"throw",t)}s(void 0)}))}}n(162),n(34),n(24),n(26),n(42),n(21);var i=n(0);function a(t,e){for(var n in e)t[n]=e[n];return t}var s=/[!'()*]/g,c=function(t){return"%"+t.charCodeAt(0).toString(16)},u=/%2C/g,l=function(t){return encodeURIComponent(t).replace(s,c).replace(u,",")};function f(t){try{return decodeURIComponent(t)}catch(t){0}return t}var p=function(t){return null==t||"object"==typeof t?t:String(t)};function d(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=f(n.shift()),o=n.length>0?f(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function h(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return l(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(l(e)):r.push(l(e)+"="+l(t)))})),r.join("&")}return l(e)+"="+l(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var v=/\/?$/;function m(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=g(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:w(e,o),matched:t?b(t):[]};return n&&(a.redirectedFrom=w(n,o)),Object.freeze(a)}function g(t){if(Array.isArray(t))return t.map(g);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=g(t[n]);return e}return t}var y=m(null,{path:"/"});function b(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function w(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;return void 0===o&&(o=""),(n||"/")+(e||h)(r)+o}function _(t,e,n){return e===y?t===e:!!e&&(t.path&&e.path?t.path.replace(v,"")===e.path.replace(v,"")&&(n||t.hash===e.hash&&x(t.query,e.query)):!(!t.name||!e.name)&&(t.name===e.name&&(n||t.hash===e.hash&&x(t.query,e.query)&&x(t.params,e.params))))}function x(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t).sort(),r=Object.keys(e).sort();return n.length===r.length&&n.every((function(n,o){var i=t[n];if(r[o]!==n)return!1;var a=e[n];return null==i||null==a?i===a:"object"==typeof i&&"object"==typeof a?x(i,a):String(i)===String(a)}))}function k(t){for(var e=0;e=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),l=e&&e.path||"/",f=u.path?$(u.path,l,n||o.append):l,h=function(t,e,n){void 0===e&&(e={});var r,o=n||d;try{r=o(t||"")}catch(t){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(p):p(a)}return r}(u.query,o.query,r&&r.options.parseQuery),v=o.hash||u.hash;return v&&"#"!==v.charAt(0)&&(v="#"+v),{_normalized:!0,path:f,query:h,hash:v}}var Q,G=function(){},Y={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,s=o.route,c=o.href,u={},l=n.options.linkActiveClass,f=n.options.linkExactActiveClass,p=null==l?"router-link-active":l,d=null==f?"router-link-exact-active":f,h=null==this.activeClass?p:this.activeClass,g=null==this.exactActiveClass?d:this.exactActiveClass,y=s.redirectedFrom?m(null,W(s.redirectedFrom),null,n):s;u[g]=_(r,y,this.exactPath),u[h]=this.exact||this.exactPath?u[g]:function(t,e){return 0===t.path.replace(v,"/").indexOf(e.path.replace(v,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,y);var b=u[g]?this.ariaCurrentValue:null,w=function(t){K(t)&&(e.replace?n.replace(i,G):n.push(i,G))},x={click:K};Array.isArray(this.event)?this.event.forEach((function(t){x[t]=w})):x[this.event]=w;var k={class:u},O=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:c,route:s,navigate:w,isActive:u[h],isExactActive:u[g]});if(O){if(1===O.length)return O[0];if(O.length>1||!O.length)return 0===O.length?t():t("span",{},O)}if("a"===this.tag)k.on=x,k.attrs={href:c,"aria-current":b};else{var S=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=H(l.path,s.params),c(l,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}var xt={redirected:2,aborted:4,cancelled:8,duplicated:16};function kt(t,e){return St(t,e,xt.redirected,'Redirected when going from "'+t.fullPath+'" to "'+function(t){if("string"==typeof t)return t;if("path"in t)return t.path;var e={};return $t.forEach((function(n){n in t&&(e[n]=t[n])})),JSON.stringify(e,null,2)}(e)+'" via a navigation guard.')}function Ot(t,e){return St(t,e,xt.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function St(t,e,n,r){var o=new Error(r);return o._isRouter=!0,o.from=t,o.to=e,o.type=n,o}var $t=["params","query","hash"];function Ct(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function At(t,e){return Ct(t)&&t._isRouter&&(null==e||t.type===e)}function jt(t){return function(e,n,r){var o=!1,i=0,a=null;Et(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var c,u=It((function(e){var o;((o=e).__esModule||Pt&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:Q.extend(e),n.components[s]=e,--i<=0&&r()})),l=It((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Ct(t)?t:new Error(e),r(a))}));try{c=t(u,l)}catch(t){l(t)}if(c)if("function"==typeof c.then)c.then(u,l);else{var f=c.component;f&&"function"==typeof f.then&&f.then(u,l)}}})),o||r()}}function Et(t,e){return Tt(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function Tt(t){return Array.prototype.concat.apply([],t)}var Pt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function It(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var Rt=function(t,e){this.router=t,this.base=function(t){if(!t)if(J){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=y,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Mt(t,e,n,r){var o=Et(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=Q.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return Tt(r?o.reverse():o)}function Lt(t,e){if(e)return function(){return t.apply(e,arguments)}}Rt.prototype.listen=function(t){this.cb=t},Rt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Rt.prototype.onError=function(t){this.errorCbs.push(t)},Rt.prototype.transitionTo=function(t,e,n){var r,o=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),e&&e(r),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!o.ready&&(At(t,xt.redirected)&&i===y||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},Rt.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current;this.pending=t;var i=function(t){!At(t)&&Ct(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},a=t.matched.length-1,s=o.matched.length-1;if(_(t,o)&&a===s&&t.matched[a]===o.matched[s])return this.ensureURL(),i(function(t,e){var n=St(t,e,xt.duplicated,'Avoided redundant navigation to current location: "'+t.fullPath+'".');return n.name="NavigationDuplicated",n}(o,t));var c=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=yt&&n;r&&this.listeners.push(ct());var o=function(){var n=t.current,o=Ft(t.base);t.current===y&&o===t._startLocation||t.transitionTo(o,(function(t){r&&ut(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){bt(C(r.base+t.fullPath)),ut(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){wt(C(r.base+t.fullPath)),ut(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(Ft(this.base)!==this.current.fullPath){var e=C(this.base+this.current.fullPath);t?bt(e):wt(e)}},e.prototype.getCurrentLocation=function(){return Ft(this.base)},e}(Rt);function Ft(t){var e=window.location.pathname,n=e.toLowerCase(),r=t.toLowerCase();return!t||n!==r&&0!==n.indexOf(C(r+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var zt=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=Ft(t);if(!/^\/#/.test(e))return window.location.replace(C(t+"/#"+e)),!0}(this.base)||Dt()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,n=yt&&e;n&&this.listeners.push(ct());var r=function(){var e=t.current;Dt()&&t.transitionTo(Ut(),(function(r){n&&ut(t.router,r,e,!0),yt||Vt(r.fullPath)}))},o=yt?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){qt(t.fullPath),ut(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Vt(t.fullPath),ut(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Ut()!==e&&(t?qt(e):Vt(e))},e.prototype.getCurrentLocation=function(){return Ut()},e}(Rt);function Dt(){var t=Ut();return"/"===t.charAt(0)||(Vt("/"+t),!1)}function Ut(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Bt(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function qt(t){yt?bt(Bt(t)):window.location.hash=t}function Vt(t){yt?wt(Bt(t)):window.location.replace(Bt(t))}var Ht=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){At(t,xt.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Rt),Wt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=tt(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!yt&&!1!==t.fallback,this.fallback&&(e="hash"),J||(e="abstract"),this.mode=e,e){case"history":this.history=new Nt(this,t.base);break;case"hash":this.history=new zt(this,t.base,this.fallback);break;case"abstract":this.history=new Ht(this,t.base);break;default:0}},Qt={currentRoute:{configurable:!0}};function Gt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Wt.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Qt.currentRoute.get=function(){return this.history&&this.history.current},Wt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof Nt||n instanceof zt){var r=function(t){n.setupListeners(),function(t){var r=n.current,o=e.options.scrollBehavior;yt&&o&&"fullPath"in t&&ut(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Wt.prototype.beforeEach=function(t){return Gt(this.beforeHooks,t)},Wt.prototype.beforeResolve=function(t){return Gt(this.resolveHooks,t)},Wt.prototype.afterEach=function(t){return Gt(this.afterHooks,t)},Wt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Wt.prototype.onError=function(t){this.history.onError(t)},Wt.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},Wt.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},Wt.prototype.go=function(t){this.history.go(t)},Wt.prototype.back=function(){this.go(-1)},Wt.prototype.forward=function(){this.go(1)},Wt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Wt.prototype.resolve=function(t,e,n){var r=W(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?C(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Wt.prototype.getRoutes=function(){return this.matcher.getRoutes()},Wt.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==y&&this.history.transitionTo(this.history.getCurrentLocation())},Wt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==y&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Wt.prototype,Qt),Wt.install=function t(e){if(!t.installed||Q!==e){t.installed=!0,Q=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",O),e.component("RouterLink",Y);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Wt.version="3.5.2",Wt.isNavigationFailure=At,Wt.NavigationFailureType=xt,Wt.START_LOCATION=y,J&&window.Vue&&window.Vue.use(Wt);var Yt=Wt;n(165),n(166),n(167),n(72),n(258),n(61),n(62),n(259);function Kt(t){t.locales&&Object.keys(t.locales).forEach((function(e){t.locales[e].path=e})),Object.freeze(t)}n(134);var Jt=n(52),Xt=(n(176),n(43),n(50),n(265),n(266),{NotFound:function(){return Promise.all([n.e(0),n.e(7)]).then(n.bind(null,521))},Category:function(){return Promise.all([n.e(0),n.e(1),n.e(6)]).then(n.bind(null,522))},Layout:function(){return Promise.all([n.e(0),n.e(1),n.e(3)]).then(n.bind(null,520))},Tag:function(){return Promise.all([n.e(0),n.e(1),n.e(4)]).then(n.bind(null,523))},Tags:function(){return Promise.all([n.e(0),n.e(1),n.e(5)]).then(n.bind(null,524))},TimeLines:function(){return Promise.all([n.e(0),n.e(1),n.e(9)]).then(n.bind(null,525))}}),Zt={"v-5a1b77a6":function(){return n.e(10).then(n.bind(null,526))},"v-7c364b8d":function(){return n.e(11).then(n.bind(null,527))},"v-5c479aae":function(){return n.e(12).then(n.bind(null,528))},"v-30bc9f8d":function(){return n.e(13).then(n.bind(null,529))},"v-d2c6fb4a":function(){return n.e(14).then(n.bind(null,530))}};function te(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var ee=/-(\w)/g,ne=te((function(t){return t.replace(ee,(function(t,e){return e?e.toUpperCase():""}))})),re=/\B([A-Z])/g,oe=te((function(t){return t.replace(re,"-$1").toLowerCase()})),ie=te((function(t){return t.charAt(0).toUpperCase()+t.slice(1)}));function ae(t,e){if(e)return t(e)?t(e):e.includes("-")?t(ie(ne(e))):t(ie(e))||t(oe(e))}var se=Object.assign({},Xt,Zt),ce=function(t){return se[t]},ue=function(t){return Zt[t]},le=function(t){return Xt[t]},fe=function(t){return i.default.component(t)};function pe(t){return ae(ue,t)}function de(t){return ae(le,t)}function he(t){return ae(ce,t)}function ve(t){return ae(fe,t)}function me(){for(var t=arguments.length,e=new Array(t),n=0;n"})).join("\n "):"",this.$ssrContext.canonicalLink=Oe(this.$canonicalUrl)}var e},mounted:function(){this.currentMetaTags=Object(Jt.a)(document.querySelectorAll("meta")),this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta:function(){document.title=this.$title,document.documentElement.lang=this.$lang;var t=this.getMergedMetaTags();this.currentMetaTags=Se(t,this.currentMetaTags)},getMergedMetaTags:function(){var t=this.$page.frontmatter.meta||[];return _e()([{name:"description",content:this.$description}],t,this.siteMeta,$e)},updateCanonicalLink:function(){ke(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",Oe(this.$canonicalUrl))}},watch:{$page:function(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy:function(){Se(null,this.currentMetaTags),ke()}};function ke(){var t=document.querySelector("link[rel='canonical']");t&&t.remove()}function Oe(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return t?''):""}function Se(t,e){if(e&&Object(Jt.a)(e).filter((function(t){return t.parentNode===document.head})).forEach((function(t){return document.head.removeChild(t)})),t)return t.map((function(t){var e=document.createElement("meta");return Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])})),document.head.appendChild(e),e}))}function $e(t){for(var e=0,n=["name","property","itemprop"];e=s.parentElement.offsetTop+10&&(!c||r1&&void 0!==arguments[1]?arguments[1]:{},r=window.Promise||function(t){function e(){}t(e,e)},o=function(t){var e=t.target;e!==S?-1!==b.indexOf(e)&&v({target:e}):h()},i=function(){if(!_&&O.original){var t=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(x-t)>k.scrollOffset&&setTimeout(h,150)}},a=function(t){var e=t.key||t.keyCode;"Escape"!==e&&"Esc"!==e&&27!==e||h()},s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t;if(t.background&&(S.style.background=t.background),t.container&&t.container instanceof Object&&(e.container=je({},k.container,t.container)),t.template){var n=Te(t.template)?t.template:document.querySelector(t.template);e.template=n}return k=je({},k,e),b.forEach((function(t){t.dispatchEvent(Le("medium-zoom:update",{detail:{zoom:$}}))})),$},c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(je({},k,e))},u=function(){for(var t=arguments.length,e=Array(t),n=0;n0?e.reduce((function(t,e){return[].concat(t,Ie(e))}),[]):b;return r.forEach((function(t){t.classList.remove("medium-zoom-image"),t.dispatchEvent(Le("medium-zoom:detach",{detail:{zoom:$}}))})),b=b.filter((function(t){return-1===r.indexOf(t)})),$},f=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.addEventListener("medium-zoom:"+t,e,n)})),w.push({type:"medium-zoom:"+t,listener:e,options:n}),$},p=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.removeEventListener("medium-zoom:"+t,e,n)})),w=w.filter((function(n){return!(n.type==="medium-zoom:"+t&&n.listener.toString()===e.toString())})),$},d=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.target,n=function(){var t={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},e=void 0,n=void 0;if(k.container)if(k.container instanceof Object)e=(t=je({},t,k.container)).width-t.left-t.right-2*k.margin,n=t.height-t.top-t.bottom-2*k.margin;else{var r=(Te(k.container)?k.container:document.querySelector(k.container)).getBoundingClientRect(),o=r.width,i=r.height,a=r.left,s=r.top;t=je({},t,{width:o,height:i,left:a,top:s})}e=e||t.width-2*k.margin,n=n||t.height-2*k.margin;var c=O.zoomedHd||O.original,u=Pe(c)?e:c.naturalWidth||e,l=Pe(c)?n:c.naturalHeight||n,f=c.getBoundingClientRect(),p=f.top,d=f.left,h=f.width,v=f.height,m=Math.min(u,e)/h,g=Math.min(l,n)/v,y=Math.min(m,g),b="scale("+y+") translate3d("+((e-h)/2-d+k.margin+t.left)/y+"px, "+((n-v)/2-p+k.margin+t.top)/y+"px, 0)";O.zoomed.style.transform=b,O.zoomedHd&&(O.zoomedHd.style.transform=b)};return new r((function(t){if(e&&-1===b.indexOf(e))t($);else{if(O.zoomed)t($);else{if(e)O.original=e;else{if(!(b.length>0))return void t($);var r=b;O.original=r[0]}if(O.original.dispatchEvent(Le("medium-zoom:open",{detail:{zoom:$}})),x=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,_=!0,O.zoomed=Me(O.original),document.body.appendChild(S),k.template){var o=Te(k.template)?k.template:document.querySelector(k.template);O.template=document.createElement("div"),O.template.appendChild(o.content.cloneNode(!0)),document.body.appendChild(O.template)}if(document.body.appendChild(O.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),O.original.classList.add("medium-zoom-image--hidden"),O.zoomed.classList.add("medium-zoom-image--opened"),O.zoomed.addEventListener("click",h),O.zoomed.addEventListener("transitionend",(function e(){_=!1,O.zoomed.removeEventListener("transitionend",e),O.original.dispatchEvent(Le("medium-zoom:opened",{detail:{zoom:$}})),t($)})),O.original.getAttribute("data-zoom-src")){O.zoomedHd=O.zoomed.cloneNode(),O.zoomedHd.removeAttribute("srcset"),O.zoomedHd.removeAttribute("sizes"),O.zoomedHd.src=O.zoomed.getAttribute("data-zoom-src"),O.zoomedHd.onerror=function(){clearInterval(i),console.warn("Unable to reach the zoom image target "+O.zoomedHd.src),O.zoomedHd=null,n()};var i=setInterval((function(){O.zoomedHd.complete&&(clearInterval(i),O.zoomedHd.classList.add("medium-zoom-image--opened"),O.zoomedHd.addEventListener("click",h),document.body.appendChild(O.zoomedHd),n())}),10)}else if(O.original.hasAttribute("srcset")){O.zoomedHd=O.zoomed.cloneNode(),O.zoomedHd.removeAttribute("sizes"),O.zoomedHd.removeAttribute("loading");var a=O.zoomedHd.addEventListener("load",(function(){O.zoomedHd.removeEventListener("load",a),O.zoomedHd.classList.add("medium-zoom-image--opened"),O.zoomedHd.addEventListener("click",h),document.body.appendChild(O.zoomedHd),n()}))}else n()}}}))},h=function(){return new r((function(t){if(!_&&O.original){_=!0,document.body.classList.remove("medium-zoom--opened"),O.zoomed.style.transform="",O.zoomedHd&&(O.zoomedHd.style.transform=""),O.template&&(O.template.style.transition="opacity 150ms",O.template.style.opacity=0),O.original.dispatchEvent(Le("medium-zoom:close",{detail:{zoom:$}})),O.zoomed.addEventListener("transitionend",(function e(){O.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(O.zoomed),O.zoomedHd&&document.body.removeChild(O.zoomedHd),document.body.removeChild(S),O.zoomed.classList.remove("medium-zoom-image--opened"),O.template&&document.body.removeChild(O.template),_=!1,O.zoomed.removeEventListener("transitionend",e),O.original.dispatchEvent(Le("medium-zoom:closed",{detail:{zoom:$}})),O.original=null,O.zoomed=null,O.zoomedHd=null,O.template=null,t($)}))}else t($)}))},v=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.target;return O.original?h():d({target:e})},m=function(){return k},g=function(){return b},y=function(){return O.original},b=[],w=[],_=!1,x=0,k=n,O={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(e)?k=e:(e||"string"==typeof e)&&u(e),k=je({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},k);var S=Re(k.background);document.addEventListener("click",o),document.addEventListener("keyup",a),document.addEventListener("scroll",i),window.addEventListener("resize",h);var $={open:d,close:h,toggle:v,update:s,clone:c,attach:u,detach:l,on:f,off:p,getOptions:m,getImages:g,getZoomedImage:y};return $},Fe={data:function(){return{zoom:null}},mounted:function(){this.updateZoom()},updated:function(){this.updateZoom()},methods:{updateZoom:function(){var t=this;setTimeout((function(){t.zoom&&t.zoom.detach(),t.zoom=Ne(".theme-reco-content :not(a) > img",void 0)}),1e3)}}},ze=(n(95),n(93)),De=n.n(ze),Ue={mounted:function(){var t=this;De.a.configure({showSpinner:!1}),this.$router.beforeEach((function(t,e,n){t.path===e.path||i.default.component(t.name)||De.a.start(),n()})),this.$router.afterEach((function(){De.a.done(),t.isSidebarOpen=!1}))}},Be=n(225),qe=n.n(Be),Ve=(n(363),[xe,Ae,Fe,Ue,{mounted:function(){qe.a.polyfill()}}]),He={name:"GlobalLayout",computed:{layout:function(){var t=this.getLayout();return ge("layout",t),i.default.component(t)}},methods:{getLayout:function(){if(this.$page.path){var t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}}},We=n(7),Qe=Object(We.a)(He,(function(){var t=this.$createElement;return(this._self._c||t)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(t,e,n){var r;switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),(r=t[e]).push.apply(r,Object(Jt.a)(n));break;default:throw new Error("Unknown option name.")}}(Qe,"mixins",Ve);var Ge=[{name:"v-5a1b77a6",path:"/2024/2024-03-22.html",component:Qe,beforeEnter:function(t,e,n){me("Layout","v-5a1b77a6").then(n)}},{name:"v-7c364b8d",path:"/2024/2024-03-29.html",component:Qe,beforeEnter:function(t,e,n){me("Layout","v-7c364b8d").then(n)}},{name:"v-5c479aae",path:"/",component:Qe,beforeEnter:function(t,e,n){me("Layout","v-5c479aae").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-30bc9f8d",path:"/about.html",component:Qe,beforeEnter:function(t,e,n){me("Layout","v-30bc9f8d").then(n)}},{name:"v-d2c6fb4a",path:"/menu.html",component:Qe,beforeEnter:function(t,e,n){me("Layout","v-d2c6fb4a").then(n)}},{name:"v-b1564aac",path:"/tag/",component:Qe,beforeEnter:function(t,e,n){me("Tags","v-b1564aac").then(n)},meta:{pid:"tags",id:"tags"}},{path:"/tag/index.html",redirect:"/tag/"},{name:"v-ef9325c4",path:"/categories/",component:Qe,beforeEnter:function(t,e,n){me("FrontmatterKey","v-ef9325c4").then(n)},meta:{pid:"categories",id:"categories"}},{path:"/categories/index.html",redirect:"/categories/"},{name:"v-6319eb4e",path:"/timeline/",component:Qe,beforeEnter:function(t,e,n){me("TimeLines","v-6319eb4e").then(n)},meta:{pid:"timeline",id:"timeline"}},{path:"/timeline/index.html",redirect:"/timeline/"},{path:"*",component:Qe}],Ye={title:"每周精选文章合集",description:"精选文章, 每周更新,每周热文,文章合集",base:"/",headTags:[["meta",{name:"viewport",content:"width=device-width,initial-scale=1,user-scalable=no"}],["meta",{name:"apple-mobile-web-app-capable",content:"yes"}],["meta",{name:"apple-mobile-web-app-status-bar-style",content:"black"}],["meta",{name:"keywords",content:"draven, blog, 前端, 技术博客, 德莱问"}],["script",{},'var _hmt = _hmt || [];\n (function() {\n var hm = document.createElement("script");\n hm.src = "https://hm.baidu.com/hm.js?f7e6799f17989e184072a05d38820494";\n var s = document.getElementsByTagName("script")[0]; \n s.parentNode.insertBefore(hm, s);\n })();']],pages:[{frontmatter:{},regularPath:"/2024/2024-03-22.html",relativePath:"2024/2024-03-22.md",key:"v-5a1b77a6",path:"/2024/2024-03-22.html",headers:[{level:2,title:"CSDN",slug:"csdn"},{level:3,title:"数据结构与算法",slug:"数据结构与算法"},{level:3,title:"javascript",slug:"javascript"},{level:3,title:"java",slug:"java"},{level:3,title:"php",slug:"php"},{level:3,title:"python",slug:"python"},{level:3,title:"运维",slug:"运维"},{level:3,title:"移动开发",slug:"移动开发"},{level:3,title:"c/c++",slug:"c-c"},{level:2,title:"掘金",slug:"掘金"},{level:3,title:"前端",slug:"前端"},{level:3,title:"前端-JavaScript",slug:"前端-javascript"},{level:3,title:"前端-Vue.js",slug:"前端-vue-js"},{level:3,title:"前端-面试",slug:"前端-面试"},{level:3,title:"前端-React.js",slug:"前端-react-js"},{level:3,title:"前端-Node.js",slug:"前端-node-js"},{level:3,title:"前端-CSS",slug:"前端-css"},{level:3,title:"前端-后端",slug:"前端-后端"},{level:3,title:"前端-TypeScript",slug:"前端-typescript"},{level:3,title:"前端-前端框架",slug:"前端-前端框架"},{level:3,title:"前端-GitHub",slug:"前端-github"},{level:3,title:"前端-Webpack",slug:"前端-webpack"},{level:3,title:"前端-NestJS",slug:"前端-nestjs"},{level:3,title:"前端-微信小程序",slug:"前端-微信小程序"},{level:3,title:"后端",slug:"后端"},{level:3,title:"Android",slug:"android"},{level:3,title:"IOS",slug:"ios"},{level:2,title:"GitHub",slug:"github"},{level:3,title:"javascript",slug:"javascript-2"},{level:3,title:"vue",slug:"vue"},{level:3,title:"typescript",slug:"typescript"},{level:3,title:"python",slug:"python-2"},{level:3,title:"go",slug:"go"},{level:3,title:"rust",slug:"rust"},{level:3,title:"object-c",slug:"object-c"},{level:3,title:"css",slug:"css"}]},{frontmatter:{},regularPath:"/2024/2024-03-29.html",relativePath:"2024/2024-03-29.md",key:"v-7c364b8d",path:"/2024/2024-03-29.html",headers:[{level:2,title:"CSDN",slug:"csdn"},{level:3,title:"数据结构与算法",slug:"数据结构与算法"},{level:3,title:"javascript",slug:"javascript"},{level:3,title:"java",slug:"java"},{level:3,title:"php",slug:"php"},{level:3,title:"python",slug:"python"},{level:3,title:"运维",slug:"运维"},{level:3,title:"移动开发",slug:"移动开发"},{level:3,title:"c/c++",slug:"c-c"},{level:2,title:"掘金",slug:"掘金"},{level:3,title:"前端",slug:"前端"},{level:3,title:"前端-JavaScript",slug:"前端-javascript"},{level:3,title:"前端-Vue.js",slug:"前端-vue-js"},{level:3,title:"前端-面试",slug:"前端-面试"},{level:3,title:"前端-React.js",slug:"前端-react-js"},{level:3,title:"前端-Node.js",slug:"前端-node-js"},{level:3,title:"前端-CSS",slug:"前端-css"},{level:3,title:"前端-后端",slug:"前端-后端"},{level:3,title:"前端-TypeScript",slug:"前端-typescript"},{level:3,title:"前端-前端框架",slug:"前端-前端框架"},{level:3,title:"前端-GitHub",slug:"前端-github"},{level:3,title:"前端-Webpack",slug:"前端-webpack"},{level:3,title:"前端-微信小程序",slug:"前端-微信小程序"},{level:3,title:"前端-NestJS",slug:"前端-nestjs"},{level:3,title:"后端",slug:"后端"},{level:3,title:"Android",slug:"android"},{level:3,title:"IOS",slug:"ios"},{level:2,title:"GitHub",slug:"github"},{level:3,title:"javascript",slug:"javascript-2"},{level:3,title:"vue",slug:"vue"},{level:3,title:"typescript",slug:"typescript"},{level:3,title:"python",slug:"python-2"},{level:3,title:"go",slug:"go"},{level:3,title:"rust",slug:"rust"},{level:3,title:"object-c",slug:"object-c"},{level:3,title:"css",slug:"css"}]},{title:"Home",frontmatter:{home:!0,heroImage:"/hero.png",heroImageStyle:{maxHeight:"200px",maxWidth:"100%",display:"block",margin:"6rem auto 1.5rem",borderRadius:"5px",boxShadow:"0 5px 18px rgba(0,0,0,0.2)"},actionText:"开始 →",actionLink:"/menu",features:[{title:"质量优先",details:"各大技术社区每周精选优质文章"},{title:"文章合集",details:"收录历史精选文章,不再遗忘"},{title:"每周更新",details:"每周进行收集,发布"}]},regularPath:"/",relativePath:"README.md",key:"v-5c479aae",path:"/"},{title:"关于我",frontmatter:{title:"关于我"},regularPath:"/about.html",relativePath:"about.md",key:"v-30bc9f8d",path:"/about.html"},{title:"目录",frontmatter:{title:"目录"},regularPath:"/menu.html",relativePath:"menu.md",key:"v-d2c6fb4a",path:"/menu.html",headers:[{level:2,title:"2024",slug:"_2024"}]},{frontmatter:{layout:"Tags",title:"Tags"},regularPath:"/tag/",key:"v-b1564aac",path:"/tag/"},{frontmatter:{layout:"FrontmatterKey",title:"Categories"},regularPath:"/categories/",key:"v-ef9325c4",path:"/categories/"},{frontmatter:{layout:"TimeLines",title:"Timeline"},regularPath:"/timeline/",key:"v-6319eb4e",path:"/timeline/"}],themeConfig:{author:"dravenwu",startYear:"2021",valineConfig:{appId:"j2HkS1t6CpVpw4mzhvpRyVQA-gzGzoHsz",appKey:"i5YI6RXIUCeVja0t1DQjphDI",meta:["nick","mail"],requiredFields:["mail"]},nav:[{text:"文章列表",link:"/menu.html",icon:"reco-menu"},{text:"关于我",link:"/about.html",icon:"reco-account"},{text:"掘金",link:"https://juejin.cn/user/1732486056921614",icon:"reco-juejin"},{text:"GitHub",link:"https://github.com/dravenww/curated-article",icon:"reco-github"},{text:"工程化模板",items:[{text:"vite|element-ui|Vue2",link:"https://github.com/tnfe/vite-vue2-pro"},{text:"vite|antd|react",link:"https://github.com/tnfe/vite-concent-pro"},{text:"webpack|react|concent",link:"https://github.com/tnfe/concent-pro"}],icon:"reco-github"}],displayAllHeaders:!0,sidebar:"auto",sidebarDepth:2}},Ke=(n(51),n(231),n(232),n(70),n(233),n(66)),Je={computed:{$recoPosts:function(){var t=this.$site.pages;return t=Object(Ke.a)(t,!1),Object(Ke.c)(t),t},$recoPostsForTimeline:function(){var t=this.$recoPosts,e={},n=[];t=Object(Ke.a)(t,!0),this.pages=0==t.length?[]:t;for(var r=0,o=t.length;r-1)&&([o,i].indexOf("auto")>-1&&a.length>0||[e,n].indexOf("auto")>-1&&a.length>0)}}};function Xe(t,e){t=function(t){var e=new Date(t).toJSON();return new Date(+new Date(e)+288e5).toISOString().replace(/T/g," ").replace(/\.[\d]{3}Z/,"").replace(/-/g,"/")}(t);var n=new Date(t),r=n.getFullYear(),o=n.getMonth()+1,i=n.getDate();return"year"==e?r:"".concat(o,"-").concat(i)}var Ze=n(8),tn={all:"全部",article:"文章",tag:"标签",category:"分类",friendLink:"友情链接",timeLine:"时间轴",timeLineMsg:"昨日重现!"},en={all:"全部",article:"文章",tag:"標簽",category:"分類",friendLink:"友情鏈接",timeLine:"時間軸",timeLineMsg:"昨日重現!"},nn={all:"All",article:"Articles",tag:"Tags",category:"Categories",friendLink:"Friend Links",timeLine:"TimeLine",timeLineMsg:"Yesterday Once More!"},rn={all:"全部",article:"文章",tag:"ラベル",category:"分類",friendLink:"友情リンク",timeLine:"タイムライン",timeLineMsg:"昨日また!"},on={all:"전체",article:"글",tag:"태그",category:"분류",friendLink:"링크 참조",timeLine:"타임 라인",timeLineMsg:"어제 또!"},an={all:"Todas",article:"Artículos",tag:"Etiquetas",category:"Categorías",friendLink:"Páginas amigas",timeLine:"Cronología",timeLineMsg:"¡Ayer otra vez!"},sn={computed:{$recoLocales:function(){var t=this.$themeLocaleConfig.recoLocales||{};return/^zh\-(CN|SG)$/.test(this.$lang)?Object(Ze.a)(Object(Ze.a)({},tn),t):/^zh\-(HK|MO|TW)$/.test(this.$lang)?Object(Ze.a)(Object(Ze.a)({},en),t):/^ja\-JP$/.test(this.$lang)?Object(Ze.a)(Object(Ze.a)({},rn),t):/^ko\-KR$/.test(this.$lang)?Object(Ze.a)(Object(Ze.a)({},on),t):/^es(\-[A-Z]+)?$/.test(this.$lang)?Object(Ze.a)(Object(Ze.a)({},an),t):Object(Ze.a)(Object(Ze.a)({},nn),t)}}},cn=n(27),un=n(71),ln=n(129);n(373);i.default.component("Badge",(function(){return Promise.all([n.e(0),n.e(8)]).then(n.bind(null,531))}));n(374);var fn={name:"BackToTop",data:function(){return{visible:!1,customStyle:{right:"1rem",bottom:"6rem",width:"2.5rem",height:"2.5rem","border-radius":".25rem","line-height":"2.5rem"},visibilityHeight:400}},mounted:function(){window.addEventListener("scroll",this.throttle(this.handleScroll,500))},beforeDestroy:function(){window.removeEventListener("scroll",this.throttle(this.handleScroll,500))},methods:{handleScroll:function(){this.visible=window.pageYOffset>this.visibilityHeight},backToTop:function(){window.scrollTo(0,0)},throttle:function(t,e){var n=null,r=Date.now();return function(){var o=Date.now(),i=e-(o-r),a=this,s=arguments;clearTimeout(n),i<=0?(t.apply(a,s),r=Date.now()):n=setTimeout(t,i)}}}},pn=(n(375),Object(We.a)(fn,(function(){var t=this.$createElement,e=this._self._c||t;return e("transition",{attrs:{name:"fade"}},[e("div",{directives:[{name:"show",rawName:"v-show",value:this.visible,expression:"visible"}],staticClass:"back-to-ceiling",style:this.customStyle,on:{click:this.backToTop}},[e("svg",{staticClass:"icon",attrs:{t:"1574745035067",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"5404"}},[e("path",{attrs:{d:"M526.60727968 10.90185116a27.675 27.675 0 0 0-29.21455937 0c-131.36607665 82.28402758-218.69155461 228.01873535-218.69155402 394.07834331a462.20625001 462.20625001 0 0 0 5.36959153 69.94390903c1.00431239 6.55289093-0.34802892 13.13561351-3.76865779 18.80351572-32.63518765 54.11355614-51.75690182 118.55860487-51.7569018 187.94566865a371.06718723 371.06718723 0 0 0 11.50484808 91.98906777c6.53300375 25.50556257 41.68394495 28.14064038 52.69160883 4.22606766 17.37162448-37.73630017 42.14135425-72.50938081 72.80769204-103.21549295 2.18761121 3.04276886 4.15646224 6.24463696 6.40373557 9.22774369a1871.4375 1871.4375 0 0 0 140.04691725 5.34970492 1866.36093723 1866.36093723 0 0 0 140.04691723-5.34970492c2.24727335-2.98310674 4.21612437-6.18497483 6.3937923-9.2178004 30.66633723 30.70611158 55.4360664 65.4791928 72.80769147 103.21549355 11.00766384 23.91457269 46.15860503 21.27949489 52.69160879-4.22606768a371.15156223 371.15156223 0 0 0 11.514792-91.99901164c0-69.36717486-19.13165746-133.82216804-51.75690182-187.92578088-3.42062944-5.66790279-4.76302748-12.26056868-3.76865837-18.80351632a462.20625001 462.20625001 0 0 0 5.36959269-69.943909c-0.00994388-166.08943902-87.32547796-311.81420293-218.6915546-394.09823051zM605.93803103 357.87693858a93.93749974 93.93749974 0 1 1-187.89594924 6.1e-7 93.93749974 93.93749974 0 0 1 187.89594924-6.1e-7z","p-id":"5405"}}),e("path",{attrs:{d:"M429.50777625 765.63860547C429.50777625 803.39355007 466.44236686 1000.39046097 512.00932183 1000.39046097c45.56695499 0 82.4922232-197.00623328 82.5015456-234.7518555 0-37.75494459-36.9345906-68.35043303-82.4922232-68.34111062-45.57627738-0.00932239-82.52019037 30.59548842-82.51086798 68.34111062z","p-id":"5406"}})])])])}),[],!1,null,"c6073ba8",null).exports),dn=(n(376),Object(We.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{attrs:{id:"loader-wrapper"}},[n("div",{staticClass:"loader-main"},t._l(4,(function(t){return n("div",{key:"out"+t})})),0),t._v(" "),t.$frontmatter.home?n("h3",{staticClass:"title"},[t._v(t._s(t.$site.title||t.$localeConfig.title))]):t._e(),t._v(" "),t.$frontmatter.home?n("p",{staticClass:"description"},[t._v(t._s(t.$site.description||t.$localeConfig.description))]):t._e()])}),[],!1,null,"d48f4d20",null).exports),hn=(n(377),n(229),{prev:"上一页",next:"下一页",go:"前往",jump:"跳转至"}),vn={prev:"上壹頁",next:"下壹頁",go:"前往",jump:"跳轉至"},mn={prev:"Prev",next:"Next",go:"Go",jump:"Jump To"},gn={prev:"前のページ",next:"次のページ",go:"へ",jump:"ジャンプ"},yn={prev:"이전 페이지",next:"다음 페이지",go:"행",jump:"건너뛰기"};var bn={data:function(){return{changePage:"",pageSize:10}},props:{total:{type:Number,default:10},perPage:{type:Number,default:10},currentPage:{type:Number,default:1}},computed:{pages:function(){var t=this.pageSize||this.perPage;return Math.ceil(this.total/t)},show:function(){return this.pages&&1!=this.pages},efont:function(){return!(this.pages<=7)&&this.currentPage>5},indexs:function(){var t=1,e=this.pages,n=[];for(this.pages>=7&&(this.currentPage>5&&this.currentPage1&&this.emit(--t)},goNext:function(){var t=this.currentPage;t0?this.emit(e):alert("请输入大于0,并且小于".concat(this.pages,"的页码!"))},emit:function(t){this.$emit("getCurrentPage",t)}}},wn=(n(379),Object(We.a)(bn,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{directives:[{name:"show",rawName:"v-show",value:t.show,expression:"show"}],staticClass:"pagation"},[n("div",{staticClass:"pagation-list"},[n("span",{directives:[{name:"show",rawName:"v-show",value:t.currentPage>1,expression:"currentPage > 1"}],staticClass:"jump",attrs:{unselectable:"on"},on:{click:t.goPrev}},[t._v(t._s(t.pagationLocales.prev))]),t._v(" "),n("span",{directives:[{name:"show",rawName:"v-show",value:t.efont,expression:"efont"}],staticClass:"jump",on:{click:function(e){return t.jumpPage(1)}}},[t._v("1")]),t._v(" "),n("span",{directives:[{name:"show",rawName:"v-show",value:t.efont,expression:"efont"}],staticClass:"ellipsis"},[t._v("...")]),t._v(" "),t._l(t.indexs,(function(e){return n("span",{key:e,staticClass:"jump",class:{bgprimary:t.currentPage==e},on:{click:function(n){return t.jumpPage(e)}}},[t._v(t._s(e))])})),t._v(" "),n("span",{directives:[{name:"show",rawName:"v-show",value:t.efont&&t.currentPageObject(In.stringify)(t),Mn=(t,e)=>`${t}${Object(In.stringify)(e,{addQueryPrefix:!0})}`,Ln=(t,e)=>`${t.replace(/\/$/,"")}/${e.replace(/^\//,"")}`;var Nn=n(226),Fn=n.n(Nn);const zn=t=>Fn()(t,"YYYY-MM-DD HH:mm:ss"),Dn=t=>(t.split("#")[0]||"").split("?")[0]||"",Un=t=>Object(In.parse)(t,{ignoreQueryPrefix:!0}) /*! * vue-i18n v8.25.0 * (c) 2021 kazuya kawaguchi @@ -65,4 +65,4 @@ MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. -***************************************************************************** */function Nr(t,e,n,r){var o,i=arguments.length,a=i<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,n,r);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(a=(i<3?o(a):i>3?o(e,n,a):o(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a}var Fr=i.default.extend({name:"Iconfont"});function zr(t,e,n,r,o,i,a,s,c,u){"boolean"!=typeof a&&(c=s,s=a,a=!1);const l="function"==typeof n?n.options:n;let f;if(t&&t.render&&(l.render=t.render,l.staticRenderFns=t.staticRenderFns,l._compiled=!0,o&&(l.functional=!0)),r&&(l._scopeId=r),i?(f=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),e&&e.call(this,c(t)),t&&t._registeredComponents&&t._registeredComponents.add(i)},l._ssrRegister=f):e&&(f=a?function(t){e.call(this,u(t,this.$root.$options.shadowRoot))}:function(t){e.call(this,s(t))}),f)if(l.functional){const t=l.render;l.render=function(e,n){return f.call(n),t(e,n)}}else{const t=l.beforeCreate;l.beforeCreate=t?[].concat(t,f):[f]}return n}"undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());const Dr=zr({render:function(t,e){var n=e._c;return n("svg",{directives:[{name:"show",rawName:"v-show",value:!1,expression:"false"}]},[n("symbol",{attrs:{id:"vssue-icon-bitbucket",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M579.5522464 489.45249493q4.8371808 38.38537173-30.81752427 61.55702827t-67.95459093 3.66689493q-23.79580907-10.37653333-32.6119616-35.34262826t-0.31207573-50.01020907 31.67573333-35.34262827q21.92335253-11.00068587 44.1587808-7.33379093t39.00952427 21.61127573 16.77409493 41.1160384zM647.19476053 476.65737173q-8.50407573-65.22392427-68.8908192-99.9424t-120.07131413-7.9579424q-38.38537173 17.08617173-61.24495253 53.9111616t-21.0651424 78.95527574q2.41859093 55.4715424 47.20152426 94.48106666t100.87862827 34.1723424q55.4715424-4.8371808 92.60860907-51.18049493t30.50544746-102.43900907zM792.93434133 146.32472427q-12.17097173-16.4620192-34.1723424-27.15062827t-35.34262826-13.41927573-43.30057174-7.64586667q-177.33729493-28.63299093-345.00022826 1.24830507-26.2144 4.29104747-40.25782827 7.33379093t-33.54819093 13.41927573-30.50544747 26.2144q18.2564576 17.08617173 46.34331413 27.6967616t44.78293334 13.41927574 53.36502826 7.02171413q138.95192427 17.71032427 273.06666667 0.62415253 38.38537173-4.8371808 54.53531413-7.33379093t44.1587808-13.1072 45.7191616-28.32091413zM827.65281813 777.10872427q-4.8371808 15.83786667-9.44030506 46.65539093t-8.50407574 51.18049493-17.39824746 42.6764192-35.34262827 34.4064q-52.4288 29.2571424-115.46819093 43.61264747t-123.1140576 13.41927573-122.8019808-11.3127616q-28.0088384-4.8371808-49.69813334-11.00068586t-46.65539093-16.4620192-44.4708576-26.52647574-31.67573333-37.4491424q-15.21371413-58.51428587-34.71847574-177.96144746l3.66689494-9.7523808 11.00068586-5.46133334q135.9091808 90.1900192 308.72137174 90.1900192t309.34552426-90.1900192q12.79512427 3.66689493 14.5895616 14.04342827t-3.0427424 27.46270507-4.8371808 22.54750506zM937.97175147 191.41973333q-15.83786667 101.8148576-67.64251414 399.22346667-3.0427424 18.2564576-16.4620192 34.1723424t-26.52647573 24.3419424-33.23611413 18.88060907q-153.61950507 76.7707424-371.8387808 53.67710506-151.12289493-16.4620192-240.14262827-84.72868586-9.12822827-7.33379093-15.52579093-16.1499424t-10.37653334-21.2992-5.46133333-20.75306667-3.66689493-24.10788587-3.3548192-21.2992q-5.46133333-30.50544747-16.1499424-91.43832426t-17.08617174-98.4600384-14.35550506-89.8779424-13.41927574-96.27550507q1.7944384-15.83786667 10.68860907-29.5692192t19.19268587-22.8595808 27.46270506-18.2564576 28.0088384-13.73135253 29.2571424-11.3127616q76.22460907-28.0088384 190.75657174-39.00952427 231.0144-22.54750507 412.01859093 30.50544747 94.48106667 28.0088384 131.072 74.35215253 9.7523808 12.17097173 10.0644576 31.0515808t-3.3548192 32.9240384z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-gitea",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M184.31868985 236.10860742C106.94832667 235.94086648 3.32655508 285.13080468 9.02973665 408.46209936c8.93218827 192.65010787 206.32096845 210.5144844 285.20099725 212.06608453 8.63864186 36.14810496 101.48307766 160.77938883 170.21479898 167.32127321h301.09442177c180.57278288-11.99345499 315.77172611-546.07960359 215.54670217-548.09249109-165.7696721 7.79993906-264.02374305 11.74184405-348.27147151 12.41280591v166.69224585l-26.25140843-11.61603761-0.16773997-154.99233728c-96.70246985-0.04193548-181.83083757-4.52899687-343.4069947-12.49667687-20.21274496-0.12580547-48.39316992-3.5644886-78.67035236-3.64835859z m10.94507577 68.14462849h9.22573371c10.98701124 98.75729283 28.85138778 156.50200291 64.99949274 244.73357185-92.25734394-10.90314029-170.75995634-37.69970509-185.18564974-137.75698809-7.46445813-51.78991757 17.69663558-105.84433456 110.96042329-107.01851827z m358.83913087 97.07988723c6.29027343 0.08386999 12.70635233 1.25805468 18.74501482 4.02577499l31.40943263 13.54505513-22.51917887 41.05451824a28.18042496 25.03528825 0 0 0-10.10637297 1.59353561 28.18042496 25.03528825 0 0 0-16.98373825 32.038459 28.18042496 25.03528825 0 0 0 4.69673781 7.29671718l-38.83195528 70.70267333a28.18042496 25.03528825 0 0 0-9.30960467 1.59353659 28.18042496 25.03528825 0 0 0-16.98373825 32.038459 28.18042496 25.03528825 0 0 0 36.06423497 15.09665623 28.18042496 25.03528825 0 0 0 16.94180276-32.08039449 28.18042496 25.03528825 0 0 0-6.62575434-9.22573468l37.82551056-68.85752581a28.18042496 25.03528825 0 0 0 12.28700044-1.25805469 28.18042496 25.03528825 0 0 0 8.93218826-4.69673783c14.59343435 6.12253248 26.54495386 11.11281671 35.14166122 15.34826717 12.91602778 6.37414341 17.48696012 10.60959485 18.87082027 15.30633169 1.38386015 4.61286685-0.12580547 13.50312062-7.42252263 29.10299872-5.45157063 11.61603859-14.46762889 28.09655497-25.11915823 47.51253164a28.18042496 25.03528825 0 0 0-10.52572486 1.59353659 28.18042496 25.03528825 0 0 0-16.98373826 32.038459 28.18042496 25.03528825 0 0 0 36.06423498 15.09665623 28.18042496 25.03528825 0 0 0 16.94180278-32.03845901 28.18042496 25.03528825 0 0 0-5.74511608-8.47090188c10.52572388-19.20630122 19.58371762-35.72875308 25.41270465-48.14155897 7.88380904-16.85793279 11.99345499-29.39654416 8.38703091-41.51580463-3.60642311-12.11926046-14.67730434-20.0030695-29.35460966-27.25785217-9.6450856-4.73867233-21.68047607-9.77089106-36.06423399-15.80955357a28.18042496 25.03528825 0 0 0-1.59353562-10.022502 28.18042496 25.03528825 0 0 0-6.08059796-8.7644483l22.14176246-40.38355541 122.61839638 52.96410227c22.14176247 9.6031511 31.2836262 33.12877372 20.54822685 52.8382968l-84.28966393 154.32137544c-10.77733482 19.66758857-37.23841869 27.80300855-59.38018118 18.24179293l-173.48574115-74.98005927c-22.14176247-9.5612156-31.32556167-33.12877372-20.54822687-52.83829679l84.28966395-154.27943995c7.38058716-13.54505513 22.22563246-21.59660511 37.951317-22.22563246h2.68384935z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-gitee",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M978.404275 409.561604H455.061338c-25.117645 0-45.499734 20.382089-45.499734 45.499734l-0.031997 113.781333c0 25.117645 20.350092 45.499734 45.499734 45.531731h318.594132c25.117645 0 45.499734 20.382089 45.499734 45.499735v22.749867a136.5312 136.5312 0 0 1-136.5312 136.5312H250.248539a45.499734 45.499734 0 0 1-45.499734-45.499734V341.343999a136.5312 136.5312 0 0 1 136.5312-136.5312L978.308284 204.780802c25.117645 0 45.499734-20.350092 45.499734-45.467738L1023.904009 45.531731h0.031997A45.499734 45.499734 0 0 0 978.468269 0h-0.031997L341.343999 0.031997C152.84967 0.031997 0.031997 152.84967 0.031997 341.343999v637.092273c0 25.117645 20.382089 45.499734 45.499734 45.499734h671.233072a307.171203 307.171203 0 0 0 307.171203-307.171203v-261.671468c0-25.117645-20.382089-45.499734-45.499734-45.499734z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-github",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M512 20.4425c-278.334 0-504 225.6345-504 504 0 222.6735 144.4275 411.6105 344.673 478.233 25.2 4.662 34.461-10.9305 34.461-24.255 0-12.0015-0.4725-51.723-0.693-93.8385-140.238 30.492-169.8165-59.472-169.8165-59.472-22.932-58.2435-55.944-73.7415-55.944-73.7415-45.738-31.2795 3.465-30.6495 3.465-30.6495 50.589 3.5595 77.238 51.9435 77.238 51.9435 44.9505 77.049 117.9045 54.7785 146.664 41.895 4.5045-32.571 17.577-54.81 32.004-67.41-111.951-12.726-229.635-55.9755-229.635-249.0705 0-55.0305 19.6875-99.981 51.9435-135.2925-5.229-12.6945-22.491-63.945 4.8825-133.371 0 0 42.336-13.545 138.6315 51.66 40.194-11.1825 83.3175-16.758 126.1575-16.9785 42.8085 0.189 85.9635 5.796 126.252 16.9785 96.201-65.205 138.4425-51.66 138.4425-51.66 27.4365 69.426 10.1745 120.6765 4.9455 133.371 32.319 35.28 51.8805 80.262 51.8805 135.2925 0 193.5675-117.9045 236.187-230.139 248.6925 18.081 15.6555 34.1775 46.305 34.1775 93.3345 0 67.4415-0.5985 121.716-0.5985 138.3165 0 13.419 9.072 29.1375 34.6185 24.192 200.151-66.717 344.3895-255.5595 344.3895-478.17 0-278.3655-225.666-504-504-504z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-gitlab",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M66.61375986 405.11600042L512.11376028 976.03999972 23.84576 621.65599958a39.312 39.312 0 0 1-14.07600042-43.30799944l56.8080007-173.26800028z m259.88400014 0h371.26800014L512.14975986 976.03999972zM215.11376 60.88400042l111.384 344.232H66.61375986l111.384-344.232a19.72800014 19.72800014 0 0 1 37.11600014 0z m742.49999972 344.232l56.8080007 173.2679993a39.23999986 39.23999986 0 0 1-14.07600042 43.30800042l-488.26800028 354.38400014 445.50000042-570.92400028z m0 0h-259.88400014l111.384-344.232a19.72800014 19.72800014 0 0 1 37.11600014 0z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-loading",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M843.307 742.24c0 3.217 2.607 5.824 5.824 5.824s5.824-2.607 5.824-5.824a5.823 5.823 0 0 0-5.824-5.824 5.823 5.823 0 0 0-5.824 5.824zM714.731 874.912c0 6.398 5.186 11.584 11.584 11.584s11.584-5.186 11.584-11.584-5.186-11.584-11.584-11.584-11.584 5.186-11.584 11.584zM541.419 943.2c0 9.614 7.794 17.408 17.408 17.408s17.408-7.794 17.408-17.408-7.794-17.408-17.408-17.408-17.408 7.794-17.408 17.408z m-186.56-9.152c0 12.795 10.373 23.168 23.168 23.168s23.168-10.373 23.168-23.168-10.373-23.168-23.168-23.168-23.168 10.373-23.168 23.168zM189.355 849.12c0 16.012 12.98 28.992 28.992 28.992s28.992-12.98 28.992-28.992-12.98-28.992-28.992-28.992-28.992 12.98-28.992 28.992zM74.731 704.736c0 19.228 15.588 34.816 34.816 34.816s34.816-15.588 34.816-34.816-15.588-34.816-34.816-34.816-34.816 15.588-34.816 34.816z m-43.008-177.28c0 22.41 18.166 40.576 40.576 40.576s40.576-18.166 40.576-40.576-18.166-40.576-40.576-40.576-40.576 18.166-40.576 40.576z m35.392-176.128c0 25.626 20.774 46.4 46.4 46.4s46.4-20.774 46.4-46.4c0-25.626-20.774-46.4-46.4-46.4-25.626 0-46.4 20.774-46.4 46.4z m106.176-142.016c0 28.843 23.381 52.224 52.224 52.224s52.224-23.381 52.224-52.224c0-28.843-23.381-52.224-52.224-52.224-28.843 0-52.224 23.381-52.224 52.224z m155.904-81.344c0 32.024 25.96 57.984 57.984 57.984s57.984-25.96 57.984-57.984-25.96-57.984-57.984-57.984-57.984 25.96-57.984 57.984z m175.104-5.056c0 35.24 28.568 63.808 63.808 63.808s63.808-28.568 63.808-63.808c0-35.24-28.568-63.808-63.808-63.808-35.24 0-63.808 28.568-63.808 63.808z m160.32 72.128c0 38.421 31.147 69.568 69.568 69.568s69.568-31.147 69.568-69.568-31.147-69.568-69.568-69.568-69.568 31.147-69.568 69.568z m113.92 135.488c0 41.638 33.754 75.392 75.392 75.392s75.392-33.754 75.392-75.392-33.754-75.392-75.392-75.392-75.392 33.754-75.392 75.392z m45.312 175.488c0 44.854 36.362 81.216 81.216 81.216s81.216-36.362 81.216-81.216c0-44.854-36.362-81.216-81.216-81.216-44.854 0-81.216 36.362-81.216 81.216z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-like",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 0 0-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4-20.5-21.5-48.1-33.4-77.9-33.4-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-0.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81z m636.4-353l-21.9 19 13.9 25.4c4.6 8.4 6.9 17.6 6.9 27.3 0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4c4.6 8.4 6.9 17.6 6.9 27.3 0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4c4.6 8.4 6.9 17.6 6.9 27.3 0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5c5.2-18.9 22.5-32.2 42.2-32.3 7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-unlike",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4-8.3-3.6-17.2-5.4-26.5-5.4H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h129.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM184 456V172h81v284h-81z m627.2 160.4H496.8l9.6 198.4c0.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7-19.6-0.1-36.9-13.4-42.2-32.3L329 459.2V172h415.4c20.4 9.2 33.6 29.4 33.6 51.8 0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19c12.5 10.8 19.6 26.5 19.6 43 0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19c12.5 10.8 19.6 26.5 19.6 43 0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19c12.5 10.8 19.6 26.5 19.6 43 0 19.1-11 37.5-28.8 48.4z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-heart",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M923 283.6c-13.4-31.1-32.6-58.9-56.9-82.8-24.3-23.8-52.5-42.4-84-55.5-32.5-13.5-66.9-20.3-102.4-20.3-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5-24.4 23.9-43.5 51.7-56.9 82.8-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3 0.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-edit",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M723.2 917.76H286.72c-65.28 0-118.4-51.2-118.4-113.92V261.76C168.32 198.4 221.44 147.2 286.72 147.2h375.04c17.92 0 32 14.08 32 32s-14.08 32-32 32H286.72c-30.08 0-54.4 22.4-54.4 49.92v542.08c0 27.52 24.32 49.92 54.4 49.92H723.2c30.08 0 54.4-22.4 54.4-49.92V440.32c0-17.92 14.08-32 32-32s32 14.08 32 32v363.52c0 62.72-53.12 113.92-118.4 113.92z"}}),e._v(" "),n("path",{attrs:{d:"M499.84 602.24c-7.68 0-14.72-2.56-21.12-7.68-13.44-11.52-14.72-32-3.2-45.44L780.16 198.4c11.52-13.44 32-14.72 45.44-3.2s14.72 32 3.2 45.44L524.16 591.36c-6.4 7.04-15.36 10.88-24.32 10.88z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-delete",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M677.647059 256l0-90.352941c0-37.436235-23.461647-60.235294-61.771294-60.235294L408.094118 105.411765c-38.249412 0-61.741176 22.799059-61.741176 60.235294l0 90.352941-180.705882 0 0 60.235294 60.235294 0 0 512c0 54.272 33.972706 90.352941 90.352941 90.352941l391.529412 0c55.085176 0 90.352941-33.490824 90.352941-90.352941l0-512 60.235294 0 0-60.235294L677.647059 256zM406.588235 165.647059l210.823529 0-1.264941 90.352941L406.588235 256 406.588235 165.647059zM737.882353 858.352941l-451.764706 0 0-542.117647 451.764706 0L737.882353 858.352941zM466.823529 376.470588l-58.729412 0-1.505882 391.529412 60.235294 0L466.823529 376.470588zM617.411765 376.470588l-60.235294 0 0 391.529412 60.235294 0L617.411765 376.470588z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-reply",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M426.666667 384 426.666667 213.333333 128 512 426.666667 810.666667 426.666667 635.733333C640 635.733333 789.333333 704 896 853.333333 853.333333 640 725.333333 426.666667 426.666667 384Z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-error",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M512 720m-48 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0Z"}}),e._v(" "),n("path",{attrs:{d:"M480 416v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z"}}),e._v(" "),n("path",{attrs:{d:"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48z m-783.5-27.9L512 239.9l339.8 588.2H172.2z"}})])])},staticRenderFns:[]},void 0,Fr,void 0,!0,void 0,!1,void 0,void 0,void 0);const Ur=zr({},void 0,i.default.extend({name:"TransitionFade",functional:!0,props:{group:{type:Boolean,required:!1,default:!1},tag:{type:String,required:!1,default:"div"}},render:(t,{props:e,children:n})=>t(e.group?"TransitionGroup":"Transition",{props:{name:"fade",mode:"out-in",appear:!0,tag:e.tag}},n)}),void 0,void 0,void 0,!1,void 0,void 0,void 0);const Br=zr({},void 0,i.default.extend({name:"VssueIcon",functional:!0,props:{name:{type:String,required:!0},title:{type:String,required:!1,default:null}},render:(t,{props:e,data:n})=>t("svg",Object.assign(Object.assign({},n),{class:["vssue-icon","vssue-icon-"+e.name],attrs:{"aria-hidden":"true"}}),[t("title",e.title),t("use",{attrs:{"xlink:href":"#vssue-icon-"+e.name}})])}),void 0,void 0,void 0,!1,void 0,void 0,void 0);let qr=class extends i.default{constructor(){super(...arguments),this.editMode=!1,this.editContent=this.comment.contentRaw,this.creatingReactions=[],this.isPutingComment=!1,this.isDeletingComment=!1}get currentUser(){return this.vssue.user?this.vssue.user.username:null}get content(){return this.comment.content}get author(){return this.comment.author}get createdAt(){return zn(this.comment.createdAt)}get updatedAt(){return zn(this.comment.updatedAt)}get showReactions(){return Boolean(this.vssue.API&&this.vssue.API.platform.meta.reactable&&this.comment.reactions&&!this.editMode)}get reactionKeys(){return["heart","like","unlike"]}get editContentRows(){return this.editContent.split("\n").length-1}get editInputRows(){return this.editContentRows<3?5:this.editContentRows+2}async postReaction({reaction:t}){try{if(this.creatingReactions.includes(t))return;this.creatingReactions.push(t);await this.vssue.postCommentReaction({commentId:this.comment.id,reaction:t})||this.vssue.$emit("error",new Error(this.vssue.$t("reactionGiven",{reaction:this.vssue.$t(t)})));const e=await this.vssue.getCommentReactions({commentId:this.comment.id});e&&(this.comment.reactions=e)}finally{this.creatingReactions.splice(this.creatingReactions.findIndex(e=>e===t),1)}}enterEdit(){this.editMode=!0,this.$nextTick(()=>{this.$refs.input.focus()})}resetEdit(){this.editMode=!1,this.editContent=this.comment.contentRaw}async putComment(){try{if(this.vssue.isPending)return;if(this.editContent!==this.comment.contentRaw){this.isPutingComment=!0,this.vssue.isUpdatingComment=!0;const t=await this.vssue.putComment({commentId:this.comment.id,content:this.editContent});t&&this.vssue.comments.data.splice(this.vssue.comments.data.findIndex(t=>t.id===this.comment.id),1,t)}this.editMode=!1}finally{this.isPutingComment=!1,this.vssue.isUpdatingComment=!1}}async deleteComment(){try{if(this.vssue.isPending)return;if(!window.confirm(this.vssue.$t("deleteConfirm")))return;this.isDeletingComment=!0,this.vssue.isUpdatingComment=!0;await this.vssue.deleteComment({commentId:this.comment.id})?(this.vssue.comments.count-=1,this.vssue.comments.data.length>1&&this.vssue.comments.data.splice(this.vssue.comments.data.findIndex(t=>t.id===this.comment.id),1),this.vssue.query.page>1&&this.vssue.query.page>Math.ceil(this.vssue.comments.count/this.vssue.query.perPage)?this.vssue.query.page-=1:await this.vssue.getComments()):this.vssue.$emit("error",new Error(this.vssue.$t("deleteFailed")))}finally{this.isDeletingComment=!1,this.vssue.isUpdatingComment=!1}}};Nr([Tn({type:Object,required:!0})],qr.prototype,"comment",void 0),Nr([On()],qr.prototype,"vssue",void 0),qr=Nr([Object(kn.b)({components:{VssueIcon:Br}})],qr);const Vr=zr({render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"vssue-comment",class:{"vssue-comment-edit-mode":t.editMode,"vssue-comment-disabled":t.isDeletingComment||t.isPutingComment}},[n("div",{staticClass:"vssue-comment-avatar"},[n("a",{attrs:{href:t.author.homepage,title:t.author.username,target:"_blank",rel:"noopener noreferrer"}},[n("img",{attrs:{src:t.author.avatar,alt:t.author.username}})])]),t._v(" "),n("div",{staticClass:"vssue-comment-body"},[t._t("body",[n("div",{staticClass:"vssue-comment-header"},[n("span",{staticClass:"vssue-comment-author"},[n("a",{attrs:{href:t.author.homepage,title:t.author.username,target:"_blank",rel:"noopener noreferrer"}},[t._v("\n "+t._s(t.author.username)+"\n ")])]),t._v(" "),n("span",{staticClass:"vssue-comment-created-at"},[t._v("\n "+t._s(t.createdAt)+"\n ")])]),t._v(" "),n("div",{staticClass:"vssue-comment-main"},[t.editMode?n("textarea",{directives:[{name:"model",rawName:"v-model",value:t.editContent,expression:"editContent"}],ref:"input",staticClass:"vssue-edit-comment-input",attrs:{rows:t.editInputRows},domProps:{value:t.editContent},on:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:e.ctrlKey?t.putComment():null},input:function(e){e.target.composing||(t.editContent=e.target.value)}}}):n("article",{staticClass:"markdown-body",domProps:{innerHTML:t._s(t.content)}})]),t._v(" "),n("div",{staticClass:"vssue-comment-footer"},[t.editMode?n("span",{staticClass:"vssue-comment-hint"},[t._v("\n "+t._s(t.vssue.$t("editMode"))+"\n ")]):t._e(),t._v(" "),t.showReactions?n("span",{staticClass:"vssue-comment-reactions"},t._l(t.reactionKeys,(function(e){return n("span",{key:e,staticClass:"vssue-comment-reaction",attrs:{title:t.vssue.$t(t.creatingReactions.includes(e)?"loading":e)},on:{click:function(n){return t.postReaction({reaction:e})}}},[n("VssueIcon",{attrs:{name:t.creatingReactions.includes(e)?"loading":e,title:t.vssue.$t(t.creatingReactions.includes(e)?"loading":e)}}),t._v(" "),n("span",{staticClass:"vssue-comment-reaction-number"},[t._v("\n "+t._s(t.comment.reactions[e])+"\n ")])],1)})),0):t._e(),t._v(" "),n("span",{staticClass:"vssue-comment-operations"},[t.comment.author.username===t.currentUser&&t.editMode?n("span",{staticClass:"vssue-comment-operation",class:{"vssue-comment-operation-muted":t.isPutingComment},attrs:{title:t.vssue.$t(t.isPutingComment?"loading":"submit")},on:{click:function(e){return t.putComment()}}},[n("VssueIcon",{directives:[{name:"show",rawName:"v-show",value:t.isPutingComment,expression:"isPutingComment"}],attrs:{name:"loading",title:t.vssue.$t("loading")}}),t._v("\n\n "+t._s(t.vssue.$t("submit"))+"\n ")],1):t._e(),t._v(" "),t.comment.author.username===t.currentUser&&t.editMode?n("span",{staticClass:"vssue-comment-operation vssue-comment-operation-muted",attrs:{title:t.vssue.$t("cancel")},on:{click:function(e){return t.resetEdit()}}},[t._v("\n "+t._s(t.vssue.$t("cancel"))+"\n ")]):t._e(),t._v(" "),t.comment.author.username===t.currentUser?n("span",{directives:[{name:"show",rawName:"v-show",value:!t.editMode,expression:"!editMode"}],staticClass:"vssue-comment-operation",on:{click:function(e){return t.enterEdit()}}},[n("VssueIcon",{attrs:{name:"edit",title:t.vssue.$t("edit")}})],1):t._e(),t._v(" "),t.comment.author.username===t.currentUser||t.vssue.isAdmin?n("span",{directives:[{name:"show",rawName:"v-show",value:!t.editMode,expression:"!editMode"}],staticClass:"vssue-comment-operation",on:{click:function(e){return t.deleteComment()}}},[n("VssueIcon",{attrs:{name:t.isDeletingComment?"loading":"delete",title:t.vssue.$t(t.isDeletingComment?"loading":"delete")}})],1):t._e(),t._v(" "),n("span",{directives:[{name:"show",rawName:"v-show",value:!t.editMode,expression:"!editMode"}],staticClass:"vssue-comment-operation",on:{click:function(e){return t.vssue.$emit("reply-comment",t.comment)}}},[n("VssueIcon",{attrs:{name:"reply",title:t.vssue.$t("reply")}})],1)])])])],2)])},staticRenderFns:[]},void 0,qr,void 0,!1,void 0,!1,void 0,void 0,void 0);let Hr=class extends i.default{get disabled(){return this.vssue.isPending}get pageCount(){const t=Math.ceil(this.vssue.comments.count/this.vssue.comments.perPage);return t>1?t:1}get perPageOptions(){const t=[5,10,20,50];return!t.includes(this.vssue.options.perPage)&&this.vssue.options.perPage<100&&t.push(this.vssue.options.perPage),t.sort((t,e)=>t-e)}get page(){return this.vssue.query.page>this.pageCount?this.pageCount:this.vssue.query.page}set page(t){t>0&&t<=this.pageCount&&(this.vssue.query.page=t)}get perPage(){return this.vssue.query.perPage}set perPage(t){this.perPageOptions.includes(t)&&(this.vssue.query.perPage=t)}};Nr([On()],Hr.prototype,"vssue",void 0),Hr=Nr([Object(kn.b)({components:{VssueIcon:Br}})],Hr);const Wr=zr({render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"vssue-pagination"},[n("div",{staticClass:"vssue-pagination-per-page"},[n("label",[n("select",{directives:[{name:"model",rawName:"v-model",value:t.perPage,expression:"perPage"}],staticClass:"vssue-pagination-select",attrs:{disabled:t.disabled},on:{change:function(e){var n=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.perPage=e.target.multiple?n:n[0]}}},t._l(t.perPageOptions,(function(e){return n("option",{key:e,domProps:{value:e}},[t._v("\n "+t._s(e)+"\n ")])})),0),t._v(" "),n("span",[t._v("\n "+t._s(t.vssue.$t("perPage"))+"\n ")])]),t._v(" "),t.vssue.API.platform.meta.sortable?n("span",{class:{"vssue-pagination-link":!0,disabled:t.disabled},attrs:{title:t.vssue.$t("sort")},on:{click:function(e){t.vssue.query.sort="asc"===t.vssue.query.sort?"desc":"asc"}}},[t._v("\n "+t._s("asc"===t.vssue.query.sort?"↑":"↓")+"\n ")]):t._e()]),t._v(" "),n("div",{staticClass:"vssue-pagination-page"},[n("span",{class:{"vssue-pagination-link":!0,disabled:1===t.page||t.disabled},attrs:{title:t.vssue.$t("prev")},domProps:{textContent:t._s("<")},on:{click:function(e){t.page-=1}}}),t._v(" "),n("label",[n("span",[t._v("\n "+t._s(t.vssue.$t("page"))+"\n ")]),t._v(" "),n("select",{directives:[{name:"show",rawName:"v-show",value:t.pageCount>1,expression:"pageCount > 1"},{name:"model",rawName:"v-model",value:t.page,expression:"page"}],staticClass:"vssue-pagination-select",attrs:{disabled:t.disabled},on:{change:function(e){var n=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.page=e.target.multiple?n:n[0]}}},t._l(t.pageCount,(function(e){return n("option",{key:e,domProps:{value:e}},[t._v("\n "+t._s(e)+"\n ")])})),0),t._v(" "),n("span",{directives:[{name:"show",rawName:"v-show",value:t.pageCount<2,expression:"pageCount < 2"}],domProps:{textContent:t._s(t.page)}}),t._v(" "),n("span",{domProps:{textContent:t._s(" / "+t.pageCount+" ")}})]),t._v(" "),n("span",{class:{"vssue-pagination-link":!0,disabled:t.page===t.pageCount||t.disabled},attrs:{title:t.vssue.$t("next")},domProps:{textContent:t._s(">")},on:{click:function(e){t.page+=1}}})])])},staticRenderFns:[]},void 0,Hr,void 0,!1,void 0,!1,void 0,void 0,void 0);let Qr=class extends i.default{};Nr([On()],Qr.prototype,"vssue",void 0),Qr=Nr([Object(kn.b)({components:{TransitionFade:Ur,VssueComment:Vr,VssuePagination:Wr}})],Qr);const Gr=zr({render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"vssue-comments"},[e("VssuePagination"),this._v(" "),e("TransitionFade",{attrs:{group:""}},this._l(this.vssue.comments.data,(function(t){return e("VssueComment",{key:t.id,attrs:{comment:t}})})),1),this._v(" "),e("VssuePagination",{directives:[{name:"show",rawName:"v-show",value:this.vssue.comments.data.length>5,expression:"vssue.comments.data.length > 5"}]})],1)},staticRenderFns:[]},void 0,Qr,void 0,!1,void 0,!1,void 0,void 0,void 0);const Yr=zr({},void 0,i.default.extend({name:"VssueIcon",functional:!0,props:{type:{type:String,required:!1,default:"default"}},render:(t,{props:e,data:n,children:r})=>t("button",Object.assign(Object.assign({},n),{class:["vssue-button","vssue-button-"+e.type]}),r)}),void 0,void 0,void 0,!1,void 0,void 0,void 0);let Kr=class extends i.default{constructor(){super(...arguments),this.content=""}get user(){return this.vssue.user}get platform(){return this.vssue.API&&this.vssue.API.platform.name}get isInputDisabled(){return this.loading||null===this.user||null===this.vssue.issue}get isSubmitDisabled(){return""===this.content||this.vssue.isPending||null===this.vssue.issue}get loading(){return this.vssue.isCreatingComment}get contentRows(){return this.content.split("\n").length-1}get inputRows(){return this.contentRows<3?5:this.contentRows+2}created(){this.vssue.$on("reply-comment",t=>{const e=t.contentRaw.replace(/\n/g,"\n> "),n=`@${t.author.username}\n\n> ${e}\n\n`;this.content=this.content.concat(n),this.focus()})}beforeDestroy(){this.vssue.$off("reply-comment")}focus(){this.$refs.input.focus()}async submit(){this.isSubmitDisabled||(await this.vssue.postComment({content:this.content}),this.content="",await this.vssue.getComments())}};Nr([On()],Kr.prototype,"vssue",void 0),Kr=Nr([Object(kn.b)({components:{VssueButton:Yr,VssueIcon:Br}})],Kr);const Jr=zr({render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"vssue-new-comment"},[n("div",{staticClass:"vssue-comment-avatar"},[t.user?n("a",{attrs:{href:t.user.homepage,title:t.user.username,target:"_blank",rel:"noopener noreferrer"}},[n("img",{attrs:{src:t.user.avatar,alt:t.user.username}})]):n("VssueIcon",{attrs:{name:t.platform.toLowerCase(),title:t.vssue.$t("loginToComment",{platform:t.platform})},on:{click:function(e){return t.vssue.login()}}})],1),t._v(" "),n("div",{staticClass:"vssue-new-comment-body"},[n("textarea",{directives:[{name:"model",rawName:"v-model",value:t.content,expression:"content"}],ref:"input",staticClass:"vssue-new-comment-input",attrs:{rows:t.inputRows,disabled:t.isInputDisabled,placeholder:t.vssue.$t(t.user?"placeholder":"noLoginPlaceHolder"),spellcheck:!1,"aria-label":"leave a comment"},domProps:{value:t.content},on:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:e.ctrlKey?t.submit():null},input:function(e){e.target.composing||(t.content=e.target.value)}}})]),t._v(" "),n("div",{staticClass:"vssue-new-comment-footer"},[t.user?n("span",{staticClass:"vssue-current-user"},[n("span",[t._v(t._s(t.vssue.$t("currentUser"))+" - "+t._s(t.user.username)+" - ")]),t._v(" "),n("a",{staticClass:"vssue-logout",on:{click:function(e){return t.vssue.logout()}}},[t._v("\n "+t._s(t.vssue.$t("logout"))+"\n ")])]):n("span",{staticClass:"vssue-current-user"},[t._v("\n "+t._s(t.vssue.$t("loginToComment",{platform:t.platform}))+"\n ")]),t._v(" "),n("div",{staticClass:"vssue-new-comment-operations"},[t.user?n("VssueButton",{staticClass:"vssue-button-submit-comment",attrs:{type:"primary",disabled:t.isSubmitDisabled},on:{click:function(e){return t.submit()}}},[n("VssueIcon",{directives:[{name:"show",rawName:"v-show",value:t.loading,expression:"loading"}],attrs:{name:"loading"}}),t._v("\n\n "+t._s(t.vssue.$t(t.loading?"submitting":"submitComment"))+"\n ")],1):n("VssueButton",{staticClass:"vssue-button-login",attrs:{type:"primary",title:t.vssue.$t("loginToComment",{platform:t.platform})},on:{click:function(e){return t.vssue.login()}}},[t._v("\n "+t._s(t.vssue.$t("login",{platform:t.platform}))+"\n ")])],1)])])},staticRenderFns:[]},void 0,Kr,void 0,!1,void 0,!1,void 0,void 0,void 0);let Xr=class extends i.default{constructor(){super(...arguments),this.progress={show:!1,percent:0,timer:null,speed:200},this.alert={show:!1,message:null,timer:null}}onLoadingCommentsChange(t){this.vssue.comments&&(t?this.progressStart():this.progressDone())}created(){this.vssue.$on("error",t=>this.alertShow(t.message))}beforeDestroy(){this.vssue.$off("error"),null!==this.progress.timer&&window.clearTimeout(this.progress.timer),null!==this.alert.timer&&window.clearTimeout(this.alert.timer)}progressStart(){this.progress.show=!0,this.progress.percent=0,this.progress.timer=window.setInterval(()=>{this.progress.percent+=5,this.progress.percent>94&&null!==this.progress.timer&&window.clearInterval(this.progress.timer)},this.progress.speed)}progressDone(){this.progress.percent=100,null!==this.progress.timer&&window.clearTimeout(this.progress.timer),this.progress.timer=null,window.setTimeout(()=>{this.progress.show=!1},this.progress.speed)}alertShow(t){this.alert.show=!0,this.alert.message=t,null!==this.alert.timer&&window.clearTimeout(this.alert.timer),this.alert.timer=window.setTimeout(()=>{this.alertHide()},3e3)}alertHide(){this.alert.show=!1,null!==this.alert.timer&&window.clearTimeout(this.alert.timer),this.alert.timer=null}};Nr([On()],Xr.prototype,"vssue",void 0),Nr([Pn("vssue.isLoadingComments")],Xr.prototype,"onLoadingCommentsChange",null),Xr=Nr([Object(kn.b)({components:{TransitionFade:Ur}})],Xr);const Zr=zr({render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"vssue-notice"},[n("div",{directives:[{name:"show",rawName:"v-show",value:t.progress.show,expression:"progress.show"}],staticClass:"vssue-progress",style:{width:t.progress.percent+"%",transition:"all "+t.progress.speed+"ms linear"}}),t._v(" "),n("TransitionFade",[n("div",{directives:[{name:"show",rawName:"v-show",value:t.alert.show,expression:"alert.show"}],staticClass:"vssue-alert",domProps:{textContent:t._s(t.alert.message)},on:{click:function(e){return t.alertHide()}}})])],1)},staticRenderFns:[]},void 0,Xr,void 0,!1,void 0,!1,void 0,void 0,void 0);let to=class extends i.default{get status(){return this.vssue.isFailed?"failed":this.vssue.isInitializing?"initializing":this.vssue.isIssueNotCreated&&!this.vssue.isCreatingIssue?this.vssue.isAdmin||!this.vssue.isLogined?"issueNotCreated":"failed":this.vssue.isLoginRequired?"loginRequired":!this.vssue.comments||this.vssue.isCreatingIssue?"loadingComments":0===this.vssue.comments.data.length?"noComments":null}handleClick(){"issueNotCreated"===this.status?this.vssue.postIssue():"loginRequired"===this.status&&this.vssue.login()}};Nr([On()],to.prototype,"vssue",void 0),to=Nr([Object(kn.b)({components:{TransitionFade:Ur,VssueIcon:Br}})],to);const eo=zr({render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("TransitionFade",[t.status?n("div",{key:t.status,staticClass:"vssue-status"},[["failed","loadingComments","initializing"].includes(t.status)?n("VssueIcon",{attrs:{name:"failed"===t.status?"error":"loading"}}):t._e(),t._v(" "),n("p",{staticClass:"vssue-status-info"},[n(["issueNotCreated","loginRequired"].includes(t.status)?"a":"span",{tag:"Component",on:{click:t.handleClick}},[t._v("\n "+t._s(t.vssue.$t(t.status))+"\n ")])],1)],1):t._e()])},staticRenderFns:[]},void 0,to,void 0,!1,void 0,!1,void 0,void 0,void 0);let no=class extends i.default{};Nr([On()],no.prototype,"vssue",void 0),no=Nr([Object(kn.b)({components:{TransitionFade:Ur,VssueIcon:Br,VssueComments:Gr,VssueNewComment:Jr,VssueNotice:Zr,VssueStatus:eo}})],no);const ro=zr({render:function(){var t=this.$createElement,e=this._self._c||t;return e("TransitionFade",[this.vssue.isInitializing?e("VssueStatus"):e("div",{staticClass:"vssue-body"},[this.vssue.API?e("VssueNewComment"):this._e(),this._v(" "),e("VssueNotice"),this._v(" "),e("TransitionFade",[this.vssue.comments&&this.vssue.comments.data.length>0?e("VssueComments"):e("VssueStatus")],1)],1)],1)},staticRenderFns:[]},void 0,no,void 0,!1,void 0,!1,void 0,void 0,void 0);let oo=class extends i.default{};Nr([On()],oo.prototype,"vssue",void 0),oo=Nr([kn.b],oo);const io=zr({render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"vssue-header"},[n("a",{staticClass:"vssue-header-comments-count",attrs:{href:t.vssue.issue?t.vssue.issue.link:null,target:"_blank",rel:"noopener noreferrer"}},[n("span",[t._v("\n "+t._s(t.vssue.comments?t.vssue.$tc("comments",t.vssue.comments.count,{count:t.vssue.comments.count}):t.vssue.$tc("comments",0))+"\n ")])]),t._v(" "),n("span",{staticClass:"vssue-header-powered-by"},[n("span",[t._v("Powered by")]),t._v(" "),t.vssue.API?n("span",[n("a",{attrs:{href:t.vssue.API.platform.link,title:t.vssue.API.platform.name+" API "+t.vssue.API.platform.version,target:"_blank",rel:"noopener noreferrer"}},[t._v("\n "+t._s(t.vssue.API.platform.name)+"\n ")]),t._v(" "),n("span",[t._v("&")])]):t._e(),t._v(" "),n("a",{attrs:{href:"https://github.com/meteorlxy/vssue",title:"Vssue v"+t.vssue.version,target:"_blank",rel:"noopener noreferrer"}},[t._v("\n Vssue\n ")])])])},staticRenderFns:[]},void 0,oo,void 0,!1,void 0,!1,void 0,void 0,void 0),ao={login:"Login with {platform}",logout:"Logout",currentUser:"Current User",loading:"Loading",submit:"Submit",submitting:"Submitting",submitComment:"Submit Comment",cancel:"Cancel",edit:"Edit",editMode:"Edit Mode",delete:"Delete",reply:"Reply",heart:"Heart",like:"Like",unlike:"Unlike",perPage:"Comments per page",sort:"Click to change the sort direction",page:"Page",prev:"Previous Page",next:"Next Page",comments:"Comments | {count} Comment | {count} Comments",loginToComment:"Login with {platform} account to leave a comment",placeholder:"Leave a comment. Styling with Markdown is supported. Ctrl + Enter to submit.",noLoginPlaceHolder:"Login to leave a comment. Styling with Markdown is supported. ",failed:"Failed to load comments",initializing:"Initializing...",issueNotCreated:"Click to create issue",loadingComments:"Loading comments...",loginRequired:"Login to view comments",noComments:"No comments yet. Leave the first comment !",reactionGiven:"Already given '{reaction}' reaction",deleteConfirm:"Confirm to delete this comment ?",deleteFailed:"Failed to delete comment"},so={login:"使用 {platform} 登录",logout:"退出登录",currentUser:"当前用户",loading:"加载中",submit:"提交",submitting:"发表中",submitComment:"发表评论",cancel:"取消",edit:"编辑",editMode:"编辑模式",delete:"删除",reply:"回复",heart:"喜欢",like:"赞",unlike:"踩",perPage:"每页评论数",sort:"点击改变排序方式",page:"页数",prev:"上一页",next:"下一页",comments:"评论 | {count} 条评论 | {count} 条评论",loginToComment:"使用 {platform} 帐号登录后发表评论",placeholder:"留下你的评论丨支持 Markdown 语法丨Ctrl + Enter 发表评论",noLoginPlaceHolder:"登录后才能发表评论丨支持 Markdown 语法",failed:"评论加载失败",initializing:"正在初始化...",issueNotCreated:"点击创建 Issue",loadingComments:"正在加载评论...",loginRequired:"登录后查看评论",noComments:"还没有评论,来发表第一条评论吧!",reactionGiven:"已经添加过 '{reaction}' 了",deleteConfirm:"确认要删除该评论吗?",deleteFailed:"评论删除失败"},co={login:"Entrar com {platform}",logout:"Sair",currentUser:"Usuário Atual",loading:"Carregando",submit:"Enviar",submitting:"Enviando",submitComment:"Enviar Comentário",cancel:"Cancelar",edit:"Editar",editMode:"Modo de Edição",delete:"Apagar",reply:"Responder",heart:"Heart",like:"Like",unlike:"Unlike",perPage:"Comentários por página",sort:"Clique para alterar a ordenação",page:"Página",prev:"Página Anterior",next:"Próxima Página",comments:"Comentários | {count} Comentário | {count} Comentários",loginToComment:"Entre com uma conta {platform} para deixar um comentário",placeholder:"Deixe um comentário. Estilos com Markdown suportados. Ctrl + Enter para enviar.",noLoginPlaceHolder:"Entre para deixar um comentário. Estilos com Markdown suportados. ",failed:"Falha ao carregar comentários",initializing:"Inicializando...",issueNotCreated:"Click to create issue",loadingComments:"Carregando comentários...",loginRequired:"Entrar para visualizar comentários",noComments:"Nenhum comentário. Deixe o primeiro comentário!",reactionGiven:"Já reagiu com '{reaction}'",deleteConfirm:"Apagar este comentário?",deleteFailed:"Falha ao apagar comentário"},uo={login:"{platform} でログイン",logout:"ログアウト",currentUser:"現在のユーザー",loading:"読み込み中",submit:"送信",submitting:"送信中",submitComment:"コメントを送信",cancel:"キャンセル",edit:"編集",editMode:"編集モード",delete:"削除",reply:"返信",heart:"ハート",like:"高評価",unlike:"低評価",perPage:"コメント/ページ",sort:"並び順を変更するにはクリックしてください",page:"ページ",prev:"前のページ",next:"次のページ",comments:"コメント | {count} コメント | {count} コメント",loginToComment:"コメントを残すには {platform} アカウントでログインしてください。",placeholder:"コメントを残してください。Markdown 記法をサポートしています。 Ctrl + Enter で送信できます。",noLoginPlaceHolder:"コメントを残すにはログインしてください。マークダウン記法をサポートしています。",failed:"コメントの読み込みに失敗しました",initializing:"初期化中...",issueNotCreated:"Click to create issue",loadingComments:"コメントの読み込み中...",loginRequired:"コメントを見るにはログインしてください",noComments:"まだコメントがありません。最初のコメントを残しましょう!",reactionGiven:"既に '{reaction}' のリアクションをしています",deleteConfirm:"本当にコメントを削除してもいいですか?",deleteFailed:"コメントの削除に失敗しました"},lo={login:"התחברו עם {platform}",logout:"התנתקו",currentUser:"משתמש/ת נוכחי/ת",loading:"טוען",submit:"שליחה",submitting:"שולח",submitComment:"שליחת תגובה",cancel:"ביטל",edit:"עריכה",editMode:"מצב עריכה",delete:"מחיקה",reply:"תשובה",heart:"לב",like:"לייק",unlike:"אנלייק",perPage:"תגובות לדף",sort:"לחצו כדי לשנות את כיוון המיון",page:"דף",prev:"הדף הקודם",next:"הדף הבא",comments:"תגובות | {count} תגובה | {count} תגובות",loginToComment:"התחברו עם חשבון {platform} כדי להשאיר תגובה",placeholder:"השאירו תגובה. יש תמיכה בעיצוב בעזרת Markdown. Ctrl + Enter כדי לשלוח.",noLoginPlaceHolder:"התחברו כדי להשאיר תגובה. יש תמיכה בעיצוב בעזרת Markdown. ",failed:"כשלון בטעינת התגובות",initializing:"מאתחל...",issueNotCreated:"לחצו ליצירת issue",loadingComments:"טוען תגובות...",loginRequired:"התחברו כדי לצפות בתגובות",noComments:"עדיין אין תגובות. השאירו תגובה ראשונה !",reactionGiven:"כבר ניתן חיווי '{reaction}'",deleteConfirm:"בטוחים במחיקת התגובה ?",deleteFailed:"כשלון במחיקת התגובה"};Object.prototype.hasOwnProperty.call(i.default,"$i18n")||i.default.use(Lr);const fo=new Lr({locale:"en",fallbackLocale:"en",messages:{en:ao,"en-US":ao,zh:so,"zh-CN":so,pt:co,"pt-BR":co,ja:uo,"ja-JP":uo,he:lo,"he-IL":lo}});let po=class extends i.default{constructor(){super(...arguments),this.title=t=>`${t.prefix}${document.title}`,this.issueId=null,this.options=null,this.API=null,this.accessToken=null,this.user=null,this.issue=null,this.comments=null,this.query={page:1,perPage:10,sort:"desc"},this.isInitializing=!0,this.isIssueNotCreated=!1,this.isLoginRequired=!1,this.isFailed=!1,this.isCreatingIssue=!1,this.isLoadingComments=!1,this.isCreatingComment=!1,this.isUpdatingComment=!1}get version(){return"1.4.8"}get issueTitle(){return null===this.options?"":"function"==typeof this.title?this.title(this.options):`${this.options.prefix}${this.title}`}get isPending(){return this.isLoadingComments||this.isCreatingComment||this.isUpdatingComment}get isLogined(){return null!==this.accessToken&&null!==this.user}get isAdmin(){return null!==this.options&&null!==this.accessToken&&null!==this.user&&(this.user.username===this.options.owner||this.options.admins.includes(this.user.username))}get accessTokenKey(){return this.API?`Vssue.${this.API.platform.name.toLowerCase()}.access_token`:""}onQueryPerPageChange(){this.query.page=1,this.getComments()}onQueryChange(){this.getComments()}setOptions(t){this.options=Object.assign({labels:["Vssue"],state:"Vssue",prefix:"[Vssue]",admins:[],perPage:10,proxy:t=>"https://cors-anywhere.azm.workers.dev/"+t,issueContent:({url:t})=>t,autoCreateIssue:!1},t);const e=["api","owner","repo","clientId"];for(const t of e)this.options[t]||console.warn(`[Vssue] the option '${t}' is required`);if(this.options.locale)this.$i18n.locale=this.options.locale;else{const t=Object.keys(this.$i18n.messages),e=window.navigator.languages;this.$i18n.locale=e.filter(e=>t.includes(e)).shift()||"en"}}async init(){try{await this.initStore(),await this.initComments()}catch(t){t.response&&[401,403].includes(t.response.status)?this.isLoginRequired=!0:this.isFailed=!0,console.error(t)}}async initStore(){try{if(!this.options)throw new Error("Options are required to initialize Vssue");this.API=null,this.accessToken=null,this.user=null,this.issue=null,this.comments=null,this.query={page:1,perPage:this.options.perPage,sort:"desc"},this.isInitializing=!0,this.isIssueNotCreated=!1,this.isLoginRequired=!1,this.isFailed=!1,this.isCreatingIssue=!1,this.isLoadingComments=!1,this.isCreatingComment=!1,this.isUpdatingComment=!1;const t=this.options.api;this.API=new t({baseURL:this.options.baseURL,labels:this.options.labels,state:this.options.state,owner:this.options.owner,repo:this.options.repo,clientId:this.options.clientId,clientSecret:this.options.clientSecret,proxy:this.options.proxy}),await this.handleAuth()}finally{this.isInitializing=!1}}async initComments(){if(this.API&&this.options)if(this.issueId){const[t,e]=await Promise.all([this.API.getIssue({accessToken:this.accessToken,issueId:this.issueId}),this.API.getComments({accessToken:this.accessToken,issueId:this.issueId,query:this.query})]);this.issue=t,this.comments=e}else this.issue=await this.API.getIssue({accessToken:this.accessToken,issueTitle:this.issueTitle}),null===this.issue?(this.isIssueNotCreated=!0,this.options.autoCreateIssue&&await this.postIssue()):await this.getComments()}async postIssue(){if(this.API&&this.options&&!this.issue&&!this.issueId&&(this.isLogined||this.login(),this.isAdmin))try{this.isCreatingIssue=!0;const t=await this.API.postIssue({title:this.issueTitle,content:await this.options.issueContent({options:this.options,url:Dn(window.location.href)}),accessToken:this.accessToken});this.issue=t,this.isIssueNotCreated=!1,await this.getComments()}catch(t){this.isFailed=!0}finally{this.isCreatingIssue=!1}}async getComments(){try{if(!this.API||!this.issue||this.isLoadingComments)return;this.isLoadingComments=!0;const t=await this.API.getComments({accessToken:this.accessToken,issueId:this.issue.id,query:this.query});return this.comments=t,this.query.page!==t.page&&(this.query.page=t.page),this.query.perPage!==t.perPage&&(this.query.perPage=t.perPage),t}catch(t){if(!t.response||![401,403].includes(t.response.status)||this.isLogined)throw this.$emit("error",t),t;this.isLoginRequired=!0}finally{this.isLoadingComments=!1}}async postComment({content:t}){try{if(!this.API||!this.issue||this.isCreatingComment)return;this.isCreatingComment=!0;return await this.API.postComment({accessToken:this.accessToken,content:t,issueId:this.issue.id})}catch(t){throw this.$emit("error",t),t}finally{this.isCreatingComment=!1}}async putComment({commentId:t,content:e}){try{if(!this.API||!this.issue)return;return await this.API.putComment({accessToken:this.accessToken,issueId:this.issue.id,commentId:t,content:e})}catch(t){throw this.$emit("error",t),t}}async deleteComment({commentId:t}){try{if(!this.API||!this.issue)return;return await this.API.deleteComment({accessToken:this.accessToken,issueId:this.issue.id,commentId:t})}catch(t){throw this.$emit("error",t),t}}async getCommentReactions({commentId:t}){try{if(!this.API||!this.issue)return;return await this.API.getCommentReactions({accessToken:this.accessToken,issueId:this.issue.id,commentId:t})}catch(t){throw this.$emit("error",t),t}}async postCommentReaction({commentId:t,reaction:e}){try{if(!this.API||!this.issue)return!1;return await this.API.postCommentReaction({accessToken:this.accessToken,issueId:this.issue.id,commentId:t,reaction:e})}catch(t){throw this.$emit("error",t),t}}login(){this.API&&this.API.redirectAuth()}logout(){this.setAccessToken(null),this.user=null}async handleAuth(){if(!this.API)return;const t=await this.API.handleAuth();t?(this.setAccessToken(t),this.user=await this.API.getUser({accessToken:t})):this.getAccessToken()?this.user=await this.API.getUser({accessToken:this.accessToken}):(this.setAccessToken(null),this.user=null)}getAccessToken(){return this.accessToken=window.localStorage.getItem(this.accessTokenKey),this.accessToken}setAccessToken(t){null===t?window.localStorage.removeItem(this.accessTokenKey):window.localStorage.setItem(this.accessTokenKey,t),this.accessToken=t}};Nr([Pn("query.perPage")],po.prototype,"onQueryPerPageChange",null),Nr([Pn("query.page"),Pn("query.sort")],po.prototype,"onQueryChange",null),po=Nr([Object(kn.b)({i18n:fo})],po);var ho=po;let vo=class extends i.default{constructor(){super(...arguments),this.vssue=new ho}onOptionsChange(t){this.vssue.setOptions(t)}mounted(){null!==this.title&&(this.vssue.title=this.title),null!==this.issueId&&(this.vssue.issueId=this.issueId),this.vssue.setOptions(this.options),this.vssue.init()}};var mo;Nr([Tn({type:[String,Function],required:!1,default:null})],vo.prototype,"title",void 0),Nr([Tn({type:[String,Number],required:!1,default:null})],vo.prototype,"issueId",void 0),Nr([Tn({type:Object,required:!1,default:()=>({})})],vo.prototype,"options",void 0),Nr([(mo="vssue",Object(kn.a)((function(t,e){var n=t.provide;An(t),Sn(n)&&(n=t.provide=$n(n)),n.managed[e]=mo||e})))],vo.prototype,"vssue",void 0),Nr([Pn("options",{deep:!0})],vo.prototype,"onOptionsChange",null),vo=Nr([Object(kn.b)({components:{Iconfont:Dr,VssueBody:ro,VssueHeader:io}})],vo);const go=zr({render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"vssue"},[e("Iconfont"),this._v(" "),e("VssueHeader"),this._v(" "),e("VssueBody")],1)},staticRenderFns:[]},void 0,vo,void 0,!1,void 0,!1,void 0,void 0,void 0);var yo=n(25),bo=n.n(yo);function wo(t){return{username:t.login,avatar:t.avatar_url,homepage:t.html_url}}function _o(t){return{id:t.number,title:t.title,content:t.body,link:t.html_url}}function xo(t){return{like:t["+1"],unlike:t[-1],heart:t.heart}}function ko(t){return{id:t.id,content:t.body_html,contentRaw:t.body,author:wo(t.user),createdAt:t.created_at,updatedAt:t.updated_at,reactions:xo(t.reactions)}}function Oo(t){return"like"===t?"+1":"unlike"===t?"-1":t}class So{constructor({baseURL:t="https://github.com",owner:e,repo:n,labels:r,clientId:o,clientSecret:i,state:a,proxy:s}){if(void 0===i||void 0===s)throw new Error("clientSecret and proxy is required for GitHub V3");this.baseURL=t,this.owner=e,this.repo=n,this.labels=r,this.clientId=o,this.clientSecret=i,this.state=a,this.proxy=s,this.$http=bo.a.create({baseURL:"https://github.com"===t?"https://api.github.com":Ln(t,"api/v3"),headers:{Accept:"application/vnd.github.v3+json"}}),this.$http.interceptors.response.use(t=>t.data&&t.data.error?Promise.reject(new Error(t.data.error_description)):t,t=>(void 0===t.response&&"Network Error"===t.message&&(t.response={status:403}),Promise.reject(t)))}get platform(){return{name:"GitHub",link:this.baseURL,version:"v3",meta:{reactable:!0,sortable:!1}}}redirectAuth(){window.location.href=Mn(Ln(this.baseURL,"login/oauth/authorize"),{client_id:this.clientId,redirect_uri:window.location.href,scope:"public_repo",state:this.state})}async handleAuth(){const t=Un(window.location.search);if(t.code){if(t.state!==this.state)return null;const e=t.code;delete t.code,delete t.state;const n=Mn(Dn(window.location.href),t)+window.location.hash;window.history.replaceState(null,"",n);return await this.getAccessToken({code:e})}return null}async getAccessToken({code:t}){const e=Ln(this.baseURL,"login/oauth/access_token"),n="function"==typeof this.proxy?this.proxy(e):this.proxy,{data:r}=await this.$http.post(n,{client_id:this.clientId,client_secret:this.clientSecret,code:t},{headers:{Accept:"application/json"}});return r.access_token}async getUser({accessToken:t}){const{data:e}=await this.$http.get("user",{headers:{Authorization:"token "+t}});return wo(e)}async getIssue({accessToken:t,issueId:e,issueTitle:n}){const r={};if(t&&(r.headers={Authorization:"token "+t}),!e){r.params={q:[`"${n}"`,"is:issue","in:title",`repo:${this.owner}/${this.repo}`,"is:public",...this.labels.map(t=>"label:"+t)].join(" "),timestamp:Date.now()};const{data:t}=await this.$http.get("search/issues",r);return t.items.map(_o).find(t=>t.title===n)||null}try{r.params={timestamp:Date.now()};const{data:t}=await this.$http.get(`repos/${this.owner}/${this.repo}/issues/${e}`,r);return _o(t)}catch(t){if(t.response&&404===t.response.status)return null;throw t}}async postIssue({accessToken:t,title:e,content:n}){const{data:r}=await this.$http.post(`repos/${this.owner}/${this.repo}/issues`,{title:e,body:n,labels:this.labels},{headers:{Authorization:"token "+t}});return _o(r)}async getComments({accessToken:t,issueId:e,query:{page:n=1,perPage:r=10}={}}){const o={params:{timestamp:Date.now()}},i={params:{page:n,per_page:r,timestamp:Date.now()},headers:{Accept:["application/vnd.github.v3.raw+json","application/vnd.github.v3.html+json","application/vnd.github.squirrel-girl-preview"]}};t&&(o.headers={Authorization:"token "+t},i.headers.Authorization="token "+t);const[a,s]=await Promise.all([this.$http.get(`repos/${this.owner}/${this.repo}/issues/${e}`,o),this.$http.get(`repos/${this.owner}/${this.repo}/issues/${e}/comments`,i)]),c=s.headers.link||null,u=/rel="next"/.test(c)?Number(c.replace(/^.*[^_]page=(\d*).*rel="next".*$/,"$1"))-1:/rel="prev"/.test(c)?Number(c.replace(/^.*[^_]page=(\d*).*rel="prev".*$/,"$1"))+1:1,l=c?Number(c.replace(/^.*per_page=(\d*).*$/,"$1")):r;return{count:Number(a.data.comments),page:u,perPage:l,data:s.data.map(ko)}}async postComment({accessToken:t,issueId:e,content:n}){const{data:r}=await this.$http.post(`repos/${this.owner}/${this.repo}/issues/${e}/comments`,{body:n},{headers:{Authorization:"token "+t,Accept:["application/vnd.github.v3.raw+json","application/vnd.github.v3.html+json","application/vnd.github.squirrel-girl-preview"]}});return ko(r)}async putComment({accessToken:t,commentId:e,content:n}){const{data:r}=await this.$http.patch(`repos/${this.owner}/${this.repo}/issues/comments/${e}`,{body:n},{headers:{Authorization:"token "+t,Accept:["application/vnd.github.v3.raw+json","application/vnd.github.v3.html+json","application/vnd.github.squirrel-girl-preview"]}});return ko(r)}async deleteComment({accessToken:t,commentId:e}){const{status:n}=await this.$http.delete(`repos/${this.owner}/${this.repo}/issues/comments/${e}`,{headers:{Authorization:"token "+t}});return 204===n}async getCommentReactions({accessToken:t,commentId:e}){const{data:n}=await this.$http.get(`repos/${this.owner}/${this.repo}/issues/comments/${e}`,{params:{timestamp:Date.now()},headers:{Authorization:"token "+t,Accept:"application/vnd.github.squirrel-girl-preview"}});return xo(n.reactions)}async postCommentReaction({accessToken:t,commentId:e,reaction:n}){const r=await this.$http.post(`repos/${this.owner}/${this.repo}/issues/comments/${e}/reactions`,{content:Oo(n)},{headers:{Authorization:"token "+t,Accept:"application/vnd.github.squirrel-girl-preview"}});return 200===r.status?this.deleteCommentReaction({accessToken:t,commentId:e,reactionId:r.data.id}):201===r.status}async deleteCommentReaction({accessToken:t,commentId:e,reactionId:n}){return 204===(await this.$http.delete(`repos/${this.owner}/${this.repo}/issues/comments/${e}/reactions/${n}`,{headers:{Authorization:"token "+t,Accept:"application/vnd.github.squirrel-girl-preview"}})).status}}function $o(t){return null===t?{username:"ghost",avatar:"https://avatars3.githubusercontent.com/u/10137?v=4",homepage:"https://github.com/ghost"}:{username:t.login,avatar:t.avatarUrl,homepage:t.url}}function Co(t){return{id:t.number,title:t.title,content:t.body,link:t.url}}function Ao(t){return{like:t.find(t=>"THUMBS_UP"===t.content).users.totalCount,unlike:t.find(t=>"THUMBS_DOWN"===t.content).users.totalCount,heart:t.find(t=>"HEART"===t.content).users.totalCount}}function jo(t){return{id:t.id,content:t.bodyHTML,contentRaw:t.body,author:$o(t.author),createdAt:t.createdAt,updatedAt:t.updatedAt,reactions:Ao(t.reactionGroups)}}function Eo(t){return"like"===t?"THUMBS_UP":"unlike"===t?"THUMBS_DOWN":"heart"===t?"HEART":t}class To{constructor({baseURL:t="https://github.com",owner:e,repo:n,labels:r,clientId:o,clientSecret:i,state:a,proxy:s}){if(void 0===i||void 0===s)throw new Error("clientSecret and proxy is required for GitHub V4");this.baseURL=t,this.owner=e,this.repo=n,this.labels=r,this.clientId=o,this.clientSecret=i,this.state=a,this.proxy=s,this._pageInfo={page:1,startCursor:null,endCursor:null,sort:null,perPage:null},this._issueNodeId=null,this.$http=bo.a.create({baseURL:"https://github.com"===t?"https://api.github.com":Ln(t,"api"),headers:{Accept:"application/vnd.github.v3+json"}}),this.$http.interceptors.response.use(t=>t.data.error?Promise.reject(t.data.error_description):t.data.errors?Promise.reject(t.data.errors[0].message):t)}get platform(){return{name:"GitHub",link:this.baseURL,version:"v4",meta:{reactable:!0,sortable:!0}}}redirectAuth(){window.location.href=Mn(Ln(this.baseURL,"login/oauth/authorize"),{client_id:this.clientId,redirect_uri:window.location.href,scope:"public_repo",state:this.state})}async handleAuth(){const t=Un(window.location.search);if(t.code){if(t.state!==this.state)return null;const e=t.code;delete t.code,delete t.state;const n=Mn(Dn(window.location.href),t)+window.location.hash;window.history.replaceState(null,"",n);return await this.getAccessToken({code:e})}return null}async getAccessToken({code:t}){const e=Ln(this.baseURL,"login/oauth/access_token"),n="function"==typeof this.proxy?this.proxy(e):this.proxy,{data:r}=await this.$http.post(n,{client_id:this.clientId,client_secret:this.clientSecret,code:t},{headers:{Accept:"application/json"}});return r.access_token}async getUser({accessToken:t}){const{data:e}=await this.$http.post("graphql",{query:"query getUser {\n viewer {\n login\n avatarUrl\n url\n }\n}"},{headers:{Authorization:"token "+t}});return $o(e.data.viewer)}async getIssue({accessToken:t,issueId:e,issueTitle:n}){const r={};if(t&&(r.headers={Authorization:"token "+t}),!e){const t=[`"${n}"`,"in:title",`repo:${this.owner}/${this.repo}`,"is:public",...this.labels.map(t=>"label:"+t)].join(" "),{data:e}=await this.$http.post("graphql",{variables:{query:t},query:"query getIssueByTitle(\n $query: String!\n) {\n search(\n query: $query\n type: ISSUE\n first: 20\n ) {\n nodes {\n ... on Issue {\n id\n number\n title\n body\n url\n }\n }\n }\n}"},r),o=e.data.search.nodes.find(t=>t.title===n);return o?(this._issueNodeId=o.id,Co(o)):null}try{const{data:t}=await this.$http.post("graphql",{query:`query getIssueById {\n repository(owner: "${this.owner}", name: "${this.repo}") {\n issue (number: ${e}) {\n id\n number\n title\n body\n url\n }\n }\n}`},r);return this._issueNodeId=t.data.repository.issue.id,Co(t.data.repository.issue)}catch(t){if(t.response&&404===t.response.status)return null;throw t}}async postIssue({accessToken:t,title:e,content:n}){const{data:r}=await this.$http.post(`repos/${this.owner}/${this.repo}/issues`,{title:e,body:n,labels:this.labels},{headers:{Authorization:"token "+t}});return r.url=r.html_url,this._issueNodeId=r.node_id,Co(r)}async getComments({accessToken:t,issueId:e,query:{page:n=1,perPage:r=10,sort:o="desc"}={}}){const i={};t&&(i.headers={Authorization:"token "+t}),null!==this._pageInfo.sort&&o!==this._pageInfo.sort&&(n=1);const{firstOrLast:a,afterOrBefore:s,cursor:c}=this._getQueryParams({page:n,sort:o}),{data:u}=await this.$http.post("graphql",{variables:{owner:this.owner,repo:this.repo,issueId:e,perPage:r},query:`query getComments(\n $owner: String!\n $repo: String!\n $issueId: Int!\n $perPage: Int!\n) {\n repository(owner: $owner, name: $repo) {\n issue(number: $issueId) {\n comments(\n ${a}: $perPage\n ${null===s?"":`${s}: "${c}"`}\n ) {\n totalCount\n pageInfo {\n endCursor\n startCursor\n }\n nodes {\n id\n body\n bodyHTML\n createdAt\n updatedAt\n author {\n avatarUrl\n login\n url\n }\n reactionGroups {\n users (first: 0) {\n totalCount\n }\n content\n }\n }\n }\n }\n }\n}`},i),l=u.data.repository.issue.comments;return"desc"===o&&l.nodes.reverse(),this._pageInfo={page:n,startCursor:l.pageInfo.startCursor,endCursor:l.pageInfo.endCursor,sort:o,perPage:r},{count:l.totalCount,page:n,perPage:r,data:l.nodes.map(jo)}}async postComment({accessToken:t,content:e}){const{data:n}=await this.$http.post("graphql",{variables:{issueNodeId:this._issueNodeId,content:e},query:"mutation postComment(\n $issueNodeId: ID!\n $content: String!\n) {\n addComment(\n input: {\n subjectId: $issueNodeId\n body: $content\n }\n ) {\n commentEdge {\n node {\n id\n body\n bodyHTML\n createdAt\n updatedAt\n author {\n avatarUrl\n login\n url\n }\n reactionGroups {\n users (first: 0) {\n totalCount\n }\n content\n }\n }\n }\n }\n}"},{headers:{Authorization:"token "+t}});return jo(n.data.addComment.commentEdge.node)}async putComment({accessToken:t,commentId:e,content:n}){const{data:r}=await this.$http.post("graphql",{variables:{commentId:e,content:n},query:"mutation putComment(\n $commentId: ID!,\n $content: String!,\n) {\n updateIssueComment(input: {\n id: $commentId\n body: $content\n }) {\n issueComment {\n id\n body\n bodyHTML\n createdAt\n updatedAt\n author {\n avatarUrl\n login\n url\n }\n reactionGroups {\n users (first: 0) {\n totalCount\n }\n content\n }\n }\n }\n}"},{headers:{Authorization:"token "+t}});return jo(r.data.updateIssueComment.issueComment)}async deleteComment({accessToken:t,commentId:e}){return await this.$http.post("graphql",{variables:{commentId:e},query:"mutation deleteComment(\n $commentId: ID!,\n) {\n deleteIssueComment(input: {\n id: $commentId\n }) {\n clientMutationId\n }\n}"},{headers:{Authorization:"token "+t}}),!0}async getCommentReactions({accessToken:t,issueId:e,commentId:n}){const{firstOrLast:r,afterOrBefore:o,cursor:i}=this._getQueryParams(),{data:a}=await this.$http.post("graphql",{variables:{owner:this.owner,repo:this.repo,issueId:e,perPage:this._pageInfo.perPage},query:`query getComments(\n $owner: String!\n $repo: String!\n $issueId: Int!\n $perPage: Int!\n) {\n repository(owner: $owner, name: $repo) {\n issue(number: $issueId) {\n comments(\n ${r}: $perPage\n ${null===o?"":`${o}: "${i}"`}\n ) {\n nodes {\n id\n reactionGroups {\n users (first: 0) {\n totalCount\n }\n content\n }\n }\n }\n }\n }\n}`},{headers:{Authorization:"token "+t}});return Ao(a.data.repository.issue.comments.nodes.find(t=>t.id===n).reactionGroups)}async postCommentReaction({accessToken:t,commentId:e,reaction:n}){return await this.$http.post("graphql",{variables:{commentId:e,content:Eo(n)},query:"mutation postCommentReaction(\n $commentId: ID!,\n $content: ReactionContent!,\n) {\n addReaction(input: {\n subjectId: $commentId\n content: $content\n }) {\n reaction {\n databaseId\n }\n }\n}"},{headers:{Authorization:"token "+t}}),!0}_getQueryParams({page:t=this._pageInfo.page,sort:e=this._pageInfo.sort}={}){let n,r,o;return 1===t?(n="asc"===e?"first":"last",r=null,o=null):"asc"===e?t>this._pageInfo.page?(n="first",r="after",o=this._pageInfo.endCursor):(n="last",r="before",o=this._pageInfo.startCursor):t>this._pageInfo.page?(n="last",r="before",o=this._pageInfo.startCursor):(n="first",r="after",o=this._pageInfo.endCursor),{firstOrLast:n,afterOrBefore:r,cursor:o}}}function Po(t){return{username:t.username,avatar:t.avatar_url,homepage:t.web_url}}function Io(t){return{id:t.iid,title:t.title,content:t.description,link:t.web_url}}function Ro(t){return{id:t.id,content:t.body_html||"",contentRaw:t.body,author:Po(t.author),createdAt:t.created_at,updatedAt:t.updated_at,reactions:t.reactions}}function Mo(t){return{like:t.filter(t=>"thumbsup"===t.name).length,unlike:t.filter(t=>"thumbsdown"===t.name).length,heart:t.filter(t=>"heart"===t.name).length}}function Lo(t){return"like"===t?"thumbsup":"unlike"===t?"thumbsdown":t}class No{constructor({baseURL:t="https://gitlab.com",owner:e,repo:n,labels:r,clientId:o,state:i}){this.baseURL=t,this.owner=e,this.repo=n,this.labels=r,this.clientId=o,this.state=i,this._encodedRepo=encodeURIComponent(`${this.owner}/${this.repo}`),this.$http=bo.a.create({baseURL:Ln(t,"api/v4"),headers:{Accept:"application/json"}})}get platform(){return{name:"GitLab",link:this.baseURL,version:"v4",meta:{reactable:!0,sortable:!0}}}redirectAuth(){window.location.href=Mn(Ln(this.baseURL,"oauth/authorize"),{client_id:this.clientId,redirect_uri:window.location.href,response_type:"token",state:this.state})}async handleAuth(){const t=Un(window.location.hash.slice(1));if(!t.access_token||t.state!==this.state)return null;const e=t.access_token;delete t.access_token,delete t.token_type,delete t.expires_in,delete t.state;const n=Rn(t),r=n?"#"+n:"",o=`${Dn(window.location.href)}${window.location.search}${r}`;return window.history.replaceState(null,"",o),e}async getUser({accessToken:t}){const{data:e}=await this.$http.get("user",{headers:{Authorization:"Bearer "+t}});return Po(e)}async getIssue({accessToken:t,issueId:e,issueTitle:n}){const r={};if(t&&(r.headers={Authorization:"Bearer "+t}),!e){r.params={labels:this.labels.join(","),order_by:"created_at",sort:"asc",search:n};const{data:t}=await this.$http.get(`projects/${this._encodedRepo}/issues`,r);return t.map(Io).find(t=>t.title===n)||null}try{const{data:t}=await this.$http.get(`projects/${this._encodedRepo}/issues/${e}`,r);return Io(t)}catch(t){if(t.response&&404===t.response.status)return null;throw t}}async postIssue({accessToken:t,title:e,content:n}){const{data:r}=await this.$http.post(`projects/${this._encodedRepo}/issues`,{title:e,description:n,labels:this.labels.join(",")},{headers:{Authorization:"Bearer "+t}});return Io(r)}async getComments({accessToken:t,issueId:e,query:{page:n=1,perPage:r=10,sort:o="desc"}={}}){const i={params:{page:n,per_page:r,order_by:"created_at",sort:o}};t&&(i.headers={Authorization:"Bearer "+t});const a=await this.$http.get(`projects/${this._encodedRepo}/issues/${e}/notes`,i),s=a.data,c=[];for(const n of s)c.push((async()=>{n.body_html=await this.getMarkdownContent({accessToken:t,contentRaw:n.body})})()),c.push((async()=>{n.reactions=await this.getCommentReactions({accessToken:t,issueId:e,commentId:n.id})})());return await Promise.all(c),{count:Number(a.headers["x-total"]),page:Number(a.headers["x-page"]),perPage:Number(a.headers["x-per-page"]),data:s.map(Ro)}}async postComment({accessToken:t,issueId:e,content:n}){const{data:r}=await this.$http.post(`projects/${this._encodedRepo}/issues/${e}/notes`,{body:n},{headers:{Authorization:"Bearer "+t}});return Ro(r)}async putComment({accessToken:t,issueId:e,commentId:n,content:r}){const{data:o}=await this.$http.put(`projects/${this._encodedRepo}/issues/${e}/notes/${n}`,{body:r},{headers:{Authorization:"Bearer "+t}}),[i,a]=await Promise.all([this.getMarkdownContent({accessToken:t,contentRaw:o.body}),this.getCommentReactions({accessToken:t,issueId:e,commentId:o.id})]);return o.body_html=i,o.reactions=a,Ro(o)}async deleteComment({accessToken:t,issueId:e,commentId:n}){const{status:r}=await this.$http.delete(`projects/${this._encodedRepo}/issues/${e}/notes/${n}`,{headers:{Authorization:"Bearer "+t}});return 204===r}async getCommentReactions({accessToken:t,issueId:e,commentId:n}){const{data:r}=await this.$http.get(`projects/${this._encodedRepo}/issues/${e}/notes/${n}/award_emoji`,{headers:{Authorization:"Bearer "+t}});return Mo(r)}async postCommentReaction({issueId:t,commentId:e,reaction:n,accessToken:r}){try{return 201===(await this.$http.post(`projects/${this._encodedRepo}/issues/${t}/notes/${e}/award_emoji`,{name:Lo(n)},{headers:{Authorization:"Bearer "+r}})).status}catch(t){if(t.response&&404===t.response.status)return!1;throw t}}async getMarkdownContent({accessToken:t,contentRaw:e}){const n={};t&&(n.headers={Authorization:"Bearer "+t});const{data:r}=await this.$http.post("markdown",{text:e,gfm:!0},n);return r.html}}function Fo(t){return{username:t.nickname,avatar:t.links.avatar.href,homepage:t.links.html.href}}function zo(t){return{id:t.id,title:t.title,content:t.content.raw,link:t.links.html.href}}function Do(t){return{id:t.id,content:t.content.html,contentRaw:t.content.raw,author:Fo(t.user),createdAt:t.created_on,updatedAt:t.updated_on,reactions:null}}class Uo{constructor({baseURL:t="https://bitbucket.org",owner:e,repo:n,clientId:r,state:o}){this.baseURL=t,this.owner=e,this.repo=n,this.clientId=r,this.state=o,this.$http=bo.a.create({baseURL:"https://api.bitbucket.org/2.0",headers:{Accept:"application/json"}})}get platform(){return{name:"Bitbucket",link:this.baseURL,version:"v2",meta:{reactable:!1,sortable:!0}}}redirectAuth(){window.location.href=Mn(Ln(this.baseURL,"site/oauth2/authorize"),{client_id:this.clientId,redirect_uri:window.location.href,response_type:"token",state:this.state})}async handleAuth(){const t=Un(window.location.hash.slice(1));if(!t.access_token||t.state!==this.state)return null;const e=t.access_token;delete t.access_token,delete t.token_type,delete t.expires_in,delete t.state,delete t.scopes;const n=Rn(t),r=n?"#"+n:"",o=`${Dn(window.location.href)}${window.location.search}${r}`;return window.history.replaceState(null,"",o),e}async getUser({accessToken:t}){const{data:e}=await this.$http.get("user",{headers:{Authorization:"Bearer "+t}});return Fo(e)}async getIssue({accessToken:t,issueId:e,issueTitle:n}){const r={};if(t&&(r.headers={Authorization:"Bearer "+t}),!e){r.params={sort:"created_on",q:`title="${n}"`,timestamp:Date.now()};const{data:t}=await this.$http.get(`repositories/${this.owner}/${this.repo}/issues`,r);return t.size>0?zo(t.values[0]):null}try{r.params={timestamp:Date.now()};const{data:t}=await this.$http.get(`repositories/${this.owner}/${this.repo}/issues/${e}`,r);return zo(t)}catch(t){if(t.response&&404===t.response.status)return null;throw t}}async postIssue({accessToken:t,title:e,content:n}){const{data:r}=await this.$http.post(`repositories/${this.owner}/${this.repo}/issues`,{title:e,content:{raw:n},priority:"trivial",kind:"task"},{headers:{Authorization:"Bearer "+t}});return r.links.html={href:Ln(this.baseURL,`${this.owner}/${this.repo}/issues/${r.id}`)},zo(r)}async getComments({accessToken:t,issueId:e,query:{page:n=1,perPage:r=10,sort:o="desc"}={}}){const i={params:{page:n,pagelen:r,sort:"desc"===o?"-created_on":"created_on",timestamp:Date.now()}};t&&(i.headers={Authorization:"Bearer "+t});const{data:a}=await this.$http.get(`repositories/${this.owner}/${this.repo}/issues/${e}/comments`,i);return{count:a.size,page:a.page,perPage:a.pagelen,data:a.values.filter(t=>null!==t.content.raw).map(Do)}}async postComment({accessToken:t,issueId:e,content:n}){const{data:r}=await this.$http.post(`repositories/${this.owner}/${this.repo}/issues/${e}/comments`,{content:{raw:n}},{headers:{Authorization:"Bearer "+t}});return Do(r)}async putComment({accessToken:t,issueId:e,commentId:n,content:r}){const{data:o}=await this.$http.put(`repositories/${this.owner}/${this.repo}/issues/${e}/comments/${n}`,{content:{raw:r}},{headers:{Authorization:"Bearer "+t}});return Do(o)}async deleteComment({accessToken:t,issueId:e,commentId:n}){const{status:r}=await this.$http.delete(`repositories/${this.owner}/${this.repo}/issues/${e}/comments/${n}`,{headers:{Authorization:"Bearer "+t}});return 204===r}async getCommentReactions(t){throw new Error("501 Not Implemented")}async postCommentReaction(t){throw new Error("501 Not Implemented")}}function Bo(t){return{username:t.login,avatar:t.avatar_url,homepage:t.html_url}}function qo(t){return{id:t.number,title:t.title,content:t.body,link:t.html_url}}function Vo(t){return{id:t.id,content:t.body_html||"",contentRaw:t.body,author:Bo(t.user),createdAt:t.created_at,updatedAt:t.updated_at||"",reactions:null}}class Ho{constructor({baseURL:t="https://gitee.com",owner:e,repo:n,labels:r,clientId:o,clientSecret:i,state:a,proxy:s}){if(void 0===i||void 0===s)throw new Error("clientSecret and proxy is required for Gitee V5");this.baseURL=t,this.owner=e,this.repo=n,this.labels=r,this.clientId=o,this.clientSecret=i,this.state=a,this.proxy=s,this.$http=bo.a.create({baseURL:Ln(t,"api/v5")}),this.$http.interceptors.response.use(t=>t,t=>(t.response.data&&t.response.data.message&&(t.message=t.response.data.message),Promise.reject(t)))}get platform(){return{name:"Gitee",link:this.baseURL,version:"v5",meta:{reactable:!1,sortable:!1}}}redirectAuth(){window.location.href=Mn(Ln(this.baseURL,"oauth/authorize"),{client_id:this.clientId,redirect_uri:window.location.href,scope:"user_info issues notes",response_type:"code",state:this.state})}async handleAuth(){const t=Un(window.location.search);if(t.code){if(t.state!==this.state)return null;const e=t.code;delete t.code,delete t.state;const n=Mn(Dn(window.location.href),t)+window.location.hash;window.history.replaceState(null,"",n);return await this.getAccessToken({code:e})}return null}async getAccessToken({code:t}){const e=Ln(this.baseURL,"oauth/token"),n="function"==typeof this.proxy?this.proxy(e):this.proxy,{data:r}=await this.$http.post(n,{client_id:this.clientId,client_secret:this.clientSecret,code:t,grant_type:"authorization_code",redirect_uri:window.location.href});return r.access_token}async getUser({accessToken:t}){const{data:e}=await this.$http.get("user",{params:{access_token:t}});return Bo(e)}async getIssue({accessToken:t,issueId:e,issueTitle:n}){const r={params:{timestamp:Date.now()}};if(t&&(r.params.access_token=t),!e){Object.assign(r.params,{q:n,repo:`${this.owner}/${this.repo}`,per_page:1});const{data:t}=await this.$http.get("search/issues",r);return t.map(qo).find(t=>t.title===n)||null}try{const{data:t}=await this.$http.get(`repos/${this.owner}/${this.repo}/issues/${e}`,r);return qo(t)}catch(t){if(t.response&&404===t.response.status)return null;throw t}}async postIssue({accessToken:t,title:e,content:n}){const{data:r}=await this.$http.post(`repos/${this.owner}/issues`,{access_token:t,repo:this.repo,title:e,body:n,labels:this.labels.join(",")});return qo(r)}async getComments({accessToken:t,issueId:e,query:{page:n=1,perPage:r=10}={}}){const o={params:{page:n,per_page:r,timestamp:Date.now()},headers:{Accept:["application/vnd.gitee.html+json"]}};t&&(o.params.access_token=t);const i=await this.$http.get(`repos/${this.owner}/${this.repo}/issues/${e}/comments`,o);return{count:Number(i.headers.total_count),page:n,perPage:r,data:i.data.map(Vo)}}async postComment({accessToken:t,issueId:e,content:n}){const{data:r}=await this.$http.post(`repos/${this.owner}/${this.repo}/issues/${e}/comments`,{body:n,access_token:t},{headers:{Accept:["application/vnd.gitee.html+json"]}});return Vo(r)}async putComment({accessToken:t,commentId:e,content:n}){const{data:r}=await this.$http.patch(`repos/${this.owner}/${this.repo}/issues/comments/${e}`,{body:n,access_token:t},{headers:{Accept:["application/vnd.gitee.html+json"]}});return Vo(r)}async deleteComment({accessToken:t,commentId:e}){const{status:n}=await this.$http.delete(`repos/${this.owner}/${this.repo}/issues/comments/${e}`,{params:{access_token:t}});return 204===n}async getCommentReactions(t){throw new Error("501 Not Implemented")}async postCommentReaction(t){throw new Error("501 Not Implemented")}}n(423);var Wo={name:"Vssue",components:{VssueComponent:go},props:{options:{type:Object,default:function(){return{}}}},data:function(){return{key:"key",platformOptions:{github:So,"github-v4":To,gitlab:No,bitbucket:Uo,gitee:Ho}}},computed:{vssueOptions:function(){var t=this.platformOptions,e=this.options,n=t[e.platform];return Object(Ze.a)(Object(Ze.a)({},e),{},{api:n})}},watch:{$route:function(t,e){var n=this;t.path!==e.path&&setTimeout((function(){n.key="reco-".concat((new Date).getTime())}),300)}}},Qo=(n(424),{components:{Valine:xn,Vssue:Object(We.a)(Wo,(function(){var t=this.$createElement;return(this._self._c||t)("VssueComponent",{key:this.key,staticClass:"vssue-wrapper",attrs:{options:this.vssueOptions}})}),[],!1,null,null,null).exports},props:{isShowComments:{type:Boolean,default:!0}},data:function(){return{commentsOptions:{}}},computed:{solution:function(){var t=this.commentsOptions.solution,e=this.$themeConfig,n=e.valineConfig,r=e.vssueConfig,o=this.$themeLocaleConfig,i=o.valineConfig,a=o.vssueConfig,s="";return void 0!==t?s=t:void 0!==i||void 0!==n?s="valine":void 0===a&&void 0===r||(s="vssue"),s},options:function(){var t=this.commentsOptions.options,e=this.$themeConfig,n=e.valineConfig,r=e.vssueConfig,o=this.$themeLocaleConfig,i=o.valineConfig,a=o.vssueConfig;return void 0!==t?t:void 0!==i||void 0!==n?i||n:void 0!==a||void 0!==r?a||r:null},componentName:function(){var t=this.solution;return"valine"===t?"Valine":"vssue"===t?"Vssue":""}},mounted:function(){this.$themeConfig.commentsSolution=this.solution}}),Go=Object(We.a)(Qo,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{directives:[{name:"show",rawName:"v-show",value:this.isShowComments,expression:"isShowComments"}],staticClass:"comments-wrapper"},[e("ClientOnly",[e(this.componentName,{tag:"component",attrs:{options:this.options}})],1)],1)}),[],!1,null,null,null).exports,Yo={props:{idVal:String,numStyle:Object,flagTitle:{type:String,default:"Your Article Title"}},methods:{getIdVal:function(t){var e=this.$site.base;return e.slice(0,e.length-1)+t}}},Ko=Object(We.a)(Yo,(function(){var t=this.$createElement,e=this._self._c||t;return e("span",{staticClass:"leancloud-visitors",attrs:{id:this.getIdVal(this.idVal),"data-flag-title":this.flagTitle}},[e("a",{staticClass:"leancloud-visitors-count",style:this.numStyle})])}),[],!1,null,null,null).exports,Jo=(n(425),n(67)),Xo=n(20),Zo=n(31),ti={tags:{},categories:{},timeline:{}},ei=function(){function t(e,n){var r=this;Object(Xo.a)(this,t),this._metaMap=Object.assign({},e),Object.keys(this._metaMap).forEach((function(t){var e=r._metaMap[t].pageKeys;r._metaMap[t].pages=e.map((function(t){return function(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:i.default;Kt(e),n.$vuepress.$set("siteData",e);var r=t(n.$vuepress.$get("siteData")),o=new r,a=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(o)),s={};return Object.keys(a).reduce((function(t,e){return e.startsWith("$")&&(t[e]=a[e].get),t}),s),{computed:s}}((function(t){return function(){function e(){Object(Xo.a)(this,e)}return Object(Zo.a)(e,[{key:"setPage",value:function(t){this.__page=t}},{key:"$site",get:function(){return t}},{key:"$themeConfig",get:function(){return this.$site.themeConfig}},{key:"$frontmatter",get:function(){return this.$page.frontmatter}},{key:"$localeConfig",get:function(){var t,e,n=this.$site.locales,r=void 0===n?{}:n;for(var o in r)"/"===o?e=r[o]:0===this.$page.path.indexOf(o)&&(t=r[o]);return t||e||{}}},{key:"$siteTitle",get:function(){return this.$localeConfig.title||this.$site.title||""}},{key:"$canonicalUrl",get:function(){var t=this.$page.frontmatter.canonicalUrl;return"string"==typeof t&&t}},{key:"$title",get:function(){var t=this.$page,e=this.$page.frontmatter.metaTitle;if("string"==typeof e)return e;var n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}},{key:"$description",get:function(){var t=function(t){if(t){var e=t.filter((function(t){return"description"===t.name}))[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}},{key:"$lang",get:function(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}},{key:"$localePath",get:function(){return this.$localeConfig.path||"/"}},{key:"$themeLocaleConfig",get:function(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}},{key:"$page",get:function(){return this.__page?this.__page:function(t,e){for(var n=0;n=0;s--)(o=t[s])&&(a=(i<3?o(a):i>3?o(e,n,a):o(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a}var Fr=i.default.extend({name:"Iconfont"});function zr(t,e,n,r,o,i,a,s,c,u){"boolean"!=typeof a&&(c=s,s=a,a=!1);const l="function"==typeof n?n.options:n;let f;if(t&&t.render&&(l.render=t.render,l.staticRenderFns=t.staticRenderFns,l._compiled=!0,o&&(l.functional=!0)),r&&(l._scopeId=r),i?(f=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),e&&e.call(this,c(t)),t&&t._registeredComponents&&t._registeredComponents.add(i)},l._ssrRegister=f):e&&(f=a?function(t){e.call(this,u(t,this.$root.$options.shadowRoot))}:function(t){e.call(this,s(t))}),f)if(l.functional){const t=l.render;l.render=function(e,n){return f.call(n),t(e,n)}}else{const t=l.beforeCreate;l.beforeCreate=t?[].concat(t,f):[f]}return n}"undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());const Dr=zr({render:function(t,e){var n=e._c;return n("svg",{directives:[{name:"show",rawName:"v-show",value:!1,expression:"false"}]},[n("symbol",{attrs:{id:"vssue-icon-bitbucket",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M579.5522464 489.45249493q4.8371808 38.38537173-30.81752427 61.55702827t-67.95459093 3.66689493q-23.79580907-10.37653333-32.6119616-35.34262826t-0.31207573-50.01020907 31.67573333-35.34262827q21.92335253-11.00068587 44.1587808-7.33379093t39.00952427 21.61127573 16.77409493 41.1160384zM647.19476053 476.65737173q-8.50407573-65.22392427-68.8908192-99.9424t-120.07131413-7.9579424q-38.38537173 17.08617173-61.24495253 53.9111616t-21.0651424 78.95527574q2.41859093 55.4715424 47.20152426 94.48106666t100.87862827 34.1723424q55.4715424-4.8371808 92.60860907-51.18049493t30.50544746-102.43900907zM792.93434133 146.32472427q-12.17097173-16.4620192-34.1723424-27.15062827t-35.34262826-13.41927573-43.30057174-7.64586667q-177.33729493-28.63299093-345.00022826 1.24830507-26.2144 4.29104747-40.25782827 7.33379093t-33.54819093 13.41927573-30.50544747 26.2144q18.2564576 17.08617173 46.34331413 27.6967616t44.78293334 13.41927574 53.36502826 7.02171413q138.95192427 17.71032427 273.06666667 0.62415253 38.38537173-4.8371808 54.53531413-7.33379093t44.1587808-13.1072 45.7191616-28.32091413zM827.65281813 777.10872427q-4.8371808 15.83786667-9.44030506 46.65539093t-8.50407574 51.18049493-17.39824746 42.6764192-35.34262827 34.4064q-52.4288 29.2571424-115.46819093 43.61264747t-123.1140576 13.41927573-122.8019808-11.3127616q-28.0088384-4.8371808-49.69813334-11.00068586t-46.65539093-16.4620192-44.4708576-26.52647574-31.67573333-37.4491424q-15.21371413-58.51428587-34.71847574-177.96144746l3.66689494-9.7523808 11.00068586-5.46133334q135.9091808 90.1900192 308.72137174 90.1900192t309.34552426-90.1900192q12.79512427 3.66689493 14.5895616 14.04342827t-3.0427424 27.46270507-4.8371808 22.54750506zM937.97175147 191.41973333q-15.83786667 101.8148576-67.64251414 399.22346667-3.0427424 18.2564576-16.4620192 34.1723424t-26.52647573 24.3419424-33.23611413 18.88060907q-153.61950507 76.7707424-371.8387808 53.67710506-151.12289493-16.4620192-240.14262827-84.72868586-9.12822827-7.33379093-15.52579093-16.1499424t-10.37653334-21.2992-5.46133333-20.75306667-3.66689493-24.10788587-3.3548192-21.2992q-5.46133333-30.50544747-16.1499424-91.43832426t-17.08617174-98.4600384-14.35550506-89.8779424-13.41927574-96.27550507q1.7944384-15.83786667 10.68860907-29.5692192t19.19268587-22.8595808 27.46270506-18.2564576 28.0088384-13.73135253 29.2571424-11.3127616q76.22460907-28.0088384 190.75657174-39.00952427 231.0144-22.54750507 412.01859093 30.50544747 94.48106667 28.0088384 131.072 74.35215253 9.7523808 12.17097173 10.0644576 31.0515808t-3.3548192 32.9240384z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-gitea",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M184.31868985 236.10860742C106.94832667 235.94086648 3.32655508 285.13080468 9.02973665 408.46209936c8.93218827 192.65010787 206.32096845 210.5144844 285.20099725 212.06608453 8.63864186 36.14810496 101.48307766 160.77938883 170.21479898 167.32127321h301.09442177c180.57278288-11.99345499 315.77172611-546.07960359 215.54670217-548.09249109-165.7696721 7.79993906-264.02374305 11.74184405-348.27147151 12.41280591v166.69224585l-26.25140843-11.61603761-0.16773997-154.99233728c-96.70246985-0.04193548-181.83083757-4.52899687-343.4069947-12.49667687-20.21274496-0.12580547-48.39316992-3.5644886-78.67035236-3.64835859z m10.94507577 68.14462849h9.22573371c10.98701124 98.75729283 28.85138778 156.50200291 64.99949274 244.73357185-92.25734394-10.90314029-170.75995634-37.69970509-185.18564974-137.75698809-7.46445813-51.78991757 17.69663558-105.84433456 110.96042329-107.01851827z m358.83913087 97.07988723c6.29027343 0.08386999 12.70635233 1.25805468 18.74501482 4.02577499l31.40943263 13.54505513-22.51917887 41.05451824a28.18042496 25.03528825 0 0 0-10.10637297 1.59353561 28.18042496 25.03528825 0 0 0-16.98373825 32.038459 28.18042496 25.03528825 0 0 0 4.69673781 7.29671718l-38.83195528 70.70267333a28.18042496 25.03528825 0 0 0-9.30960467 1.59353659 28.18042496 25.03528825 0 0 0-16.98373825 32.038459 28.18042496 25.03528825 0 0 0 36.06423497 15.09665623 28.18042496 25.03528825 0 0 0 16.94180276-32.08039449 28.18042496 25.03528825 0 0 0-6.62575434-9.22573468l37.82551056-68.85752581a28.18042496 25.03528825 0 0 0 12.28700044-1.25805469 28.18042496 25.03528825 0 0 0 8.93218826-4.69673783c14.59343435 6.12253248 26.54495386 11.11281671 35.14166122 15.34826717 12.91602778 6.37414341 17.48696012 10.60959485 18.87082027 15.30633169 1.38386015 4.61286685-0.12580547 13.50312062-7.42252263 29.10299872-5.45157063 11.61603859-14.46762889 28.09655497-25.11915823 47.51253164a28.18042496 25.03528825 0 0 0-10.52572486 1.59353659 28.18042496 25.03528825 0 0 0-16.98373826 32.038459 28.18042496 25.03528825 0 0 0 36.06423498 15.09665623 28.18042496 25.03528825 0 0 0 16.94180278-32.03845901 28.18042496 25.03528825 0 0 0-5.74511608-8.47090188c10.52572388-19.20630122 19.58371762-35.72875308 25.41270465-48.14155897 7.88380904-16.85793279 11.99345499-29.39654416 8.38703091-41.51580463-3.60642311-12.11926046-14.67730434-20.0030695-29.35460966-27.25785217-9.6450856-4.73867233-21.68047607-9.77089106-36.06423399-15.80955357a28.18042496 25.03528825 0 0 0-1.59353562-10.022502 28.18042496 25.03528825 0 0 0-6.08059796-8.7644483l22.14176246-40.38355541 122.61839638 52.96410227c22.14176247 9.6031511 31.2836262 33.12877372 20.54822685 52.8382968l-84.28966393 154.32137544c-10.77733482 19.66758857-37.23841869 27.80300855-59.38018118 18.24179293l-173.48574115-74.98005927c-22.14176247-9.5612156-31.32556167-33.12877372-20.54822687-52.83829679l84.28966395-154.27943995c7.38058716-13.54505513 22.22563246-21.59660511 37.951317-22.22563246h2.68384935z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-gitee",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M978.404275 409.561604H455.061338c-25.117645 0-45.499734 20.382089-45.499734 45.499734l-0.031997 113.781333c0 25.117645 20.350092 45.499734 45.499734 45.531731h318.594132c25.117645 0 45.499734 20.382089 45.499734 45.499735v22.749867a136.5312 136.5312 0 0 1-136.5312 136.5312H250.248539a45.499734 45.499734 0 0 1-45.499734-45.499734V341.343999a136.5312 136.5312 0 0 1 136.5312-136.5312L978.308284 204.780802c25.117645 0 45.499734-20.350092 45.499734-45.467738L1023.904009 45.531731h0.031997A45.499734 45.499734 0 0 0 978.468269 0h-0.031997L341.343999 0.031997C152.84967 0.031997 0.031997 152.84967 0.031997 341.343999v637.092273c0 25.117645 20.382089 45.499734 45.499734 45.499734h671.233072a307.171203 307.171203 0 0 0 307.171203-307.171203v-261.671468c0-25.117645-20.382089-45.499734-45.499734-45.499734z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-github",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M512 20.4425c-278.334 0-504 225.6345-504 504 0 222.6735 144.4275 411.6105 344.673 478.233 25.2 4.662 34.461-10.9305 34.461-24.255 0-12.0015-0.4725-51.723-0.693-93.8385-140.238 30.492-169.8165-59.472-169.8165-59.472-22.932-58.2435-55.944-73.7415-55.944-73.7415-45.738-31.2795 3.465-30.6495 3.465-30.6495 50.589 3.5595 77.238 51.9435 77.238 51.9435 44.9505 77.049 117.9045 54.7785 146.664 41.895 4.5045-32.571 17.577-54.81 32.004-67.41-111.951-12.726-229.635-55.9755-229.635-249.0705 0-55.0305 19.6875-99.981 51.9435-135.2925-5.229-12.6945-22.491-63.945 4.8825-133.371 0 0 42.336-13.545 138.6315 51.66 40.194-11.1825 83.3175-16.758 126.1575-16.9785 42.8085 0.189 85.9635 5.796 126.252 16.9785 96.201-65.205 138.4425-51.66 138.4425-51.66 27.4365 69.426 10.1745 120.6765 4.9455 133.371 32.319 35.28 51.8805 80.262 51.8805 135.2925 0 193.5675-117.9045 236.187-230.139 248.6925 18.081 15.6555 34.1775 46.305 34.1775 93.3345 0 67.4415-0.5985 121.716-0.5985 138.3165 0 13.419 9.072 29.1375 34.6185 24.192 200.151-66.717 344.3895-255.5595 344.3895-478.17 0-278.3655-225.666-504-504-504z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-gitlab",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M66.61375986 405.11600042L512.11376028 976.03999972 23.84576 621.65599958a39.312 39.312 0 0 1-14.07600042-43.30799944l56.8080007-173.26800028z m259.88400014 0h371.26800014L512.14975986 976.03999972zM215.11376 60.88400042l111.384 344.232H66.61375986l111.384-344.232a19.72800014 19.72800014 0 0 1 37.11600014 0z m742.49999972 344.232l56.8080007 173.2679993a39.23999986 39.23999986 0 0 1-14.07600042 43.30800042l-488.26800028 354.38400014 445.50000042-570.92400028z m0 0h-259.88400014l111.384-344.232a19.72800014 19.72800014 0 0 1 37.11600014 0z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-loading",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M843.307 742.24c0 3.217 2.607 5.824 5.824 5.824s5.824-2.607 5.824-5.824a5.823 5.823 0 0 0-5.824-5.824 5.823 5.823 0 0 0-5.824 5.824zM714.731 874.912c0 6.398 5.186 11.584 11.584 11.584s11.584-5.186 11.584-11.584-5.186-11.584-11.584-11.584-11.584 5.186-11.584 11.584zM541.419 943.2c0 9.614 7.794 17.408 17.408 17.408s17.408-7.794 17.408-17.408-7.794-17.408-17.408-17.408-17.408 7.794-17.408 17.408z m-186.56-9.152c0 12.795 10.373 23.168 23.168 23.168s23.168-10.373 23.168-23.168-10.373-23.168-23.168-23.168-23.168 10.373-23.168 23.168zM189.355 849.12c0 16.012 12.98 28.992 28.992 28.992s28.992-12.98 28.992-28.992-12.98-28.992-28.992-28.992-28.992 12.98-28.992 28.992zM74.731 704.736c0 19.228 15.588 34.816 34.816 34.816s34.816-15.588 34.816-34.816-15.588-34.816-34.816-34.816-34.816 15.588-34.816 34.816z m-43.008-177.28c0 22.41 18.166 40.576 40.576 40.576s40.576-18.166 40.576-40.576-18.166-40.576-40.576-40.576-40.576 18.166-40.576 40.576z m35.392-176.128c0 25.626 20.774 46.4 46.4 46.4s46.4-20.774 46.4-46.4c0-25.626-20.774-46.4-46.4-46.4-25.626 0-46.4 20.774-46.4 46.4z m106.176-142.016c0 28.843 23.381 52.224 52.224 52.224s52.224-23.381 52.224-52.224c0-28.843-23.381-52.224-52.224-52.224-28.843 0-52.224 23.381-52.224 52.224z m155.904-81.344c0 32.024 25.96 57.984 57.984 57.984s57.984-25.96 57.984-57.984-25.96-57.984-57.984-57.984-57.984 25.96-57.984 57.984z m175.104-5.056c0 35.24 28.568 63.808 63.808 63.808s63.808-28.568 63.808-63.808c0-35.24-28.568-63.808-63.808-63.808-35.24 0-63.808 28.568-63.808 63.808z m160.32 72.128c0 38.421 31.147 69.568 69.568 69.568s69.568-31.147 69.568-69.568-31.147-69.568-69.568-69.568-69.568 31.147-69.568 69.568z m113.92 135.488c0 41.638 33.754 75.392 75.392 75.392s75.392-33.754 75.392-75.392-33.754-75.392-75.392-75.392-75.392 33.754-75.392 75.392z m45.312 175.488c0 44.854 36.362 81.216 81.216 81.216s81.216-36.362 81.216-81.216c0-44.854-36.362-81.216-81.216-81.216-44.854 0-81.216 36.362-81.216 81.216z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-like",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 0 0-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4-20.5-21.5-48.1-33.4-77.9-33.4-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-0.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81z m636.4-353l-21.9 19 13.9 25.4c4.6 8.4 6.9 17.6 6.9 27.3 0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4c4.6 8.4 6.9 17.6 6.9 27.3 0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4c4.6 8.4 6.9 17.6 6.9 27.3 0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5c5.2-18.9 22.5-32.2 42.2-32.3 7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-unlike",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4-8.3-3.6-17.2-5.4-26.5-5.4H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h129.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM184 456V172h81v284h-81z m627.2 160.4H496.8l9.6 198.4c0.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7-19.6-0.1-36.9-13.4-42.2-32.3L329 459.2V172h415.4c20.4 9.2 33.6 29.4 33.6 51.8 0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19c12.5 10.8 19.6 26.5 19.6 43 0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19c12.5 10.8 19.6 26.5 19.6 43 0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19c12.5 10.8 19.6 26.5 19.6 43 0 19.1-11 37.5-28.8 48.4z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-heart",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M923 283.6c-13.4-31.1-32.6-58.9-56.9-82.8-24.3-23.8-52.5-42.4-84-55.5-32.5-13.5-66.9-20.3-102.4-20.3-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5-24.4 23.9-43.5 51.7-56.9 82.8-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3 0.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-edit",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M723.2 917.76H286.72c-65.28 0-118.4-51.2-118.4-113.92V261.76C168.32 198.4 221.44 147.2 286.72 147.2h375.04c17.92 0 32 14.08 32 32s-14.08 32-32 32H286.72c-30.08 0-54.4 22.4-54.4 49.92v542.08c0 27.52 24.32 49.92 54.4 49.92H723.2c30.08 0 54.4-22.4 54.4-49.92V440.32c0-17.92 14.08-32 32-32s32 14.08 32 32v363.52c0 62.72-53.12 113.92-118.4 113.92z"}}),e._v(" "),n("path",{attrs:{d:"M499.84 602.24c-7.68 0-14.72-2.56-21.12-7.68-13.44-11.52-14.72-32-3.2-45.44L780.16 198.4c11.52-13.44 32-14.72 45.44-3.2s14.72 32 3.2 45.44L524.16 591.36c-6.4 7.04-15.36 10.88-24.32 10.88z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-delete",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M677.647059 256l0-90.352941c0-37.436235-23.461647-60.235294-61.771294-60.235294L408.094118 105.411765c-38.249412 0-61.741176 22.799059-61.741176 60.235294l0 90.352941-180.705882 0 0 60.235294 60.235294 0 0 512c0 54.272 33.972706 90.352941 90.352941 90.352941l391.529412 0c55.085176 0 90.352941-33.490824 90.352941-90.352941l0-512 60.235294 0 0-60.235294L677.647059 256zM406.588235 165.647059l210.823529 0-1.264941 90.352941L406.588235 256 406.588235 165.647059zM737.882353 858.352941l-451.764706 0 0-542.117647 451.764706 0L737.882353 858.352941zM466.823529 376.470588l-58.729412 0-1.505882 391.529412 60.235294 0L466.823529 376.470588zM617.411765 376.470588l-60.235294 0 0 391.529412 60.235294 0L617.411765 376.470588z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-reply",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M426.666667 384 426.666667 213.333333 128 512 426.666667 810.666667 426.666667 635.733333C640 635.733333 789.333333 704 896 853.333333 853.333333 640 725.333333 426.666667 426.666667 384Z"}})]),e._v(" "),n("symbol",{attrs:{id:"vssue-icon-error",viewBox:"0 0 1024 1024"}},[n("path",{attrs:{d:"M512 720m-48 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0Z"}}),e._v(" "),n("path",{attrs:{d:"M480 416v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z"}}),e._v(" "),n("path",{attrs:{d:"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48z m-783.5-27.9L512 239.9l339.8 588.2H172.2z"}})])])},staticRenderFns:[]},void 0,Fr,void 0,!0,void 0,!1,void 0,void 0,void 0);const Ur=zr({},void 0,i.default.extend({name:"TransitionFade",functional:!0,props:{group:{type:Boolean,required:!1,default:!1},tag:{type:String,required:!1,default:"div"}},render:(t,{props:e,children:n})=>t(e.group?"TransitionGroup":"Transition",{props:{name:"fade",mode:"out-in",appear:!0,tag:e.tag}},n)}),void 0,void 0,void 0,!1,void 0,void 0,void 0);const Br=zr({},void 0,i.default.extend({name:"VssueIcon",functional:!0,props:{name:{type:String,required:!0},title:{type:String,required:!1,default:null}},render:(t,{props:e,data:n})=>t("svg",Object.assign(Object.assign({},n),{class:["vssue-icon","vssue-icon-"+e.name],attrs:{"aria-hidden":"true"}}),[t("title",e.title),t("use",{attrs:{"xlink:href":"#vssue-icon-"+e.name}})])}),void 0,void 0,void 0,!1,void 0,void 0,void 0);let qr=class extends i.default{constructor(){super(...arguments),this.editMode=!1,this.editContent=this.comment.contentRaw,this.creatingReactions=[],this.isPutingComment=!1,this.isDeletingComment=!1}get currentUser(){return this.vssue.user?this.vssue.user.username:null}get content(){return this.comment.content}get author(){return this.comment.author}get createdAt(){return zn(this.comment.createdAt)}get updatedAt(){return zn(this.comment.updatedAt)}get showReactions(){return Boolean(this.vssue.API&&this.vssue.API.platform.meta.reactable&&this.comment.reactions&&!this.editMode)}get reactionKeys(){return["heart","like","unlike"]}get editContentRows(){return this.editContent.split("\n").length-1}get editInputRows(){return this.editContentRows<3?5:this.editContentRows+2}async postReaction({reaction:t}){try{if(this.creatingReactions.includes(t))return;this.creatingReactions.push(t);await this.vssue.postCommentReaction({commentId:this.comment.id,reaction:t})||this.vssue.$emit("error",new Error(this.vssue.$t("reactionGiven",{reaction:this.vssue.$t(t)})));const e=await this.vssue.getCommentReactions({commentId:this.comment.id});e&&(this.comment.reactions=e)}finally{this.creatingReactions.splice(this.creatingReactions.findIndex(e=>e===t),1)}}enterEdit(){this.editMode=!0,this.$nextTick(()=>{this.$refs.input.focus()})}resetEdit(){this.editMode=!1,this.editContent=this.comment.contentRaw}async putComment(){try{if(this.vssue.isPending)return;if(this.editContent!==this.comment.contentRaw){this.isPutingComment=!0,this.vssue.isUpdatingComment=!0;const t=await this.vssue.putComment({commentId:this.comment.id,content:this.editContent});t&&this.vssue.comments.data.splice(this.vssue.comments.data.findIndex(t=>t.id===this.comment.id),1,t)}this.editMode=!1}finally{this.isPutingComment=!1,this.vssue.isUpdatingComment=!1}}async deleteComment(){try{if(this.vssue.isPending)return;if(!window.confirm(this.vssue.$t("deleteConfirm")))return;this.isDeletingComment=!0,this.vssue.isUpdatingComment=!0;await this.vssue.deleteComment({commentId:this.comment.id})?(this.vssue.comments.count-=1,this.vssue.comments.data.length>1&&this.vssue.comments.data.splice(this.vssue.comments.data.findIndex(t=>t.id===this.comment.id),1),this.vssue.query.page>1&&this.vssue.query.page>Math.ceil(this.vssue.comments.count/this.vssue.query.perPage)?this.vssue.query.page-=1:await this.vssue.getComments()):this.vssue.$emit("error",new Error(this.vssue.$t("deleteFailed")))}finally{this.isDeletingComment=!1,this.vssue.isUpdatingComment=!1}}};Nr([Tn({type:Object,required:!0})],qr.prototype,"comment",void 0),Nr([On()],qr.prototype,"vssue",void 0),qr=Nr([Object(kn.b)({components:{VssueIcon:Br}})],qr);const Vr=zr({render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"vssue-comment",class:{"vssue-comment-edit-mode":t.editMode,"vssue-comment-disabled":t.isDeletingComment||t.isPutingComment}},[n("div",{staticClass:"vssue-comment-avatar"},[n("a",{attrs:{href:t.author.homepage,title:t.author.username,target:"_blank",rel:"noopener noreferrer"}},[n("img",{attrs:{src:t.author.avatar,alt:t.author.username}})])]),t._v(" "),n("div",{staticClass:"vssue-comment-body"},[t._t("body",[n("div",{staticClass:"vssue-comment-header"},[n("span",{staticClass:"vssue-comment-author"},[n("a",{attrs:{href:t.author.homepage,title:t.author.username,target:"_blank",rel:"noopener noreferrer"}},[t._v("\n "+t._s(t.author.username)+"\n ")])]),t._v(" "),n("span",{staticClass:"vssue-comment-created-at"},[t._v("\n "+t._s(t.createdAt)+"\n ")])]),t._v(" "),n("div",{staticClass:"vssue-comment-main"},[t.editMode?n("textarea",{directives:[{name:"model",rawName:"v-model",value:t.editContent,expression:"editContent"}],ref:"input",staticClass:"vssue-edit-comment-input",attrs:{rows:t.editInputRows},domProps:{value:t.editContent},on:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:e.ctrlKey?t.putComment():null},input:function(e){e.target.composing||(t.editContent=e.target.value)}}}):n("article",{staticClass:"markdown-body",domProps:{innerHTML:t._s(t.content)}})]),t._v(" "),n("div",{staticClass:"vssue-comment-footer"},[t.editMode?n("span",{staticClass:"vssue-comment-hint"},[t._v("\n "+t._s(t.vssue.$t("editMode"))+"\n ")]):t._e(),t._v(" "),t.showReactions?n("span",{staticClass:"vssue-comment-reactions"},t._l(t.reactionKeys,(function(e){return n("span",{key:e,staticClass:"vssue-comment-reaction",attrs:{title:t.vssue.$t(t.creatingReactions.includes(e)?"loading":e)},on:{click:function(n){return t.postReaction({reaction:e})}}},[n("VssueIcon",{attrs:{name:t.creatingReactions.includes(e)?"loading":e,title:t.vssue.$t(t.creatingReactions.includes(e)?"loading":e)}}),t._v(" "),n("span",{staticClass:"vssue-comment-reaction-number"},[t._v("\n "+t._s(t.comment.reactions[e])+"\n ")])],1)})),0):t._e(),t._v(" "),n("span",{staticClass:"vssue-comment-operations"},[t.comment.author.username===t.currentUser&&t.editMode?n("span",{staticClass:"vssue-comment-operation",class:{"vssue-comment-operation-muted":t.isPutingComment},attrs:{title:t.vssue.$t(t.isPutingComment?"loading":"submit")},on:{click:function(e){return t.putComment()}}},[n("VssueIcon",{directives:[{name:"show",rawName:"v-show",value:t.isPutingComment,expression:"isPutingComment"}],attrs:{name:"loading",title:t.vssue.$t("loading")}}),t._v("\n\n "+t._s(t.vssue.$t("submit"))+"\n ")],1):t._e(),t._v(" "),t.comment.author.username===t.currentUser&&t.editMode?n("span",{staticClass:"vssue-comment-operation vssue-comment-operation-muted",attrs:{title:t.vssue.$t("cancel")},on:{click:function(e){return t.resetEdit()}}},[t._v("\n "+t._s(t.vssue.$t("cancel"))+"\n ")]):t._e(),t._v(" "),t.comment.author.username===t.currentUser?n("span",{directives:[{name:"show",rawName:"v-show",value:!t.editMode,expression:"!editMode"}],staticClass:"vssue-comment-operation",on:{click:function(e){return t.enterEdit()}}},[n("VssueIcon",{attrs:{name:"edit",title:t.vssue.$t("edit")}})],1):t._e(),t._v(" "),t.comment.author.username===t.currentUser||t.vssue.isAdmin?n("span",{directives:[{name:"show",rawName:"v-show",value:!t.editMode,expression:"!editMode"}],staticClass:"vssue-comment-operation",on:{click:function(e){return t.deleteComment()}}},[n("VssueIcon",{attrs:{name:t.isDeletingComment?"loading":"delete",title:t.vssue.$t(t.isDeletingComment?"loading":"delete")}})],1):t._e(),t._v(" "),n("span",{directives:[{name:"show",rawName:"v-show",value:!t.editMode,expression:"!editMode"}],staticClass:"vssue-comment-operation",on:{click:function(e){return t.vssue.$emit("reply-comment",t.comment)}}},[n("VssueIcon",{attrs:{name:"reply",title:t.vssue.$t("reply")}})],1)])])])],2)])},staticRenderFns:[]},void 0,qr,void 0,!1,void 0,!1,void 0,void 0,void 0);let Hr=class extends i.default{get disabled(){return this.vssue.isPending}get pageCount(){const t=Math.ceil(this.vssue.comments.count/this.vssue.comments.perPage);return t>1?t:1}get perPageOptions(){const t=[5,10,20,50];return!t.includes(this.vssue.options.perPage)&&this.vssue.options.perPage<100&&t.push(this.vssue.options.perPage),t.sort((t,e)=>t-e)}get page(){return this.vssue.query.page>this.pageCount?this.pageCount:this.vssue.query.page}set page(t){t>0&&t<=this.pageCount&&(this.vssue.query.page=t)}get perPage(){return this.vssue.query.perPage}set perPage(t){this.perPageOptions.includes(t)&&(this.vssue.query.perPage=t)}};Nr([On()],Hr.prototype,"vssue",void 0),Hr=Nr([Object(kn.b)({components:{VssueIcon:Br}})],Hr);const Wr=zr({render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"vssue-pagination"},[n("div",{staticClass:"vssue-pagination-per-page"},[n("label",[n("select",{directives:[{name:"model",rawName:"v-model",value:t.perPage,expression:"perPage"}],staticClass:"vssue-pagination-select",attrs:{disabled:t.disabled},on:{change:function(e){var n=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.perPage=e.target.multiple?n:n[0]}}},t._l(t.perPageOptions,(function(e){return n("option",{key:e,domProps:{value:e}},[t._v("\n "+t._s(e)+"\n ")])})),0),t._v(" "),n("span",[t._v("\n "+t._s(t.vssue.$t("perPage"))+"\n ")])]),t._v(" "),t.vssue.API.platform.meta.sortable?n("span",{class:{"vssue-pagination-link":!0,disabled:t.disabled},attrs:{title:t.vssue.$t("sort")},on:{click:function(e){t.vssue.query.sort="asc"===t.vssue.query.sort?"desc":"asc"}}},[t._v("\n "+t._s("asc"===t.vssue.query.sort?"↑":"↓")+"\n ")]):t._e()]),t._v(" "),n("div",{staticClass:"vssue-pagination-page"},[n("span",{class:{"vssue-pagination-link":!0,disabled:1===t.page||t.disabled},attrs:{title:t.vssue.$t("prev")},domProps:{textContent:t._s("<")},on:{click:function(e){t.page-=1}}}),t._v(" "),n("label",[n("span",[t._v("\n "+t._s(t.vssue.$t("page"))+"\n ")]),t._v(" "),n("select",{directives:[{name:"show",rawName:"v-show",value:t.pageCount>1,expression:"pageCount > 1"},{name:"model",rawName:"v-model",value:t.page,expression:"page"}],staticClass:"vssue-pagination-select",attrs:{disabled:t.disabled},on:{change:function(e){var n=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.page=e.target.multiple?n:n[0]}}},t._l(t.pageCount,(function(e){return n("option",{key:e,domProps:{value:e}},[t._v("\n "+t._s(e)+"\n ")])})),0),t._v(" "),n("span",{directives:[{name:"show",rawName:"v-show",value:t.pageCount<2,expression:"pageCount < 2"}],domProps:{textContent:t._s(t.page)}}),t._v(" "),n("span",{domProps:{textContent:t._s(" / "+t.pageCount+" ")}})]),t._v(" "),n("span",{class:{"vssue-pagination-link":!0,disabled:t.page===t.pageCount||t.disabled},attrs:{title:t.vssue.$t("next")},domProps:{textContent:t._s(">")},on:{click:function(e){t.page+=1}}})])])},staticRenderFns:[]},void 0,Hr,void 0,!1,void 0,!1,void 0,void 0,void 0);let Qr=class extends i.default{};Nr([On()],Qr.prototype,"vssue",void 0),Qr=Nr([Object(kn.b)({components:{TransitionFade:Ur,VssueComment:Vr,VssuePagination:Wr}})],Qr);const Gr=zr({render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"vssue-comments"},[e("VssuePagination"),this._v(" "),e("TransitionFade",{attrs:{group:""}},this._l(this.vssue.comments.data,(function(t){return e("VssueComment",{key:t.id,attrs:{comment:t}})})),1),this._v(" "),e("VssuePagination",{directives:[{name:"show",rawName:"v-show",value:this.vssue.comments.data.length>5,expression:"vssue.comments.data.length > 5"}]})],1)},staticRenderFns:[]},void 0,Qr,void 0,!1,void 0,!1,void 0,void 0,void 0);const Yr=zr({},void 0,i.default.extend({name:"VssueIcon",functional:!0,props:{type:{type:String,required:!1,default:"default"}},render:(t,{props:e,data:n,children:r})=>t("button",Object.assign(Object.assign({},n),{class:["vssue-button","vssue-button-"+e.type]}),r)}),void 0,void 0,void 0,!1,void 0,void 0,void 0);let Kr=class extends i.default{constructor(){super(...arguments),this.content=""}get user(){return this.vssue.user}get platform(){return this.vssue.API&&this.vssue.API.platform.name}get isInputDisabled(){return this.loading||null===this.user||null===this.vssue.issue}get isSubmitDisabled(){return""===this.content||this.vssue.isPending||null===this.vssue.issue}get loading(){return this.vssue.isCreatingComment}get contentRows(){return this.content.split("\n").length-1}get inputRows(){return this.contentRows<3?5:this.contentRows+2}created(){this.vssue.$on("reply-comment",t=>{const e=t.contentRaw.replace(/\n/g,"\n> "),n=`@${t.author.username}\n\n> ${e}\n\n`;this.content=this.content.concat(n),this.focus()})}beforeDestroy(){this.vssue.$off("reply-comment")}focus(){this.$refs.input.focus()}async submit(){this.isSubmitDisabled||(await this.vssue.postComment({content:this.content}),this.content="",await this.vssue.getComments())}};Nr([On()],Kr.prototype,"vssue",void 0),Kr=Nr([Object(kn.b)({components:{VssueButton:Yr,VssueIcon:Br}})],Kr);const Jr=zr({render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"vssue-new-comment"},[n("div",{staticClass:"vssue-comment-avatar"},[t.user?n("a",{attrs:{href:t.user.homepage,title:t.user.username,target:"_blank",rel:"noopener noreferrer"}},[n("img",{attrs:{src:t.user.avatar,alt:t.user.username}})]):n("VssueIcon",{attrs:{name:t.platform.toLowerCase(),title:t.vssue.$t("loginToComment",{platform:t.platform})},on:{click:function(e){return t.vssue.login()}}})],1),t._v(" "),n("div",{staticClass:"vssue-new-comment-body"},[n("textarea",{directives:[{name:"model",rawName:"v-model",value:t.content,expression:"content"}],ref:"input",staticClass:"vssue-new-comment-input",attrs:{rows:t.inputRows,disabled:t.isInputDisabled,placeholder:t.vssue.$t(t.user?"placeholder":"noLoginPlaceHolder"),spellcheck:!1,"aria-label":"leave a comment"},domProps:{value:t.content},on:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:e.ctrlKey?t.submit():null},input:function(e){e.target.composing||(t.content=e.target.value)}}})]),t._v(" "),n("div",{staticClass:"vssue-new-comment-footer"},[t.user?n("span",{staticClass:"vssue-current-user"},[n("span",[t._v(t._s(t.vssue.$t("currentUser"))+" - "+t._s(t.user.username)+" - ")]),t._v(" "),n("a",{staticClass:"vssue-logout",on:{click:function(e){return t.vssue.logout()}}},[t._v("\n "+t._s(t.vssue.$t("logout"))+"\n ")])]):n("span",{staticClass:"vssue-current-user"},[t._v("\n "+t._s(t.vssue.$t("loginToComment",{platform:t.platform}))+"\n ")]),t._v(" "),n("div",{staticClass:"vssue-new-comment-operations"},[t.user?n("VssueButton",{staticClass:"vssue-button-submit-comment",attrs:{type:"primary",disabled:t.isSubmitDisabled},on:{click:function(e){return t.submit()}}},[n("VssueIcon",{directives:[{name:"show",rawName:"v-show",value:t.loading,expression:"loading"}],attrs:{name:"loading"}}),t._v("\n\n "+t._s(t.vssue.$t(t.loading?"submitting":"submitComment"))+"\n ")],1):n("VssueButton",{staticClass:"vssue-button-login",attrs:{type:"primary",title:t.vssue.$t("loginToComment",{platform:t.platform})},on:{click:function(e){return t.vssue.login()}}},[t._v("\n "+t._s(t.vssue.$t("login",{platform:t.platform}))+"\n ")])],1)])])},staticRenderFns:[]},void 0,Kr,void 0,!1,void 0,!1,void 0,void 0,void 0);let Xr=class extends i.default{constructor(){super(...arguments),this.progress={show:!1,percent:0,timer:null,speed:200},this.alert={show:!1,message:null,timer:null}}onLoadingCommentsChange(t){this.vssue.comments&&(t?this.progressStart():this.progressDone())}created(){this.vssue.$on("error",t=>this.alertShow(t.message))}beforeDestroy(){this.vssue.$off("error"),null!==this.progress.timer&&window.clearTimeout(this.progress.timer),null!==this.alert.timer&&window.clearTimeout(this.alert.timer)}progressStart(){this.progress.show=!0,this.progress.percent=0,this.progress.timer=window.setInterval(()=>{this.progress.percent+=5,this.progress.percent>94&&null!==this.progress.timer&&window.clearInterval(this.progress.timer)},this.progress.speed)}progressDone(){this.progress.percent=100,null!==this.progress.timer&&window.clearTimeout(this.progress.timer),this.progress.timer=null,window.setTimeout(()=>{this.progress.show=!1},this.progress.speed)}alertShow(t){this.alert.show=!0,this.alert.message=t,null!==this.alert.timer&&window.clearTimeout(this.alert.timer),this.alert.timer=window.setTimeout(()=>{this.alertHide()},3e3)}alertHide(){this.alert.show=!1,null!==this.alert.timer&&window.clearTimeout(this.alert.timer),this.alert.timer=null}};Nr([On()],Xr.prototype,"vssue",void 0),Nr([Pn("vssue.isLoadingComments")],Xr.prototype,"onLoadingCommentsChange",null),Xr=Nr([Object(kn.b)({components:{TransitionFade:Ur}})],Xr);const Zr=zr({render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"vssue-notice"},[n("div",{directives:[{name:"show",rawName:"v-show",value:t.progress.show,expression:"progress.show"}],staticClass:"vssue-progress",style:{width:t.progress.percent+"%",transition:"all "+t.progress.speed+"ms linear"}}),t._v(" "),n("TransitionFade",[n("div",{directives:[{name:"show",rawName:"v-show",value:t.alert.show,expression:"alert.show"}],staticClass:"vssue-alert",domProps:{textContent:t._s(t.alert.message)},on:{click:function(e){return t.alertHide()}}})])],1)},staticRenderFns:[]},void 0,Xr,void 0,!1,void 0,!1,void 0,void 0,void 0);let to=class extends i.default{get status(){return this.vssue.isFailed?"failed":this.vssue.isInitializing?"initializing":this.vssue.isIssueNotCreated&&!this.vssue.isCreatingIssue?this.vssue.isAdmin||!this.vssue.isLogined?"issueNotCreated":"failed":this.vssue.isLoginRequired?"loginRequired":!this.vssue.comments||this.vssue.isCreatingIssue?"loadingComments":0===this.vssue.comments.data.length?"noComments":null}handleClick(){"issueNotCreated"===this.status?this.vssue.postIssue():"loginRequired"===this.status&&this.vssue.login()}};Nr([On()],to.prototype,"vssue",void 0),to=Nr([Object(kn.b)({components:{TransitionFade:Ur,VssueIcon:Br}})],to);const eo=zr({render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("TransitionFade",[t.status?n("div",{key:t.status,staticClass:"vssue-status"},[["failed","loadingComments","initializing"].includes(t.status)?n("VssueIcon",{attrs:{name:"failed"===t.status?"error":"loading"}}):t._e(),t._v(" "),n("p",{staticClass:"vssue-status-info"},[n(["issueNotCreated","loginRequired"].includes(t.status)?"a":"span",{tag:"Component",on:{click:t.handleClick}},[t._v("\n "+t._s(t.vssue.$t(t.status))+"\n ")])],1)],1):t._e()])},staticRenderFns:[]},void 0,to,void 0,!1,void 0,!1,void 0,void 0,void 0);let no=class extends i.default{};Nr([On()],no.prototype,"vssue",void 0),no=Nr([Object(kn.b)({components:{TransitionFade:Ur,VssueIcon:Br,VssueComments:Gr,VssueNewComment:Jr,VssueNotice:Zr,VssueStatus:eo}})],no);const ro=zr({render:function(){var t=this.$createElement,e=this._self._c||t;return e("TransitionFade",[this.vssue.isInitializing?e("VssueStatus"):e("div",{staticClass:"vssue-body"},[this.vssue.API?e("VssueNewComment"):this._e(),this._v(" "),e("VssueNotice"),this._v(" "),e("TransitionFade",[this.vssue.comments&&this.vssue.comments.data.length>0?e("VssueComments"):e("VssueStatus")],1)],1)],1)},staticRenderFns:[]},void 0,no,void 0,!1,void 0,!1,void 0,void 0,void 0);let oo=class extends i.default{};Nr([On()],oo.prototype,"vssue",void 0),oo=Nr([kn.b],oo);const io=zr({render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"vssue-header"},[n("a",{staticClass:"vssue-header-comments-count",attrs:{href:t.vssue.issue?t.vssue.issue.link:null,target:"_blank",rel:"noopener noreferrer"}},[n("span",[t._v("\n "+t._s(t.vssue.comments?t.vssue.$tc("comments",t.vssue.comments.count,{count:t.vssue.comments.count}):t.vssue.$tc("comments",0))+"\n ")])]),t._v(" "),n("span",{staticClass:"vssue-header-powered-by"},[n("span",[t._v("Powered by")]),t._v(" "),t.vssue.API?n("span",[n("a",{attrs:{href:t.vssue.API.platform.link,title:t.vssue.API.platform.name+" API "+t.vssue.API.platform.version,target:"_blank",rel:"noopener noreferrer"}},[t._v("\n "+t._s(t.vssue.API.platform.name)+"\n ")]),t._v(" "),n("span",[t._v("&")])]):t._e(),t._v(" "),n("a",{attrs:{href:"https://github.com/meteorlxy/vssue",title:"Vssue v"+t.vssue.version,target:"_blank",rel:"noopener noreferrer"}},[t._v("\n Vssue\n ")])])])},staticRenderFns:[]},void 0,oo,void 0,!1,void 0,!1,void 0,void 0,void 0),ao={login:"Login with {platform}",logout:"Logout",currentUser:"Current User",loading:"Loading",submit:"Submit",submitting:"Submitting",submitComment:"Submit Comment",cancel:"Cancel",edit:"Edit",editMode:"Edit Mode",delete:"Delete",reply:"Reply",heart:"Heart",like:"Like",unlike:"Unlike",perPage:"Comments per page",sort:"Click to change the sort direction",page:"Page",prev:"Previous Page",next:"Next Page",comments:"Comments | {count} Comment | {count} Comments",loginToComment:"Login with {platform} account to leave a comment",placeholder:"Leave a comment. Styling with Markdown is supported. Ctrl + Enter to submit.",noLoginPlaceHolder:"Login to leave a comment. Styling with Markdown is supported. ",failed:"Failed to load comments",initializing:"Initializing...",issueNotCreated:"Click to create issue",loadingComments:"Loading comments...",loginRequired:"Login to view comments",noComments:"No comments yet. Leave the first comment !",reactionGiven:"Already given '{reaction}' reaction",deleteConfirm:"Confirm to delete this comment ?",deleteFailed:"Failed to delete comment"},so={login:"使用 {platform} 登录",logout:"退出登录",currentUser:"当前用户",loading:"加载中",submit:"提交",submitting:"发表中",submitComment:"发表评论",cancel:"取消",edit:"编辑",editMode:"编辑模式",delete:"删除",reply:"回复",heart:"喜欢",like:"赞",unlike:"踩",perPage:"每页评论数",sort:"点击改变排序方式",page:"页数",prev:"上一页",next:"下一页",comments:"评论 | {count} 条评论 | {count} 条评论",loginToComment:"使用 {platform} 帐号登录后发表评论",placeholder:"留下你的评论丨支持 Markdown 语法丨Ctrl + Enter 发表评论",noLoginPlaceHolder:"登录后才能发表评论丨支持 Markdown 语法",failed:"评论加载失败",initializing:"正在初始化...",issueNotCreated:"点击创建 Issue",loadingComments:"正在加载评论...",loginRequired:"登录后查看评论",noComments:"还没有评论,来发表第一条评论吧!",reactionGiven:"已经添加过 '{reaction}' 了",deleteConfirm:"确认要删除该评论吗?",deleteFailed:"评论删除失败"},co={login:"Entrar com {platform}",logout:"Sair",currentUser:"Usuário Atual",loading:"Carregando",submit:"Enviar",submitting:"Enviando",submitComment:"Enviar Comentário",cancel:"Cancelar",edit:"Editar",editMode:"Modo de Edição",delete:"Apagar",reply:"Responder",heart:"Heart",like:"Like",unlike:"Unlike",perPage:"Comentários por página",sort:"Clique para alterar a ordenação",page:"Página",prev:"Página Anterior",next:"Próxima Página",comments:"Comentários | {count} Comentário | {count} Comentários",loginToComment:"Entre com uma conta {platform} para deixar um comentário",placeholder:"Deixe um comentário. Estilos com Markdown suportados. Ctrl + Enter para enviar.",noLoginPlaceHolder:"Entre para deixar um comentário. Estilos com Markdown suportados. ",failed:"Falha ao carregar comentários",initializing:"Inicializando...",issueNotCreated:"Click to create issue",loadingComments:"Carregando comentários...",loginRequired:"Entrar para visualizar comentários",noComments:"Nenhum comentário. Deixe o primeiro comentário!",reactionGiven:"Já reagiu com '{reaction}'",deleteConfirm:"Apagar este comentário?",deleteFailed:"Falha ao apagar comentário"},uo={login:"{platform} でログイン",logout:"ログアウト",currentUser:"現在のユーザー",loading:"読み込み中",submit:"送信",submitting:"送信中",submitComment:"コメントを送信",cancel:"キャンセル",edit:"編集",editMode:"編集モード",delete:"削除",reply:"返信",heart:"ハート",like:"高評価",unlike:"低評価",perPage:"コメント/ページ",sort:"並び順を変更するにはクリックしてください",page:"ページ",prev:"前のページ",next:"次のページ",comments:"コメント | {count} コメント | {count} コメント",loginToComment:"コメントを残すには {platform} アカウントでログインしてください。",placeholder:"コメントを残してください。Markdown 記法をサポートしています。 Ctrl + Enter で送信できます。",noLoginPlaceHolder:"コメントを残すにはログインしてください。マークダウン記法をサポートしています。",failed:"コメントの読み込みに失敗しました",initializing:"初期化中...",issueNotCreated:"Click to create issue",loadingComments:"コメントの読み込み中...",loginRequired:"コメントを見るにはログインしてください",noComments:"まだコメントがありません。最初のコメントを残しましょう!",reactionGiven:"既に '{reaction}' のリアクションをしています",deleteConfirm:"本当にコメントを削除してもいいですか?",deleteFailed:"コメントの削除に失敗しました"},lo={login:"התחברו עם {platform}",logout:"התנתקו",currentUser:"משתמש/ת נוכחי/ת",loading:"טוען",submit:"שליחה",submitting:"שולח",submitComment:"שליחת תגובה",cancel:"ביטל",edit:"עריכה",editMode:"מצב עריכה",delete:"מחיקה",reply:"תשובה",heart:"לב",like:"לייק",unlike:"אנלייק",perPage:"תגובות לדף",sort:"לחצו כדי לשנות את כיוון המיון",page:"דף",prev:"הדף הקודם",next:"הדף הבא",comments:"תגובות | {count} תגובה | {count} תגובות",loginToComment:"התחברו עם חשבון {platform} כדי להשאיר תגובה",placeholder:"השאירו תגובה. יש תמיכה בעיצוב בעזרת Markdown. Ctrl + Enter כדי לשלוח.",noLoginPlaceHolder:"התחברו כדי להשאיר תגובה. יש תמיכה בעיצוב בעזרת Markdown. ",failed:"כשלון בטעינת התגובות",initializing:"מאתחל...",issueNotCreated:"לחצו ליצירת issue",loadingComments:"טוען תגובות...",loginRequired:"התחברו כדי לצפות בתגובות",noComments:"עדיין אין תגובות. השאירו תגובה ראשונה !",reactionGiven:"כבר ניתן חיווי '{reaction}'",deleteConfirm:"בטוחים במחיקת התגובה ?",deleteFailed:"כשלון במחיקת התגובה"};Object.prototype.hasOwnProperty.call(i.default,"$i18n")||i.default.use(Lr);const fo=new Lr({locale:"en",fallbackLocale:"en",messages:{en:ao,"en-US":ao,zh:so,"zh-CN":so,pt:co,"pt-BR":co,ja:uo,"ja-JP":uo,he:lo,"he-IL":lo}});let po=class extends i.default{constructor(){super(...arguments),this.title=t=>`${t.prefix}${document.title}`,this.issueId=null,this.options=null,this.API=null,this.accessToken=null,this.user=null,this.issue=null,this.comments=null,this.query={page:1,perPage:10,sort:"desc"},this.isInitializing=!0,this.isIssueNotCreated=!1,this.isLoginRequired=!1,this.isFailed=!1,this.isCreatingIssue=!1,this.isLoadingComments=!1,this.isCreatingComment=!1,this.isUpdatingComment=!1}get version(){return"1.4.8"}get issueTitle(){return null===this.options?"":"function"==typeof this.title?this.title(this.options):`${this.options.prefix}${this.title}`}get isPending(){return this.isLoadingComments||this.isCreatingComment||this.isUpdatingComment}get isLogined(){return null!==this.accessToken&&null!==this.user}get isAdmin(){return null!==this.options&&null!==this.accessToken&&null!==this.user&&(this.user.username===this.options.owner||this.options.admins.includes(this.user.username))}get accessTokenKey(){return this.API?`Vssue.${this.API.platform.name.toLowerCase()}.access_token`:""}onQueryPerPageChange(){this.query.page=1,this.getComments()}onQueryChange(){this.getComments()}setOptions(t){this.options=Object.assign({labels:["Vssue"],state:"Vssue",prefix:"[Vssue]",admins:[],perPage:10,proxy:t=>"https://cors-anywhere.azm.workers.dev/"+t,issueContent:({url:t})=>t,autoCreateIssue:!1},t);const e=["api","owner","repo","clientId"];for(const t of e)this.options[t]||console.warn(`[Vssue] the option '${t}' is required`);if(this.options.locale)this.$i18n.locale=this.options.locale;else{const t=Object.keys(this.$i18n.messages),e=window.navigator.languages;this.$i18n.locale=e.filter(e=>t.includes(e)).shift()||"en"}}async init(){try{await this.initStore(),await this.initComments()}catch(t){t.response&&[401,403].includes(t.response.status)?this.isLoginRequired=!0:this.isFailed=!0,console.error(t)}}async initStore(){try{if(!this.options)throw new Error("Options are required to initialize Vssue");this.API=null,this.accessToken=null,this.user=null,this.issue=null,this.comments=null,this.query={page:1,perPage:this.options.perPage,sort:"desc"},this.isInitializing=!0,this.isIssueNotCreated=!1,this.isLoginRequired=!1,this.isFailed=!1,this.isCreatingIssue=!1,this.isLoadingComments=!1,this.isCreatingComment=!1,this.isUpdatingComment=!1;const t=this.options.api;this.API=new t({baseURL:this.options.baseURL,labels:this.options.labels,state:this.options.state,owner:this.options.owner,repo:this.options.repo,clientId:this.options.clientId,clientSecret:this.options.clientSecret,proxy:this.options.proxy}),await this.handleAuth()}finally{this.isInitializing=!1}}async initComments(){if(this.API&&this.options)if(this.issueId){const[t,e]=await Promise.all([this.API.getIssue({accessToken:this.accessToken,issueId:this.issueId}),this.API.getComments({accessToken:this.accessToken,issueId:this.issueId,query:this.query})]);this.issue=t,this.comments=e}else this.issue=await this.API.getIssue({accessToken:this.accessToken,issueTitle:this.issueTitle}),null===this.issue?(this.isIssueNotCreated=!0,this.options.autoCreateIssue&&await this.postIssue()):await this.getComments()}async postIssue(){if(this.API&&this.options&&!this.issue&&!this.issueId&&(this.isLogined||this.login(),this.isAdmin))try{this.isCreatingIssue=!0;const t=await this.API.postIssue({title:this.issueTitle,content:await this.options.issueContent({options:this.options,url:Dn(window.location.href)}),accessToken:this.accessToken});this.issue=t,this.isIssueNotCreated=!1,await this.getComments()}catch(t){this.isFailed=!0}finally{this.isCreatingIssue=!1}}async getComments(){try{if(!this.API||!this.issue||this.isLoadingComments)return;this.isLoadingComments=!0;const t=await this.API.getComments({accessToken:this.accessToken,issueId:this.issue.id,query:this.query});return this.comments=t,this.query.page!==t.page&&(this.query.page=t.page),this.query.perPage!==t.perPage&&(this.query.perPage=t.perPage),t}catch(t){if(!t.response||![401,403].includes(t.response.status)||this.isLogined)throw this.$emit("error",t),t;this.isLoginRequired=!0}finally{this.isLoadingComments=!1}}async postComment({content:t}){try{if(!this.API||!this.issue||this.isCreatingComment)return;this.isCreatingComment=!0;return await this.API.postComment({accessToken:this.accessToken,content:t,issueId:this.issue.id})}catch(t){throw this.$emit("error",t),t}finally{this.isCreatingComment=!1}}async putComment({commentId:t,content:e}){try{if(!this.API||!this.issue)return;return await this.API.putComment({accessToken:this.accessToken,issueId:this.issue.id,commentId:t,content:e})}catch(t){throw this.$emit("error",t),t}}async deleteComment({commentId:t}){try{if(!this.API||!this.issue)return;return await this.API.deleteComment({accessToken:this.accessToken,issueId:this.issue.id,commentId:t})}catch(t){throw this.$emit("error",t),t}}async getCommentReactions({commentId:t}){try{if(!this.API||!this.issue)return;return await this.API.getCommentReactions({accessToken:this.accessToken,issueId:this.issue.id,commentId:t})}catch(t){throw this.$emit("error",t),t}}async postCommentReaction({commentId:t,reaction:e}){try{if(!this.API||!this.issue)return!1;return await this.API.postCommentReaction({accessToken:this.accessToken,issueId:this.issue.id,commentId:t,reaction:e})}catch(t){throw this.$emit("error",t),t}}login(){this.API&&this.API.redirectAuth()}logout(){this.setAccessToken(null),this.user=null}async handleAuth(){if(!this.API)return;const t=await this.API.handleAuth();t?(this.setAccessToken(t),this.user=await this.API.getUser({accessToken:t})):this.getAccessToken()?this.user=await this.API.getUser({accessToken:this.accessToken}):(this.setAccessToken(null),this.user=null)}getAccessToken(){return this.accessToken=window.localStorage.getItem(this.accessTokenKey),this.accessToken}setAccessToken(t){null===t?window.localStorage.removeItem(this.accessTokenKey):window.localStorage.setItem(this.accessTokenKey,t),this.accessToken=t}};Nr([Pn("query.perPage")],po.prototype,"onQueryPerPageChange",null),Nr([Pn("query.page"),Pn("query.sort")],po.prototype,"onQueryChange",null),po=Nr([Object(kn.b)({i18n:fo})],po);var ho=po;let vo=class extends i.default{constructor(){super(...arguments),this.vssue=new ho}onOptionsChange(t){this.vssue.setOptions(t)}mounted(){null!==this.title&&(this.vssue.title=this.title),null!==this.issueId&&(this.vssue.issueId=this.issueId),this.vssue.setOptions(this.options),this.vssue.init()}};var mo;Nr([Tn({type:[String,Function],required:!1,default:null})],vo.prototype,"title",void 0),Nr([Tn({type:[String,Number],required:!1,default:null})],vo.prototype,"issueId",void 0),Nr([Tn({type:Object,required:!1,default:()=>({})})],vo.prototype,"options",void 0),Nr([(mo="vssue",Object(kn.a)((function(t,e){var n=t.provide;An(t),Sn(n)&&(n=t.provide=$n(n)),n.managed[e]=mo||e})))],vo.prototype,"vssue",void 0),Nr([Pn("options",{deep:!0})],vo.prototype,"onOptionsChange",null),vo=Nr([Object(kn.b)({components:{Iconfont:Dr,VssueBody:ro,VssueHeader:io}})],vo);const go=zr({render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"vssue"},[e("Iconfont"),this._v(" "),e("VssueHeader"),this._v(" "),e("VssueBody")],1)},staticRenderFns:[]},void 0,vo,void 0,!1,void 0,!1,void 0,void 0,void 0);var yo=n(25),bo=n.n(yo);function wo(t){return{username:t.login,avatar:t.avatar_url,homepage:t.html_url}}function _o(t){return{id:t.number,title:t.title,content:t.body,link:t.html_url}}function xo(t){return{like:t["+1"],unlike:t[-1],heart:t.heart}}function ko(t){return{id:t.id,content:t.body_html,contentRaw:t.body,author:wo(t.user),createdAt:t.created_at,updatedAt:t.updated_at,reactions:xo(t.reactions)}}function Oo(t){return"like"===t?"+1":"unlike"===t?"-1":t}class So{constructor({baseURL:t="https://github.com",owner:e,repo:n,labels:r,clientId:o,clientSecret:i,state:a,proxy:s}){if(void 0===i||void 0===s)throw new Error("clientSecret and proxy is required for GitHub V3");this.baseURL=t,this.owner=e,this.repo=n,this.labels=r,this.clientId=o,this.clientSecret=i,this.state=a,this.proxy=s,this.$http=bo.a.create({baseURL:"https://github.com"===t?"https://api.github.com":Ln(t,"api/v3"),headers:{Accept:"application/vnd.github.v3+json"}}),this.$http.interceptors.response.use(t=>t.data&&t.data.error?Promise.reject(new Error(t.data.error_description)):t,t=>(void 0===t.response&&"Network Error"===t.message&&(t.response={status:403}),Promise.reject(t)))}get platform(){return{name:"GitHub",link:this.baseURL,version:"v3",meta:{reactable:!0,sortable:!1}}}redirectAuth(){window.location.href=Mn(Ln(this.baseURL,"login/oauth/authorize"),{client_id:this.clientId,redirect_uri:window.location.href,scope:"public_repo",state:this.state})}async handleAuth(){const t=Un(window.location.search);if(t.code){if(t.state!==this.state)return null;const e=t.code;delete t.code,delete t.state;const n=Mn(Dn(window.location.href),t)+window.location.hash;window.history.replaceState(null,"",n);return await this.getAccessToken({code:e})}return null}async getAccessToken({code:t}){const e=Ln(this.baseURL,"login/oauth/access_token"),n="function"==typeof this.proxy?this.proxy(e):this.proxy,{data:r}=await this.$http.post(n,{client_id:this.clientId,client_secret:this.clientSecret,code:t},{headers:{Accept:"application/json"}});return r.access_token}async getUser({accessToken:t}){const{data:e}=await this.$http.get("user",{headers:{Authorization:"token "+t}});return wo(e)}async getIssue({accessToken:t,issueId:e,issueTitle:n}){const r={};if(t&&(r.headers={Authorization:"token "+t}),!e){r.params={q:[`"${n}"`,"is:issue","in:title",`repo:${this.owner}/${this.repo}`,"is:public",...this.labels.map(t=>"label:"+t)].join(" "),timestamp:Date.now()};const{data:t}=await this.$http.get("search/issues",r);return t.items.map(_o).find(t=>t.title===n)||null}try{r.params={timestamp:Date.now()};const{data:t}=await this.$http.get(`repos/${this.owner}/${this.repo}/issues/${e}`,r);return _o(t)}catch(t){if(t.response&&404===t.response.status)return null;throw t}}async postIssue({accessToken:t,title:e,content:n}){const{data:r}=await this.$http.post(`repos/${this.owner}/${this.repo}/issues`,{title:e,body:n,labels:this.labels},{headers:{Authorization:"token "+t}});return _o(r)}async getComments({accessToken:t,issueId:e,query:{page:n=1,perPage:r=10}={}}){const o={params:{timestamp:Date.now()}},i={params:{page:n,per_page:r,timestamp:Date.now()},headers:{Accept:["application/vnd.github.v3.raw+json","application/vnd.github.v3.html+json","application/vnd.github.squirrel-girl-preview"]}};t&&(o.headers={Authorization:"token "+t},i.headers.Authorization="token "+t);const[a,s]=await Promise.all([this.$http.get(`repos/${this.owner}/${this.repo}/issues/${e}`,o),this.$http.get(`repos/${this.owner}/${this.repo}/issues/${e}/comments`,i)]),c=s.headers.link||null,u=/rel="next"/.test(c)?Number(c.replace(/^.*[^_]page=(\d*).*rel="next".*$/,"$1"))-1:/rel="prev"/.test(c)?Number(c.replace(/^.*[^_]page=(\d*).*rel="prev".*$/,"$1"))+1:1,l=c?Number(c.replace(/^.*per_page=(\d*).*$/,"$1")):r;return{count:Number(a.data.comments),page:u,perPage:l,data:s.data.map(ko)}}async postComment({accessToken:t,issueId:e,content:n}){const{data:r}=await this.$http.post(`repos/${this.owner}/${this.repo}/issues/${e}/comments`,{body:n},{headers:{Authorization:"token "+t,Accept:["application/vnd.github.v3.raw+json","application/vnd.github.v3.html+json","application/vnd.github.squirrel-girl-preview"]}});return ko(r)}async putComment({accessToken:t,commentId:e,content:n}){const{data:r}=await this.$http.patch(`repos/${this.owner}/${this.repo}/issues/comments/${e}`,{body:n},{headers:{Authorization:"token "+t,Accept:["application/vnd.github.v3.raw+json","application/vnd.github.v3.html+json","application/vnd.github.squirrel-girl-preview"]}});return ko(r)}async deleteComment({accessToken:t,commentId:e}){const{status:n}=await this.$http.delete(`repos/${this.owner}/${this.repo}/issues/comments/${e}`,{headers:{Authorization:"token "+t}});return 204===n}async getCommentReactions({accessToken:t,commentId:e}){const{data:n}=await this.$http.get(`repos/${this.owner}/${this.repo}/issues/comments/${e}`,{params:{timestamp:Date.now()},headers:{Authorization:"token "+t,Accept:"application/vnd.github.squirrel-girl-preview"}});return xo(n.reactions)}async postCommentReaction({accessToken:t,commentId:e,reaction:n}){const r=await this.$http.post(`repos/${this.owner}/${this.repo}/issues/comments/${e}/reactions`,{content:Oo(n)},{headers:{Authorization:"token "+t,Accept:"application/vnd.github.squirrel-girl-preview"}});return 200===r.status?this.deleteCommentReaction({accessToken:t,commentId:e,reactionId:r.data.id}):201===r.status}async deleteCommentReaction({accessToken:t,commentId:e,reactionId:n}){return 204===(await this.$http.delete(`repos/${this.owner}/${this.repo}/issues/comments/${e}/reactions/${n}`,{headers:{Authorization:"token "+t,Accept:"application/vnd.github.squirrel-girl-preview"}})).status}}function $o(t){return null===t?{username:"ghost",avatar:"https://avatars3.githubusercontent.com/u/10137?v=4",homepage:"https://github.com/ghost"}:{username:t.login,avatar:t.avatarUrl,homepage:t.url}}function Co(t){return{id:t.number,title:t.title,content:t.body,link:t.url}}function Ao(t){return{like:t.find(t=>"THUMBS_UP"===t.content).users.totalCount,unlike:t.find(t=>"THUMBS_DOWN"===t.content).users.totalCount,heart:t.find(t=>"HEART"===t.content).users.totalCount}}function jo(t){return{id:t.id,content:t.bodyHTML,contentRaw:t.body,author:$o(t.author),createdAt:t.createdAt,updatedAt:t.updatedAt,reactions:Ao(t.reactionGroups)}}function Eo(t){return"like"===t?"THUMBS_UP":"unlike"===t?"THUMBS_DOWN":"heart"===t?"HEART":t}class To{constructor({baseURL:t="https://github.com",owner:e,repo:n,labels:r,clientId:o,clientSecret:i,state:a,proxy:s}){if(void 0===i||void 0===s)throw new Error("clientSecret and proxy is required for GitHub V4");this.baseURL=t,this.owner=e,this.repo=n,this.labels=r,this.clientId=o,this.clientSecret=i,this.state=a,this.proxy=s,this._pageInfo={page:1,startCursor:null,endCursor:null,sort:null,perPage:null},this._issueNodeId=null,this.$http=bo.a.create({baseURL:"https://github.com"===t?"https://api.github.com":Ln(t,"api"),headers:{Accept:"application/vnd.github.v3+json"}}),this.$http.interceptors.response.use(t=>t.data.error?Promise.reject(t.data.error_description):t.data.errors?Promise.reject(t.data.errors[0].message):t)}get platform(){return{name:"GitHub",link:this.baseURL,version:"v4",meta:{reactable:!0,sortable:!0}}}redirectAuth(){window.location.href=Mn(Ln(this.baseURL,"login/oauth/authorize"),{client_id:this.clientId,redirect_uri:window.location.href,scope:"public_repo",state:this.state})}async handleAuth(){const t=Un(window.location.search);if(t.code){if(t.state!==this.state)return null;const e=t.code;delete t.code,delete t.state;const n=Mn(Dn(window.location.href),t)+window.location.hash;window.history.replaceState(null,"",n);return await this.getAccessToken({code:e})}return null}async getAccessToken({code:t}){const e=Ln(this.baseURL,"login/oauth/access_token"),n="function"==typeof this.proxy?this.proxy(e):this.proxy,{data:r}=await this.$http.post(n,{client_id:this.clientId,client_secret:this.clientSecret,code:t},{headers:{Accept:"application/json"}});return r.access_token}async getUser({accessToken:t}){const{data:e}=await this.$http.post("graphql",{query:"query getUser {\n viewer {\n login\n avatarUrl\n url\n }\n}"},{headers:{Authorization:"token "+t}});return $o(e.data.viewer)}async getIssue({accessToken:t,issueId:e,issueTitle:n}){const r={};if(t&&(r.headers={Authorization:"token "+t}),!e){const t=[`"${n}"`,"in:title",`repo:${this.owner}/${this.repo}`,"is:public",...this.labels.map(t=>"label:"+t)].join(" "),{data:e}=await this.$http.post("graphql",{variables:{query:t},query:"query getIssueByTitle(\n $query: String!\n) {\n search(\n query: $query\n type: ISSUE\n first: 20\n ) {\n nodes {\n ... on Issue {\n id\n number\n title\n body\n url\n }\n }\n }\n}"},r),o=e.data.search.nodes.find(t=>t.title===n);return o?(this._issueNodeId=o.id,Co(o)):null}try{const{data:t}=await this.$http.post("graphql",{query:`query getIssueById {\n repository(owner: "${this.owner}", name: "${this.repo}") {\n issue (number: ${e}) {\n id\n number\n title\n body\n url\n }\n }\n}`},r);return this._issueNodeId=t.data.repository.issue.id,Co(t.data.repository.issue)}catch(t){if(t.response&&404===t.response.status)return null;throw t}}async postIssue({accessToken:t,title:e,content:n}){const{data:r}=await this.$http.post(`repos/${this.owner}/${this.repo}/issues`,{title:e,body:n,labels:this.labels},{headers:{Authorization:"token "+t}});return r.url=r.html_url,this._issueNodeId=r.node_id,Co(r)}async getComments({accessToken:t,issueId:e,query:{page:n=1,perPage:r=10,sort:o="desc"}={}}){const i={};t&&(i.headers={Authorization:"token "+t}),null!==this._pageInfo.sort&&o!==this._pageInfo.sort&&(n=1);const{firstOrLast:a,afterOrBefore:s,cursor:c}=this._getQueryParams({page:n,sort:o}),{data:u}=await this.$http.post("graphql",{variables:{owner:this.owner,repo:this.repo,issueId:e,perPage:r},query:`query getComments(\n $owner: String!\n $repo: String!\n $issueId: Int!\n $perPage: Int!\n) {\n repository(owner: $owner, name: $repo) {\n issue(number: $issueId) {\n comments(\n ${a}: $perPage\n ${null===s?"":`${s}: "${c}"`}\n ) {\n totalCount\n pageInfo {\n endCursor\n startCursor\n }\n nodes {\n id\n body\n bodyHTML\n createdAt\n updatedAt\n author {\n avatarUrl\n login\n url\n }\n reactionGroups {\n users (first: 0) {\n totalCount\n }\n content\n }\n }\n }\n }\n }\n}`},i),l=u.data.repository.issue.comments;return"desc"===o&&l.nodes.reverse(),this._pageInfo={page:n,startCursor:l.pageInfo.startCursor,endCursor:l.pageInfo.endCursor,sort:o,perPage:r},{count:l.totalCount,page:n,perPage:r,data:l.nodes.map(jo)}}async postComment({accessToken:t,content:e}){const{data:n}=await this.$http.post("graphql",{variables:{issueNodeId:this._issueNodeId,content:e},query:"mutation postComment(\n $issueNodeId: ID!\n $content: String!\n) {\n addComment(\n input: {\n subjectId: $issueNodeId\n body: $content\n }\n ) {\n commentEdge {\n node {\n id\n body\n bodyHTML\n createdAt\n updatedAt\n author {\n avatarUrl\n login\n url\n }\n reactionGroups {\n users (first: 0) {\n totalCount\n }\n content\n }\n }\n }\n }\n}"},{headers:{Authorization:"token "+t}});return jo(n.data.addComment.commentEdge.node)}async putComment({accessToken:t,commentId:e,content:n}){const{data:r}=await this.$http.post("graphql",{variables:{commentId:e,content:n},query:"mutation putComment(\n $commentId: ID!,\n $content: String!,\n) {\n updateIssueComment(input: {\n id: $commentId\n body: $content\n }) {\n issueComment {\n id\n body\n bodyHTML\n createdAt\n updatedAt\n author {\n avatarUrl\n login\n url\n }\n reactionGroups {\n users (first: 0) {\n totalCount\n }\n content\n }\n }\n }\n}"},{headers:{Authorization:"token "+t}});return jo(r.data.updateIssueComment.issueComment)}async deleteComment({accessToken:t,commentId:e}){return await this.$http.post("graphql",{variables:{commentId:e},query:"mutation deleteComment(\n $commentId: ID!,\n) {\n deleteIssueComment(input: {\n id: $commentId\n }) {\n clientMutationId\n }\n}"},{headers:{Authorization:"token "+t}}),!0}async getCommentReactions({accessToken:t,issueId:e,commentId:n}){const{firstOrLast:r,afterOrBefore:o,cursor:i}=this._getQueryParams(),{data:a}=await this.$http.post("graphql",{variables:{owner:this.owner,repo:this.repo,issueId:e,perPage:this._pageInfo.perPage},query:`query getComments(\n $owner: String!\n $repo: String!\n $issueId: Int!\n $perPage: Int!\n) {\n repository(owner: $owner, name: $repo) {\n issue(number: $issueId) {\n comments(\n ${r}: $perPage\n ${null===o?"":`${o}: "${i}"`}\n ) {\n nodes {\n id\n reactionGroups {\n users (first: 0) {\n totalCount\n }\n content\n }\n }\n }\n }\n }\n}`},{headers:{Authorization:"token "+t}});return Ao(a.data.repository.issue.comments.nodes.find(t=>t.id===n).reactionGroups)}async postCommentReaction({accessToken:t,commentId:e,reaction:n}){return await this.$http.post("graphql",{variables:{commentId:e,content:Eo(n)},query:"mutation postCommentReaction(\n $commentId: ID!,\n $content: ReactionContent!,\n) {\n addReaction(input: {\n subjectId: $commentId\n content: $content\n }) {\n reaction {\n databaseId\n }\n }\n}"},{headers:{Authorization:"token "+t}}),!0}_getQueryParams({page:t=this._pageInfo.page,sort:e=this._pageInfo.sort}={}){let n,r,o;return 1===t?(n="asc"===e?"first":"last",r=null,o=null):"asc"===e?t>this._pageInfo.page?(n="first",r="after",o=this._pageInfo.endCursor):(n="last",r="before",o=this._pageInfo.startCursor):t>this._pageInfo.page?(n="last",r="before",o=this._pageInfo.startCursor):(n="first",r="after",o=this._pageInfo.endCursor),{firstOrLast:n,afterOrBefore:r,cursor:o}}}function Po(t){return{username:t.username,avatar:t.avatar_url,homepage:t.web_url}}function Io(t){return{id:t.iid,title:t.title,content:t.description,link:t.web_url}}function Ro(t){return{id:t.id,content:t.body_html||"",contentRaw:t.body,author:Po(t.author),createdAt:t.created_at,updatedAt:t.updated_at,reactions:t.reactions}}function Mo(t){return{like:t.filter(t=>"thumbsup"===t.name).length,unlike:t.filter(t=>"thumbsdown"===t.name).length,heart:t.filter(t=>"heart"===t.name).length}}function Lo(t){return"like"===t?"thumbsup":"unlike"===t?"thumbsdown":t}class No{constructor({baseURL:t="https://gitlab.com",owner:e,repo:n,labels:r,clientId:o,state:i}){this.baseURL=t,this.owner=e,this.repo=n,this.labels=r,this.clientId=o,this.state=i,this._encodedRepo=encodeURIComponent(`${this.owner}/${this.repo}`),this.$http=bo.a.create({baseURL:Ln(t,"api/v4"),headers:{Accept:"application/json"}})}get platform(){return{name:"GitLab",link:this.baseURL,version:"v4",meta:{reactable:!0,sortable:!0}}}redirectAuth(){window.location.href=Mn(Ln(this.baseURL,"oauth/authorize"),{client_id:this.clientId,redirect_uri:window.location.href,response_type:"token",state:this.state})}async handleAuth(){const t=Un(window.location.hash.slice(1));if(!t.access_token||t.state!==this.state)return null;const e=t.access_token;delete t.access_token,delete t.token_type,delete t.expires_in,delete t.state;const n=Rn(t),r=n?"#"+n:"",o=`${Dn(window.location.href)}${window.location.search}${r}`;return window.history.replaceState(null,"",o),e}async getUser({accessToken:t}){const{data:e}=await this.$http.get("user",{headers:{Authorization:"Bearer "+t}});return Po(e)}async getIssue({accessToken:t,issueId:e,issueTitle:n}){const r={};if(t&&(r.headers={Authorization:"Bearer "+t}),!e){r.params={labels:this.labels.join(","),order_by:"created_at",sort:"asc",search:n};const{data:t}=await this.$http.get(`projects/${this._encodedRepo}/issues`,r);return t.map(Io).find(t=>t.title===n)||null}try{const{data:t}=await this.$http.get(`projects/${this._encodedRepo}/issues/${e}`,r);return Io(t)}catch(t){if(t.response&&404===t.response.status)return null;throw t}}async postIssue({accessToken:t,title:e,content:n}){const{data:r}=await this.$http.post(`projects/${this._encodedRepo}/issues`,{title:e,description:n,labels:this.labels.join(",")},{headers:{Authorization:"Bearer "+t}});return Io(r)}async getComments({accessToken:t,issueId:e,query:{page:n=1,perPage:r=10,sort:o="desc"}={}}){const i={params:{page:n,per_page:r,order_by:"created_at",sort:o}};t&&(i.headers={Authorization:"Bearer "+t});const a=await this.$http.get(`projects/${this._encodedRepo}/issues/${e}/notes`,i),s=a.data,c=[];for(const n of s)c.push((async()=>{n.body_html=await this.getMarkdownContent({accessToken:t,contentRaw:n.body})})()),c.push((async()=>{n.reactions=await this.getCommentReactions({accessToken:t,issueId:e,commentId:n.id})})());return await Promise.all(c),{count:Number(a.headers["x-total"]),page:Number(a.headers["x-page"]),perPage:Number(a.headers["x-per-page"]),data:s.map(Ro)}}async postComment({accessToken:t,issueId:e,content:n}){const{data:r}=await this.$http.post(`projects/${this._encodedRepo}/issues/${e}/notes`,{body:n},{headers:{Authorization:"Bearer "+t}});return Ro(r)}async putComment({accessToken:t,issueId:e,commentId:n,content:r}){const{data:o}=await this.$http.put(`projects/${this._encodedRepo}/issues/${e}/notes/${n}`,{body:r},{headers:{Authorization:"Bearer "+t}}),[i,a]=await Promise.all([this.getMarkdownContent({accessToken:t,contentRaw:o.body}),this.getCommentReactions({accessToken:t,issueId:e,commentId:o.id})]);return o.body_html=i,o.reactions=a,Ro(o)}async deleteComment({accessToken:t,issueId:e,commentId:n}){const{status:r}=await this.$http.delete(`projects/${this._encodedRepo}/issues/${e}/notes/${n}`,{headers:{Authorization:"Bearer "+t}});return 204===r}async getCommentReactions({accessToken:t,issueId:e,commentId:n}){const{data:r}=await this.$http.get(`projects/${this._encodedRepo}/issues/${e}/notes/${n}/award_emoji`,{headers:{Authorization:"Bearer "+t}});return Mo(r)}async postCommentReaction({issueId:t,commentId:e,reaction:n,accessToken:r}){try{return 201===(await this.$http.post(`projects/${this._encodedRepo}/issues/${t}/notes/${e}/award_emoji`,{name:Lo(n)},{headers:{Authorization:"Bearer "+r}})).status}catch(t){if(t.response&&404===t.response.status)return!1;throw t}}async getMarkdownContent({accessToken:t,contentRaw:e}){const n={};t&&(n.headers={Authorization:"Bearer "+t});const{data:r}=await this.$http.post("markdown",{text:e,gfm:!0},n);return r.html}}function Fo(t){return{username:t.nickname,avatar:t.links.avatar.href,homepage:t.links.html.href}}function zo(t){return{id:t.id,title:t.title,content:t.content.raw,link:t.links.html.href}}function Do(t){return{id:t.id,content:t.content.html,contentRaw:t.content.raw,author:Fo(t.user),createdAt:t.created_on,updatedAt:t.updated_on,reactions:null}}class Uo{constructor({baseURL:t="https://bitbucket.org",owner:e,repo:n,clientId:r,state:o}){this.baseURL=t,this.owner=e,this.repo=n,this.clientId=r,this.state=o,this.$http=bo.a.create({baseURL:"https://api.bitbucket.org/2.0",headers:{Accept:"application/json"}})}get platform(){return{name:"Bitbucket",link:this.baseURL,version:"v2",meta:{reactable:!1,sortable:!0}}}redirectAuth(){window.location.href=Mn(Ln(this.baseURL,"site/oauth2/authorize"),{client_id:this.clientId,redirect_uri:window.location.href,response_type:"token",state:this.state})}async handleAuth(){const t=Un(window.location.hash.slice(1));if(!t.access_token||t.state!==this.state)return null;const e=t.access_token;delete t.access_token,delete t.token_type,delete t.expires_in,delete t.state,delete t.scopes;const n=Rn(t),r=n?"#"+n:"",o=`${Dn(window.location.href)}${window.location.search}${r}`;return window.history.replaceState(null,"",o),e}async getUser({accessToken:t}){const{data:e}=await this.$http.get("user",{headers:{Authorization:"Bearer "+t}});return Fo(e)}async getIssue({accessToken:t,issueId:e,issueTitle:n}){const r={};if(t&&(r.headers={Authorization:"Bearer "+t}),!e){r.params={sort:"created_on",q:`title="${n}"`,timestamp:Date.now()};const{data:t}=await this.$http.get(`repositories/${this.owner}/${this.repo}/issues`,r);return t.size>0?zo(t.values[0]):null}try{r.params={timestamp:Date.now()};const{data:t}=await this.$http.get(`repositories/${this.owner}/${this.repo}/issues/${e}`,r);return zo(t)}catch(t){if(t.response&&404===t.response.status)return null;throw t}}async postIssue({accessToken:t,title:e,content:n}){const{data:r}=await this.$http.post(`repositories/${this.owner}/${this.repo}/issues`,{title:e,content:{raw:n},priority:"trivial",kind:"task"},{headers:{Authorization:"Bearer "+t}});return r.links.html={href:Ln(this.baseURL,`${this.owner}/${this.repo}/issues/${r.id}`)},zo(r)}async getComments({accessToken:t,issueId:e,query:{page:n=1,perPage:r=10,sort:o="desc"}={}}){const i={params:{page:n,pagelen:r,sort:"desc"===o?"-created_on":"created_on",timestamp:Date.now()}};t&&(i.headers={Authorization:"Bearer "+t});const{data:a}=await this.$http.get(`repositories/${this.owner}/${this.repo}/issues/${e}/comments`,i);return{count:a.size,page:a.page,perPage:a.pagelen,data:a.values.filter(t=>null!==t.content.raw).map(Do)}}async postComment({accessToken:t,issueId:e,content:n}){const{data:r}=await this.$http.post(`repositories/${this.owner}/${this.repo}/issues/${e}/comments`,{content:{raw:n}},{headers:{Authorization:"Bearer "+t}});return Do(r)}async putComment({accessToken:t,issueId:e,commentId:n,content:r}){const{data:o}=await this.$http.put(`repositories/${this.owner}/${this.repo}/issues/${e}/comments/${n}`,{content:{raw:r}},{headers:{Authorization:"Bearer "+t}});return Do(o)}async deleteComment({accessToken:t,issueId:e,commentId:n}){const{status:r}=await this.$http.delete(`repositories/${this.owner}/${this.repo}/issues/${e}/comments/${n}`,{headers:{Authorization:"Bearer "+t}});return 204===r}async getCommentReactions(t){throw new Error("501 Not Implemented")}async postCommentReaction(t){throw new Error("501 Not Implemented")}}function Bo(t){return{username:t.login,avatar:t.avatar_url,homepage:t.html_url}}function qo(t){return{id:t.number,title:t.title,content:t.body,link:t.html_url}}function Vo(t){return{id:t.id,content:t.body_html||"",contentRaw:t.body,author:Bo(t.user),createdAt:t.created_at,updatedAt:t.updated_at||"",reactions:null}}class Ho{constructor({baseURL:t="https://gitee.com",owner:e,repo:n,labels:r,clientId:o,clientSecret:i,state:a,proxy:s}){if(void 0===i||void 0===s)throw new Error("clientSecret and proxy is required for Gitee V5");this.baseURL=t,this.owner=e,this.repo=n,this.labels=r,this.clientId=o,this.clientSecret=i,this.state=a,this.proxy=s,this.$http=bo.a.create({baseURL:Ln(t,"api/v5")}),this.$http.interceptors.response.use(t=>t,t=>(t.response.data&&t.response.data.message&&(t.message=t.response.data.message),Promise.reject(t)))}get platform(){return{name:"Gitee",link:this.baseURL,version:"v5",meta:{reactable:!1,sortable:!1}}}redirectAuth(){window.location.href=Mn(Ln(this.baseURL,"oauth/authorize"),{client_id:this.clientId,redirect_uri:window.location.href,scope:"user_info issues notes",response_type:"code",state:this.state})}async handleAuth(){const t=Un(window.location.search);if(t.code){if(t.state!==this.state)return null;const e=t.code;delete t.code,delete t.state;const n=Mn(Dn(window.location.href),t)+window.location.hash;window.history.replaceState(null,"",n);return await this.getAccessToken({code:e})}return null}async getAccessToken({code:t}){const e=Ln(this.baseURL,"oauth/token"),n="function"==typeof this.proxy?this.proxy(e):this.proxy,{data:r}=await this.$http.post(n,{client_id:this.clientId,client_secret:this.clientSecret,code:t,grant_type:"authorization_code",redirect_uri:window.location.href});return r.access_token}async getUser({accessToken:t}){const{data:e}=await this.$http.get("user",{params:{access_token:t}});return Bo(e)}async getIssue({accessToken:t,issueId:e,issueTitle:n}){const r={params:{timestamp:Date.now()}};if(t&&(r.params.access_token=t),!e){Object.assign(r.params,{q:n,repo:`${this.owner}/${this.repo}`,per_page:1});const{data:t}=await this.$http.get("search/issues",r);return t.map(qo).find(t=>t.title===n)||null}try{const{data:t}=await this.$http.get(`repos/${this.owner}/${this.repo}/issues/${e}`,r);return qo(t)}catch(t){if(t.response&&404===t.response.status)return null;throw t}}async postIssue({accessToken:t,title:e,content:n}){const{data:r}=await this.$http.post(`repos/${this.owner}/issues`,{access_token:t,repo:this.repo,title:e,body:n,labels:this.labels.join(",")});return qo(r)}async getComments({accessToken:t,issueId:e,query:{page:n=1,perPage:r=10}={}}){const o={params:{page:n,per_page:r,timestamp:Date.now()},headers:{Accept:["application/vnd.gitee.html+json"]}};t&&(o.params.access_token=t);const i=await this.$http.get(`repos/${this.owner}/${this.repo}/issues/${e}/comments`,o);return{count:Number(i.headers.total_count),page:n,perPage:r,data:i.data.map(Vo)}}async postComment({accessToken:t,issueId:e,content:n}){const{data:r}=await this.$http.post(`repos/${this.owner}/${this.repo}/issues/${e}/comments`,{body:n,access_token:t},{headers:{Accept:["application/vnd.gitee.html+json"]}});return Vo(r)}async putComment({accessToken:t,commentId:e,content:n}){const{data:r}=await this.$http.patch(`repos/${this.owner}/${this.repo}/issues/comments/${e}`,{body:n,access_token:t},{headers:{Accept:["application/vnd.gitee.html+json"]}});return Vo(r)}async deleteComment({accessToken:t,commentId:e}){const{status:n}=await this.$http.delete(`repos/${this.owner}/${this.repo}/issues/comments/${e}`,{params:{access_token:t}});return 204===n}async getCommentReactions(t){throw new Error("501 Not Implemented")}async postCommentReaction(t){throw new Error("501 Not Implemented")}}n(423);var Wo={name:"Vssue",components:{VssueComponent:go},props:{options:{type:Object,default:function(){return{}}}},data:function(){return{key:"key",platformOptions:{github:So,"github-v4":To,gitlab:No,bitbucket:Uo,gitee:Ho}}},computed:{vssueOptions:function(){var t=this.platformOptions,e=this.options,n=t[e.platform];return Object(Ze.a)(Object(Ze.a)({},e),{},{api:n})}},watch:{$route:function(t,e){var n=this;t.path!==e.path&&setTimeout((function(){n.key="reco-".concat((new Date).getTime())}),300)}}},Qo=(n(424),{components:{Valine:xn,Vssue:Object(We.a)(Wo,(function(){var t=this.$createElement;return(this._self._c||t)("VssueComponent",{key:this.key,staticClass:"vssue-wrapper",attrs:{options:this.vssueOptions}})}),[],!1,null,null,null).exports},props:{isShowComments:{type:Boolean,default:!0}},data:function(){return{commentsOptions:{}}},computed:{solution:function(){var t=this.commentsOptions.solution,e=this.$themeConfig,n=e.valineConfig,r=e.vssueConfig,o=this.$themeLocaleConfig,i=o.valineConfig,a=o.vssueConfig,s="";return void 0!==t?s=t:void 0!==i||void 0!==n?s="valine":void 0===a&&void 0===r||(s="vssue"),s},options:function(){var t=this.commentsOptions.options,e=this.$themeConfig,n=e.valineConfig,r=e.vssueConfig,o=this.$themeLocaleConfig,i=o.valineConfig,a=o.vssueConfig;return void 0!==t?t:void 0!==i||void 0!==n?i||n:void 0!==a||void 0!==r?a||r:null},componentName:function(){var t=this.solution;return"valine"===t?"Valine":"vssue"===t?"Vssue":""}},mounted:function(){this.$themeConfig.commentsSolution=this.solution}}),Go=Object(We.a)(Qo,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{directives:[{name:"show",rawName:"v-show",value:this.isShowComments,expression:"isShowComments"}],staticClass:"comments-wrapper"},[e("ClientOnly",[e(this.componentName,{tag:"component",attrs:{options:this.options}})],1)],1)}),[],!1,null,null,null).exports,Yo={props:{idVal:String,numStyle:Object,flagTitle:{type:String,default:"Your Article Title"}},methods:{getIdVal:function(t){var e=this.$site.base;return e.slice(0,e.length-1)+t}}},Ko=Object(We.a)(Yo,(function(){var t=this.$createElement,e=this._self._c||t;return e("span",{staticClass:"leancloud-visitors",attrs:{id:this.getIdVal(this.idVal),"data-flag-title":this.flagTitle}},[e("a",{staticClass:"leancloud-visitors-count",style:this.numStyle})])}),[],!1,null,null,null).exports,Jo=(n(425),n(67)),Xo=n(20),Zo=n(31),ti={tags:{},categories:{},timeline:{}},ei=function(){function t(e,n){var r=this;Object(Xo.a)(this,t),this._metaMap=Object.assign({},e),Object.keys(this._metaMap).forEach((function(t){var e=r._metaMap[t].pageKeys;r._metaMap[t].pages=e.map((function(t){return function(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:i.default;Kt(e),n.$vuepress.$set("siteData",e);var r=t(n.$vuepress.$get("siteData")),o=new r,a=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(o)),s={};return Object.keys(a).reduce((function(t,e){return e.startsWith("$")&&(t[e]=a[e].get),t}),s),{computed:s}}((function(t){return function(){function e(){Object(Xo.a)(this,e)}return Object(Zo.a)(e,[{key:"setPage",value:function(t){this.__page=t}},{key:"$site",get:function(){return t}},{key:"$themeConfig",get:function(){return this.$site.themeConfig}},{key:"$frontmatter",get:function(){return this.$page.frontmatter}},{key:"$localeConfig",get:function(){var t,e,n=this.$site.locales,r=void 0===n?{}:n;for(var o in r)"/"===o?e=r[o]:0===this.$page.path.indexOf(o)&&(t=r[o]);return t||e||{}}},{key:"$siteTitle",get:function(){return this.$localeConfig.title||this.$site.title||""}},{key:"$canonicalUrl",get:function(){var t=this.$page.frontmatter.canonicalUrl;return"string"==typeof t&&t}},{key:"$title",get:function(){var t=this.$page,e=this.$page.frontmatter.metaTitle;if("string"==typeof e)return e;var n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}},{key:"$description",get:function(){var t=function(t){if(t){var e=t.filter((function(t){return"description"===t.name}))[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}},{key:"$lang",get:function(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}},{key:"$localePath",get:function(){return this.$localeConfig.path||"/"}},{key:"$themeLocaleConfig",get:function(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}},{key:"$page",get:function(){return this.__page?this.__page:function(t,e){for(var n=0;n - + @@ -65,6 +65,6 @@ 2021 - 2024

- + diff --git a/index.html b/index.html index 13e19628..0aa0aec7 100644 --- a/index.html +++ b/index.html @@ -18,7 +18,7 @@ - + @@ -75,6 +75,6 @@ 2021 - 2024
- + diff --git a/menu.html b/menu.html index 7dbd3d94..aeadfac4 100644 --- a/menu.html +++ b/menu.html @@ -18,7 +18,7 @@ - + @@ -65,6 +65,6 @@ 2021 - 2024

目录

  • 互联网越来越流行,程序员内卷越来越严重,技术层出不穷,更新迭代不断;
  • 有可能是为了让技术精进,也有可能是害怕技术落后而掉队;总之需要获取一些前沿信息;
  • 这个项目会基本涵盖大部分技术体系。内容会按照日期进行分类,每天排行前几的文章会被收录;
  • 如果这个网站的分享对你有所帮助,还请大家给个 ⭐️ 让更多的人知道 (opens new window) .

# 2024

- + diff --git a/tag/index.html b/tag/index.html index ebc5f22d..6d6bfd22 100644 --- a/tag/index.html +++ b/tag/index.html @@ -18,7 +18,7 @@ - + @@ -64,7 +64,7 @@    2021 - 2024 -
- +
+ diff --git a/timeline/index.html b/timeline/index.html index 02c8a30f..3b4af34b 100644 --- a/timeline/index.html +++ b/timeline/index.html @@ -18,7 +18,7 @@ - + @@ -65,6 +65,6 @@ 2021 - 2024
- +