From 11cdd00cd7c8a508046b2f870ae256da747e1826 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 26 Aug 2023 17:43:23 +0000 Subject: [PATCH] Deploy to GitHub pages --- README.md | 318 +++ README_zh_CN.md | 318 +++ i18n/en_US.json | 124 + i18n/zh_CHT.json | 124 + i18n/zh_CN.json | 124 + icon.png | Bin 0 -> 3868 bytes index.css | 1 + index.js | 156 ++ plugin.json | 35 + preview.png | Bin 0 -> 67702 bytes workers/wakatime.js | 5801 +++++++++++++++++++++++++++++++++++++++++++ 11 files changed, 7001 insertions(+) create mode 100644 README.md create mode 100644 README_zh_CN.md create mode 100644 i18n/en_US.json create mode 100644 i18n/zh_CHT.json create mode 100644 i18n/zh_CN.json create mode 100644 icon.png create mode 100644 index.css create mode 100644 index.js create mode 100644 plugin.json create mode 100644 preview.png create mode 100644 workers/wakatime.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..538f121 --- /dev/null +++ b/README.md @@ -0,0 +1,318 @@ +
+icon + +--- +[![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/Zuoqiu-Yingyi/siyuan-plugin-wakatime?include_prereleases&style=flat-square)](https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime/releases/latest) +[![GitHub Release Date](https://img.shields.io/github/release-date/Zuoqiu-Yingyi/siyuan-plugin-wakatime?style=flat-square)](https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime/releases/latest) +[![GitHub License](https://img.shields.io/github/license/Zuoqiu-Yingyi/siyuan-plugin-wakatime?style=flat-square)](https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime/blob/main/LICENSE) +[![GitHub last commit](https://img.shields.io/github/last-commit/Zuoqiu-Yingyi/siyuan-plugin-wakatime?style=flat-square)](https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime/commits/main) +![GitHub repo size](https://img.shields.io/github/repo-size/Zuoqiu-Yingyi/siyuan-plugin-wakatime?style=flat-square) +![hits](https://hits.b3log.org/Zuoqiu-Yingyi/siyuan-plugin-wakatime.svg) +[![GitHub all releases](https://img.shields.io/github/downloads/Zuoqiu-Yingyi/siyuan-plugin-wakatime/total?style=flat-square)](https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime/releases) + +--- +[简体中文](./README_zh_CN.md) \| English + +--- +
+ +# SiYuan WakaTime + +A plugin for [SiYuan Note](https://github.com/siyuan-note/siyuan) that can use [Wakapi](https://github.com/muety/wakapi) or [WakaTime](https://wakatime.com/) to generate metrics, insights, and time tracking automatically from your editing activity. + +## PREVIEW + +![preview image](https://cdn.jsdelivr.net/gh/Zuoqiu-Yingyi/siyuan-plugin-wakatime/public/preview.png) + +## Q & A + +* How can I protect my personal privacy when using the Wakapi/WakaTime service? + + * The best solution is to deploy the `muety/wakapi` project privately on your own device, which is compatible with most [WakaTime plugins](https://wakatime.com/plugins). + * Customize the following settings options for this plugin: + + * `Wakapi/WakaTime > General Settings > Project Name` + * `Wakapi/WakaTime > Service Settings > Host Name` + * Enable the following settings options for this plugin: + + * `Wakapi/WakaTime > Service Settings > Hide Notebook Name` + * `Wakapi/WakaTime > Service Settings > Hide Document Title` + * Customize the inclusion list to set a whitelist + + * `Wakapi/WakaTime > Service Settings > ID Inclusion List` + * `Wakapi/WakaTime > Service Settings > Inclusion List` + * Customize the exclusion list to set a blacklist + + * `Wakapi/WakaTime > Service Settings > ID Exclusion List` + * `Wakapi/WakaTime > Service Settings > Exclusion List` + +## INTRODUCTION + +### Features Introduction + +[WakaTime](https://WakaTime.com/) provides its users with a tracking service for text editing activities. Users can install [open-source plugins](https://wakatime.com/plugins) in their integrated development environments and text editors to submit their editing activities for tracking, analysis, and visualization. + +[Wakapi](https://github.com/muety/wakapi) is an open-source alternative to the [WakaTime](https://github.com/wakatime) project. It also provides its users with a tracking service for text editing activities and is compatible with most [WakaTime plugins](https://wakatime.com/plugins). + +### Settings Introduction + +* `General` + + * `Reset Settings Options` + + * Reset all settings options to their default values. + * After clicking this button, a confirmation dialog will appear. + + * After clicking the confirmation button in the dialog, all options for this plugin will be reset to their default values, and the current interface will be automatically refreshed. + * `Clean offline cache` + + * Delete all offline cache files + * Cache file directory: `workspace/temp/.wakatime/cache` + * After clicking this button, a confirmation dialog box will appear + + * After clicking the confirm button on the dialog box, the cache file directory will be deleted and the current interface will be automatically refreshed. +* `Wakapi/WakaTime`: Configure the functionality and service of `Wakapi` or `WakaTime` + + * `General` + + * `Heartbeat Connection` + + * Enable this option to use the API [users/current/heartbeats](https://wakatime.com/developers#heartbeats) to periodically submit activity information to the `Wakapi/WakaTime` service when viewing/editing documents. + * The time interval is set by `Wakapi/WakaTime > General Settings > Push Interval`. + * The submitted information includes: + + * `type`: `"file"` + * `hostname`: Host name + + * If `Wakapi/WakaTime > Service Settings > Host Name` is not empty, a custom host name will be used. + * If `Wakapi/WakaTime > Service Settings > Host Name` is empty, the host name of the device where the Obsidian is running will be used. + * `project`: Project name + + * If `Wakapi/WakaTime > General Settings > Project Name` is not empty, a custom project name will be used. + * If `Wakapi/WakaTime > General Settings > Project Name` is empty, `siyuan-workspace:workspace` will be used as the default project name. + * `branch`: Notebook name or notebook ID + + * When the `Wakapi/WakaTime > Service Settings > Hide Notebook Name` toggle is enabled, it will be the Notebook ID. + * `entity`: Document file path + + * When the `Wakapi/WakaTime > Service Settings > Hide Notebook Name` toggle is enabled, the Notebook Name will be replaced with the Notebook ID. + * When the `Wakapi/WakaTime > Service Settings > Hide Document Title` toggle is enabled, the Document Title will be replaced with the Block ID. + * `language`: File language name + + * If `Wakapi/WakaTime > General Settings > Language Name` is not empty, a custom language name will be used. + * If `Wakapi/WakaTime > General Settings > Language Name` is empty, `Siyuan` will be used as the default language name. + * `category`: User operation type + + * When viewing a note, it is set to the item specified by `Wakapi/WakaTime > General Settings > View Operation Tag`. + * When editing a note, it is set to the item specified by `Wakapi/WakaTime > General Settings > Edit Operation Tag`. + * `time`: Timestamp corresponding to the view/edit operation performed by the user. + * `is_write`: Whether it is an editing operation. + * `Project Name` + + * Customize the name of the current workspace. + * Corresponds to the `Projects` field in the `Wakapi/WakaTime` statistics results. + * If empty, `siyuan-workspace:workspace` will be used as the default project name. + * `Language Name` + + * Customize the language name corresponding to `*.sy` files. + * Corresponds to the `Languages` field in the `Wakapi/WakaTime` statistics results. + * If empty, `Siyuan` will be used as the default language name. + * `Push Interval` + + * If there are user operations (view/edit) within the specified time interval, the operation information will be submitted to the `Wakapi/WakaTime` service using the API [users/current/heartbeats](https://wakatime.com/developers#heartbeats). + * Unit: seconds + * For more details about the submitted information, please refer to `Wakapi/WakaTime > General Settings > Heartbeat Connection`. + * `View Operation Tag` + + * Activity tags corresponding to user view operations + + * Open a document + * Move the cursor focus in the document + * Corresponds to the `Category` in the WakaTime statistics results. + * `Edit Operation Tag` + + * Activity tags corresponding to user editing operations + + * Document content is modified + * Document attributes are modified + * Corresponds to the `Category` in the WakaTime statistics results. + * `Operating System Name` + + * The name of the operating system where the kernel is located + * Corresponds to the "Operating Systems" category in WakaTime statistics + * `Operating System Version` + + * The version number of the current operating system + * Default is "unknown" to protect privacy + * Leave empty to use the retrieved version number + * `Operating System Architecture` + + * The processor architecture of the current operating system + * Default is "unknown" to protect privacy + * Leave empty to use the retrieved architecture + * `User Agent` + + * For more details, please refer to [User-Agent - HTTP | MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) + * Leave empty to use the automatically generated field + + * It is highly recommended to leave it empty to automatically generate this field + * Customizing this field may cause the Wakapi/WakaTime service to be unable to recognize the plugin + * The agent contains the following information + + * Version number of `wakatime-cli` + + * Not used by this plugin + * Operating System Name + * Operating System Version + * Operating System Architecture + * Source app version + * Plugin version + * `Service Settings` + + * `Test` + + * Test whether using the `Wakapi/WakaTime > Service Settings > API Key` can successfully access the service corresponding to the `Wakapi/WakaTime > Service Settings > API URL`. + * `API URL` + + * Customize the API service address for `Wakapi/WakaTime`. + * Corresponds to the `api_url` configuration option in the `.wakatime.cfg` configuration file of `Wakapi/WakaTime`. + * If empty, the service address of `WakaTime` will be used (`https://wakatime.com/api/v1`). + * If using a hosted `Wakapi` service, it should be set to `https://wakapi.dev/api`. + * If using a privately deployed `Wakapi` service, it should be set to `http(s)://host[:port]/api`. + + * Examples + + * `http://localhost:3000/api` + * `https://wakapi.your.domain.name/api` + * Note + + * Therefore, it is necessary to ensure that the device where Obsidian is located can access the set service address. + * `API KEY` + + * Customize the access key for the `Wakapi/WakaTime` API service. + * Corresponds to the `api_key` configuration option in the `.wakatime.cfg` configuration file of `Wakapi/WakaTime`. + * This is a required field, and if not set, a connection cannot be established with `Wakapi/WakaTime`. + * `Hostname` + + * Customize the device name. + * Corresponds to the `hostname` configuration option in the `.wakatime.cfg` configuration file of `Wakapi/WakaTime`. + * If empty, the host name of the device where Obsidian is located will be used. + * `Timeout` + + * Timeout duration when calling the `Wakapi/WakaTime` API. + * Corresponds to the `timeout` configuration option in the `.wakatime.cfg` configuration file of `Wakapi/WakaTime`. + * Unit: seconds + * `Hide Notebook Name` + + * Whether to hide the notebook name in the submitted action information. + * Corresponds to the `hide_branch_names` configuration option in the `.wakatime.cfg` configuration file of `Wakapi/WakaTime`. + * If enabled, all Notebook Name in the submitted information will be replaced with Notebook ID. + * `Hide Document Title` + + * Whether to hide the document title in the submitted activity information. + * Corresponds to the `hide_file_names` configuration option in the `.wakatime.cfg` configuration file of `Wakapi/WakaTime`. + * If enabled, all Document Title in the submitted information will be replaced with Block ID. + * `Offline caching` + + * Whether to cache action information in local files + * Conditions for triggering offline caching + + * Disable `Wakapi/WakaTime > General > Heartbeat Connections` + * Or unable to access `Wakapi/WakaTime` service + * Cache file directory: `workspace/temp/.wakatime/cache` + * Corresponds to the `offline` configuration option in the `.wakatime.cfg` configuration file of `Wakapi/WakaTime`. + * `ID Include List` + + * Only submit documents whose ID path includes the list field. + * If empty, it includes all notebooks and documents. + * If not empty, only submit documents whose ID path includes the list field. + + * ID path format: `notebook/document/.../document.sy` + * ID path examples: + + * `20210808180117-czj9bvb/20200812220555-lj3enxa.sy` + * `20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180320-fqgskfj.sy` + * One record per line, can be text or regular expression. Regular expressions need to be wrapped in `/` as shown below: + + ```plaintext + 20200812220555-lj3enxa + /^20210917000226-w9fa32i\/20230522022822-roxea7p/ + ``` + + The above list is equivalent to the following JavaScript code: + + ```javascript + path.includes("20200812220555-lj3enxa") && /^20210917000226-w9fa32i\/20230522022822-roxea7p/.test(path) + ``` + + * `20200812220555-lj3enxa` + + * Submit documents that have the ID `20200812220555-lj3enxa`, including itself and its sub-documents. + + * Example: + + * `20210808180117-czj9bvb/20200812220555-lj3enxa.sy`: included + * `20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180320-fqgskfj.sy`: included + * `20210808180117-czj9bvb/20210117211155-56n4odu.sy`: not included + * `/^20210917000226-w9fa32i\/20230522022822-roxea7p/` + + * Submit documents that match the regular expression `^20210917000226-w9fa32i/20230522022822-roxea7p`. + + * Example: + + * `20210917000226-w9fa32i/20230522022822-roxea7p.sy`: included + * `20210917000226-w9fa32i/20230522022822-roxea7p/20230522022929-ojqqfyn.sy`: included + * `20210917000226-w9fa32i/20220424113742-2eznev2.sy`: not included + * `20210808180117-czj9bvb/20210917000226-w9fa32i/20230522022822-roxea7p.sy`: not included + * `ID Exclude List` + + * Exclude documents whose ID path includes the list field when submitting. + * If empty, do not exclude any notebooks or documents. + * If not empty, exclude documents whose ID path includes the list field. + + * ID path format and matching rules can be found in `Wakapi/WakaTime > Service Settings > ID Inclusion List`. + * One record per line, can be text or regular expression. Regular expressions need to be wrapped in `/`. + * The exclusion list takes precedence over the inclusion list. + + * If a document's ID path matches both the ID inclusion list and the ID exclusion list, the document will be excluded. + * `Include List` + + * Only submit documents whose path includes the list field. + * Corresponds to the `include` configuration option in the `.wakatime.cfg` configuration file of `Wakapi/WakaTime`. + * If empty, it includes all notebooks and documents. + * If not empty, only submit documents whose path includes the list field. + + * Path format and examples: + + | | `Hide notebook names`: ✔ | `Hide notebook names`: ✖
| + | ------------------------- | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | + | `Hide document titles`: ✔ | `//.../.sy`
`20210808180117-czj9bvb/20200812220555-lj3enxa.sy`
| `//.../.sy`
`User Guide/20200812220555-lj3enxa.sy`
| + | `Hide document titles`: ✖ | `//.../.sy`
`20210808180117-czj9bvb/Start Here.sy` | `//.../.sy`
`User Guide/Start Here.sy`
| + * One record per line, can be text or regular expression. Regular expressions need to be wrapped in `/` as shown below: + + ```plaintext + Start Here + /^User Guide\/Start Here/ + ``` + + The above list is equivalent to the following JavaScript code: + + ```javascript + path.includes("Start Here") && /^User Guide\/Start Here/.test(path) + ``` + * `Exclude List` + + * Exclude documents whose path includes the list field when submitting. + * Corresponds to the `exclude` configuration option in the `.wakatime.cfg` configuration file of `Wakapi/WakaTime`. + * If empty, do not exclude any notebooks or documents. + * If not empty, exclude documents whose path includes the list field. + + * Path format and matching rules can be found in `Wakapi/WakaTime > Service Settings > Inclusion List`. + * One record per line, can be text or regular expression. Regular expressions need to be wrapped in `/`. + * The exclusion list takes precedence over the inclusion list. + + * If a document's path matches both the inclusion list and the exclusion list, the document will be excluded. + +## CHANGELOG + +[CHANGELOG.md](https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime/blob/main/CHANGELOG.md) diff --git a/README_zh_CN.md b/README_zh_CN.md new file mode 100644 index 0000000..9f2edd6 --- /dev/null +++ b/README_zh_CN.md @@ -0,0 +1,318 @@ +
+图标 + +--- +[![GitHub 最新发行版本 (最新一次发行/预发行)](https://img.shields.io/github/v/release/Zuoqiu-Yingyi/siyuan-plugin-wakatime?include_prereleases&style=flat-square)](https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime/releases/latest) +[![GitHub 最新发行时间](https://img.shields.io/github/release-date/Zuoqiu-Yingyi/siyuan-plugin-wakatime?style=flat-square)](https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime/releases/latest) +[![GitHub 许可证](https://img.shields.io/github/license/Zuoqiu-Yingyi/siyuan-plugin-wakatime?style=flat-square)](https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime/blob/main/LICENSE) +[![GitHub 最后一次提交时间](https://img.shields.io/github/last-commit/Zuoqiu-Yingyi/siyuan-plugin-wakatime?style=flat-square)](https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime/commits/main) +![GitHub 仓库大小](https://img.shields.io/github/repo-size/Zuoqiu-Yingyi/siyuan-plugin-wakatime?style=flat-square) +![查看次数](https://hits.b3log.org/Zuoqiu-Yingyi/siyuan-plugin-wakatime.svg) +[![GitHub 发行版本下载次数](https://img.shields.io/github/downloads/Zuoqiu-Yingyi/siyuan-plugin-wakatime/total?style=flat-square)](https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime/releases) + +--- +简体中文 \| [English](./README.md) + +--- +
+ +# 思源 WakaTime + +一款可以使用 [Wakapi](https://github.com/muety/wakapi) 或 [WakaTime](https://wakatime.com/) 统计编辑活动的[思源笔记](https://github.com/siyuan-note/siyuan)插件。 + +## 预览 + +![预览图片](https://cdn.jsdelivr.net/gh/Zuoqiu-Yingyi/siyuan-plugin-wakatime/public/preview.png) + +## 常见问题 + +* 如何在使用 `Wakapi/WakaTime` 服务时最大程度保护个人隐私? + + * 最佳解决方案是在您自己的设备中私有化部署 [muety/wakapi](https://github.com/muety/wakapi) 项目, 该项目可以兼容大部分 [WakaTime 插件](https://wakatime.com/plugins) + * 自定义本插件的如下设置选项 + + * `Wakapi/WakaTime > 常规设置 > 项目名称` + * `Wakapi/WakaTime > 服务设置 > 主机名称` + * 开启本插件的如下设置选项 + + * `Wakapi/WakaTime > 服务设置 > 隐藏笔记本名称` + * `Wakapi/WakaTime > 服务设置 > 隐藏文档标题` + * 自定义包含列表以设置白名单 + + * `Wakapi/WakaTime > 服务设置 > ID 包含列表` + * `Wakapi/WakaTime > 服务设置 > 包含列表` + * 自定义排除列表以设置黑名单 + + * `Wakapi/WakaTime > 服务设置 > ID 排除列表` + * `Wakapi/WakaTime > 服务设置 > 排除列表` + +## 介绍 + +### 功能介绍 + +[WakaTime](https://WakaTime.com/) 为其用户提供文本编辑活动的统计服务,用户可以通过在集成开发环境和文本编辑器中安装 [开源插件](https://wakatime.com/plugins) 以提交自己的编辑活动供其统计、分析与可视化。 + +[Wakapi](https://github.com/muety/wakapi) 是 [WakaTime](https://github.com/wakatime) 项目的开源替代品,同样可以为其用户提供文本编辑活动的统计服务,并兼容大部分 [WakaTime 插件](https://wakatime.com/plugins)。 + +### 设置项介绍 + +* `常规设置` + + * `重置设置选项` + + * 重置所有设置选项为默认选项 + * 点击该按钮后会弹出确认对话框 + + * 点击对话框确认按钮后会重置本插件所有选项为默认选项, 之后会自动刷新当前界面 + * `清理离线缓存` + + * 删除所有的离线缓存文件 + * 缓存文件目录: `工作空间/temp/.wakatime/cache` + * 点击该按钮后会弹出确认对话框 + + * 点击对话框确认按钮后会删除缓存文件目录, 之后会自动刷新当前界面 +* `Wakapi/WakaTime`: 配置 `Wakapi` 或 `WakaTime` 功能与服务 + + * `常规设置` + + * `心跳连接` + + * 开启后将在有查看/编辑文档操作时使用 API [users/current/heartbeats](https://wakatime.com/developers#heartbeats) 定时向 `Wakapi/WakaTime` 服务提交活动信息 + * 时间间隔由 `Wakapi/WakaTime > 常规设置 > 推送时间间隔` 设定 + * 提交的信息包含如下内容 + + * `type`: `"file"` + * `hostname`: 主机名称 + + * 若 `Wakapi/WakaTime > 服务设置 > 主机名称名称` 不为空, 则使用自定义的主机名称 + * 若 `Wakapi/WakaTime > 服务设置 > 主机名称名称` 为空, 则使用思源笔记内核所在设备的主机名称 + * `project`: 项目名称 + + * 若 `Wakapi/WakaTime > 常规设置 > 项目名称` 不为空, 则使用自定义的项目名称 + * 若 `Wakapi/WakaTime > 常规设置 > 项目名称` 为空, 则使用 `siyuan-workspace:<工作空间所在文件夹名称>` + * `branch`: 笔记本名称或笔记本 ID + + * 当 `Wakapi/WakaTime > 服务设置 > 隐藏笔记本名称` 开关开启时为 笔记本 ID + * `entity`: 文档文件路径 + + * 当 `Wakapi/WakaTime > 服务设置 > 隐藏笔记本名称` 开关开启时 笔记本名称 替换为 笔记本 ID + * 当 `Wakapi/WakaTime > 服务设置 > 隐藏文档标题` 开关开启时 文档标题 替换为 文档块 ID + * `language`: 文件语言名称 + + * 若 `Wakapi/WakaTime > 常规设置 > 语言名称` 不为空, 则使用自定义的语言名称 + * 若 `Wakapi/WakaTime > 常规设置 > 语言名称` 为空, 则使用 `Siyuan` + * `category`: 用户操作类型 + + * 查看笔记时为 `Wakapi/WakaTime > 常规设置 > 查看操作标签` 所设置的项 + * 编辑笔记时为 `Wakapi/WakaTime > 常规设置 > 编辑操作标签` 所设置的项 + * `time`: 用户进行查看/编辑操作时对应的时间戳 + * `is_write`: 是否为编辑操作 + * `项目名称` + + * 自定义当前工作空间的名称 + * 对应 `Wakapi/WakaTime` 统计结果中的 `Projects` 字段 + * 若为空, 则使用 `siyuan-workspace:<工作空间所在文件夹名称>` 作为默认的项目名称 + * `语言名称` + + * 自定义 `*.sy` 文件对应的语言名称 + * 对应 `Wakapi/WakaTime` 统计结果中的 `Languages` 字段 + * 若为空, 则使用 `Siyuan` 作为默认的语言名称 + * `推送时间间隔` + + * 在指定的时间间隔内若存在用户操作(查看/编辑), 则使用 API [users/current/heartbeats](https://wakatime.com/developers#heartbeats) 向 `Wakapi/WakaTime` 服务提交操作信息 + * 单位: 秒 + * 提交的信息详情请参考 `Wakapi/WakaTime > 常规设置 > 心跳连接` + * `查看操作标签` + + * 用户查看操作对应的活动标签 + + * 打开某一篇文档 + * 光标焦点在文档中移动 + * 对应 `WakaTime` 统计结果中的 `Category` + * `编辑操作标签` + + * 用户编辑操作对应的活动标签 + + * 文档内容发生更改 + * 文档属性发生更改 + * 对应 `WakaTime` 统计结果中的 `Category` + * `操作系统名称` + + * 内核所在操作系统的名称 + * 对应 `WakaTime` 统计结果中的 `Operating Systems` + * `操作系统版本` + + * 当前操作系统的版本号 + * 默认为 `unknown` 以保护隐私 + * 置空则使用查询到的版本号 + * `操作系统架构` + + * 当前操作系统的处理器架构 + * 默认为 `unknown` 以保护隐私 + * 置空则使用查询到的架构 + * `用户代理字段 User-Agent` + + * 详情请参考 [User-Agent - HTTP | MDN](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/User-Agent) + * 置空则使用自动生成的字段 + + * 强烈建议置空以自动生成该字段 + * 自定义该字段可能导致 `Wakapi/WakaTime` 服务无法识别该插件 + * 代理中存在如下信息 + + * `wakatime-cli` 版本号 + + * 本插件未使用 + * 操作系统名称 + * 操作系统版本 + * 操作系统架构 + * 思源应用版本 + * 本插件版本 + * `服务设置` + + * `测试` + + * 测试使用 `Wakapi/WakaTime > 服务设置 > API 密钥` 能否成功访问 `Wakapi/WakaTime > 服务设置 > API URL` 对应的服务 + * `API URL` + + * 自定义 `Wakapi/WakaTime` API 服务地址 + * 对应 `Wakapi/WakaTime` 配置文件 `.wakatime.cfg` 中的 `api_url` 配置项 + * 若为空, 则使用 `WakaTime` 的服务地址 `https://wakatime.com/api/v1` + * 若使用托管的 `Wakapi` 服务, 应设置为 `https://wakapi.dev/api` + * 若使用私有部署的 `Wakapi` 服务, 应设置为 `http(s)://host[:port]/api` + + * 示例 + + * `http://localhost:3000/api` + * `https://wakapi.your.domain.name/api` + * 注意 + + * 故需要保证思源内核所在的设备能够访问所设置的服务地址 + * `API 密钥` + + * 自定义 `Wakapi/WakaTime` API 服务访问密钥 + * 对应 `Wakapi/WakaTime` 配置文件 `.wakatime.cfg` 中的 `api_key` 配置项 + * 必填项, 若未设置则无法与 `Wakapi/WakaTime` 建立连接 + * `主机名称` + + * 自定义设备名称 + * 对应 `Wakapi/WakaTime` 配置文件 `.wakatime.cfg` 中的 `hostname` 配置项 + * 若为空, 则使用思源内核所在设备的主机名 + * `超时时间` + + * 调用 `Wakapi/WakaTime` API 时的超时时间 + * 对应 `Wakapi/WakaTime` 配置文件 `.wakatime.cfg` 中的 `timeout` 配置项 + * 单位: 秒 + * `隐藏笔记本名称` + + * 在提交的操作活动信息中是否隐藏笔记本名称 + * 对应 `Wakapi/WakaTime` 配置文件 `.wakatime.cfg` 中的 `hide_branch_names` 配置项 + * 若开启, 则提交的信息中所有 笔记本名称 都替换为 笔记本 ID + * `隐藏文档标题` + + * 在提交的操作活动信息中是否隐藏文档标题 + * 对应 `Wakapi/WakaTime` 配置文件 `.wakatime.cfg` 中的 `hide_file_names` 配置项 + * 若开启, 则提交的信息中所有 文档标题 都替换为 文档块 ID + * `离线缓存` + + * 是否将活动信息缓存在本地文件中 + * 触发离线缓存的条件 + + * 关闭 `Wakapi/WakaTime > 常规设置 > 心跳连接` + * 或无法访问 `Wakapi/WakaTime` 服务 + * 缓存文件目录: `工作空间/temp/.wakatime/cache` + * 对应 `Wakapi/WakaTime` 配置文件 `.wakatime.cfg` 中的 `offline` 配置项 + * `ID 包含列表` + + * 仅提交 ID 路径中包含列表字段的文档 + * 若为空则包含所有笔记本与文档 + * 若不为空则仅提交 ID 路径中包含列表字段的文档 + + * ID 路径格式: `<笔记本 ID>/<文档 ID>/.../<文档 ID>.sy` + * ID 路径示例 + + * `20210808180117-czj9bvb/20200812220555-lj3enxa.sy` + * `20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180320-fqgskfj.sy` + * 每行一个记录, 可以为文本或者正则表达式, 正则表达式首尾需要使用 `/` 包裹, 如下所示 + + ```plaintext + 20200812220555-lj3enxa + /^20210917000226-w9fa32i\/20230522022822-roxea7p/ + ``` + + 上述列表与下述 `JavaScript` 代码等价 + + ```javascript + path.includes("20200812220555-lj3enxa") && /^20210917000226-w9fa32i\/20230522022822-roxea7p/.test(path) + ``` + + * `20200812220555-lj3enxa` + + * 提交 ID 为 `20200812220555-lj3enxa` 的笔记本或者文档本身及其下级的文档 + + * 示例 + + * `20210808180117-czj9bvb/20200812220555-lj3enxa.sy`: 包含 + * `20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180320-fqgskfj.sy`: 包含 + * `20210808180117-czj9bvb/20210117211155-56n4odu.sy`: 不包含 + * `/^20210917000226-w9fa32i\/20230522022822-roxea7p/` + + * 提交匹配正则表达式 `^20210917000226-w9fa32i/20230522022822-roxea7p`` 的文档 + + * 示例 + + * `20210917000226-w9fa32i/20230522022822-roxea7p.sy`: 包含 + * `20210917000226-w9fa32i/20230522022822-roxea7p/20230522022929-ojqqfyn.sy`: 包含 + * `20210917000226-w9fa32i/20220424113742-2eznev2.sy`: 不包含 + * `20210808180117-czj9bvb/20210917000226-w9fa32i/20230522022822-roxea7p.sy`: 不包含 + * `ID 排除列表` + + * 提交时排除 ID 路径中包含列表字段的文档 + * 若为空则不排除所有笔记本与文档 + * 若不为空则排除 ID 路径中包含列表字段的文档 + + * ID 路径格式与匹配规则请参考 `Wakapi/WakaTime > 服务设置 > ID 包含列表` + * 每行一个记录, 可以为文本或者正则表达式, 正则表达式首尾需要使用 `/` 包裹 + * 排除列表的优先级高于包含列表 + + * 若一个文档的 ID 路径同时匹配 ID 包含列表与 ID 排除列表, 则该文件会被排除 + * `包含列表` + + * 仅提交路径中包含列表字段的文档 + * 对应 `Wakapi/WakaTime` 配置文件 `.wakatime.cfg` 中的 `include` 配置项 + * 若为空则包含所有笔记本与文档 + * 若不为空则仅提交路径中包含列表字段的文档 + + * 路径格式与示例 + + | | `隐藏笔记本名称`: ✔ | `隐藏笔记本名称`: ✖
| + | ----------------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------- | + | `隐藏文档标题`: ✔ | `<笔记本 ID>/<文档 ID>/.../<文档 ID>.sy`
`20210808180117-czj9bvb/20200812220555-lj3enxa.sy`
| `<笔记本名称>/<文档 ID>/.../<文档 ID>.sy`
`思源笔记用户指南/20200812220555-lj3enxa.sy`
| + | `隐藏文档标题`: ✖ | `<笔记本 ID>/<文档标题>/.../<文档标题>.sy`
`20210808180117-czj9bvb/请从这里开始.sy` | `思源笔记用户指南/<文档标题>/.../<文档标题>.sy`
`思源笔记用户指南/请从这里开始.sy`
| + * 每行一个记录, 可以为文本或者正则表达式, 正则表达式首尾需要使用 `/` 包裹, 如下所示 + + ```plaintext + 请从这里开始 + /^思源笔记用户指南\/请从这里开始/ + ``` + + 上述列表与下述 `JavaScript` 代码等价 + + ```javascript + path.includes("请从这里开始") && /^思源笔记用户指南\/请从这里开始/.test(path) + ``` + * `排除列表` + + * 提交时排除路径中包含列表字段的文档 + * 对应 `Wakapi/WakaTime` 配置文件 `.wakatime.cfg` 中的 `exclude` 配置项 + * 若为空则不排除所有笔记本与文档 + * 若不为空则排除路径中包含列表字段的文档 + + * 路径格式与匹配规则请参考 `Wakapi/WakaTime > 服务设置 > 包含列表` + * 每行一个记录, 可以为文本或者正则表达式, 正则表达式首尾需要使用 `/` 包裹 + * 排除列表的优先级高于包含列表 + + * 若一个文档的路径同时匹配包含列表与排除列表, 则该文件会被排除 + +## 更改日志 + +[CHANGELOG.md](https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime/blob/main/CHANGELOG.md) diff --git a/i18n/en_US.json b/i18n/en_US.json new file mode 100644 index 0000000..3c1b502 --- /dev/null +++ b/i18n/en_US.json @@ -0,0 +1,124 @@ +{ + "displayName": "WakaTime", + "settings": { + "generalSettings": { + "cleanCache": { + "description": "Delete all offline cache files (page refresh after deletion)", + "text": "Clean", + "title": "Clean offline cache" + }, + "reset": { + "description": "Reset all settings options to default options (refresh page after reset)", + "text": "Reset", + "title": "Reset settings options" + }, + "title": "General" + }, + "wakatimeSettings": { + "generalTab": { + "editCategory": { + "description": "Action type tags for editing operations", + "title": "Edit operation tags" + }, + "heartbeats": { + "description": "Enable to submit action information to Wakapi/WakaTime service while viewing/editing documents", + "title": "Heartbeat connection" + }, + "interval": { + "description": "Time interval (in seconds) to push editing action information to Wakapi/WakaTime server", + "title": "Push interval" + }, + "language": { + "description": "Custom language name for Source file
Corresponds to Languages in Wakapi/WakaTime statistics", + "title": "Language name" + }, + "project": { + "description": "Custom current workspace name
Corresponds to Projects in Wakapi/WakaTime statistics", + "title": "Project name" + }, + "systemArch": { + "description": "The kernel architecture of the current operating system", + "title": "Operating System Architecture" + }, + "systemName": { + "description": "The name of the operating system on which the kernel resides", + "title": "Operating System Name" + }, + "systemVersion": { + "description": "The version of the current operating system", + "title": "Operating System Version" + }, + "title": "General", + "userAgent": { + "description": "Used to identify the editor currently used when pushing action information to the Wakapi/WakaTime service
It is highly recommended to leave blank to use the default options
Customizing this field may cause the Wakapi/WakaTime service to not recognize this plug-in", + "title": "User-Agent" + }, + "viewCategory": { + "description": "Action type tags for viewing operations", + "title": "View operation tags" + } + }, + "serviceTab": { + "apiKey": { + "description": "Wakapi/WakaTime API KEY
Corresponds to api_key in Wakapi/WakaTime configuration", + "title": "API KEY" + }, + "apiURL": { + "description": "Wakapi/WakaTime API URL
Corresponds to api_url in Wakapi/WakaTime configuration", + "title": "API URL" + }, + "exclude": { + "description": "Exclude documents with fields listed in the submission path.
Each entry should be on a separate line. Use / to enclose regular expressions.
Corresponds to the exclude option in the Wakapi/WakaTime configuration.", + "placeholder": "Exclude no notebooks or documents", + "title": "Exclude List" + }, + "excludeID": { + "description": "Exclude documents with fields listed in the submission ID path.
Each entry should be on a separate line. Use / to enclose regular expressions.", + "placeholder": "Exclude no notebooks or documents", + "title": "ID Exclude List" + }, + "hide_branch_names": { + "description": "Whether to hide notebook names. If enabled, the notebook name is replaced with the notebook ID
Corresponds to hide_branch_names in Wakapi/WakaTime configuration", + "title": "Hide notebook names" + }, + "hide_file_names": { + "description": "Whether to hide document titles. If enabled, the document title is replaced with the document block ID
Corresponds to hide_file_names in Wakapi/WakaTime configuration", + "title": "Hide document titles" + }, + "hostname": { + "description": "Custom current host name
Corresponds to hostname in Wakapi/WakaTime configuration", + "title": "Hostname" + }, + "include": { + "description": "Only include documents with fields listed in the submission path.
Each entry should be on a separate line. Use / to enclose regular expressions.
Corresponds to the include option in the Wakapi/WakaTime configuration.", + "placeholder": "Include all notebooks and documents", + "title": "Include List" + }, + "includeID": { + "description": "Only include documents with fields listed in the submission ID path.
Each entry should be on a separate line. Use / to enclose regular expressions.", + "placeholder": "Include all notebooks and documents", + "title": "ID Include List" + }, + "offline": { + "description": "Whether to enable offline caching
When the Wakapi/WakaTime service accesses abnormally or the heartbeat connection is not enabled, the action information will be cached to the ${1} directory
Corresponds to the offline option in the Wakapi/WakaTime configuration.", + "title": "Offline caching" + }, + "test": { + "description": "Test if connected to Wakapi/WakaTime service correctly", + "messages": { + "error": "Cannot establish connection to ${1} service", + "success": "Connection to ${1} service is successful" + }, + "text": "Test", + "title": "Test Wakapi/WakaTime service" + }, + "timeout": { + "description": "Wakapi/WakaTime API request timeout
Corresponds to timeout in Wakapi/WakaTime configuration", + "title": "Timeout" + }, + "title": "Service" + }, + "title": "Wakapi/WakaTime" + } + } +} diff --git a/i18n/zh_CHT.json b/i18n/zh_CHT.json new file mode 100644 index 0000000..bd21a48 --- /dev/null +++ b/i18n/zh_CHT.json @@ -0,0 +1,124 @@ +{ + "displayName": "WakaTime", + "settings": { + "generalSettings": { + "cleanCache": { + "description": "刪除所有離線緩存文件(刪除後將刷新頁面)", + "text": "清理", + "title": "清理離線緩存" + }, + "reset": { + "description": "重置所有設置選項為默認選項(重置後將刷新頁面)", + "text": "重置", + "title": "重置設置選項" + }, + "title": "常規設置" + }, + "wakatimeSettings": { + "generalTab": { + "editCategory": { + "description": "為編輯操作設置的活動類型標籤", + "title": "編輯操作標籤" + }, + "heartbeats": { + "description": "開啟後將在查看/編輯文檔時向 Wakapi/WakaTime 服務提交活動信息", + "title": "心跳連接" + }, + "interval": { + "description": "將編輯活動推送到 Wakapi/WakaTime 服務器的時間間隔(單位:秒)", + "title": "推送時間間隔" + }, + "language": { + "description": "自定義思源文件語言名稱
對應 Wakapi/WakaTime 統計中的 Languages 項", + "title": "語言名稱" + }, + "project": { + "description": "自定義當前工作空間名稱
對應 Wakapi/WakaTime 統計中的 Projects 項", + "title": "項目名稱" + }, + "systemArch": { + "description": "當前操作系統的內核架構", + "title": "操作系統架構" + }, + "systemName": { + "description": "思源內核所在操作系統的名稱", + "title": "操作系統名稱" + }, + "systemVersion": { + "description": "當前操作系統的版本", + "title": "操作系統版本" + }, + "title": "常規設置", + "userAgent": { + "description": "用於將操作信息推送到 Wakapi/WakaTime 服務時標識當前所使用的編輯器
強烈建議留空以使用默認選項
自定義該字段可能導致 Wakapi/WakaTime 服務無法識別該插件", + "title": "用戶代理字段 User-Agent" + }, + "viewCategory": { + "description": "為查看操作設置的活動類型標籤", + "title": "查看操作標籤" + } + }, + "serviceTab": { + "apiKey": { + "description": "Wakapi/WakaTime API 密鑰
對應 Wakapi/WakaTime 配置中的 api_key", + "title": "API 密鑰" + }, + "apiURL": { + "description": "Wakapi/WakaTime API URL
對應 Wakapi/WakaTime 配置中的 api_url", + "title": "API URL" + }, + "exclude": { + "description": "提交時排除路徑中包含列表字段的文檔
每行一條記錄,若為正則表達式則需要使用 / 包裹
對應 Wakapi/WakaTime 配置中的 exclude", + "placeholder": "不排除任何筆記本與文檔", + "title": "排除列表" + }, + "excludeID": { + "description": "提交時排除 ID 路徑中包含列表字段的文檔
每行一條記錄,若為正則表達式則需要使用 / 包裹", + "placeholder": "不排除任何筆記本與文檔", + "title": "ID 排除列表" + }, + "hide_branch_names": { + "description": "是否隱藏筆記本名稱,開啟後將使用筆記本 ID 替換筆記本名稱
對應 Wakapi/WakaTime 配置中的 hide_branch_names", + "title": "隱藏筆記本名稱" + }, + "hide_file_names": { + "description": "是否隱藏文檔標題,開啟後將使用文檔塊 ID 替換文檔標題
對應 Wakapi/WakaTime 配置中的 hide_file_names", + "title": "隱藏文檔標題" + }, + "hostname": { + "description": "自定義當前主機名稱
對應 Wakapi/WakaTime 配置中的 hostname", + "title": "主機名稱" + }, + "include": { + "description": "僅提交路徑中包含列表字段的文檔
每行一條記錄,若為正則表達式則需要使用 / 包裹
對應 Wakapi/WakaTime 配置中的 include", + "placeholder": "包含所有筆記本與文檔", + "title": "包含列表" + }, + "includeID": { + "description": "僅提交 ID 路徑中包含列表字段的文檔
每行一條記錄,若為正則表達式則需要使用 / 包裹", + "placeholder": "包含所有筆記本與文檔", + "title": "ID 包含列表" + }, + "offline": { + "description": "是否開啟離線緩存功能
開啟後當 Wakapi/WakaTime 服務訪問異常或未開啟心跳連接時會將活動信息緩存至 ${1} 目錄
對應 Wakapi/WakaTime 配置中的 offline", + "title": "離線緩存" + }, + "test": { + "description": "測試是否正確連接到 Wakapi/WakaTime 服務", + "messages": { + "error": "無法與 ${1} 服務建立連接", + "success": "與 ${1} 服務的連接正常" + }, + "text": "測試", + "title": "測試 Wakapi/WakaTime 服務" + }, + "timeout": { + "description": "Wakapi/WakaTime API 請求超時時間
對應 Wakapi/WakaTime 配置中的 timeout", + "title": "超時時間" + }, + "title": "服務設置" + }, + "title": "Wakapi/WakaTime" + } + } +} diff --git a/i18n/zh_CN.json b/i18n/zh_CN.json new file mode 100644 index 0000000..86aeb45 --- /dev/null +++ b/i18n/zh_CN.json @@ -0,0 +1,124 @@ +{ + "displayName": "WakaTime", + "settings": { + "generalSettings": { + "cleanCache": { + "description": "删除所有离线缓存文件(删除后将刷新页面)", + "text": "清理", + "title": "清理离线缓存" + }, + "reset": { + "description": "重置所有设置选项为默认选项(重置后将刷新页面)", + "text": "重置", + "title": "重置设置选项" + }, + "title": "常规设置" + }, + "wakatimeSettings": { + "generalTab": { + "editCategory": { + "description": "为编辑操作设置的活动类型标签", + "title": "编辑操作标签" + }, + "heartbeats": { + "description": "开启后将在查看/编辑文档时向 Wakapi/WakaTime 服务提交活动信息", + "title": "心跳连接" + }, + "interval": { + "description": "将编辑活动推送到 Wakapi/WakaTime 服务器的时间间隔(单位:秒)", + "title": "推送时间间隔" + }, + "language": { + "description": "自定义思源文件语言名称
对应 Wakapi/WakaTime 统计中的 Languages 项", + "title": "语言名称" + }, + "project": { + "description": "自定义当前工作空间名称
对应 Wakapi/WakaTime 统计中的 Projects 项", + "title": "项目名称" + }, + "systemArch": { + "description": "当前操作系统的内核架构", + "title": "操作系统架构" + }, + "systemName": { + "description": "思源内核所在操作系统的名称", + "title": "操作系统名称" + }, + "systemVersion": { + "description": "当前操作系统的版本", + "title": "操作系统版本" + }, + "title": "常规设置", + "userAgent": { + "description": "用于将操作信息推送到 Wakapi/WakaTime 服务时标识当前所使用的编辑器
强烈建议留空以使用默认选项
自定义该字段可能导致 Wakapi/WakaTime 服务无法识别该插件", + "title": "用户代理字段 User-Agent" + }, + "viewCategory": { + "description": "为查看操作设置的活动类型标签", + "title": "查看操作标签" + } + }, + "serviceTab": { + "apiKey": { + "description": "Wakapi/WakaTime API 密钥
对应 Wakapi/WakaTime 配置中的 api_key", + "title": "API 密钥" + }, + "apiURL": { + "description": "Wakapi/WakaTime API URL
对应 Wakapi/WakaTime 配置中的 api_url", + "title": "API URL" + }, + "exclude": { + "description": "提交时排除路径中包含列表字段的文档
每行一条记录,若为正则表达式则需要使用 / 包裹
对应 Wakapi/WakaTime 配置中的 exclude", + "placeholder": "不排除任何笔记本与文档", + "title": "排除列表" + }, + "excludeID": { + "description": "提交时排除 ID 路径中包含列表字段的文档
每行一条记录,若为正则表达式则需要使用 / 包裹", + "placeholder": "不排除任何笔记本与文档", + "title": "ID 排除列表" + }, + "hide_branch_names": { + "description": "是否隐藏笔记本名称,开启后将使用笔记本 ID 替换笔记本名称
对应 Wakapi/WakaTime 配置中的 hide_branch_names", + "title": "隐藏笔记本名称" + }, + "hide_file_names": { + "description": "是否隐藏文档标题,开启后将使用文档块 ID 替换文档标题
对应 Wakapi/WakaTime 配置中的 hide_file_names", + "title": "隐藏文档标题" + }, + "hostname": { + "description": "自定义当前主机名称
对应 Wakapi/WakaTime 配置中的 hostname", + "title": "主机名称" + }, + "include": { + "description": "仅提交路径中包含列表字段的文档
每行一条记录,若为正则表达式则需要使用 / 包裹
对应 Wakapi/WakaTime 配置中的 include", + "placeholder": "包含所有笔记本与文档", + "title": "包含列表" + }, + "includeID": { + "description": "仅提交 ID 路径中包含列表字段的文档
每行一条记录,若为正则表达式则需要使用 / 包裹", + "placeholder": "包含所有笔记本与文档", + "title": "ID 包含列表" + }, + "offline": { + "description": "是否开启离线缓存功能
开启后当 Wakapi/WakaTime 服务访问异常或未开启心跳连接时会将活动信息缓存至 ${1} 目录
对应 Wakapi/WakaTime 配置中的 offline", + "title": "离线缓存" + }, + "test": { + "description": "测试是否正确连接到 Wakapi/WakaTime 服务", + "messages": { + "error": "无法与 ${1} 服务建立连接", + "success": "与 ${1} 服务的连接正常" + }, + "text": "测试", + "title": "测试 Wakapi/WakaTime 服务" + }, + "timeout": { + "description": "Wakapi/WakaTime API 请求超时时间
对应 Wakapi/WakaTime 配置中的 timeout", + "title": "超时时间" + }, + "title": "服务设置" + }, + "title": "Wakapi/WakaTime" + } + } +} diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..30299e14fd6739909c5267b05fda1f3adaf9f5e0 GIT binary patch literal 3868 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 M>l(wW@7P8DAHeHL=>Px# literal 0 HcmV?d00001 diff --git a/index.css b/index.css new file mode 100644 index 0000000..4eb64dd --- /dev/null +++ b/index.css @@ -0,0 +1 @@ +.b3-list-item__text.svelte-15drd7h{margin-right:.5em}.visible.svelte-2m76cy{overflow:visible}.fn__block.b3-switch.svelte-edt8og{overflow:visible;padding-left:1em}.fn__block.b3-slider.svelte-edt8og{padding:0} diff --git a/index.js b/index.js new file mode 100644 index 0000000..2ffcb8a --- /dev/null +++ b/index.js @@ -0,0 +1,156 @@ +"use strict";var Hi=Object.defineProperty;var Ki=(t,e,n)=>e in t?Hi(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var V=(t,e,n)=>(Ki(t,typeof e!="symbol"?e+"":e,n),n);const Re=require("siyuan"),Wi=` + + + + +`,zi=` + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`,Gi="wakatime",Ji="Zuoqiu Yingyi",Yi="https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime",Zi="0.3.2",Xi="2.9.9",Qi=["all"],xi=["all"],es={default:"WakaTime"},ts={default:"Use Wakapi or WakaTime to count your editing Activity",zh_CN:"使用 WakapiWakaTime 统计您的编辑活动",zh_CHT:"使用 WakapiWakaTime 統計您的編輯活動"},ns={default:"README.md",zh_CN:"README_zh_CN.md",zh_CHT:"README_zh_CN.md"},is={openCollective:"",patreon:"",github:"",custom:["https://afdian.net/a/zuoqiu","https://ko-fi.com/zuoqiu"]},dn={name:Gi,author:Ji,url:Yi,version:Zi,minAppVersion:Xi,backends:Qi,frontends:xi,displayName:es,description:ts,readme:ns,funding:is};var ss=Object.defineProperty,rs=(t,e,n)=>e in t?ss(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,_e=(t,e,n)=>(rs(t,typeof e!="symbol"?e+"":e,n),n);function ci(t,e){return function(){return t.apply(e,arguments)}}const{toString:as}=Object.prototype,{getPrototypeOf:Rt}=Object,at=(t=>e=>{const n=as.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),ie=t=>(t=t.toLowerCase(),e=>at(e)===t),ot=t=>e=>typeof e===t,{isArray:Ue}=Array,He=ot("undefined");function os(t){return t!==null&&!He(t)&&t.constructor!==null&&!He(t.constructor)&&X(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const ui=ie("ArrayBuffer");function ls(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&ui(t.buffer),e}const cs=ot("string"),X=ot("function"),fi=ot("number"),lt=t=>t!==null&&typeof t=="object",us=t=>t===!0||t===!1,xe=t=>{if(at(t)!=="object")return!1;const e=Rt(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)},fs=ie("Date"),ps=ie("File"),hs=ie("Blob"),ms=ie("FileList"),ds=t=>lt(t)&&X(t.pipe),gs=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||X(t.append)&&((e=at(t))==="formdata"||e==="object"&&X(t.toString)&&t.toString()==="[object FormData]"))},_s=ie("URLSearchParams"),bs=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function ze(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let i,s;if(typeof t!="object"&&(t=[t]),Ue(t))for(i=0,s=t.length;i0;)if(s=n[i],e===s.toLowerCase())return s;return null}const hi=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global)(),mi=t=>!He(t)&&t!==hi;function yt(){const{caseless:t}=mi(this)&&this||{},e={},n=(i,s)=>{const r=t&&pi(e,s)||s;xe(e[r])&&xe(i)?e[r]=yt(e[r],i):xe(i)?e[r]=yt({},i):Ue(i)?e[r]=i.slice():e[r]=i};for(let i=0,s=arguments.length;i(ze(e,(s,r)=>{n&&X(s)?t[r]=ci(s,n):t[r]=s},{allOwnKeys:i}),t),ks=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),ys=(t,e,n,i)=>{t.prototype=Object.create(e.prototype,i),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),n&&Object.assign(t.prototype,n)},$s=(t,e,n,i)=>{let s,r,a;const l={};if(e=e||{},t==null)return e;do{for(s=Object.getOwnPropertyNames(t),r=s.length;r-- >0;)a=s[r],(!i||i(a,t,e))&&!l[a]&&(e[a]=t[a],l[a]=!0);t=n!==!1&&Rt(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},Ss=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const i=t.indexOf(e,n);return i!==-1&&i===n},vs=t=>{if(!t)return null;if(Ue(t))return t;let e=t.length;if(!fi(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},Ts=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Rt(Uint8Array)),Es=(t,e)=>{const n=(t&&t[Symbol.iterator]).call(t);let i;for(;(i=n.next())&&!i.done;){const s=i.value;e.call(t,s[0],s[1])}},As=(t,e)=>{let n;const i=[];for(;(n=t.exec(e))!==null;)i.push(n);return i},Os=ie("HTMLFormElement"),Ds=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,n,i){return n.toUpperCase()+i}),gn=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),Cs=ie("RegExp"),di=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),i={};ze(n,(s,r)=>{e(s,r,t)!==!1&&(i[r]=s)}),Object.defineProperties(t,i)},Ps=t=>{di(t,(e,n)=>{if(X(t)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const i=t[n];if(X(i)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Ns=(t,e)=>{const n={},i=s=>{s.forEach(r=>{n[r]=!0})};return Ue(t)?i(t):i(String(t).split(e)),n},Rs=()=>{},Bs=(t,e)=>(t=+t,Number.isFinite(t)?t:e),ht="abcdefghijklmnopqrstuvwxyz",_n="0123456789",gi={DIGIT:_n,ALPHA:ht,ALPHA_DIGIT:ht+ht.toUpperCase()+_n},Ls=(t=16,e=gi.ALPHA_DIGIT)=>{let n="";const{length:i}=e;for(;t--;)n+=e[Math.random()*i|0];return n};function js(t){return!!(t&&X(t.append)&&t[Symbol.toStringTag]==="FormData"&&t[Symbol.iterator])}const Is=t=>{const e=new Array(10),n=(i,s)=>{if(lt(i)){if(e.indexOf(i)>=0)return;if(!("toJSON"in i)){e[s]=i;const r=Ue(i)?[]:{};return ze(i,(a,l)=>{const o=n(a,s+1);!He(o)&&(r[l]=o)}),e[s]=void 0,r}}return i};return n(t,0)},Ms=ie("AsyncFunction"),Us=t=>t&&(lt(t)||X(t))&&X(t.then)&&X(t.catch),d={isArray:Ue,isArrayBuffer:ui,isBuffer:os,isFormData:gs,isArrayBufferView:ls,isString:cs,isNumber:fi,isBoolean:us,isObject:lt,isPlainObject:xe,isUndefined:He,isDate:fs,isFile:ps,isBlob:hs,isRegExp:Cs,isFunction:X,isStream:ds,isURLSearchParams:_s,isTypedArray:Ts,isFileList:ms,forEach:ze,merge:yt,extend:ws,trim:bs,stripBOM:ks,inherits:ys,toFlatObject:$s,kindOf:at,kindOfTest:ie,endsWith:Ss,toArray:vs,forEachEntry:Es,matchAll:As,isHTMLForm:Os,hasOwnProperty:gn,hasOwnProp:gn,reduceDescriptors:di,freezeMethods:Ps,toObjectSet:Ns,toCamelCase:Ds,noop:Rs,toFiniteNumber:Bs,findKey:pi,global:hi,isContextDefined:mi,ALPHABET:gi,generateString:Ls,isSpecCompliantForm:js,toJSONObject:Is,isAsyncFn:Ms,isThenable:Us};function j(t,e,n,i,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),n&&(this.config=n),i&&(this.request=i),s&&(this.response=s)}d.inherits(j,Error,{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:d.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const _i=j.prototype,bi={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{bi[t]={value:t}});Object.defineProperties(j,bi);Object.defineProperty(_i,"isAxiosError",{value:!0});j.from=(t,e,n,i,s,r)=>{const a=Object.create(_i);return d.toFlatObject(t,a,function(l){return l!==Error.prototype},l=>l!=="isAxiosError"),j.call(a,t.message,e,n,i,s),a.cause=t,a.name=t.name,r&&Object.assign(a,r),a};const Fs=null;function $t(t){return d.isPlainObject(t)||d.isArray(t)}function wi(t){return d.endsWith(t,"[]")?t.slice(0,-2):t}function bn(t,e,n){return t?t.concat(e).map(function(i,s){return i=wi(i),!n&&s?"["+i+"]":i}).join(n?".":""):e}function qs(t){return d.isArray(t)&&!t.some($t)}const Vs=d.toFlatObject(d,{},null,function(t){return/^is[A-Z]/.test(t)});function ct(t,e,n){if(!d.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,n=d.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(f,p){return!d.isUndefined(p[f])});const i=n.metaTokens,s=n.visitor||c,r=n.dots,a=n.indexes,l=(n.Blob||typeof Blob<"u"&&Blob)&&d.isSpecCompliantForm(e);if(!d.isFunction(s))throw new TypeError("visitor must be a function");function o(f){if(f===null)return"";if(d.isDate(f))return f.toISOString();if(!l&&d.isBlob(f))throw new j("Blob is not supported. Use a Buffer instead.");return d.isArrayBuffer(f)||d.isTypedArray(f)?l&&typeof Blob=="function"?new Blob([f]):Buffer.from(f):f}function c(f,p,_){let g=f;if(f&&!_&&typeof f=="object"){if(d.endsWith(p,"{}"))p=i?p:p.slice(0,-2),f=JSON.stringify(f);else if(d.isArray(f)&&qs(f)||(d.isFileList(f)||d.endsWith(p,"[]"))&&(g=d.toArray(f)))return p=wi(p),g.forEach(function(N,z){!(d.isUndefined(N)||N===null)&&e.append(a===!0?bn([p],z,r):a===null?p:p+"[]",o(N))}),!1}return $t(f)?!0:(e.append(bn(_,p,r),o(f)),!1)}const u=[],m=Object.assign(Vs,{defaultVisitor:c,convertValue:o,isVisitable:$t});function b(f,p){if(!d.isUndefined(f)){if(u.indexOf(f)!==-1)throw Error("Circular reference detected in "+p.join("."));u.push(f),d.forEach(f,function(_,g){(!(d.isUndefined(_)||_===null)&&s.call(e,_,d.isString(g)?g.trim():g,p,m))===!0&&b(_,p?p.concat(g):[g])}),u.pop()}}if(!d.isObject(t))throw new TypeError("data must be an object");return b(t),e}function wn(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(n){return e[n]})}function Bt(t,e){this._pairs=[],t&&ct(t,this,e)}const ki=Bt.prototype;ki.append=function(t,e){this._pairs.push([t,e])};ki.toString=function(t){const e=t?function(n){return t.call(this,n,wn)}:wn;return this._pairs.map(function(n){return e(n[0])+"="+e(n[1])},"").join("&")};function Hs(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function yi(t,e,n){if(!e)return t;const i=n&&n.encode||Hs,s=n&&n.serialize;let r;if(s?r=s(e,n):r=d.isURLSearchParams(e)?e.toString():new Bt(e,n).toString(i),r){const a=t.indexOf("#");a!==-1&&(t=t.slice(0,a)),t+=(t.indexOf("?")===-1?"?":"&")+r}return t}class Ks{constructor(){this.handlers=[]}use(e,n,i){return this.handlers.push({fulfilled:e,rejected:n,synchronous:i?i.synchronous:!1,runWhen:i?i.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){d.forEach(this.handlers,function(n){n!==null&&e(n)})}}const kn=Ks,$i={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Ws=typeof URLSearchParams<"u"?URLSearchParams:Bt,zs=typeof FormData<"u"?FormData:null,Gs=typeof Blob<"u"?Blob:null,Js=(()=>{let t;return typeof navigator<"u"&&((t=navigator.product)==="ReactNative"||t==="NativeScript"||t==="NS")?!1:typeof window<"u"&&typeof document<"u"})(),Ys=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),ne={isBrowser:!0,classes:{URLSearchParams:Ws,FormData:zs,Blob:Gs},isStandardBrowserEnv:Js,isStandardBrowserWebWorkerEnv:Ys,protocols:["http","https","file","blob","url","data"]};function Zs(t,e){return ct(t,new ne.classes.URLSearchParams,Object.assign({visitor:function(n,i,s,r){return ne.isNode&&d.isBuffer(n)?(this.append(i,n.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},e))}function Xs(t){return d.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function Qs(t){const e={},n=Object.keys(t);let i;const s=n.length;let r;for(i=0;i=n.length;return a=!a&&d.isArray(s)?s.length:a,o?(d.hasOwnProp(s,a)?s[a]=[s[a],i]:s[a]=i,!l):((!s[a]||!d.isObject(s[a]))&&(s[a]=[]),e(n,i,s[a],r)&&d.isArray(s[a])&&(s[a]=Qs(s[a])),!l)}if(d.isFormData(t)&&d.isFunction(t.entries)){const n={};return d.forEachEntry(t,(i,s)=>{e(Xs(i),s,n,0)}),n}return null}const xs={"Content-Type":void 0};function er(t,e,n){if(d.isString(t))try{return(e||JSON.parse)(t),d.trim(t)}catch(i){if(i.name!=="SyntaxError")throw i}return(n||JSON.stringify)(t)}const ut={transitional:$i,adapter:["xhr","http"],transformRequest:[function(t,e){const n=e.getContentType()||"",i=n.indexOf("application/json")>-1,s=d.isObject(t);if(s&&d.isHTMLForm(t)&&(t=new FormData(t)),d.isFormData(t))return i&&i?JSON.stringify(Si(t)):t;if(d.isArrayBuffer(t)||d.isBuffer(t)||d.isStream(t)||d.isFile(t)||d.isBlob(t))return t;if(d.isArrayBufferView(t))return t.buffer;if(d.isURLSearchParams(t))return e.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let r;if(s){if(n.indexOf("application/x-www-form-urlencoded")>-1)return Zs(t,this.formSerializer).toString();if((r=d.isFileList(t))||n.indexOf("multipart/form-data")>-1){const a=this.env&&this.env.FormData;return ct(r?{"files[]":t}:t,a&&new a,this.formSerializer)}}return s||i?(e.setContentType("application/json",!1),er(t)):t}],transformResponse:[function(t){const e=this.transitional||ut.transitional,n=e&&e.forcedJSONParsing,i=this.responseType==="json";if(t&&d.isString(t)&&(n&&!this.responseType||i)){const s=!(e&&e.silentJSONParsing)&&i;try{return JSON.parse(t)}catch(r){if(s)throw r.name==="SyntaxError"?j.from(r,j.ERR_BAD_RESPONSE,this,null,this.response):r}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ne.classes.FormData,Blob:ne.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};d.forEach(["delete","get","head"],function(t){ut.headers[t]={}});d.forEach(["post","put","patch"],function(t){ut.headers[t]=d.merge(xs)});const Lt=ut,tr=d.toObjectSet(["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"]),nr=t=>{const e={};let n,i,s;return t&&t.split(` +`).forEach(function(r){s=r.indexOf(":"),n=r.substring(0,s).trim().toLowerCase(),i=r.substring(s+1).trim(),!(!n||e[n]&&tr[n])&&(n==="set-cookie"?e[n]?e[n].push(i):e[n]=[i]:e[n]=e[n]?e[n]+", "+i:i)}),e},yn=Symbol("internals");function Fe(t){return t&&String(t).trim().toLowerCase()}function et(t){return t===!1||t==null?t:d.isArray(t)?t.map(et):String(t)}function ir(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=n.exec(t);)e[i[1]]=i[2];return e}const sr=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function mt(t,e,n,i,s){if(d.isFunction(i))return i.call(this,e,n);if(s&&(e=n),!!d.isString(e)){if(d.isString(i))return e.indexOf(i)!==-1;if(d.isRegExp(i))return i.test(e)}}function rr(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,i)=>n.toUpperCase()+i)}function ar(t,e){const n=d.toCamelCase(" "+e);["get","set","has"].forEach(i=>{Object.defineProperty(t,i+n,{value:function(s,r,a){return this[i].call(this,e,s,r,a)},configurable:!0})})}let ft=class{constructor(t){t&&this.set(t)}set(t,e,n){const i=this;function s(a,l,o){const c=Fe(l);if(!c)throw new Error("header name must be a non-empty string");const u=d.findKey(i,c);(!u||i[u]===void 0||o===!0||o===void 0&&i[u]!==!1)&&(i[u||l]=et(a))}const r=(a,l)=>d.forEach(a,(o,c)=>s(o,c,l));return d.isPlainObject(t)||t instanceof this.constructor?r(t,e):d.isString(t)&&(t=t.trim())&&!sr(t)?r(nr(t),e):t!=null&&s(e,t,n),this}get(t,e){if(t=Fe(t),t){const n=d.findKey(this,t);if(n){const i=this[n];if(!e)return i;if(e===!0)return ir(i);if(d.isFunction(e))return e.call(this,i,n);if(d.isRegExp(e))return e.exec(i);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,e){if(t=Fe(t),t){const n=d.findKey(this,t);return!!(n&&this[n]!==void 0&&(!e||mt(this,this[n],n,e)))}return!1}delete(t,e){const n=this;let i=!1;function s(r){if(r=Fe(r),r){const a=d.findKey(n,r);a&&(!e||mt(n,n[a],a,e))&&(delete n[a],i=!0)}}return d.isArray(t)?t.forEach(s):s(t),i}clear(t){const e=Object.keys(this);let n=e.length,i=!1;for(;n--;){const s=e[n];(!t||mt(this,this[s],s,t,!0))&&(delete this[s],i=!0)}return i}normalize(t){const e=this,n={};return d.forEach(this,(i,s)=>{const r=d.findKey(n,s);if(r){e[r]=et(i),delete e[s];return}const a=t?rr(s):String(s).trim();a!==s&&delete e[s],e[a]=et(i),n[a]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const e=Object.create(null);return d.forEach(this,(n,i)=>{n!=null&&n!==!1&&(e[i]=t&&d.isArray(n)?n.join(", "):n)}),e}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,e])=>t+": "+e).join(` +`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...e){const n=new this(t);return e.forEach(i=>n.set(i)),n}static accessor(t){const e=(this[yn]=this[yn]={accessors:{}}).accessors,n=this.prototype;function i(s){const r=Fe(s);e[r]||(ar(n,s),e[r]=!0)}return d.isArray(t)?t.forEach(i):i(t),this}};ft.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);d.freezeMethods(ft.prototype);d.freezeMethods(ft);const fe=ft;function dt(t,e){const n=this||Lt,i=e||n,s=fe.from(i.headers);let r=i.data;return d.forEach(t,function(a){r=a.call(n,r,s.normalize(),e?e.status:void 0)}),s.normalize(),r}function vi(t){return!!(t&&t.__CANCEL__)}function Ge(t,e,n){j.call(this,t??"canceled",j.ERR_CANCELED,e,n),this.name="CanceledError"}d.inherits(Ge,j,{__CANCEL__:!0});function or(t,e,n){const i=n.config.validateStatus;!n.status||!i||i(n.status)?t(n):e(new j("Request failed with status code "+n.status,[j.ERR_BAD_REQUEST,j.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}const lr=ne.isStandardBrowserEnv?function(){return{write:function(t,e,n,i,s,r){const a=[];a.push(t+"="+encodeURIComponent(e)),d.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),d.isString(i)&&a.push("path="+i),d.isString(s)&&a.push("domain="+s),r===!0&&a.push("secure"),document.cookie=a.join("; ")},read:function(t){const e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}();function cr(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function ur(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}function Ti(t,e){return t&&!cr(e)?ur(t,e):e}const fr=ne.isStandardBrowserEnv?function(){const t=/(msie|trident)/i.test(navigator.userAgent),e=document.createElement("a");let n;function i(s){let r=s;return t&&(e.setAttribute("href",r),r=e.href),e.setAttribute("href",r),{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",host:e.host,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):"",hostname:e.hostname,port:e.port,pathname:e.pathname.charAt(0)==="/"?e.pathname:"/"+e.pathname}}return n=i(window.location.href),function(s){const r=d.isString(s)?i(s):s;return r.protocol===n.protocol&&r.host===n.host}}():function(){return function(){return!0}}();function pr(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function hr(t,e){t=t||10;const n=new Array(t),i=new Array(t);let s=0,r=0,a;return e=e!==void 0?e:1e3,function(l){const o=Date.now(),c=i[r];a||(a=o),n[s]=l,i[s]=o;let u=r,m=0;for(;u!==s;)m+=n[u++],u=u%t;if(s=(s+1)%t,s===r&&(r=(r+1)%t),o-a{const r=s.loaded,a=s.lengthComputable?s.total:void 0,l=r-n,o=i(l),c=r<=a;n=r;const u={loaded:r,total:a,progress:a?r/a:void 0,bytes:l,rate:o||void 0,estimated:o&&a&&c?(a-r)/o:void 0,event:s};u[e?"download":"upload"]=!0,t(u)}}const mr=typeof XMLHttpRequest<"u",dr=mr&&function(t){return new Promise(function(e,n){let i=t.data;const s=fe.from(t.headers).normalize(),r=t.responseType;let a;function l(){t.cancelToken&&t.cancelToken.unsubscribe(a),t.signal&&t.signal.removeEventListener("abort",a)}d.isFormData(i)&&(ne.isStandardBrowserEnv||ne.isStandardBrowserWebWorkerEnv?s.setContentType(!1):s.setContentType("multipart/form-data;",!1));let o=new XMLHttpRequest;if(t.auth){const b=t.auth.username||"",f=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";s.set("Authorization","Basic "+btoa(b+":"+f))}const c=Ti(t.baseURL,t.url);o.open(t.method.toUpperCase(),yi(c,t.params,t.paramsSerializer),!0),o.timeout=t.timeout;function u(){if(!o)return;const b=fe.from("getAllResponseHeaders"in o&&o.getAllResponseHeaders()),f={data:!r||r==="text"||r==="json"?o.responseText:o.response,status:o.status,statusText:o.statusText,headers:b,config:t,request:o};or(function(p){e(p),l()},function(p){n(p),l()},f),o=null}if("onloadend"in o?o.onloadend=u:o.onreadystatechange=function(){!o||o.readyState!==4||o.status===0&&!(o.responseURL&&o.responseURL.indexOf("file:")===0)||setTimeout(u)},o.onabort=function(){o&&(n(new j("Request aborted",j.ECONNABORTED,t,o)),o=null)},o.onerror=function(){n(new j("Network Error",j.ERR_NETWORK,t,o)),o=null},o.ontimeout=function(){let b=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded";const f=t.transitional||$i;t.timeoutErrorMessage&&(b=t.timeoutErrorMessage),n(new j(b,f.clarifyTimeoutError?j.ETIMEDOUT:j.ECONNABORTED,t,o)),o=null},ne.isStandardBrowserEnv){const b=(t.withCredentials||fr(c))&&t.xsrfCookieName&&lr.read(t.xsrfCookieName);b&&s.set(t.xsrfHeaderName,b)}i===void 0&&s.setContentType(null),"setRequestHeader"in o&&d.forEach(s.toJSON(),function(b,f){o.setRequestHeader(f,b)}),d.isUndefined(t.withCredentials)||(o.withCredentials=!!t.withCredentials),r&&r!=="json"&&(o.responseType=t.responseType),typeof t.onDownloadProgress=="function"&&o.addEventListener("progress",$n(t.onDownloadProgress,!0)),typeof t.onUploadProgress=="function"&&o.upload&&o.upload.addEventListener("progress",$n(t.onUploadProgress)),(t.cancelToken||t.signal)&&(a=b=>{o&&(n(!b||b.type?new Ge(null,t,o):b),o.abort(),o=null)},t.cancelToken&&t.cancelToken.subscribe(a),t.signal&&(t.signal.aborted?a():t.signal.addEventListener("abort",a)));const m=pr(c);if(m&&ne.protocols.indexOf(m)===-1){n(new j("Unsupported protocol "+m+":",j.ERR_BAD_REQUEST,t));return}o.send(i||null)})},tt={http:Fs,xhr:dr};d.forEach(tt,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const gr={getAdapter:t=>{t=d.isArray(t)?t:[t];const{length:e}=t;let n,i;for(let s=0;st instanceof fe?t.toJSON():t;function je(t,e){e=e||{};const n={};function i(c,u,m){return d.isPlainObject(c)&&d.isPlainObject(u)?d.merge.call({caseless:m},c,u):d.isPlainObject(u)?d.merge({},u):d.isArray(u)?u.slice():u}function s(c,u,m){if(d.isUndefined(u)){if(!d.isUndefined(c))return i(void 0,c,m)}else return i(c,u,m)}function r(c,u){if(!d.isUndefined(u))return i(void 0,u)}function a(c,u){if(d.isUndefined(u)){if(!d.isUndefined(c))return i(void 0,c)}else return i(void 0,u)}function l(c,u,m){if(m in e)return i(c,u);if(m in t)return i(void 0,c)}const o={url:r,method:r,data:r,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:l,headers:(c,u)=>s(vn(c),vn(u),!0)};return d.forEach(Object.keys(Object.assign({},t,e)),function(c){const u=o[c]||s,m=u(t[c],e[c],c);d.isUndefined(m)&&u!==l||(n[c]=m)}),n}const Ei="1.4.0",jt={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{jt[t]=function(n){return typeof n===t||"a"+(e<1?"n ":" ")+t}});const Tn={};jt.transitional=function(t,e,n){function i(s,r){return"[Axios v"+Ei+"] Transitional option '"+s+"'"+r+(n?". "+n:"")}return(s,r,a)=>{if(t===!1)throw new j(i(r," has been removed"+(e?" in "+e:"")),j.ERR_DEPRECATED);return e&&!Tn[r]&&(Tn[r]=!0,console.warn(i(r," has been deprecated since v"+e+" and will be removed in the near future"))),t?t(s,r,a):!0}};function _r(t,e,n){if(typeof t!="object")throw new j("options must be an object",j.ERR_BAD_OPTION_VALUE);const i=Object.keys(t);let s=i.length;for(;s-- >0;){const r=i[s],a=e[r];if(a){const l=t[r],o=l===void 0||a(l,r,t);if(o!==!0)throw new j("option "+r+" must be "+o,j.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new j("Unknown option "+r,j.ERR_BAD_OPTION)}}const St={assertOptions:_r,validators:jt},ge=St.validators;let st=class{constructor(t){this.defaults=t,this.interceptors={request:new kn,response:new kn}}request(t,e){typeof t=="string"?(e=e||{},e.url=t):e=t||{},e=je(this.defaults,e);const{transitional:n,paramsSerializer:i,headers:s}=e;n!==void 0&&St.assertOptions(n,{silentJSONParsing:ge.transitional(ge.boolean),forcedJSONParsing:ge.transitional(ge.boolean),clarifyTimeoutError:ge.transitional(ge.boolean)},!1),i!=null&&(d.isFunction(i)?e.paramsSerializer={serialize:i}:St.assertOptions(i,{encode:ge.function,serialize:ge.function},!0)),e.method=(e.method||this.defaults.method||"get").toLowerCase();let r;r=s&&d.merge(s.common,s[e.method]),r&&d.forEach(["delete","get","head","post","put","patch","common"],f=>{delete s[f]}),e.headers=fe.concat(r,s);const a=[];let l=!0;this.interceptors.request.forEach(function(f){typeof f.runWhen=="function"&&f.runWhen(e)===!1||(l=l&&f.synchronous,a.unshift(f.fulfilled,f.rejected))});const o=[];this.interceptors.response.forEach(function(f){o.push(f.fulfilled,f.rejected)});let c,u=0,m;if(!l){const f=[Sn.bind(this),void 0];for(f.unshift.apply(f,a),f.push.apply(f,o),m=f.length,c=Promise.resolve(e);u{if(!i._listeners)return;let r=i._listeners.length;for(;r-- >0;)i._listeners[r](s);i._listeners=null}),this.promise.then=s=>{let r;const a=new Promise(l=>{i.subscribe(l),r=l}).then(s);return a.cancel=function(){i.unsubscribe(r)},a},e(function(s,r,a){i.reason||(i.reason=new Ge(s,r,a),n(i.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}static source(){let e;return{token:new Ai(function(n){e=n}),cancel:e}}};const wr=br;function kr(t){return function(e){return t.apply(null,e)}}function yr(t){return d.isObject(t)&&t.isAxiosError===!0}const vt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(vt).forEach(([t,e])=>{vt[e]=t});const $r=vt;function Oi(t){const e=new nt(t),n=ci(nt.prototype.request,e);return d.extend(n,nt.prototype,e,{allOwnKeys:!0}),d.extend(n,e,null,{allOwnKeys:!0}),n.create=function(i){return Oi(je(t,i))},n}const W=Oi(Lt);W.Axios=nt;W.CanceledError=Ge;W.CancelToken=wr;W.isCancel=vi;W.VERSION=Ei;W.toFormData=ct;W.AxiosError=j;W.Cancel=W.CanceledError;W.all=function(t){return Promise.all(t)};W.spread=kr;W.isAxiosError=yr;W.mergeConfig=je;W.AxiosHeaders=fe;W.formToJSON=t=>Si(d.isHTMLForm(t)?new FormData(t):t);W.HttpStatusCode=$r;W.default=W;const Di=W,{Axios:Al,AxiosError:Ol,CanceledError:Dl,isCancel:Cl,CancelToken:Pl,VERSION:Nl,all:Rl,Cancel:Bl,isAxiosError:Ll,spread:jl,toFormData:Il,AxiosHeaders:Ml,HttpStatusCode:Sr,formToJSON:Ul,mergeConfig:Fl}=Di,vr=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,Tr=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,Er=/^\s*["[{]|^\s*-?\d[\d.]{0,14}\s*$/;function Ar(t,e){if(t==="__proto__"||t==="constructor"&&e&&typeof e=="object"&&"prototype"in e){Or(t);return}return e}function Or(t){console.warn(`[destr] Dropping "${t}" key to prevent prototype pollution.`)}function Dr(t,e={}){if(typeof t!="string")return t;const n=t.trim();if(t[0]==='"'&&t[t.length-1]==='"')return n.slice(1,-1);const i=n.toLowerCase();if(i==="true")return!0;if(i==="false")return!1;if(i!=="undefined"){if(i==="null")return null;if(i==="nan")return Number.NaN;if(i==="infinity")return Number.POSITIVE_INFINITY;if(i==="-infinity")return Number.NEGATIVE_INFINITY;if(!Er.test(t)){if(e.strict)throw new SyntaxError("[destr] Invalid JSON");return t}try{if(vr.test(t)||Tr.test(t)){if(e.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(t,Ar)}return JSON.parse(t)}catch(s){if(e.strict)throw s;return t}}}const Cr=/#/g,Pr=/&/g,Nr=/=/g,It=/\+/g,Rr=/%5e/gi,Br=/%60/gi,Lr=/%7c/gi,jr=/%20/gi;function Ir(t){return encodeURI(""+t).replace(Lr,"|")}function Tt(t){return Ir(typeof t=="string"?t:JSON.stringify(t)).replace(It,"%2B").replace(jr,"+").replace(Cr,"%23").replace(Pr,"%26").replace(Br,"`").replace(Rr,"^")}function _t(t){return Tt(t).replace(Nr,"%3D")}function Ci(t=""){try{return decodeURIComponent(""+t)}catch{return""+t}}function Mr(t){return Ci(t.replace(It," "))}function Ur(t){return Ci(t.replace(It," "))}function Fr(t=""){const e={};t[0]==="?"&&(t=t.slice(1));for(const n of t.split("&")){const i=n.match(/([^=]+)=?(.*)/)||[];if(i.length<2)continue;const s=Mr(i[1]);if(s==="__proto__"||s==="constructor")continue;const r=Ur(i[2]||"");e[s]===void 0?e[s]=r:Array.isArray(e[s])?e[s].push(r):e[s]=[e[s],r]}return e}function qr(t,e){return(typeof e=="number"||typeof e=="boolean")&&(e=String(e)),e?Array.isArray(e)?e.map(n=>`${_t(t)}=${Tt(n)}`).join("&"):`${_t(t)}=${Tt(e)}`:_t(t)}function Vr(t){return Object.keys(t).filter(e=>t[e]!==void 0).map(e=>qr(e,t[e])).filter(Boolean).join("&")}const Hr=/^\w{2,}:([/\\]{1,2})/,Kr=/^\w{2,}:([/\\]{2})?/,Wr=/^([/\\]\s*){2,}[^/\\]/;function Pi(t,e={}){return typeof e=="boolean"&&(e={acceptRelative:e}),e.strict?Hr.test(t):Kr.test(t)||(e.acceptRelative?Wr.test(t):!1)}const zr=/\/$|\/\?/;function Et(t="",e=!1){return e?zr.test(t):t.endsWith("/")}function Gr(t="",e=!1){if(!e)return(Et(t)?t.slice(0,-1):t)||"/";if(!Et(t,!0))return t||"/";const[n,...i]=t.split("?");return(n.slice(0,-1)||"/")+(i.length>0?`?${i.join("?")}`:"")}function Jr(t="",e=!1){if(!e)return t.endsWith("/")?t:t+"/";if(Et(t,!0))return t||"/";const[n,...i]=t.split("?");return n+"/"+(i.length>0?`?${i.join("?")}`:"")}function Yr(t,e){if(Xr(e)||Pi(t))return t;const n=Gr(e);return t.startsWith(n)?t:ea(n,t)}function Zr(t,e){const n=Ni(t),i={...Fr(n.search),...e};return n.search=Vr(i),ta(n)}function Xr(t){return!t||t==="/"}function Qr(t){return t&&t!=="/"}const xr=/^\.?\//;function ea(t,...e){let n=t||"";for(const i of e.filter(s=>Qr(s)))if(n){const s=i.replace(xr,"");n=Jr(n)+s}else n=i;return n}function Ni(t="",e){if(!Pi(t,{acceptRelative:!0}))return e?Ni(e+t):En(t);const[n="",i,s=""]=(t.replace(/\\/g,"/").match(/([^/:]+:)?\/\/([^/@]+@)?(.*)/)||[]).splice(1),[r="",a=""]=(s.match(/([^#/?]*)(.*)?/)||[]).splice(1),{pathname:l,search:o,hash:c}=En(a.replace(/\/(?=[A-Za-z]:)/,""));return{protocol:n,auth:i?i.slice(0,Math.max(0,i.length-1)):"",host:r,pathname:l,search:o,hash:c}}function En(t=""){const[e="",n="",i=""]=(t.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:e,search:n,hash:i}}function ta(t){const e=t.pathname+(t.search?(t.search.startsWith("?")?"":"?")+t.search:"")+t.hash;return t.protocol?t.protocol+"//"+(t.auth?t.auth+"@":"")+t.host+e:e}class na extends Error{constructor(){super(...arguments),this.name="FetchError"}}function ia(t,e,n){let i="";e&&(i=e.message),t&&n?i=`${i} (${n.status} ${n.statusText} (${t.toString()}))`:t&&(i=`${i} (${t.toString()})`);const s=new na(i);return Object.defineProperty(s,"request",{get(){return t}}),Object.defineProperty(s,"response",{get(){return n}}),Object.defineProperty(s,"data",{get(){return n&&n._data}}),Object.defineProperty(s,"status",{get(){return n&&n.status}}),Object.defineProperty(s,"statusText",{get(){return n&&n.statusText}}),Object.defineProperty(s,"statusCode",{get(){return n&&n.status}}),Object.defineProperty(s,"statusMessage",{get(){return n&&n.statusText}}),s}const sa=new Set(Object.freeze(["PATCH","POST","PUT","DELETE"]));function An(t="GET"){return sa.has(t.toUpperCase())}function ra(t){if(t===void 0)return!1;const e=typeof t;return e==="string"||e==="number"||e==="boolean"||e===null?!0:e!=="object"?!1:Array.isArray(t)?!0:t.constructor&&t.constructor.name==="Object"||typeof t.toJSON=="function"}const aa=new Set(["image/svg","application/xml","application/xhtml","application/html"]),oa=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function la(t=""){if(!t)return"json";const e=t.split(";").shift()||"";return oa.test(e)?"json":aa.has(e)||e.startsWith("text/")?"text":"blob"}function ca(t,e,n=globalThis.Headers){const i={...e,...t};if(e!=null&&e.params&&t!=null&&t.params&&(i.params={...e==null?void 0:e.params,...t==null?void 0:t.params}),e!=null&&e.query&&t!=null&&t.query&&(i.query={...e==null?void 0:e.query,...t==null?void 0:t.query}),e!=null&&e.headers&&t!=null&&t.headers){i.headers=new n((e==null?void 0:e.headers)||{});for(const[s,r]of new n((t==null?void 0:t.headers)||{}))i.headers.set(s,r)}return i}const ua=new Set([408,409,425,429,500,502,503,504]);function Ri(t){const{fetch:e,Headers:n}=t;function i(a){const l=a.error&&a.error.name==="AbortError"||!1;if(a.options.retry!==!1&&!l){let c;typeof a.options.retry=="number"?c=a.options.retry:c=An(a.options.method)?0:1;const u=a.response&&a.response.status||500;if(c>0&&ua.has(u))return s(a.request,{...a.options,retry:c-1})}const o=ia(a.request,a.error,a.response);throw Error.captureStackTrace&&Error.captureStackTrace(o,s),o}const s=async function(a,l={}){const o={request:a,options:ca(l,t.defaults,n),response:void 0,error:void 0};o.options.onRequest&&await o.options.onRequest(o),typeof o.request=="string"&&(o.options.baseURL&&(o.request=Yr(o.request,o.options.baseURL)),(o.options.query||o.options.params)&&(o.request=Zr(o.request,{...o.options.params,...o.options.query})),o.options.body&&An(o.options.method)&&ra(o.options.body)&&(o.options.body=typeof o.options.body=="string"?o.options.body:JSON.stringify(o.options.body),o.options.headers=new n(o.options.headers||{}),o.options.headers.has("content-type")||o.options.headers.set("content-type","application/json"),o.options.headers.has("accept")||o.options.headers.set("accept","application/json")));try{o.response=await e(o.request,o.options)}catch(u){return o.error=u,o.options.onRequestError&&await o.options.onRequestError(o),await i(o)}const c=(o.options.parseResponse?"json":o.options.responseType)||la(o.response.headers.get("content-type")||"");if(c==="json"){const u=await o.response.text(),m=o.options.parseResponse||Dr;o.response._data=m(u)}else c==="stream"?o.response._data=o.response.body:o.response._data=await o.response[c]();return o.options.onResponse&&await o.options.onResponse(o),!o.options.ignoreResponseError&&o.response.status>=400&&o.response.status<600?(o.options.onResponseError&&await o.options.onResponseError(o),await i(o)):o.response},r=async function(a,l){return(await s(a,l))._data};return r.raw=s,r.native=e,r.create=(a={})=>Ri({...t,defaults:{...t.defaults,...a}}),r}const Bi=function(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")}(),fa=Bi.fetch||(()=>Promise.reject(new Error("[ofetch] global.fetch is not supported!"))),pa=Bi.Headers,ha=Ri({fetch:fa,Headers:pa}),bt={SCHEMA_DIR_RELATIVE_PATH:"./../schemas/",SCHEMA_FILENAME_PAYLOAD:"payload.schema.json",SCHEMA_FILENAME_RESPONSE:"response.schema.json",SIYUAN_DEFAULT_BASE_URL:"http://localhost:6806/",SIYUAN_DEFAULT_TOKEN:"",REQUEST_TIMEOUT:6e4};class ma extends Error{constructor(e){super(e.statusText),_e(this,"status"),this.response=e,this.status=e.status}}class On extends Error{constructor(e,n){super(e.msg),_e(this,"code"),this.body=e,this.response=n,this.code=e.code}}var Dn,Cn,Pn,Nn,Rn;const Li=class h{constructor(e={},n="xhr"){_e(this,"_type","xhr"),_e(this,"_baseURL",((Cn=(Dn=globalThis.top)==null?void 0:Dn.document)==null?void 0:Cn.baseURI)??((Nn=(Pn=globalThis.parent)==null?void 0:Pn.document)==null?void 0:Nn.baseURI)??((Rn=globalThis.location)==null?void 0:Rn.origin)??bt.SIYUAN_DEFAULT_BASE_URL),_e(this,"_token",bt.SIYUAN_DEFAULT_TOKEN),_e(this,"_axios",Di.create({baseURL:this._baseURL,timeout:bt.REQUEST_TIMEOUT,headers:{Authorization:`Token ${this._token}`}})),_e(this,"_fetch",ha.create({baseURL:this._baseURL,headers:{Authorization:`Token ${this._token}`}})),this._setClientType(n),this._updateOptions(e,n)}_setClientType(e){this._type=e}_updateOptions(e,n=this._type){switch(this._token=e.token??this._token,n){case"fetch":const i=e;if(i.token){const s="Authorization",r=`Token ${e.token}`;Array.isArray(i.headers)?i.headers.push([s,r]):i.headers instanceof Headers?i.headers.set(s,r):typeof i.headers=="object"?i.headers[s]=r:i.headers={[s]:r},delete e.token}this._fetch=this._fetch.create(i);break;case"xhr":default:for(const[s,r]of Object.entries(e))switch(s){case"token":this._axios.defaults.headers.Authorization=`Token ${e.token}`;break;default:this._axios.defaults[s]=r;break}break}this._baseURL=e.baseURL??this._baseURL}async fullTextSearchBlock(e,n){return await this._request(h.api.search.fullTextSearchBlock.pathname,h.api.search.fullTextSearchBlock.method,e,n)}async getConf(e){return await this._request(h.api.system.getConf.pathname,h.api.system.getConf.method,void 0,e)}async upload(e,n){const i=new FormData;return i.append("assetsDirPath",e.assetsDirPath??"/assets/"),e.files.forEach(s=>i.append("file[]",s)),await this._request(h.api.asset.upload.pathname,h.api.asset.upload.method,i,n)}async getBlockAttrs(e,n){return await this._request(h.api.attr.getBlockAttrs.pathname,h.api.attr.getBlockAttrs.method,e,n)}async getBookmarkLabels(e){return await this._request(h.api.attr.getBookmarkLabels.pathname,h.api.attr.getBookmarkLabels.method,void 0,e)}async setBlockAttrs(e,n){return await this._request(h.api.attr.setBlockAttrs.pathname,h.api.attr.setBlockAttrs.method,e,n)}async appendBlock(e,n){return await this._request(h.api.block.appendBlock.pathname,h.api.block.appendBlock.method,e,n)}async deleteBlock(e,n){return await this._request(h.api.block.deleteBlock.pathname,h.api.block.deleteBlock.method,e,n)}async getBlockBreadcrumb(e,n){return await this._request(h.api.block.getBlockBreadcrumb.pathname,h.api.block.getBlockBreadcrumb.method,e,n)}async getBlockDOM(e,n){return await this._request(h.api.block.getBlockDOM.pathname,h.api.block.getBlockDOM.method,e,n)}async getBlockInfo(e,n){return await this._request(h.api.block.getBlockInfo.pathname,h.api.block.getBlockInfo.method,e,n)}async getBlockKramdown(e,n){return await this._request(h.api.block.getBlockKramdown.pathname,h.api.block.getBlockKramdown.method,e,n)}async getChildBlocks(e,n){return await this._request(h.api.block.getChildBlocks.pathname,h.api.block.getChildBlocks.method,e,n)}async getDocInfo(e,n){return await this._request(h.api.block.getDocInfo.pathname,h.api.block.getDocInfo.method,e,n)}async insertBlock(e,n){return await this._request(h.api.block.insertBlock.pathname,h.api.block.insertBlock.method,e,n)}async moveBlock(e,n){return await this._request(h.api.block.moveBlock.pathname,h.api.block.moveBlock.method,e,n)}async prependBlock(e,n){return await this._request(h.api.block.prependBlock.pathname,h.api.block.prependBlock.method,e,n)}async transferBlockRef(e,n){return await this._request(h.api.block.transferBlockRef.pathname,h.api.block.transferBlockRef.method,e,n)}async updateBlock(e,n){return await this._request(h.api.block.updateBlock.pathname,h.api.block.updateBlock.method,e,n)}async pandoc(e,n){return await this._request(h.api.convert.pandoc.pathname,h.api.convert.pandoc.method,e,n)}async exportResources(e,n){return await this._request(h.api.export.exportResources.pathname,h.api.export.exportResources.method,e,n)}async exportMdContent(e,n){return await this._request(h.api.export.exportMdContent.pathname,h.api.export.exportMdContent.method,e,n)}async getFile(e,n="text",i){return await this._request(h.api.file.getFile.pathname,h.api.file.getFile.method,e,i,!1,n)}async putFile(e,n){e.file!==void 0&&!(e.file instanceof File)&&(e.file=new File([e.file],e.path.split("/").pop()));const i=new FormData;for(const[s,r]of Object.entries(e))e.hasOwnProperty(s)&&(r instanceof Blob?i.append(s,r):i.append(s,String(r)));return await this._request(h.api.file.putFile.pathname,h.api.file.putFile.method,i,n)}async readDir(e,n){return await this._request(h.api.file.readDir.pathname,h.api.file.readDir.method,e,n)}async removeFile(e,n){return await this._request(h.api.file.removeFile.pathname,h.api.file.removeFile.method,e,n)}async renameFile(e,n){return await this._request(h.api.file.renameFile.pathname,h.api.file.renameFile.method,e,n)}async createDocWithMd(e,n){return await this._request(h.api.filetree.createDocWithMd.pathname,h.api.filetree.createDocWithMd.method,e,n)}async getDoc(e,n){return await this._request(h.api.filetree.getDoc.pathname,h.api.filetree.getDoc.method,e,n)}async getHPathByID(e,n){return await this._request(h.api.filetree.getHPathByID.pathname,h.api.filetree.getHPathByID.method,e,n)}async getHPathByPath(e,n){return await this._request(h.api.filetree.getHPathByPath.pathname,h.api.filetree.getHPathByPath.method,e,n)}async listDocsByPath(e,n){return await this._request(h.api.filetree.listDocsByPath.pathname,h.api.filetree.listDocsByPath.method,e,n)}async moveDocs(e,n){return await this._request(h.api.filetree.moveDocs.pathname,h.api.filetree.moveDocs.method,e,n)}async removeDoc(e,n){return await this._request(h.api.filetree.removeDoc.pathname,h.api.filetree.removeDoc.method,e,n)}async renameDoc(e,n){return await this._request(h.api.filetree.renameDoc.pathname,h.api.filetree.renameDoc.method,e,n)}async searchDocs(e,n){return await this._request(h.api.filetree.searchDocs.pathname,h.api.filetree.searchDocs.method,e,n)}async getDocHistoryContent(e,n){return await this._request(h.api.history.getDocHistoryContent.pathname,h.api.history.getDocHistoryContent.method,e,n)}async getHistoryItems(e,n){return await this._request(h.api.history.getHistoryItems.pathname,h.api.history.getHistoryItems.method,e,n)}async getShorthand(e,n){return await this._request(h.api.inbox.getShorthand.pathname,h.api.inbox.getShorthand.method,e,n)}async forwardProxy(e,n){return await this._request(h.api.network.forwardProxy.pathname,h.api.network.forwardProxy.method,e,n)}async closeNotebook(e,n){return await this._request(h.api.notebook.closeNotebook.pathname,h.api.notebook.closeNotebook.method,e,n)}async createNotebook(e,n){return await this._request(h.api.notebook.createNotebook.pathname,h.api.notebook.createNotebook.method,e,n)}async getNotebookConf(e,n){return await this._request(h.api.notebook.getNotebookConf.pathname,h.api.notebook.getNotebookConf.method,e,n)}async lsNotebooks(e){return await this._request(h.api.notebook.lsNotebooks.pathname,h.api.notebook.lsNotebooks.method,void 0,e)}async openNotebook(e,n){return await this._request(h.api.notebook.openNotebook.pathname,h.api.notebook.openNotebook.method,e,n)}async removeNotebook(e,n){return await this._request(h.api.notebook.removeNotebook.pathname,h.api.notebook.removeNotebook.method,e,n)}async renameNotebook(e,n){return await this._request(h.api.notebook.renameNotebook.pathname,h.api.notebook.renameNotebook.method,e,n)}async setNotebookConf(e,n){return await this._request(h.api.notebook.setNotebookConf.pathname,h.api.notebook.setNotebookConf.method,e,n)}async pushErrMsg(e,n){return await this._request(h.api.notification.pushErrMsg.pathname,h.api.notification.pushErrMsg.method,e,n)}async pushMsg(e,n){return await this._request(h.api.notification.pushMsg.pathname,h.api.notification.pushMsg.method,e,n)}async sql(e,n){return await this._request(h.api.query.sql.pathname,h.api.query.sql.method,e,n)}async openRepoSnapshotDoc(e,n){return await this._request(h.api.repo.openRepoSnapshotDoc.pathname,h.api.repo.openRepoSnapshotDoc.method,e,n)}async getSnippet(e,n){return await this._request(h.api.snippet.getSnippet.pathname,h.api.snippet.getSnippet.method,e,n)}async setSnippet(e,n){return await this._request(h.api.snippet.setSnippet.pathname,h.api.snippet.setSnippet.method,e,n)}async getRecentDocs(e){return await this._request(h.api.storage.getRecentDocs.pathname,h.api.storage.getRecentDocs.method,void 0,e)}async bootProgress(e){return await this._request(h.api.system.bootProgress.pathname,h.api.system.bootProgress.method,void 0,e)}async currentTime(e){return await this._request(h.api.system.currentTime.pathname,h.api.system.currentTime.method,void 0,e)}async version(e){return await this._request(h.api.system.version.pathname,h.api.system.version.method,void 0,e)}async render(e,n){return await this._request(h.api.template.render.pathname,h.api.template.render.method,e,n)}async renderSprig(e,n){return await this._request(h.api.template.renderSprig.pathname,h.api.template.renderSprig.method,e,n)}async _request(e,n,i,s,r=!0,a="json"){try{switch((s==null?void 0:s.type)??this._type){case"fetch":{const l=s==null?void 0:s.options;a=(()=>{switch(a){case"arraybuffer":return"arrayBuffer";case"document":return"text";default:return a}})();const o=await this._fetch(e,{method:n,body:i,responseType:a,...l});return r&&a==="json"&&typeof o=="object"?this._parseFetchResponse(o):o}case"xhr":default:{const l=s==null?void 0:s.options;a=(()=>{switch(a){case"arrayBuffer":return"arraybuffer";default:return a}})();const o=await this._axios.request({url:e,method:n,data:i,responseType:a,...l});if(o.status===Sr.Ok)return r&&a==="json"&&typeof o.data=="object"?this._parseAxiosResponse(o):o.data;throw new ma(o)}}}catch(l){throw l}}_parseFetchResponse(e){if(e.code===0)return e;throw new On(e)}_parseAxiosResponse(e){if(e.data.code===0)return e.data;throw new On(e.data,e)}};_e(Li,"api",{search:{fullTextSearchBlock:{pathname:"/api/search/fullTextSearchBlock",method:"POST"}},asset:{upload:{pathname:"/api/asset/upload",method:"POST"}},attr:{getBlockAttrs:{pathname:"/api/attr/getBlockAttrs",method:"POST"},setBlockAttrs:{pathname:"/api/attr/setBlockAttrs",method:"POST"},getBookmarkLabels:{pathname:"/api/attr/getBookmarkLabels",method:"POST"}},block:{appendBlock:{pathname:"/api/block/appendBlock",method:"POST"},deleteBlock:{pathname:"/api/block/deleteBlock",method:"POST"},getBlockBreadcrumb:{pathname:"/api/block/getBlockBreadcrumb",method:"POST"},getBlockDOM:{pathname:"/api/block/getBlockDOM",method:"POST"},getBlockInfo:{pathname:"/api/block/getBlockInfo",method:"POST"},getBlockKramdown:{pathname:"/api/block/getBlockKramdown",method:"POST"},getChildBlocks:{pathname:"/api/block/getChildBlocks",method:"POST"},getDocInfo:{pathname:"/api/block/getDocInfo",method:"POST"},insertBlock:{pathname:"/api/block/insertBlock",method:"POST"},moveBlock:{pathname:"/api/block/moveBlock",method:"POST"},prependBlock:{pathname:"/api/block/prependBlock",method:"POST"},transferBlockRef:{pathname:"/api/block/transferBlockRef",method:"POST"},updateBlock:{pathname:"/api/block/updateBlock",method:"POST"}},convert:{pandoc:{pathname:"/api/convert/pandoc",method:"POST"}},export:{exportMdContent:{pathname:"/api/export/exportMdContent",method:"POST"},exportResources:{pathname:"/api/export/exportResources",method:"POST"}},file:{getFile:{pathname:"/api/file/getFile",method:"POST"},putFile:{pathname:"/api/file/putFile",method:"POST"},readDir:{pathname:"/api/file/readDir",method:"POST"},removeFile:{pathname:"/api/file/removeFile",method:"POST"},renameFile:{pathname:"/api/file/renameFile",method:"POST"}},filetree:{createDocWithMd:{pathname:"/api/filetree/createDocWithMd",method:"POST"},getDoc:{pathname:"/api/filetree/getDoc",method:"POST"},getHPathByID:{pathname:"/api/filetree/getHPathByID",method:"POST"},getHPathByPath:{pathname:"/api/filetree/getHPathByPath",method:"POST"},listDocsByPath:{pathname:"/api/filetree/listDocsByPath",method:"POST"},moveDocs:{pathname:"/api/filetree/moveDocs",method:"POST"},removeDoc:{pathname:"/api/filetree/removeDoc",method:"POST"},renameDoc:{pathname:"/api/filetree/renameDoc",method:"POST"},searchDocs:{pathname:"/api/filetree/searchDocs",method:"POST"}},history:{getDocHistoryContent:{pathname:"/api/history/getDocHistoryContent",method:"POST"},getHistoryItems:{pathname:"/api/history/getHistoryItems",method:"POST"}},inbox:{getShorthand:{pathname:"/api/inbox/getShorthand",method:"POST"}},network:{forwardProxy:{pathname:"/api/network/forwardProxy",method:"POST"}},notebook:{closeNotebook:{pathname:"/api/notebook/closeNotebook",method:"POST"},createNotebook:{pathname:"/api/notebook/createNotebook",method:"POST"},lsNotebooks:{pathname:"/api/notebook/lsNotebooks",method:"POST"},getNotebookConf:{pathname:"/api/notebook/getNotebookConf",method:"POST"},openNotebook:{pathname:"/api/notebook/openNotebook",method:"POST"},removeNotebook:{pathname:"/api/notebook/removeNotebook",method:"POST"},renameNotebook:{pathname:"/api/notebook/renameNotebook",method:"POST"},setNotebookConf:{pathname:"/api/notebook/setNotebookConf",method:"POST"}},notification:{pushErrMsg:{pathname:"/api/notification/pushErrMsg",method:"POST"},pushMsg:{pathname:"/api/notification/pushMsg",method:"POST"}},query:{sql:{pathname:"/api/query/sql",method:"POST"}},repo:{openRepoSnapshotDoc:{pathname:"/api/repo/openRepoSnapshotDoc",method:"POST"}},snippet:{getSnippet:{pathname:"/api/snippet/getSnippet",method:"POST"},setSnippet:{pathname:"/api/snippet/setSnippet",method:"POST"}},storage:{getRecentDocs:{pathname:"/api/storage/getRecentDocs",method:"POST"}},system:{bootProgress:{pathname:"/api/system/bootProgress",method:"POST"},currentTime:{pathname:"/api/system/currentTime",method:"POST"},version:{pathname:"/api/system/version",method:"POST"},getConf:{pathname:"/api/system/getConf",method:"POST"}},template:{render:{pathname:"/api/template/render",method:"POST"},renderSprig:{pathname:"/api/template/renderSprig",method:"POST"}}});let da=Li;function Q(){}function ga(t,e){for(const n in e)t[n]=e[n];return t}function ji(t){return t()}function Bn(){return Object.create(null)}function Y(t){t.forEach(ji)}function Ii(t){return typeof t=="function"}function be(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}function _a(t){return Object.keys(t).length===0}function pe(t,e,n,i){if(t){const s=Mi(t,e,n,i);return t[0](s)}}function Mi(t,e,n,i){return t[1]&&i?ga(n.ctx.slice(),t[1](i(e))):n.ctx}function he(t,e,n,i){if(t[2]&&i){const s=t[2](i(n));if(e.dirty===void 0)return s;if(typeof s=="object"){const r=[],a=Math.max(e.dirty.length,s.length);for(let l=0;l32){const e=[],n=t.ctx.length/32;for(let i=0;it.removeEventListener(e,n,i)}function S(t,e,n){n==null?t.removeAttribute(e):t.getAttribute(e)!==n&&t.setAttribute(e,n)}function Ln(t,e,n){t.setAttributeNS("http://www.w3.org/1999/xlink",e,n)}function Ot(t){return t===""?null:+t}function wa(t){return Array.from(t.childNodes)}function Ui(t,e){e=""+e,t.data!==e&&(t.data=e)}function x(t,e){t.value=e??""}function Dt(t,e,n,i){n==null?t.style.removeProperty(e):t.style.setProperty(e,n,i?"important":"")}function jn(t,e,n){for(let i=0;i{const s=t.$$.callbacks[e];if(s){const r=ya(e,n,{cancelable:i});return s.slice().forEach(a=>{a.call(t,r)}),!r.defaultPrevented}return!0}}const Ne=[],In=[];let Be=[];const Mn=[],Sa=Promise.resolve();let Ct=!1;function va(){Ct||(Ct=!0,Sa.then(Fi))}function rt(t){Be.push(t)}const wt=new Set;let Pe=0;function Fi(){if(Pe!==0)return;const t=Ke;do{try{for(;Pet.indexOf(i)===-1?e.push(i):n.push(i)),n.forEach(i=>i()),Be=e}const it=new Set;let Ee;function Ae(){Ee={r:0,c:[],p:Ee}}function Oe(){Ee.r||Y(Ee.c),Ee=Ee.p}function w(t,e){t&&t.i&&(it.delete(t),t.i(e))}function y(t,e,n,i){if(t&&t.o){if(it.has(t))return;it.add(t),Ee.c.push(()=>{it.delete(t),i&&(n&&t.d(1),i())}),t.o(e)}else i&&i()}function Ie(t){return(t==null?void 0:t.length)!==void 0?t:Array.from(t)}function Aa(t,e){t.d(1),e.delete(t.key)}function qi(t,e){y(t,1,1,()=>{e.delete(t.key)})}function Ut(t,e,n,i,s,r,a,l,o,c,u,m){let b=t.length,f=r.length,p=b;const _={};for(;p--;)_[t[p].key]=p;const g=[],N=new Map,z=new Map,se=[];for(p=f;p--;){const U=m(s,r,p),G=n(U);let H=a.get(G);H?i&&se.push(()=>H.p(U,e)):(H=c(G,U),H.c()),N.set(G,g[p]=H),G in _&&z.set(G,Math.abs(p-_[G]))}const J=new Set,ee=new Set;function v(U){w(U,1),U.m(l,u),a.set(U.key,U),u=U.first,f--}for(;b&&f;){const U=g[f-1],G=t[b-1],H=U.key,re=G.key;U===G?(u=U.first,b--,f--):N.has(re)?!a.has(H)||J.has(H)?v(U):ee.has(re)?b--:z.get(H)>z.get(re)?(ee.add(H),v(U)):(J.add(re),b--):(o(G,a),b--)}for(;b--;){const U=t[b];N.has(U.key)||o(U,a)}for(;f;)v(g[f-1]);return Y(se),g}function A(t){t&&t.c()}function T(t,e,n){const{fragment:i,after_update:s}=t.$$;i&&i.m(e,n),rt(()=>{const r=t.$$.on_mount.map(ji).filter(Ii);t.$$.on_destroy?t.$$.on_destroy.push(...r):Y(r),t.$$.on_mount=[]}),s.forEach(rt)}function E(t,e){const n=t.$$;n.fragment!==null&&(Ea(n.after_update),Y(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function Oa(t,e){t.$$.dirty[0]===-1&&(Ne.push(t),va(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{const p=f.length?f[0]:b;return c.ctx&&s(c.ctx[m],c.ctx[m]=p)&&(!c.skip_bound&&c.bound[m]&&c.bound[m](p),u&&Oa(t,m)),b}):[],c.update(),u=!0,Y(c.before_update),c.fragment=i?i(c.ctx):!1,e.target){if(e.hydrate){const m=wa(e.target);c.fragment&&c.fragment.l(m),m.forEach(R)}else c.fragment&&c.fragment.c();e.intro&&w(t.$$.fragment),T(t,e.target,e.anchor),Fi()}qe(o)}class ke{constructor(){V(this,"$$");V(this,"$$set")}$destroy(){E(this,1),this.$destroy=Q}$on(e,n){if(!Ii(n))return Q;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(n),()=>{const s=i.indexOf(n);s!==-1&&i.splice(s,1)}}$set(e){this.$$set&&!_a(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Da="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Da);const Un={id:/^\d{14}-[0-9a-z]{7}$/,url:/^siyuan:\/\/blocks\/(\d{14}-[0-9a-z]{7})/,snippet:/^\d{14}-[0-9a-z]{7}$/,created:/^\d{10}$/,history:/[\/\\]history[\/\\]\d{4}-\d{2}-\d{2}-\d{6}-(clean|update|delete|format|sync|replace)([\/\\]\d{14}-[0-9a-z]{7})+\.sy$/,snapshot:/^[0-9a-f]{40}$/,shorthand:/^\d{13}$/};function Ca(t){let e,n;return{c(){e=At("svg"),n=At("use"),Ln(n,"xlink:href",t[0]),S(e,"style",t[3]),S(e,"data-id",t[1]),S(e,"class",t[2]),D(e,"popover__block",Un.id.test(t[1]))},m(i,s){B(i,e,s),C(e,n)},p(i,[s]){s&1&&Ln(n,"xlink:href",i[0]),s&8&&S(e,"style",i[3]),s&2&&S(e,"data-id",i[1]),s&4&&S(e,"class",i[2]),s&6&&D(e,"popover__block",Un.id.test(i[1]))},i:Q,o:Q,d(i){i&&R(e)}}}function Pa(t,e,n){let{icon:i}=e,{id:s=""}=e,{className:r=""}=e,{style:a=""}=e;return t.$$set=l=>{"icon"in l&&n(0,i=l.icon),"id"in l&&n(1,s=l.id),"className"in l&&n(2,r=l.className),"style"in l&&n(3,a=l.style)},[i,s,r,a]}class Ft extends ke{constructor(e){super(),we(this,e,Pa,Ca,be,{icon:0,id:1,className:2,style:3})}}const Na=t=>({focus:t&1}),Fn=t=>({focus:t[0]});function qn(t,e,n){const i=t.slice();return i[13]=e[n],i}function Vn(t){let e,n,i,s,r,a,l;return n=new Ft({props:{icon:"#iconSearch",className:"b3-form__icon-icon"}}),{c(){e=L("div"),A(n.$$.fragment),i=P(),s=L("input"),S(s,"placeholder",t[4]),S(s,"class","b3-text-field fn__block b3-form__icon-input"),S(e,"class","b3-form__icon")},m(o,c){B(o,e,c),T(n,e,null),C(e,i),C(e,s),x(s,t[1]),r=!0,a||(l=[K(s,"input",t[9]),K(s,"change",t[5])],a=!0)},p(o,c){(!r||c&16)&&S(s,"placeholder",o[4]),c&2&&s.value!==o[1]&&x(s,o[1])},i(o){r||(w(n.$$.fragment,o),r=!0)},o(o){y(n.$$.fragment,o),r=!1},d(o){o&&R(e),E(n),a=!1,Y(l)}}}function Hn(t,e){let n,i,s,r,a=e[13].text+"",l,o,c,u,m;i=new Ft({props:{icon:e[13].icon,className:"b3-list-item__graphic"}});function b(){return e[10](e[13])}function f(){return e[11](e[13])}return{key:t,first:null,c(){n=L("li"),A(i.$$.fragment),s=P(),r=L("span"),l=P(),S(r,"class","b3-list-item__text svelte-15drd7h"),S(n,"role","button"),S(n,"data-name",o=e[13].name),S(n,"class","b3-list-item"),D(n,"b3-list-item--focus",e[13].key===e[0]),this.first=n},m(p,_){B(p,n,_),T(i,n,null),C(n,s),C(n,r),r.innerHTML=a,C(n,l),c=!0,u||(m=[K(n,"click",b),K(n,"keyup",f)],u=!0)},p(p,_){e=p;const g={};_&4&&(g.icon=e[13].icon),i.$set(g),(!c||_&4)&&a!==(a=e[13].text+"")&&(r.innerHTML=a),(!c||_&4&&o!==(o=e[13].name))&&S(n,"data-name",o),(!c||_&5)&&D(n,"b3-list-item--focus",e[13].key===e[0])},i(p){c||(w(i.$$.fragment,p),c=!0)},o(p){y(i.$$.fragment,p),c=!1},d(p){p&&R(n),E(i),u=!1,Y(m)}}}function Ra(t){let e;return{c(){e=De("Container")},m(n,i){B(n,e,i)},d(n){n&&R(e)}}}function Ba(t){let e,n,i,s=[],r=new Map,a,l,o,c=t[3]&&Vn(t),u=Ie(t[2]);const m=_=>_[13].key;for(let _=0;_{c=null}),Oe()),g&69&&(u=Ie(_[2]),Ae(),s=Ut(s,g,m,1,_,u,r,n,qi,Hn,null,qn),Oe()),f&&f.p&&(!o||g&129)&&me(f,b,_,_[7],o?he(b,_[7],g,Na):de(_[7]),Fn)},i(_){if(!o){w(c);for(let g=0;gb(g.key),_=g=>b(g.key);return t.$$set=g=>{"panels"in g&&n(2,r=g.panels),"focus"in g&&n(0,a=g.focus),"searchEnable"in g&&n(3,l=g.searchEnable),"searchPlaceholder"in g&&n(4,o=g.searchPlaceholder),"searchValue"in g&&n(1,c=g.searchValue),"$$scope"in g&&n(7,s=g.$$scope)},[a,c,r,l,o,m,b,s,i,f,p,_]}class ja extends ke{constructor(e){super(),we(this,e,La,Ba,be,{panels:2,focus:0,searchEnable:3,searchPlaceholder:4,searchValue:1})}}function Ia(t){let e,n;const i=t[4].default,s=pe(i,t,t[3],null);return{c(){e=L("div"),s&&s.c(),S(e,"data-name",t[2]),S(e,"class","config__tab-container"),D(e,"fn__none",!t[0]),D(e,"config__tab-container--top",t[1])},m(r,a){B(r,e,a),s&&s.m(e,null),n=!0},p(r,[a]){s&&s.p&&(!n||a&8)&&me(s,i,r,r[3],n?he(i,r[3],a,null):de(r[3]),null),(!n||a&4)&&S(e,"data-name",r[2]),(!n||a&1)&&D(e,"fn__none",!r[0]),(!n||a&2)&&D(e,"config__tab-container--top",r[1])},i(r){n||(w(s,r),n=!0)},o(r){y(s,r),n=!1},d(r){r&&R(e),s&&s.d(r)}}}function Ma(t,e,n){let{$$slots:i={},$$scope:s}=e,{display:r=!0}=e,{top:a=!0}=e,{name:l=""}=e;return t.$$set=o=>{"display"in o&&n(0,r=o.display),"top"in o&&n(1,a=o.top),"name"in o&&n(2,l=o.name),"$$scope"in o&&n(3,s=o.$$scope)},[r,a,l,s,i]}class Kn extends ke{constructor(e){super(),we(this,e,Ma,Ia,be,{display:0,top:1,name:2})}}const Ua=t=>({}),Wn=t=>({}),Fa=t=>({}),zn=t=>({});function Gn(t){let e,n;const i=t[7].icon,s=pe(i,t,t[6],zn);return{c(){e=L("span"),s&&s.c(),S(e,"class","item__icon")},m(r,a){B(r,e,a),s&&s.m(e,null),n=!0},p(r,a){s&&s.p&&(!n||a&64)&&me(s,i,r,r[6],n?he(i,r[6],a,Fa):de(r[6]),zn)},i(r){n||(w(s,r),n=!0)},o(r){y(s,r),n=!1},d(r){r&&R(e),s&&s.d(r)}}}function qa(t){let e;return{c(){e=De("text")},m(n,i){B(n,e,i)},d(n){n&&R(e)}}}function Va(t){let e,n,i,s,r,a,l,o,c,u,m=t[0]&&t[4].icon&&Gn(t);const b=t[7].text,f=pe(b,t,t[6],Wn),p=f||qa();return{c(){e=L("div"),n=L("span"),i=P(),m&&m.c(),s=P(),r=L("span"),p&&p.c(),a=P(),l=L("span"),S(n,"class","fn__flex-1"),S(r,"class","item__text"),S(l,"class","fn__flex-1"),S(e,"role","button"),S(e,"data-type",t[1]),S(e,"class","item item--full"),D(e,"item--focus",t[2])},m(_,g){B(_,e,g),C(e,n),C(e,i),m&&m.m(e,null),C(e,s),C(e,r),p&&p.m(r,null),C(e,a),C(e,l),o=!0,c||(u=K(e,"click",t[3]),c=!0)},p(_,[g]){_[0]&&_[4].icon?m?(m.p(_,g),g&17&&w(m,1)):(m=Gn(_),m.c(),w(m,1),m.m(e,s)):m&&(Ae(),y(m,1,1,()=>{m=null}),Oe()),f&&f.p&&(!o||g&64)&&me(f,b,_,_[6],o?he(b,_[6],g,Ua):de(_[6]),Wn),(!o||g&2)&&S(e,"data-type",_[1]),(!o||g&4)&&D(e,"item--focus",_[2])},i(_){o||(w(m),w(p,_),o=!0)},o(_){y(m),y(p,_),o=!1},d(_){_&&R(e),m&&m.d(),p&&p.d(_),c=!1,u()}}}function Ha(t,e,n){let{$$slots:i={},$$scope:s}=e;const r=ba(i);let{key:a}=e,{icon:l}=e,{name:o=""}=e,{focus:c=!1}=e;const u=Mt();function m(){c||u("changed",{key:a})}return t.$$set=b=>{"key"in b&&n(5,a=b.key),"icon"in b&&n(0,l=b.icon),"name"in b&&n(1,o=b.name),"focus"in b&&n(2,c=b.focus),"$$scope"in b&&n(6,s=b.$$scope)},[l,o,c,m,r,a,s,i]}class Ka extends ke{constructor(e){super(),we(this,e,Ha,Va,be,{key:5,icon:0,name:1,focus:2})}}const Wa=t=>({focus:t&1}),Jn=t=>({focus:t[0]});function Yn(t,e,n){const i=t.slice();return i[5]=e[n],i}function za(t){let e,n=t[5].icon+"",i;return{c(){e=new pt(!1),i=Je(),e.a=i},m(s,r){e.m(n,s,r),B(s,i,r)},p(s,r){r&2&&n!==(n=s[5].icon+"")&&e.p(n)},i:Q,o:Q,d(s){s&&(R(i),e.d())}}}function Ga(t){let e,n;return e=new Ft({props:{icon:t[5].icon}}),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s&2&&(r.icon=i[5].icon),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Ja(t){let e,n,i,s,r,a;const l=[Ga,za],o=[];function c(u,m){var b;return m&2&&(n=null),n==null&&(n=!!((b=u[5].icon)!=null&&b.startsWith("#"))),n?0:u[5].icon?1:-1}return~(i=c(t,-1))&&(s=o[i]=l[i](t)),{c(){e=L("span"),s&&s.c(),r=P(),S(e,"slot","icon")},m(u,m){B(u,e,m),~i&&o[i].m(e,null),C(e,r),a=!0},p(u,m){let b=i;i=c(u,m),i===b?~i&&o[i].p(u,m):(s&&(Ae(),y(o[b],1,1,()=>{o[b]=null}),Oe()),~i?(s=o[i],s?s.p(u,m):(s=o[i]=l[i](u),s.c()),w(s,1),s.m(e,r)):s=null)},i(u){a||(w(s),a=!0)},o(u){y(s),a=!1},d(u){u&&R(e),~i&&o[i].d()}}}function Ya(t){let e,n,i=t[5].text+"",s;return{c(){e=L("span"),n=new pt(!1),s=P(),n.a=s,S(e,"slot","text")},m(r,a){B(r,e,a),n.m(i,e),C(e,s)},p(r,a){a&2&&i!==(i=r[5].text+"")&&n.p(i)},d(r){r&&R(e)}}}function Zn(t,e){let n,i,s;return i=new Ka({props:{key:e[5].key,icon:!!e[5].icon,name:e[5].name,focus:e[5].key===e[0],$$slots:{text:[Ya],icon:[Ja]},$$scope:{ctx:e}}}),i.$on("changed",e[2]),{key:t,first:null,c(){n=Je(),A(i.$$.fragment),this.first=n},m(r,a){B(r,n,a),T(i,r,a),s=!0},p(r,a){e=r;const l={};a&2&&(l.key=e[5].key),a&2&&(l.icon=!!e[5].icon),a&2&&(l.name=e[5].name),a&3&&(l.focus=e[5].key===e[0]),a&18&&(l.$$scope={dirty:a,ctx:e}),i.$set(l)},i(r){s||(w(i.$$.fragment,r),s=!0)},o(r){y(i.$$.fragment,r),s=!1},d(r){r&&R(n),E(i,r)}}}function Za(t){let e;return{c(){e=De("Container")},m(n,i){B(n,e,i)},d(n){n&&R(e)}}}function Xa(t){let e,n,i=[],s=new Map,r,a,l,o=Ie(t[1]);const c=f=>f[5].key;for(let f=0;f{"tabs"in o&&n(1,r=o.tabs),"focus"in o&&n(0,a=o.focus),"$$scope"in o&&n(4,s=o.$$scope)},[a,r,l,i,s]}class xa extends ke{constructor(e){super(),we(this,e,Qa,Xa,be,{tabs:1,focus:0})}}const eo=t=>({}),Xn=t=>({}),to=t=>({}),Qn=t=>({}),no=t=>({}),xn=t=>({}),io=t=>({}),ei=t=>({});function so(t){let e,n;return{c(){e=new pt(!1),n=Je(),e.a=n},m(i,s){e.m(t[0],i,s),B(i,n,s)},p(i,s){s&1&&e.p(i[0])},d(i){i&&(R(n),e.d())}}}function ro(t){let e,n;return{c(){e=new pt(!1),n=Je(),e.a=n},m(i,s){e.m(t[1],i,s),B(i,n,s)},p(i,s){s&2&&e.p(i[1])},d(i){i&&(R(n),e.d())}}}function ti(t){let e,n,i;const s=t[4].input,r=pe(s,t,t[3],Qn);return{c(){e=L("div"),n=P(),r&&r.c(),S(e,"class","fn__hr")},m(a,l){B(a,e,l),B(a,n,l),r&&r.m(a,l),i=!0},p(a,l){r&&r.p&&(!i||l&8)&&me(r,s,a,a[3],i?he(s,a[3],l,to):de(a[3]),Qn)},i(a){i||(w(r,a),i=!0)},o(a){y(r,a),i=!1},d(a){a&&(R(e),R(n)),r&&r.d(a)}}}function ni(t){let e,n,i;const s=t[4].input,r=pe(s,t,t[3],Xn);return{c(){e=L("span"),n=P(),r&&r.c(),S(e,"class","fn__space")},m(a,l){B(a,e,l),B(a,n,l),r&&r.m(a,l),i=!0},p(a,l){r&&r.p&&(!i||l&8)&&me(r,s,a,a[3],i?he(s,a[3],l,eo):de(a[3]),Xn)},i(a){i||(w(r,a),i=!0)},o(a){y(r,a),i=!1},d(a){a&&(R(e),R(n)),r&&r.d(a)}}}function ao(t){let e,n,i,s,r,a,l;const o=t[4].title,c=pe(o,t,t[3],ei),u=c||so(t),m=t[4].text,b=pe(m,t,t[3],xn),f=b||ro(t);let p=t[2]&&ti(t),_=!t[2]&&ni(t);return{c(){e=L("label"),n=L("div"),u&&u.c(),i=P(),s=L("div"),f&&f.c(),r=P(),p&&p.c(),a=P(),_&&_.c(),S(s,"class","b3-label__text"),S(n,"class","fn__flex-1 svelte-2m76cy"),D(n,"visible",t[2]),S(e,"class","fn__flex b3-label")},m(g,N){B(g,e,N),C(e,n),u&&u.m(n,null),C(n,i),C(n,s),f&&f.m(s,null),C(n,r),p&&p.m(n,null),C(e,a),_&&_.m(e,null),l=!0},p(g,[N]){c?c.p&&(!l||N&8)&&me(c,o,g,g[3],l?he(o,g[3],N,io):de(g[3]),ei):u&&u.p&&(!l||N&1)&&u.p(g,l?N:-1),b?b.p&&(!l||N&8)&&me(b,m,g,g[3],l?he(m,g[3],N,no):de(g[3]),xn):f&&f.p&&(!l||N&2)&&f.p(g,l?N:-1),g[2]?p?(p.p(g,N),N&4&&w(p,1)):(p=ti(g),p.c(),w(p,1),p.m(n,null)):p&&(Ae(),y(p,1,1,()=>{p=null}),Oe()),(!l||N&4)&&D(n,"visible",g[2]),g[2]?_&&(Ae(),y(_,1,1,()=>{_=null}),Oe()):_?(_.p(g,N),N&4&&w(_,1)):(_=ni(g),_.c(),w(_,1),_.m(e,null))},i(g){l||(w(u,g),w(f,g),w(p),w(_),l=!0)},o(g){y(u,g),y(f,g),y(p),y(_),l=!1},d(g){g&&R(e),u&&u.d(g),f&&f.d(g),p&&p.d(),_&&_.d()}}}function oo(t,e,n){let{$$slots:i={},$$scope:s}=e,{title:r=""}=e,{text:a=""}=e,{block:l=!1}=e;return t.$$set=o=>{"title"in o&&n(0,r=o.title),"text"in o&&n(1,a=o.text),"block"in o&&n(2,l=o.block),"$$scope"in o&&n(3,s=o.$$scope)},[r,a,l,s,i]}class F extends ke{constructor(e){super(),we(this,e,oo,ao,be,{title:0,text:1,block:2})}}var I=(t=>(t[t.checkbox=0]="checkbox",t[t.text=1]="text",t[t.number=2]="number",t[t.slider=3]="slider",t[t.button=4]="button",t[t.select=5]="select",t[t.textarea=6]="textarea",t))(I||{});function ii(t,e,n){const i=t.slice();return i[19]=e[n],i}function lo(t){let e,n,i;return{c(){e=L("textarea"),e.disabled=t[2],S(e,"class","b3-text-field"),S(e,"placeholder",t[5]),D(e,"fn__block",t[3]),D(e,"fn__size200",!t[3]&&t[4]),Dt(e,"height",t[8]>0?`${t[8]}px`:void 0)},m(s,r){B(s,e,r),x(e,t[0]),n||(i=[K(e,"input",t[17]),K(e,"change",t[10])],n=!0)},p(s,r){r&4&&(e.disabled=s[2]),r&32&&S(e,"placeholder",s[5]),r&65&&x(e,s[0]),r&8&&D(e,"fn__block",s[3]),r&24&&D(e,"fn__size200",!s[3]&&s[4]),r&256&&Dt(e,"height",s[8]>0?`${s[8]}px`:void 0)},d(s){s&&R(e),n=!1,Y(i)}}}function co(t){let e,n=[],i=new Map,s,r,a=Ie(t[6]);const l=o=>o[19].key;for(let o=0;ot[16].call(e)),D(e,"fn__block",t[3]),D(e,"fn__size200",!t[3]&&t[4]),D(e,"fn__flex-center",!t[3])},m(o,c){B(o,e,c);for(let u=0;u{"type"in v&&n(1,i=v.type),"settingKey"in v&&n(11,s=v.settingKey),"settingValue"in v&&n(0,r=v.settingValue),"disabled"in v&&n(2,a=v.disabled),"block"in v&&n(3,l=v.block),"normal"in v&&n(4,o=v.normal),"placeholder"in v&&n(5,c=v.placeholder),"options"in v&&n(6,u=v.options),"limits"in v&&n(7,m=v.limits),"height"in v&&n(8,b=v.height)},[r,i,a,l,o,c,u,m,b,p,_,s,g,N,z,se,J,ee]}class q extends ke{constructor(e){super(),we(this,e,_o,go,be,{type:1,settingKey:11,settingValue:0,disabled:2,block:3,normal:4,placeholder:5,options:6,limits:7,height:8})}}function bo(t,e,n="span"){return`<${n} class="${e}">${t}`}function Pt(t){return bo(t,"fn__code","code")}var M=(t=>(t.Coding="coding",t.Building="building",t.Indexing="indexing",t.Debugging="debugging",t.Browsing="browsing",t.RunningTests="running tests",t.WritingTests="writing tests",t.ManualTesting="manual testing",t.WritingDocs="writing docs",t.CodeReviewing="code reviewing",t.Researching="researching",t.Learning="learning",t.Designing="designing",t))(M||{});const Z={OFFLINE_CACHE_PATH:"temp/.wakatime/cache",WAKATIME_DEFAULT_API_URL:"https://wakatime.com/api/v1",WAKATIME_STATUS_BAR_PATHNAME:"users/current/statusbar/today",WAKATIME_HEARTBEATS_PATHNAME:"users/current/heartbeats",WAKATIME_HEARTBEATS_BULK:25,WAKATIME_CLIENT_NAME:"wakatime",WAKATIME_CLIENT_VERSION:"1.76.0",WAKATIME_EDITOR_NAME:"siyuan",WAKATIME_PLUGIN_NAME:"siyuan-wakatime",WAKATIME_DEFAULT_LANGUAGE:"Siyuan",WAKATIME_WORKER_FILE_NAME:"wakatime",WAKATIME_WORKER_BROADCAST_CHANNEL_NAME:"wakatime-worker",CACHE_CHECK_INTERVAL:5*60*1e3,CACHE_COMMIT_INTERVAL:1*1e3};function wo(t){let e,n;return e=new q({props:{slot:"input",type:I.button,settingKey:"cleanCache",settingValue:t[3].settings.generalSettings.cleanCache.text}}),e.$on("clicked",t[6]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p:Q,i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function ko(t){let e,n;return e=new q({props:{slot:"input",type:I.button,settingKey:"Reset",settingValue:t[3].settings.generalSettings.reset.text}}),e.$on("clicked",t[5]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p:Q,i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function yo(t){let e,n,i,s;return e=new F({props:{title:t[3].settings.generalSettings.cleanCache.title,text:t[3].settings.generalSettings.cleanCache.description,$$slots:{input:[wo]},$$scope:{ctx:t}}}),i=new F({props:{title:t[3].settings.generalSettings.reset.title,text:t[3].settings.generalSettings.reset.description,$$slots:{input:[ko]},$$scope:{ctx:t}}}),{c(){A(e.$$.fragment),n=P(),A(i.$$.fragment)},m(r,a){T(e,r,a),B(r,n,a),T(i,r,a),s=!0},p(r,a){const l={};a[1]&64&&(l.$$scope={dirty:a,ctx:r}),e.$set(l);const o={};a[1]&64&&(o.$$scope={dirty:a,ctx:r}),i.$set(o)},i(r){s||(w(e.$$.fragment,r),w(i.$$.fragment,r),s=!0)},o(r){y(e.$$.fragment,r),y(i.$$.fragment,r),s=!1},d(r){r&&R(n),E(e,r),E(i,r)}}}function $o(t){let e,n;return e=new q({props:{slot:"input",type:I.checkbox,settingKey:"Heartbeats",settingValue:t[0].wakatime.heartbeats}}),e.$on("changed",t[12]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.heartbeats),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function So(t){let e,n;return e=new q({props:{slot:"input",type:I.text,settingKey:"project",settingValue:t[0].wakatime.project,placeholder:t[1].wakatimeDefaultProject}}),e.$on("changed",t[13]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.project),s[0]&2&&(r.placeholder=i[1].wakatimeDefaultProject),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function vo(t){let e,n;return e=new q({props:{slot:"input",type:I.text,settingKey:"language",settingValue:t[0].wakatime.language,placeholder:t[1].wakatimeDefaultLanguage}}),e.$on("changed",t[14]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.language),s[0]&2&&(r.placeholder=i[1].wakatimeDefaultLanguage),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function To(t){let e,n;return e=new q({props:{slot:"input",type:I.number,settingKey:"interval",settingValue:t[0].wakatime.interval,limits:t[10]}}),e.$on("changed",t[15]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.interval),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Eo(t){let e,n;return e=new q({props:{slot:"input",type:I.select,settingKey:"view.category",settingValue:t[0].wakatime.view.category,options:t[11]}}),e.$on("changed",t[16]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.view.category),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Ao(t){let e,n;return e=new q({props:{slot:"input",type:I.select,settingKey:"edit.category",settingValue:t[0].wakatime.edit.category,options:t[11]}}),e.$on("changed",t[17]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.edit.category),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Oo(t){let e,n;return e=new q({props:{slot:"input",type:I.text,settingKey:"system_name",settingValue:t[0].wakatime.system_name,placeholder:t[1].wakatimeDefaultSystemName}}),e.$on("changed",t[18]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.system_name),s[0]&2&&(r.placeholder=i[1].wakatimeDefaultSystemName),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Do(t){let e,n;return e=new q({props:{slot:"input",type:I.text,settingKey:"system_version",settingValue:t[0].wakatime.system_version,placeholder:t[1].wakatimeDefaultSystemVersion}}),e.$on("changed",t[19]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.system_version),s[0]&2&&(r.placeholder=i[1].wakatimeDefaultSystemVersion),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Co(t){let e,n;return e=new q({props:{slot:"input",type:I.text,settingKey:"system_arch",settingValue:t[0].wakatime.system_arch,placeholder:t[1].wakatimeDefaultSystemArch}}),e.$on("changed",t[20]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.system_arch),s[0]&2&&(r.placeholder=i[1].wakatimeDefaultSystemArch),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Po(t){let e,n;return e=new q({props:{slot:"input",type:I.textarea,settingKey:"useragent",settingValue:t[0].wakatime.useragent,placeholder:t[2],block:!0}}),e.$on("changed",t[21]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.useragent),s[0]&4&&(r.placeholder=i[2]),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function No(t){let e,n;return e=new q({props:{slot:"input",type:I.button,settingKey:"Test",settingValue:t[3].settings.wakatimeSettings.serviceTab.test.text}}),e.$on("clicked",t[7]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p:Q,i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Ro(t){let e,n;return e=new q({props:{slot:"input",type:I.text,settingKey:"api_url",settingValue:t[0].wakatime.api_url,placeholder:t[1].wakatimeDefaultApiUrl,block:!0}}),e.$on("changed",t[22]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.api_url),s[0]&2&&(r.placeholder=i[1].wakatimeDefaultApiUrl),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Bo(t){let e,n;return e=new q({props:{slot:"input",type:I.text,settingKey:"api_key",settingValue:t[0].wakatime.api_key,placeholder:"API KEY",block:!0}}),e.$on("changed",t[23]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.api_key),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Lo(t){let e,n;return e=new q({props:{slot:"input",type:I.text,settingKey:"hostname",settingValue:t[0].wakatime.hostname,placeholder:t[1].wakatimeDefaultHostname}}),e.$on("changed",t[24]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.hostname),s[0]&2&&(r.placeholder=i[1].wakatimeDefaultHostname),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function jo(t){let e,n;return e=new q({props:{slot:"input",type:I.number,settingKey:"timeout",settingValue:t[0].wakatime.timeout,limits:t[10]}}),e.$on("changed",t[25]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.timeout),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Io(t){let e,n;return e=new q({props:{slot:"input",type:I.checkbox,settingKey:"hide_branch_names",settingValue:t[0].wakatime.hide_branch_names}}),e.$on("changed",t[26]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.hide_branch_names),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Mo(t){let e,n;return e=new q({props:{slot:"input",type:I.checkbox,settingKey:"hide_file_names",settingValue:t[0].wakatime.hide_file_names}}),e.$on("changed",t[27]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.hide_file_names),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Uo(t){let e,n;return e=new q({props:{slot:"input",type:I.checkbox,settingKey:"offline",settingValue:t[0].wakatime.offline}}),e.$on("changed",t[28]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.offline),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Fo(t){let e,n;return e=new q({props:{slot:"input",type:I.textarea,settingKey:"includeID",settingValue:t[0].wakatime.includeID.join(` +`),placeholder:t[3].settings.wakatimeSettings.serviceTab.includeID.placeholder,block:!0}}),e.$on("changed",t[29]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.includeID.join(` +`)),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function qo(t){let e,n;return e=new q({props:{slot:"input",type:I.textarea,settingKey:"excludeID",settingValue:t[0].wakatime.excludeID.join(` +`),placeholder:t[3].settings.wakatimeSettings.serviceTab.excludeID.placeholder,block:!0}}),e.$on("changed",t[30]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.excludeID.join(` +`)),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Vo(t){let e,n;return e=new q({props:{slot:"input",type:I.textarea,settingKey:"include",settingValue:t[0].wakatime.include.join(` +`),placeholder:t[3].settings.wakatimeSettings.serviceTab.include.placeholder,block:!0}}),e.$on("changed",t[31]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.include.join(` +`)),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Ho(t){let e,n;return e=new q({props:{slot:"input",type:I.textarea,settingKey:"exclude",settingValue:t[0].wakatime.exclude.join(` +`),placeholder:t[3].settings.wakatimeSettings.serviceTab.exclude.placeholder,block:!0}}),e.$on("changed",t[32]),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&1&&(r.settingValue=i[0].wakatime.exclude.join(` +`)),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function Ko(t){let e,n,i,s,r,a,l,o,c,u,m,b,f,p,_,g,N,z,se,J,ee,v,U,G,H,re,ae,Ye,oe,Ze,le,Xe,ce,Qe,ue,O,ye,Vt,$e,Ht,Se,Kt,ve,Wt,Te,Ce;return n=new F({props:{title:t[3].settings.wakatimeSettings.generalTab.heartbeats.title,text:t[3].settings.wakatimeSettings.generalTab.heartbeats.description,$$slots:{input:[$o]},$$scope:{ctx:t}}}),s=new F({props:{title:t[3].settings.wakatimeSettings.generalTab.project.title,text:t[3].settings.wakatimeSettings.generalTab.project.description,$$slots:{input:[So]},$$scope:{ctx:t}}}),a=new F({props:{title:t[3].settings.wakatimeSettings.generalTab.language.title,text:t[3].settings.wakatimeSettings.generalTab.language.description,$$slots:{input:[vo]},$$scope:{ctx:t}}}),o=new F({props:{title:t[3].settings.wakatimeSettings.generalTab.interval.title,text:t[3].settings.wakatimeSettings.generalTab.interval.description,$$slots:{input:[To]},$$scope:{ctx:t}}}),u=new F({props:{title:t[3].settings.wakatimeSettings.generalTab.viewCategory.title,text:t[3].settings.wakatimeSettings.generalTab.viewCategory.description,$$slots:{input:[Eo]},$$scope:{ctx:t}}}),b=new F({props:{title:t[3].settings.wakatimeSettings.generalTab.editCategory.title,text:t[3].settings.wakatimeSettings.generalTab.editCategory.description,$$slots:{input:[Ao]},$$scope:{ctx:t}}}),p=new F({props:{title:t[3].settings.wakatimeSettings.generalTab.systemName.title,text:t[3].settings.wakatimeSettings.generalTab.systemName.description,$$slots:{input:[Oo]},$$scope:{ctx:t}}}),g=new F({props:{title:t[3].settings.wakatimeSettings.generalTab.systemVersion.title,text:t[3].settings.wakatimeSettings.generalTab.systemVersion.description,$$slots:{input:[Do]},$$scope:{ctx:t}}}),z=new F({props:{title:t[3].settings.wakatimeSettings.generalTab.systemArch.title,text:t[3].settings.wakatimeSettings.generalTab.systemArch.description,$$slots:{input:[Co]},$$scope:{ctx:t}}}),J=new F({props:{title:t[3].settings.wakatimeSettings.generalTab.userAgent.title,text:t[3].settings.wakatimeSettings.generalTab.userAgent.description,block:!0,$$slots:{input:[Po]},$$scope:{ctx:t}}}),U=new F({props:{title:t[3].settings.wakatimeSettings.serviceTab.test.title,text:t[3].settings.wakatimeSettings.serviceTab.test.description,$$slots:{input:[No]},$$scope:{ctx:t}}}),H=new F({props:{title:t[3].settings.wakatimeSettings.serviceTab.apiURL.title,text:t[3].settings.wakatimeSettings.serviceTab.apiURL.description,block:!0,$$slots:{input:[Ro]},$$scope:{ctx:t}}}),ae=new F({props:{title:t[3].settings.wakatimeSettings.serviceTab.apiKey.title,text:t[3].settings.wakatimeSettings.serviceTab.apiKey.description,block:!0,$$slots:{input:[Bo]},$$scope:{ctx:t}}}),oe=new F({props:{title:t[3].settings.wakatimeSettings.serviceTab.hostname.title,text:t[3].settings.wakatimeSettings.serviceTab.hostname.description,$$slots:{input:[Lo]},$$scope:{ctx:t}}}),le=new F({props:{title:t[3].settings.wakatimeSettings.serviceTab.timeout.title,text:t[3].settings.wakatimeSettings.serviceTab.timeout.description,$$slots:{input:[jo]},$$scope:{ctx:t}}}),ce=new F({props:{title:t[3].settings.wakatimeSettings.serviceTab.hide_branch_names.title,text:t[3].settings.wakatimeSettings.serviceTab.hide_branch_names.description,$$slots:{input:[Io]},$$scope:{ctx:t}}}),ue=new F({props:{title:t[3].settings.wakatimeSettings.serviceTab.hide_file_names.title,text:t[3].settings.wakatimeSettings.serviceTab.hide_file_names.description,$$slots:{input:[Mo]},$$scope:{ctx:t}}}),ye=new F({props:{title:t[3].settings.wakatimeSettings.serviceTab.offline.title,text:t[3].settings.wakatimeSettings.serviceTab.offline.description.replaceAll("${1}",Pt(Z.OFFLINE_CACHE_PATH)),$$slots:{input:[Uo]},$$scope:{ctx:t}}}),$e=new F({props:{title:t[3].settings.wakatimeSettings.serviceTab.includeID.title,text:t[3].settings.wakatimeSettings.serviceTab.includeID.description,block:!0,$$slots:{input:[Fo]},$$scope:{ctx:t}}}),Se=new F({props:{title:t[3].settings.wakatimeSettings.serviceTab.excludeID.title,text:t[3].settings.wakatimeSettings.serviceTab.excludeID.description,block:!0,$$slots:{input:[qo]},$$scope:{ctx:t}}}),ve=new F({props:{title:t[3].settings.wakatimeSettings.serviceTab.include.title,text:t[3].settings.wakatimeSettings.serviceTab.include.description,block:!0,$$slots:{input:[Vo]},$$scope:{ctx:t}}}),Te=new F({props:{title:t[3].settings.wakatimeSettings.serviceTab.exclude.title,text:t[3].settings.wakatimeSettings.serviceTab.exclude.description,block:!0,$$slots:{input:[Ho]},$$scope:{ctx:t}}}),{c(){e=L("div"),A(n.$$.fragment),i=P(),A(s.$$.fragment),r=P(),A(a.$$.fragment),l=P(),A(o.$$.fragment),c=P(),A(u.$$.fragment),m=P(),A(b.$$.fragment),f=P(),A(p.$$.fragment),_=P(),A(g.$$.fragment),N=P(),A(z.$$.fragment),se=P(),A(J.$$.fragment),ee=P(),v=L("div"),A(U.$$.fragment),G=P(),A(H.$$.fragment),re=P(),A(ae.$$.fragment),Ye=P(),A(oe.$$.fragment),Ze=P(),A(le.$$.fragment),Xe=P(),A(ce.$$.fragment),Qe=P(),A(ue.$$.fragment),O=P(),A(ye.$$.fragment),Vt=P(),A($e.$$.fragment),Ht=P(),A(Se.$$.fragment),Kt=P(),A(ve.$$.fragment),Wt=P(),A(Te.$$.fragment),S(e,"data-type",t[9].wakatime[0].name),D(e,"fn__none",t[9].wakatime[0].key!==t[36]),S(v,"data-type",t[9].wakatime[1].name),D(v,"fn__none",t[9].wakatime[1].key!==t[36])},m(k,$){B(k,e,$),T(n,e,null),C(e,i),T(s,e,null),C(e,r),T(a,e,null),C(e,l),T(o,e,null),C(e,c),T(u,e,null),C(e,m),T(b,e,null),C(e,f),T(p,e,null),C(e,_),T(g,e,null),C(e,N),T(z,e,null),C(e,se),T(J,e,null),B(k,ee,$),B(k,v,$),T(U,v,null),C(v,G),T(H,v,null),C(v,re),T(ae,v,null),C(v,Ye),T(oe,v,null),C(v,Ze),T(le,v,null),C(v,Xe),T(ce,v,null),C(v,Qe),T(ue,v,null),C(v,O),T(ye,v,null),C(v,Vt),T($e,v,null),C(v,Ht),T(Se,v,null),C(v,Kt),T(ve,v,null),C(v,Wt),T(Te,v,null),Ce=!0},p(k,$){const zt={};$[0]&1|$[1]&64&&(zt.$$scope={dirty:$,ctx:k}),n.$set(zt);const Gt={};$[0]&3|$[1]&64&&(Gt.$$scope={dirty:$,ctx:k}),s.$set(Gt);const Jt={};$[0]&3|$[1]&64&&(Jt.$$scope={dirty:$,ctx:k}),a.$set(Jt);const Yt={};$[0]&1|$[1]&64&&(Yt.$$scope={dirty:$,ctx:k}),o.$set(Yt);const Zt={};$[0]&1|$[1]&64&&(Zt.$$scope={dirty:$,ctx:k}),u.$set(Zt);const Xt={};$[0]&1|$[1]&64&&(Xt.$$scope={dirty:$,ctx:k}),b.$set(Xt);const Qt={};$[0]&3|$[1]&64&&(Qt.$$scope={dirty:$,ctx:k}),p.$set(Qt);const xt={};$[0]&3|$[1]&64&&(xt.$$scope={dirty:$,ctx:k}),g.$set(xt);const en={};$[0]&3|$[1]&64&&(en.$$scope={dirty:$,ctx:k}),z.$set(en);const tn={};$[0]&5|$[1]&64&&(tn.$$scope={dirty:$,ctx:k}),J.$set(tn),(!Ce||$[0]&512|$[1]&32)&&D(e,"fn__none",k[9].wakatime[0].key!==k[36]);const nn={};$[1]&64&&(nn.$$scope={dirty:$,ctx:k}),U.$set(nn);const sn={};$[0]&3|$[1]&64&&(sn.$$scope={dirty:$,ctx:k}),H.$set(sn);const rn={};$[0]&1|$[1]&64&&(rn.$$scope={dirty:$,ctx:k}),ae.$set(rn);const an={};$[0]&3|$[1]&64&&(an.$$scope={dirty:$,ctx:k}),oe.$set(an);const on={};$[0]&1|$[1]&64&&(on.$$scope={dirty:$,ctx:k}),le.$set(on);const ln={};$[0]&1|$[1]&64&&(ln.$$scope={dirty:$,ctx:k}),ce.$set(ln);const cn={};$[0]&1|$[1]&64&&(cn.$$scope={dirty:$,ctx:k}),ue.$set(cn);const un={};$[0]&1|$[1]&64&&(un.$$scope={dirty:$,ctx:k}),ye.$set(un);const fn={};$[0]&1|$[1]&64&&(fn.$$scope={dirty:$,ctx:k}),$e.$set(fn);const pn={};$[0]&1|$[1]&64&&(pn.$$scope={dirty:$,ctx:k}),Se.$set(pn);const hn={};$[0]&1|$[1]&64&&(hn.$$scope={dirty:$,ctx:k}),ve.$set(hn);const mn={};$[0]&1|$[1]&64&&(mn.$$scope={dirty:$,ctx:k}),Te.$set(mn),(!Ce||$[0]&512|$[1]&32)&&D(v,"fn__none",k[9].wakatime[1].key!==k[36])},i(k){Ce||(w(n.$$.fragment,k),w(s.$$.fragment,k),w(a.$$.fragment,k),w(o.$$.fragment,k),w(u.$$.fragment,k),w(b.$$.fragment,k),w(p.$$.fragment,k),w(g.$$.fragment,k),w(z.$$.fragment,k),w(J.$$.fragment,k),w(U.$$.fragment,k),w(H.$$.fragment,k),w(ae.$$.fragment,k),w(oe.$$.fragment,k),w(le.$$.fragment,k),w(ce.$$.fragment,k),w(ue.$$.fragment,k),w(ye.$$.fragment,k),w($e.$$.fragment,k),w(Se.$$.fragment,k),w(ve.$$.fragment,k),w(Te.$$.fragment,k),Ce=!0)},o(k){y(n.$$.fragment,k),y(s.$$.fragment,k),y(a.$$.fragment,k),y(o.$$.fragment,k),y(u.$$.fragment,k),y(b.$$.fragment,k),y(p.$$.fragment,k),y(g.$$.fragment,k),y(z.$$.fragment,k),y(J.$$.fragment,k),y(U.$$.fragment,k),y(H.$$.fragment,k),y(ae.$$.fragment,k),y(oe.$$.fragment,k),y(le.$$.fragment,k),y(ce.$$.fragment,k),y(ue.$$.fragment,k),y(ye.$$.fragment,k),y($e.$$.fragment,k),y(Se.$$.fragment,k),y(ve.$$.fragment,k),y(Te.$$.fragment,k),Ce=!1},d(k){k&&(R(e),R(ee),R(v)),E(n),E(s),E(a),E(o),E(u),E(b),E(p),E(g),E(z),E(J),E(U),E(H),E(ae),E(oe),E(le),E(ce),E(ue),E(ye),E($e),E(Se),E(ve),E(Te)}}}function Wo(t){let e,n;return e=new xa({props:{focus:Yo,tabs:t[9].wakatime,$$slots:{default:[Ko,({focus:i})=>({36:i}),({focus:i})=>[0,i?32:0]]},$$scope:{ctx:t}}}),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&7|s[1]&96&&(r.$$scope={dirty:s,ctx:i}),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}function zo(t){let e,n,i,s;return e=new Kn({props:{display:t[8][0].key===t[35],$$slots:{default:[yo]},$$scope:{ctx:t}}}),i=new Kn({props:{display:t[8][1].key===t[35],$$slots:{default:[Wo]},$$scope:{ctx:t}}}),{c(){A(e.$$.fragment),n=P(),A(i.$$.fragment)},m(r,a){T(e,r,a),B(r,n,a),T(i,r,a),s=!0},p(r,a){const l={};a[1]&16&&(l.display=r[8][0].key===r[35]),a[1]&64&&(l.$$scope={dirty:a,ctx:r}),e.$set(l);const o={};a[1]&16&&(o.display=r[8][1].key===r[35]),a[0]&7|a[1]&64&&(o.$$scope={dirty:a,ctx:r}),i.$set(o)},i(r){s||(w(e.$$.fragment,r),w(i.$$.fragment,r),s=!0)},o(r){y(e.$$.fragment,r),y(i.$$.fragment,r),s=!1},d(r){r&&R(n),E(e,r),E(i,r)}}}function Go(t){let e,n;return e=new ja({props:{panels:t[8],focus:Jo,$$slots:{default:[zo,({focus:i})=>({35:i}),({focus:i})=>[0,i?16:0]]},$$scope:{ctx:t}}}),{c(){A(e.$$.fragment)},m(i,s){T(e,i,s),n=!0},p(i,s){const r={};s[0]&7|s[1]&80&&(r.$$scope={dirty:s,ctx:i}),e.$set(r)},i(i){n||(w(e.$$.fragment,i),n=!0)},o(i){y(e.$$.fragment,i),n=!1},d(i){E(e,i)}}}let Jo=0,Yo=0;function Zo(t,e,n){let{config:i}=e,{plugin:s}=e,r=s.wakatimeDefaultUserAgent;const a=s.i18n;async function l(){await s.updateConfig(i),n(2,r=s.wakatimeDefaultUserAgent)}function o(){s.siyuan.confirm(a.settings.generalSettings.reset.title,a.settings.generalSettings.reset.description,async()=>{await s.resetConfig(),globalThis.location.reload()})}function c(){s.siyuan.confirm(a.settings.generalSettings.cleanCache.title,a.settings.generalSettings.cleanCache.description,async()=>{await s.clearCache(),globalThis.location.reload()})}async function u(){const O=await s.testService();return O?s.siyuan.showMessage(a.settings.wakatimeSettings.serviceTab.test.messages.success.replaceAll("${1}",Pt(s.wakatimeApiBaseUrl)),void 0,"info"):s.siyuan.showMessage(a.settings.wakatimeSettings.serviceTab.test.messages.error.replaceAll("${1}",Pt(s.wakatimeApiBaseUrl)),void 0,"error"),O}const m=[{key:0,text:a.settings.generalSettings.title,name:a.settings.generalSettings.title,icon:"#iconSettings"},{key:1,text:a.settings.wakatimeSettings.title,name:a.settings.wakatimeSettings.title,icon:"#icon-wakatime"}],b={wakatime:[{key:0,text:a.settings.wakatimeSettings.generalTab.title,name:a.settings.wakatimeSettings.generalTab.title,icon:"⚙"},{key:1,text:a.settings.wakatimeSettings.serviceTab.title,name:a.settings.wakatimeSettings.serviceTab.title,icon:"🌐"}]},f={min:1,max:1/0,step:1},p=[{key:M.Coding,text:M.Coding},{key:M.Building,text:M.Building},{key:M.Indexing,text:M.Indexing},{key:M.Debugging,text:M.Debugging},{key:M.Browsing,text:M.Browsing},{key:M.RunningTests,text:M.RunningTests},{key:M.WritingTests,text:M.WritingTests},{key:M.ManualTesting,text:M.ManualTesting},{key:M.WritingDocs,text:M.WritingDocs},{key:M.CodeReviewing,text:M.CodeReviewing},{key:M.Researching,text:M.Researching},{key:M.Learning,text:M.Learning},{key:M.Designing,text:M.Designing}],_=async O=>{n(0,i.wakatime.heartbeats=O.detail.value,i),await l()},g=async O=>{n(0,i.wakatime.project=O.detail.value,i),await l()},N=async O=>{n(0,i.wakatime.language=O.detail.value,i),await l()},z=async O=>{n(0,i.wakatime.interval=O.detail.value,i),await l()},se=async O=>{n(0,i.wakatime.view.category=O.detail.value,i),await l()},J=async O=>{n(0,i.wakatime.edit.category=O.detail.value,i),await l()},ee=async O=>{n(0,i.wakatime.system_name=O.detail.value,i),await l()},v=async O=>{n(0,i.wakatime.system_version=O.detail.value,i),await l()},U=async O=>{n(0,i.wakatime.system_arch=O.detail.value,i),await l()},G=async O=>{n(0,i.wakatime.useragent=O.detail.value,i),await l()},H=async O=>{n(0,i.wakatime.api_url=O.detail.value,i),await l(),await u()},re=async O=>{n(0,i.wakatime.api_key=O.detail.value,i),await l(),await u()},ae=async O=>{n(0,i.wakatime.hostname=O.detail.value,i),await l()},Ye=async O=>{n(0,i.wakatime.timeout=O.detail.value,i),await l()},oe=async O=>{n(0,i.wakatime.hide_branch_names=O.detail.value,i),await l()},Ze=async O=>{n(0,i.wakatime.hide_file_names=O.detail.value,i),await l()},le=async O=>{n(0,i.wakatime.offline=O.detail.value,i),await l()},Xe=async O=>{n(0,i.wakatime.includeID=O.detail.value.split(` +`),i),await l()},ce=async O=>{n(0,i.wakatime.excludeID=O.detail.value.split(` +`),i),await l()},Qe=async O=>{n(0,i.wakatime.include=O.detail.value.split(` +`),i),await l()},ue=async O=>{n(0,i.wakatime.exclude=O.detail.value.split(` +`),i),await l()};return t.$$set=O=>{"config"in O&&n(0,i=O.config),"plugin"in O&&n(1,s=O.plugin)},[i,s,r,a,l,o,c,u,m,b,f,p,_,g,N,z,se,J,ee,v,U,G,H,re,ae,Ye,oe,Ze,le,Xe,ce,Qe,ue]}class Xo extends ke{constructor(e){super(),we(this,e,Zo,Go,be,{config:0,plugin:1},null,[-1,-1])}}Qo();el();const ri=xo();function Qo(){switch(Re.getFrontend()){case"desktop":case"desktop-window":case"browser-desktop":return!0;case"mobile":case"browser-mobile":return!1;default:return!1}}function xo(){switch(Re.getFrontend()){case"mobile":case"browser-mobile":return!0;case"desktop":case"desktop-window":case"browser-desktop":return!1;default:return!1}}function el(){switch(Re.getFrontend()){case"browser-desktop":case"browser-mobile":return!0;case"desktop":case"desktop-window":case"mobile":return!1;default:return!1}}class tl{constructor(e,n=!0){this.label=e,this.collapsed=n}stdout(e,n,...i){const s=`[\x1B[4m${this.label}\x1B[0m] - <\x1B[1m${e.name.toUpperCase()}\x1B[0m>`;if(this.collapsed?globalThis.console.groupCollapsed(s):globalThis.console.group(s),n)for(const r of i)Array.isArray(r)?e(...r):e(r);else e(...i);globalThis.console.trace(),globalThis.console.groupEnd()}dir(...e){this.stdout(globalThis.console.dir,!1,...e)}dirs(...e){this.stdout(globalThis.console.dir,!0,...e)}table(...e){this.stdout(globalThis.console.table,!1,...e)}tables(...e){this.stdout(globalThis.console.table,!0,...e)}debug(...e){this.stdout(globalThis.console.debug,!1,...e)}debugs(...e){this.stdout(globalThis.console.debug,!0,...e)}info(...e){this.stdout(globalThis.console.info,!1,...e)}infos(...e){this.stdout(globalThis.console.info,!0,...e)}log(...e){this.stdout(globalThis.console.log,!1,...e)}logs(...e){this.stdout(globalThis.console.log,!0,...e)}warn(...e){this.stdout(globalThis.console.warn,!1,...e)}warns(...e){this.stdout(globalThis.console.warn,!0,...e)}error(...e){this.stdout(globalThis.console.error,!1,...e)}errors(...e){this.stdout(globalThis.console.error,!0,...e)}}function qt(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var nl=function(e){return il(e)&&!sl(e)};function il(t){return!!t&&typeof t=="object"}function sl(t){var e=Object.prototype.toString.call(t);return e==="[object RegExp]"||e==="[object Date]"||ol(t)}var rl=typeof Symbol=="function"&&Symbol.for,al=rl?Symbol.for("react.element"):60103;function ol(t){return t.$$typeof===al}function ll(t){return Array.isArray(t)?[]:{}}function We(t,e){return e.clone!==!1&&e.isMergeableObject(t)?Me(ll(t),t,e):t}function cl(t,e,n){return t.concat(e).map(function(i){return We(i,n)})}function ul(t,e){if(!e.customMerge)return Me;var n=e.customMerge(t);return typeof n=="function"?n:Me}function fl(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter(function(e){return Object.propertyIsEnumerable.call(t,e)}):[]}function ai(t){return Object.keys(t).concat(fl(t))}function Vi(t,e){try{return e in t}catch{return!1}}function pl(t,e){return Vi(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))}function hl(t,e,n){var i={};return n.isMergeableObject(t)&&ai(t).forEach(function(s){i[s]=We(t[s],n)}),ai(e).forEach(function(s){pl(t,s)||(Vi(t,s)&&n.isMergeableObject(e[s])?i[s]=ul(s,n)(t[s],e[s],n):i[s]=We(e[s],n))}),i}function Me(t,e,n){n=n||{},n.arrayMerge=n.arrayMerge||cl,n.isMergeableObject=n.isMergeableObject||nl,n.cloneUnlessOtherwiseSpecified=We;var i=Array.isArray(e),s=Array.isArray(t),r=i===s;return r?i?n.arrayMerge(t,e,n):hl(t,e,n):We(e,n)}Me.all=function(e,n){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(i,s){return Me(i,s,n)},{})};var ml=Me,dl=ml;const gl=qt(dl);function oi(...t){return gl.all(t,{arrayMerge:(e,n,i)=>n})}function te(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}function li(t,e){for(var n="",i=0,s=-1,r=0,a,l=0;l<=t.length;++l){if(l2){var o=n.lastIndexOf("/");if(o!==n.length-1){o===-1?(n="",i=0):(n=n.slice(0,o),i=n.length-1-n.lastIndexOf("/")),s=l,r=0;continue}}else if(n.length===2||n.length===1){n="",i=0,s=l,r=0;continue}}e&&(n.length>0?n+="/..":n="..",i=2)}else n.length>0?n+="/"+t.slice(s+1,l):n=t.slice(s+1,l),i=l-s-1;s=l,r=0}else a===46&&r!==-1?++r:r=-1}return n}function _l(t,e){var n=e.dir||e.root,i=e.base||(e.name||"")+(e.ext||"");return n?n===e.root?n+i:n+t+i:i}var Le={resolve:function(){for(var e="",n=!1,i,s=arguments.length-1;s>=-1&&!n;s--){var r;s>=0?r=arguments[s]:(i===void 0&&(i=process.cwd()),r=i),te(r),r.length!==0&&(e=r+"/"+e,n=r.charCodeAt(0)===47)}return e=li(e,!n),n?e.length>0?"/"+e:"/":e.length>0?e:"."},normalize:function(e){if(te(e),e.length===0)return".";var n=e.charCodeAt(0)===47,i=e.charCodeAt(e.length-1)===47;return e=li(e,!n),e.length===0&&!n&&(e="."),e.length>0&&i&&(e+="/"),n?"/"+e:e},isAbsolute:function(e){return te(e),e.length>0&&e.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var e,n=0;n0&&(e===void 0?e=i:e+="/"+i)}return e===void 0?".":Le.normalize(e)},relative:function(e,n){if(te(e),te(n),e===n||(e=Le.resolve(e),n=Le.resolve(n),e===n))return"";for(var i=1;ic){if(n.charCodeAt(a+m)===47)return n.slice(a+m+1);if(m===0)return n.slice(a+m)}else r>c&&(e.charCodeAt(i+m)===47?u=m:m===0&&(u=0));break}var b=e.charCodeAt(i+m),f=n.charCodeAt(a+m);if(b!==f)break;b===47&&(u=m)}var p="";for(m=i+u+1;m<=s;++m)(m===s||e.charCodeAt(m)===47)&&(p.length===0?p+="..":p+="/..");return p.length>0?p+n.slice(a+u):(a+=u,n.charCodeAt(a)===47&&++a,n.slice(a))},_makeLong:function(e){return e},dirname:function(e){if(te(e),e.length===0)return".";for(var n=e.charCodeAt(0),i=n===47,s=-1,r=!0,a=e.length-1;a>=1;--a)if(n=e.charCodeAt(a),n===47){if(!r){s=a;break}}else r=!1;return s===-1?i?"/":".":i&&s===1?"//":e.slice(0,s)},basename:function(e,n){if(n!==void 0&&typeof n!="string")throw new TypeError('"ext" argument must be a string');te(e);var i=0,s=-1,r=!0,a;if(n!==void 0&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var l=n.length-1,o=-1;for(a=e.length-1;a>=0;--a){var c=e.charCodeAt(a);if(c===47){if(!r){i=a+1;break}}else o===-1&&(r=!1,o=a+1),l>=0&&(c===n.charCodeAt(l)?--l===-1&&(s=a):(l=-1,s=o))}return i===s?s=o:s===-1&&(s=e.length),e.slice(i,s)}else{for(a=e.length-1;a>=0;--a)if(e.charCodeAt(a)===47){if(!r){i=a+1;break}}else s===-1&&(r=!1,s=a+1);return s===-1?"":e.slice(i,s)}},extname:function(e){te(e);for(var n=-1,i=0,s=-1,r=!0,a=0,l=e.length-1;l>=0;--l){var o=e.charCodeAt(l);if(o===47){if(!r){i=l+1;break}continue}s===-1&&(r=!1,s=l+1),o===46?n===-1?n=l:a!==1&&(a=1):n!==-1&&(a=-1)}return n===-1||s===-1||a===0||a===1&&n===s-1&&n===i+1?"":e.slice(n,s)},format:function(e){if(e===null||typeof e!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return _l("/",e)},parse:function(e){te(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(e.length===0)return n;var i=e.charCodeAt(0),s=i===47,r;s?(n.root="/",r=1):r=0;for(var a=-1,l=0,o=-1,c=!0,u=e.length-1,m=0;u>=r;--u){if(i=e.charCodeAt(u),i===47){if(!c){l=u+1;break}continue}o===-1&&(c=!1,o=u+1),i===46?a===-1?a=u:m!==1&&(m=1):a!==-1&&(m=-1)}return a===-1||o===-1||m===0||m===1&&a===o-1&&a===l+1?o!==-1&&(l===0&&s?n.base=n.name=e.slice(1,o):n.base=n.name=e.slice(l,o)):(l===0&&s?(n.name=e.slice(1,a),n.base=e.slice(1,o)):(n.name=e.slice(l,a),n.base=e.slice(l,o)),n.ext=e.slice(a,o)),l>0?n.dir=e.slice(0,l-1):s&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};Le.posix=Le;var bl=Le;const wl=qt(bl);function kl(t){return wl.parse(t)}/*! + * normalize-path + * + * Copyright (c) 2014-2018, Jon Schlinkert. + * Released under the MIT License. + */var yl=function(t,e){if(typeof t!="string")throw new TypeError("expected path to be a string");if(t==="\\"||t==="/")return"/";var n=t.length;if(n<=1)return t;var i="";if(n>4&&t[3]==="\\"){var s=t[2];(s==="?"||s===".")&&t.slice(0,2)==="\\\\"&&(t=t.slice(2),i="//")}var r=t.split(/[/\\]+/);return e!==!1&&r[r.length-1]===""&&r.pop(),i+r.join("/")};const $l=qt(yl);class Sl{constructor(e,n,i){this.port=e,this.handlers=n,this.logger=i,this.map=new Map,this.counter=Math.random(),this.errerEventListener=async s=>{this.logger.warn(s)},this.messageEventListener=async s=>{const r=s.data;switch(r.type){case"call":{try{if(r.handler.name in this.handlers){const a=this.handlers[r.handler.name],l=await a.func.call(a.this,...r.handler.args),o={type:"return",id:r.id,handler:{name:r.handler.name,result:l}};this.port.postMessage(o)}}catch(a){const l={type:"error",id:r.id,error:a};this.port.postMessage(l)}break}case"error":{const a=this.map.get(r.id);a&&(a.reject(r.error),this.map.delete(r.id));break}case"return":{const a=this.map.get(r.id);a&&(a.resolve(r.handler.result),this.map.delete(r.id));break}}},this.port.addEventListener("error",this.errerEventListener),this.port.addEventListener("messageerror",this.errerEventListener),this.port.addEventListener("message",this.messageEventListener)}async call(e,...n){return new Promise((i,s)=>{const r=this.counter++;this.map.set(r,{resolve:i,reject:s});const a={type:"call",id:r,handler:{name:e,args:n}};this.port.postMessage(a)})}}class vl extends Sl{constructor(e,n,i={}){super(e,i,n),this.worker=e,this.logger=n,this.handlers=i}async ping(e=1e3){const n=Date.now();return new Promise((i,s)=>{const r=setTimeout(()=>{s(new Error(`timeout: ${e}`))},e);this.port.addEventListener("message",a=>{a.data==="pong"&&(clearTimeout(r),i(Date.now()-n))}),this.port.postMessage("ping")})}terminate(){switch(!0){case"terminate"in this.port:this.port.terminate();break;case"close"in this.port:this.port.close();break}}}const kt={wakatime:{api_url:"",api_key:"",timeout:30,hide_branch_names:!0,hide_file_names:!0,offline:!1,includeID:[],excludeID:[],include:[],exclude:[],heartbeats:!1,project:"",language:"",hostname:"",interval:60,view:{category:M.Browsing},edit:{category:M.Learning},system_name:"",system_version:"unknown",system_arch:"unknown",useragent:""}};async function Tl(t){return new Promise(e=>{setTimeout(e,t)})}const Ve=class Ve extends Re.Plugin{constructor(n){super(n);V(this,"siyuan",Re);V(this,"logger");V(this,"client");V(this,"SETTINGS_DIALOG_ID");V(this,"config",kt);V(this,"worker");V(this,"bridge");V(this,"heartbeatTimer",0);V(this,"cacheCheckTimer",0);V(this,"webSocketMainEventListener",n=>{if(n.detail.cmd==="transactions"){const i=n.detail.data;i==null||i.forEach(s=>{var r;(r=s.doOperations)==null||r.forEach(a=>{var l;switch(a.action){case"delete":return}a.id&&((l=this.bridge)==null||l.call("addEditEvent",a.id))})})}});V(this,"loadedProtyleEventListener",n=>{var s;const i=n.detail;i.notebookId&&i.path&&i.block.rootID&&((s=this.bridge)==null||s.call("addViewEvent",{id:i.block.rootID,box:i.notebookId,path:i.path}))});V(this,"clickEditorContentEventListener",n=>{var s;const i=n.detail.protyle;i.notebookId&&i.path&&i.block.rootID&&((s=this.bridge)==null||s.call("addViewEvent",{id:i.block.rootID,box:i.notebookId,path:i.path}))});this.logger=new tl(this.name),this.client=new da(void 0,"fetch"),this.SETTINGS_DIALOG_ID=`${this.name}-settings-dialog`}onload(){this.addIcons([Wi,zi].join("")),this.loadData(Ve.GLOBAL_CONFIG_NAME).then(n=>{this.config=oi(kt,n||{})}).catch(n=>this.logger.error(n)).finally(async()=>{var i;if(this.initBridge(),!await this.isWorkerRunning()){for(this.initWorker();await this.isWorkerRunning();)await Tl(1e3);await((i=this.bridge)==null?void 0:i.call("onload")),await this.updateWorkerConfig()}this.eventBus.on("ws-main",this.webSocketMainEventListener),this.eventBus.on("loaded-protyle",this.loadedProtyleEventListener),this.eventBus.on("click-editorcontent",this.clickEditorContentEventListener)})}onLayoutReady(){}onunload(){var n;this.eventBus.off("ws-main",this.webSocketMainEventListener),this.eventBus.off("loaded-protyle",this.loadedProtyleEventListener),this.eventBus.off("click-editorcontent",this.clickEditorContentEventListener),(n=this.bridge)==null||n.call("unload").then(()=>{var i,s;(i=this.bridge)==null||i.terminate(),(s=this.worker)==null||s.terminate()})}openSetting(){const n=this,i=new Re.Dialog({title:`${this.i18n.displayName} ${this.name}`,content:`
`,width:ri?"92vw":"720px",height:ri?void 0:"640px"});new Xo({target:i.element.querySelector(`#${n.SETTINGS_DIALOG_ID}`),props:{config:this.config,plugin:this}})}async resetConfig(){return this.updateConfig(oi(kt))}async clearCache(n=Z.OFFLINE_CACHE_PATH){try{return await this.client.removeFile({path:n}),!0}catch{return!1}}async updateConfig(n){return n&&n!==this.config&&(this.config=n),await this.updateWorkerConfig(),this.saveData(Ve.GLOBAL_CONFIG_NAME,this.config)}initBridge(){var n;(n=this.bridge)==null||n.terminate(),this.bridge=new vl(new BroadcastChannel(Z.WAKATIME_WORKER_BROADCAST_CHANNEL_NAME),this.logger)}initWorker(){var n;(n=this.worker)==null||n.terminate(),this.worker=new Worker(`${globalThis.document.baseURI}plugins/${this.name}/workers/${Z.WAKATIME_WORKER_FILE_NAME}.js?v=${dn.version}`,{type:"module",name:this.name,credentials:"same-origin"})}async isWorkerRunning(){try{return this.bridge||this.initBridge(),await this.bridge.ping(),!0}catch{return!1}}async updateWorkerConfig(){var n,i;await((n=this.bridge)==null?void 0:n.call("updateConfig",this.config,{url:this.wakatimeHeartbeatsApiUrl,headers:this.wakatimeHeaders,project:this.wakatimeProject,language:this.wakatimeLanguage})),await((i=this.bridge)==null?void 0:i.call("restart"))}async testService(){try{const n=await this.client.forwardProxy({url:this.wakatimeStatusBarApiUrl,method:"GET",headers:[this.wakatimeHeaders],timeout:this.config.wakatime.timeout*1e3});return 200<=n.data.status&&n.data.status<300?!0:(this.logger.warn(n),!1)}catch{return!1}}get newId(){return globalThis.Lute.NewNodeID()}get wakatimeDefaultProject(){return`siyuan-workspace:${this.wakatimeWorkspaceName}`}get wakatimeDefaultLanguage(){return Z.WAKATIME_DEFAULT_LANGUAGE}get wakatimeDefaultApiUrl(){return Z.WAKATIME_DEFAULT_API_URL}get wakatimeDefaultHostname(){var n,i,s,r,a,l,o;return((s=(i=(n=globalThis.siyuan)==null?void 0:n.config)==null?void 0:i.system)==null?void 0:s.name)||((a=(r=globalThis.process)==null?void 0:r.env)==null?void 0:a.COMPUTERNAME)||((o=(l=globalThis.process)==null?void 0:l.env)==null?void 0:o.USERDOMAIN)||"unknown"}get wakatimeDefaultUserAgent(){return`${Z.WAKATIME_CLIENT_NAME}/${Z.WAKATIME_CLIENT_VERSION} (${this.wakatimeSystemName}-${this.wakatimeSystemVersion}-${this.wakatimeSystemArch}) ${Z.WAKATIME_EDITOR_NAME}/${this.wakatimeKernelVersion} ${Z.WAKATIME_PLUGIN_NAME}/${dn.version}`}get wakatimeDefaultSystemName(){var n,i,s,r,a;return((s=(i=(n=globalThis.siyuan)==null?void 0:n.config)==null?void 0:i.system)==null?void 0:s.os)||((r=globalThis.process)==null?void 0:r.platform)||((a=globalThis.navigator.userAgentData)==null?void 0:a.platform)||globalThis.navigator.platform||"unknown"}get wakatimeDefaultSystemVersion(){var n,i,s;return((s=(i=(n=globalThis.require)==null?void 0:n.call(globalThis,"os"))==null?void 0:i.release)==null?void 0:s.call(i))||"unknown"}get wakatimeDefaultSystemArch(){var n;return((n=globalThis.process)==null?void 0:n.arch)||"unknown"}get wakatimeHeaders(){return{Authorization:this.wakatimeAuthorization,"User-Agent":this.wakatimeUserAgent,"X-Machine-Name":this.wakatimeHostname}}get wakatimeWorkspaceDirectory(){var n,i,s;return((s=(i=(n=globalThis.siyuan)==null?void 0:n.config)==null?void 0:i.system)==null?void 0:s.workspaceDir)||"unknown"}get wakatimeWorkspaceName(){return kl($l(this.wakatimeWorkspaceDirectory)).base}get wakatimeKernelVersion(){var n,i,s;return((s=(i=(n=globalThis.siyuan)==null?void 0:n.config)==null?void 0:i.system)==null?void 0:s.kernelVersion)||"0.0.0"}get wakatimeApiBaseUrl(){var n,i;return((i=(n=this.config)==null?void 0:n.wakatime)==null?void 0:i.api_url)||this.wakatimeDefaultApiUrl}get wakatimeStatusBarApiUrl(){return`${this.wakatimeApiBaseUrl}/${Z.WAKATIME_STATUS_BAR_PATHNAME}`}get wakatimeHeartbeatsApiUrl(){return`${this.wakatimeApiBaseUrl}/${Z.WAKATIME_HEARTBEATS_PATHNAME}`}get wakatimeAuthorization(){var n,i;return`Basic ${btoa((i=(n=this.config)==null?void 0:n.wakatime)==null?void 0:i.api_key)}`}get wakatimeHostname(){var n,i;return((i=(n=this.config)==null?void 0:n.wakatime)==null?void 0:i.hostname)||this.wakatimeDefaultHostname}get wakatimeUserAgent(){var n,i;return((i=(n=this.config)==null?void 0:n.wakatime)==null?void 0:i.useragent)||this.wakatimeDefaultUserAgent}get wakatimeProject(){var n,i;return((i=(n=this.config)==null?void 0:n.wakatime)==null?void 0:i.project)||this.wakatimeDefaultProject}get wakatimeLanguage(){var n,i;return((i=(n=this.config)==null?void 0:n.wakatime)==null?void 0:i.language)||this.wakatimeDefaultLanguage}get wakatimeSystemName(){var n,i;return((i=(n=this.config)==null?void 0:n.wakatime)==null?void 0:i.system_name)||this.wakatimeDefaultSystemName}get wakatimeSystemVersion(){var n,i;return((i=(n=this.config)==null?void 0:n.wakatime)==null?void 0:i.system_version)||this.wakatimeDefaultSystemVersion}get wakatimeSystemArch(){var n,i;return((i=(n=this.config)==null?void 0:n.wakatime)==null?void 0:i.system_arch)||this.wakatimeDefaultSystemArch}};V(Ve,"GLOBAL_CONFIG_NAME","global-config");let Nt=Ve;module.exports=Nt; diff --git a/plugin.json b/plugin.json new file mode 100644 index 0000000..6e3056e --- /dev/null +++ b/plugin.json @@ -0,0 +1,35 @@ +{ + "name": "wakatime", + "author": "Zuoqiu Yingyi", + "url": "https://github.com/Zuoqiu-Yingyi/siyuan-plugin-wakatime", + "version": "0.3.2", + "minAppVersion": "2.9.9", + "backends": [ + "all" + ], + "frontends": [ + "all" + ], + "displayName": { + "default": "WakaTime" + }, + "description": { + "default": "Use Wakapi or WakaTime to count your editing Activity", + "zh_CN": "使用 WakapiWakaTime 统计您的编辑活动", + "zh_CHT": "使用 WakapiWakaTime 統計您的編輯活動" + }, + "readme": { + "default": "README.md", + "zh_CN": "README_zh_CN.md", + "zh_CHT": "README_zh_CN.md" + }, + "funding": { + "openCollective": "", + "patreon": "", + "github": "", + "custom": [ + "https://afdian.net/a/zuoqiu", + "https://ko-fi.com/zuoqiu" + ] + } +} diff --git a/preview.png b/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..4fbf81c58e944f70b48678cdf2bae4574f730d27 GIT binary patch literal 67702 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

rra=id79&FKMDrMQzt! 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 C#UK#? literal 0 HcmV?d00001 diff --git a/workers/wakatime.js b/workers/wakatime.js new file mode 100644 index 0000000..767a8be --- /dev/null +++ b/workers/wakatime.js @@ -0,0 +1,5801 @@ +var Es = Object.defineProperty; +var Rs = (e, t, r) => t in e ? Es(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r; +var Qe = (e, t, r) => (Rs(e, typeof t != "symbol" ? t + "" : t, r), r); +var xs = Object.defineProperty, Ps = (e, t, r) => t in e ? xs(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, me = (e, t, r) => (Ps(e, typeof t != "symbol" ? t + "" : t, r), r); +function tn(e, t) { + return function() { + return e.apply(t, arguments); + }; +} +const { toString: Ns } = Object.prototype, { getPrototypeOf: or } = Object, yt = ((e) => (t) => { + const r = Ns.call(t); + return e[r] || (e[r] = r.slice(8, -1).toLowerCase()); +})(/* @__PURE__ */ Object.create(null)), ee = (e) => (e = e.toLowerCase(), (t) => yt(t) === e), gt = (e) => (t) => typeof t === e, { isArray: Ne } = Array, Be = gt("undefined"); +function As(e) { + return e !== null && !Be(e) && e.constructor !== null && !Be(e.constructor) && H(e.constructor.isBuffer) && e.constructor.isBuffer(e); +} +const rn = ee("ArrayBuffer"); +function Ys(e) { + let t; + return typeof ArrayBuffer < "u" && ArrayBuffer.isView ? t = ArrayBuffer.isView(e) : t = e && e.buffer && rn(e.buffer), t; +} +const Cs = gt("string"), H = gt("function"), nn = gt("number"), _t = (e) => e !== null && typeof e == "object", Fs = (e) => e === !0 || e === !1, rt = (e) => { + if (yt(e) !== "object") + return !1; + const t = or(e); + return (t === null || t === Object.prototype || Object.getPrototypeOf(t) === null) && !(Symbol.toStringTag in e) && !(Symbol.iterator in e); +}, Ls = ee("Date"), Is = ee("File"), Us = ee("Blob"), Ws = ee("FileList"), Bs = (e) => _t(e) && H(e.pipe), js = (e) => { + let t; + return e && (typeof FormData == "function" && e instanceof FormData || H(e.append) && ((t = yt(e)) === "formdata" || // detect form-data instance + t === "object" && H(e.toString) && e.toString() === "[object FormData]")); +}, Hs = ee("URLSearchParams"), qs = (e) => e.trim ? e.trim() : e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); +function Ge(e, t, { allOwnKeys: r = !1 } = {}) { + if (e === null || typeof e > "u") + return; + let n, s; + if (typeof e != "object" && (e = [e]), Ne(e)) + for (n = 0, s = e.length; n < s; n++) + t.call(null, e[n], n, e); + else { + const a = r ? Object.getOwnPropertyNames(e) : Object.keys(e), i = a.length; + let u; + for (n = 0; n < i; n++) + u = a[n], t.call(null, e[u], u, e); + } +} +function sn(e, t) { + t = t.toLowerCase(); + const r = Object.keys(e); + let n = r.length, s; + for (; n-- > 0; ) + if (s = r[n], t === s.toLowerCase()) + return s; + return null; +} +const an = (() => typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : global)(), on = (e) => !Be(e) && e !== an; +function Gt() { + const { caseless: e } = on(this) && this || {}, t = {}, r = (n, s) => { + const a = e && sn(t, s) || s; + rt(t[a]) && rt(n) ? t[a] = Gt(t[a], n) : rt(n) ? t[a] = Gt({}, n) : Ne(n) ? t[a] = n.slice() : t[a] = n; + }; + for (let n = 0, s = arguments.length; n < s; n++) + arguments[n] && Ge(arguments[n], r); + return t; +} +const Vs = (e, t, r, { allOwnKeys: n } = {}) => (Ge(t, (s, a) => { + r && H(s) ? e[a] = tn(s, r) : e[a] = s; +}, { allOwnKeys: n }), e), Gs = (e) => (e.charCodeAt(0) === 65279 && (e = e.slice(1)), e), $s = (e, t, r, n) => { + e.prototype = Object.create(t.prototype, n), e.prototype.constructor = e, Object.defineProperty(e, "super", { + value: t.prototype + }), r && Object.assign(e.prototype, r); +}, zs = (e, t, r, n) => { + let s, a, i; + const u = {}; + if (t = t || {}, e == null) + return t; + do { + for (s = Object.getOwnPropertyNames(e), a = s.length; a-- > 0; ) + i = s[a], (!n || n(i, e, t)) && !u[i] && (t[i] = e[i], u[i] = !0); + e = r !== !1 && or(e); + } while (e && (!r || r(e, t)) && e !== Object.prototype); + return t; +}, Ks = (e, t, r) => { + e = String(e), (r === void 0 || r > e.length) && (r = e.length), r -= t.length; + const n = e.indexOf(t, r); + return n !== -1 && n === r; +}, Js = (e) => { + if (!e) + return null; + if (Ne(e)) + return e; + let t = e.length; + if (!nn(t)) + return null; + const r = new Array(t); + for (; t-- > 0; ) + r[t] = e[t]; + return r; +}, Zs = ((e) => (t) => e && t instanceof e)(typeof Uint8Array < "u" && or(Uint8Array)), Qs = (e, t) => { + const r = (e && e[Symbol.iterator]).call(e); + let n; + for (; (n = r.next()) && !n.done; ) { + const s = n.value; + t.call(e, s[0], s[1]); + } +}, Xs = (e, t) => { + let r; + const n = []; + for (; (r = e.exec(t)) !== null; ) + n.push(r); + return n; +}, ea = ee("HTMLFormElement"), ta = (e) => e.toLowerCase().replace( + /[-_\s]([a-z\d])(\w*)/g, + function(t, r, n) { + return r.toUpperCase() + n; + } +), Nr = (({ hasOwnProperty: e }) => (t, r) => e.call(t, r))(Object.prototype), ra = ee("RegExp"), ln = (e, t) => { + const r = Object.getOwnPropertyDescriptors(e), n = {}; + Ge(r, (s, a) => { + t(s, a, e) !== !1 && (n[a] = s); + }), Object.defineProperties(e, n); +}, na = (e) => { + ln(e, (t, r) => { + if (H(e) && ["arguments", "caller", "callee"].indexOf(r) !== -1) + return !1; + const n = e[r]; + if (H(n)) { + if (t.enumerable = !1, "writable" in t) { + t.writable = !1; + return; + } + t.set || (t.set = () => { + throw Error("Can not rewrite read-only method '" + r + "'"); + }); + } + }); +}, sa = (e, t) => { + const r = {}, n = (s) => { + s.forEach((a) => { + r[a] = !0; + }); + }; + return Ne(e) ? n(e) : n(String(e).split(t)), r; +}, aa = () => { +}, ia = (e, t) => (e = +e, Number.isFinite(e) ? e : t), Ft = "abcdefghijklmnopqrstuvwxyz", Ar = "0123456789", un = { + DIGIT: Ar, + ALPHA: Ft, + ALPHA_DIGIT: Ft + Ft.toUpperCase() + Ar +}, oa = (e = 16, t = un.ALPHA_DIGIT) => { + let r = ""; + const { length: n } = t; + for (; e--; ) + r += t[Math.random() * n | 0]; + return r; +}; +function la(e) { + return !!(e && H(e.append) && e[Symbol.toStringTag] === "FormData" && e[Symbol.iterator]); +} +const ua = (e) => { + const t = new Array(10), r = (n, s) => { + if (_t(n)) { + if (t.indexOf(n) >= 0) + return; + if (!("toJSON" in n)) { + t[s] = n; + const a = Ne(n) ? [] : {}; + return Ge(n, (i, u) => { + const o = r(i, s + 1); + !Be(o) && (a[u] = o); + }), t[s] = void 0, a; + } + } + return n; + }; + return r(e, 0); +}, ca = ee("AsyncFunction"), ha = (e) => e && (_t(e) || H(e)) && H(e.then) && H(e.catch), c = { + isArray: Ne, + isArrayBuffer: rn, + isBuffer: As, + isFormData: js, + isArrayBufferView: Ys, + isString: Cs, + isNumber: nn, + isBoolean: Fs, + isObject: _t, + isPlainObject: rt, + isUndefined: Be, + isDate: Ls, + isFile: Is, + isBlob: Us, + isRegExp: ra, + isFunction: H, + isStream: Bs, + isURLSearchParams: Hs, + isTypedArray: Zs, + isFileList: Ws, + forEach: Ge, + merge: Gt, + extend: Vs, + trim: qs, + stripBOM: Gs, + inherits: $s, + toFlatObject: zs, + kindOf: yt, + kindOfTest: ee, + endsWith: Ks, + toArray: Js, + forEachEntry: Qs, + matchAll: Xs, + isHTMLForm: ea, + hasOwnProperty: Nr, + hasOwnProp: Nr, + // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors: ln, + freezeMethods: na, + toObjectSet: sa, + toCamelCase: ta, + noop: aa, + toFiniteNumber: ia, + findKey: sn, + global: an, + isContextDefined: on, + ALPHABET: un, + generateString: oa, + isSpecCompliantForm: la, + toJSONObject: ua, + isAsyncFn: ca, + isThenable: ha +}; +function O(e, t, r, n, s) { + Error.call(this), Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : this.stack = new Error().stack, this.message = e, this.name = "AxiosError", t && (this.code = t), r && (this.config = r), n && (this.request = n), s && (this.response = s); +} +c.inherits(O, Error, { + toJSON: function() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: c.toJSONObject(this.config), + code: this.code, + status: this.response && this.response.status ? this.response.status : null + }; + } +}); +const cn = O.prototype, hn = {}; +[ + "ERR_BAD_OPTION_VALUE", + "ERR_BAD_OPTION", + "ECONNABORTED", + "ETIMEDOUT", + "ERR_NETWORK", + "ERR_FR_TOO_MANY_REDIRECTS", + "ERR_DEPRECATED", + "ERR_BAD_RESPONSE", + "ERR_BAD_REQUEST", + "ERR_CANCELED", + "ERR_NOT_SUPPORT", + "ERR_INVALID_URL" + // eslint-disable-next-line func-names +].forEach((e) => { + hn[e] = { value: e }; +}); +Object.defineProperties(O, hn); +Object.defineProperty(cn, "isAxiosError", { value: !0 }); +O.from = (e, t, r, n, s, a) => { + const i = Object.create(cn); + return c.toFlatObject(e, i, function(u) { + return u !== Error.prototype; + }, (u) => u !== "isAxiosError"), O.call(i, e.message, t, r, n, s), i.cause = e, i.name = e.name, a && Object.assign(i, a), i; +}; +const da = null; +function $t(e) { + return c.isPlainObject(e) || c.isArray(e); +} +function dn(e) { + return c.endsWith(e, "[]") ? e.slice(0, -2) : e; +} +function Yr(e, t, r) { + return e ? e.concat(t).map(function(n, s) { + return n = dn(n), !r && s ? "[" + n + "]" : n; + }).join(r ? "." : "") : t; +} +function fa(e) { + return c.isArray(e) && !e.some($t); +} +const pa = c.toFlatObject(c, {}, null, function(e) { + return /^is[A-Z]/.test(e); +}); +function wt(e, t, r) { + if (!c.isObject(e)) + throw new TypeError("target must be an object"); + t = t || new FormData(), r = c.toFlatObject(r, { + metaTokens: !0, + dots: !1, + indexes: !1 + }, !1, function(y, x) { + return !c.isUndefined(x[y]); + }); + const n = r.metaTokens, s = r.visitor || d, a = r.dots, i = r.indexes, u = (r.Blob || typeof Blob < "u" && Blob) && c.isSpecCompliantForm(t); + if (!c.isFunction(s)) + throw new TypeError("visitor must be a function"); + function o(y) { + if (y === null) + return ""; + if (c.isDate(y)) + return y.toISOString(); + if (!u && c.isBlob(y)) + throw new O("Blob is not supported. Use a Buffer instead."); + return c.isArrayBuffer(y) || c.isTypedArray(y) ? u && typeof Blob == "function" ? new Blob([y]) : Buffer.from(y) : y; + } + function d(y, x, ne) { + let fe = y; + if (y && !ne && typeof y == "object") { + if (c.endsWith(x, "{}")) + x = n ? x : x.slice(0, -2), y = JSON.stringify(y); + else if (c.isArray(y) && fa(y) || (c.isFileList(y) || c.endsWith(x, "[]")) && (fe = c.toArray(y))) + return x = dn(x), fe.forEach(function(Ct, Ms) { + !(c.isUndefined(Ct) || Ct === null) && t.append( + // eslint-disable-next-line no-nested-ternary + i === !0 ? Yr([x], Ms, a) : i === null ? x : x + "[]", + o(Ct) + ); + }), !1; + } + return $t(y) ? !0 : (t.append(Yr(ne, x, a), o(y)), !1); + } + const f = [], w = Object.assign(pa, { + defaultVisitor: d, + convertValue: o, + isVisitable: $t + }); + function k(y, x) { + if (!c.isUndefined(y)) { + if (f.indexOf(y) !== -1) + throw Error("Circular reference detected in " + x.join(".")); + f.push(y), c.forEach(y, function(ne, fe) { + (!(c.isUndefined(ne) || ne === null) && s.call( + t, + ne, + c.isString(fe) ? fe.trim() : fe, + x, + w + )) === !0 && k(ne, x ? x.concat(fe) : [fe]); + }), f.pop(); + } + } + if (!c.isObject(e)) + throw new TypeError("data must be an object"); + return k(e), t; +} +function Cr(e) { + const t = { + "!": "%21", + "'": "%27", + "(": "%28", + ")": "%29", + "~": "%7E", + "%20": "+", + "%00": "\0" + }; + return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g, function(r) { + return t[r]; + }); +} +function lr(e, t) { + this._pairs = [], e && wt(e, this, t); +} +const fn = lr.prototype; +fn.append = function(e, t) { + this._pairs.push([e, t]); +}; +fn.toString = function(e) { + const t = e ? function(r) { + return e.call(this, r, Cr); + } : Cr; + return this._pairs.map(function(r) { + return t(r[0]) + "=" + t(r[1]); + }, "").join("&"); +}; +function ma(e) { + return encodeURIComponent(e).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]"); +} +function pn(e, t, r) { + if (!t) + return e; + const n = r && r.encode || ma, s = r && r.serialize; + let a; + if (s ? a = s(t, r) : a = c.isURLSearchParams(t) ? t.toString() : new lr(t, r).toString(n), a) { + const i = e.indexOf("#"); + i !== -1 && (e = e.slice(0, i)), e += (e.indexOf("?") === -1 ? "?" : "&") + a; + } + return e; +} +class ya { + constructor() { + this.handlers = []; + } + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ + use(t, r, n) { + return this.handlers.push({ + fulfilled: t, + rejected: r, + synchronous: n ? n.synchronous : !1, + runWhen: n ? n.runWhen : null + }), this.handlers.length - 1; + } + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise + */ + eject(t) { + this.handlers[t] && (this.handlers[t] = null); + } + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + clear() { + this.handlers && (this.handlers = []); + } + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + forEach(t) { + c.forEach(this.handlers, function(r) { + r !== null && t(r); + }); + } +} +const Fr = ya, mn = { + silentJSONParsing: !0, + forcedJSONParsing: !0, + clarifyTimeoutError: !1 +}, ga = typeof URLSearchParams < "u" ? URLSearchParams : lr, _a = typeof FormData < "u" ? FormData : null, wa = typeof Blob < "u" ? Blob : null, ba = (() => { + let e; + return typeof navigator < "u" && ((e = navigator.product) === "ReactNative" || e === "NativeScript" || e === "NS") ? !1 : typeof window < "u" && typeof document < "u"; +})(), ka = (() => typeof WorkerGlobalScope < "u" && // eslint-disable-next-line no-undef +self instanceof WorkerGlobalScope && typeof self.importScripts == "function")(), Z = { + isBrowser: !0, + classes: { + URLSearchParams: ga, + FormData: _a, + Blob: wa + }, + isStandardBrowserEnv: ba, + isStandardBrowserWebWorkerEnv: ka, + protocols: ["http", "https", "file", "blob", "url", "data"] +}; +function Sa(e, t) { + return wt(e, new Z.classes.URLSearchParams(), Object.assign({ + visitor: function(r, n, s, a) { + return Z.isNode && c.isBuffer(r) ? (this.append(n, r.toString("base64")), !1) : a.defaultVisitor.apply(this, arguments); + } + }, t)); +} +function Oa(e) { + return c.matchAll(/\w+|\[(\w*)]/g, e).map((t) => t[0] === "[]" ? "" : t[1] || t[0]); +} +function va(e) { + const t = {}, r = Object.keys(e); + let n; + const s = r.length; + let a; + for (n = 0; n < s; n++) + a = r[n], t[a] = e[a]; + return t; +} +function yn(e) { + function t(r, n, s, a) { + let i = r[a++]; + const u = Number.isFinite(+i), o = a >= r.length; + return i = !i && c.isArray(s) ? s.length : i, o ? (c.hasOwnProp(s, i) ? s[i] = [s[i], n] : s[i] = n, !u) : ((!s[i] || !c.isObject(s[i])) && (s[i] = []), t(r, n, s[i], a) && c.isArray(s[i]) && (s[i] = va(s[i])), !u); + } + if (c.isFormData(e) && c.isFunction(e.entries)) { + const r = {}; + return c.forEachEntry(e, (n, s) => { + t(Oa(n), s, r, 0); + }), r; + } + return null; +} +const Da = { + "Content-Type": void 0 +}; +function Ta(e, t, r) { + if (c.isString(e)) + try { + return (t || JSON.parse)(e), c.trim(e); + } catch (n) { + if (n.name !== "SyntaxError") + throw n; + } + return (r || JSON.stringify)(e); +} +const bt = { + transitional: mn, + adapter: ["xhr", "http"], + transformRequest: [function(e, t) { + const r = t.getContentType() || "", n = r.indexOf("application/json") > -1, s = c.isObject(e); + if (s && c.isHTMLForm(e) && (e = new FormData(e)), c.isFormData(e)) + return n && n ? JSON.stringify(yn(e)) : e; + if (c.isArrayBuffer(e) || c.isBuffer(e) || c.isStream(e) || c.isFile(e) || c.isBlob(e)) + return e; + if (c.isArrayBufferView(e)) + return e.buffer; + if (c.isURLSearchParams(e)) + return t.setContentType("application/x-www-form-urlencoded;charset=utf-8", !1), e.toString(); + let a; + if (s) { + if (r.indexOf("application/x-www-form-urlencoded") > -1) + return Sa(e, this.formSerializer).toString(); + if ((a = c.isFileList(e)) || r.indexOf("multipart/form-data") > -1) { + const i = this.env && this.env.FormData; + return wt( + a ? { "files[]": e } : e, + i && new i(), + this.formSerializer + ); + } + } + return s || n ? (t.setContentType("application/json", !1), Ta(e)) : e; + }], + transformResponse: [function(e) { + const t = this.transitional || bt.transitional, r = t && t.forcedJSONParsing, n = this.responseType === "json"; + if (e && c.isString(e) && (r && !this.responseType || n)) { + const s = !(t && t.silentJSONParsing) && n; + try { + return JSON.parse(e); + } catch (a) { + if (s) + throw a.name === "SyntaxError" ? O.from(a, O.ERR_BAD_RESPONSE, this, null, this.response) : a; + } + } + return e; + }], + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + xsrfCookieName: "XSRF-TOKEN", + xsrfHeaderName: "X-XSRF-TOKEN", + maxContentLength: -1, + maxBodyLength: -1, + env: { + FormData: Z.classes.FormData, + Blob: Z.classes.Blob + }, + validateStatus: function(e) { + return e >= 200 && e < 300; + }, + headers: { + common: { + Accept: "application/json, text/plain, */*" + } + } +}; +c.forEach(["delete", "get", "head"], function(e) { + bt.headers[e] = {}; +}); +c.forEach(["post", "put", "patch"], function(e) { + bt.headers[e] = c.merge(Da); +}); +const ur = bt, Ma = c.toObjectSet([ + "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" +]), Ea = (e) => { + const t = {}; + let r, n, s; + return e && e.split(` +`).forEach(function(a) { + s = a.indexOf(":"), r = a.substring(0, s).trim().toLowerCase(), n = a.substring(s + 1).trim(), !(!r || t[r] && Ma[r]) && (r === "set-cookie" ? t[r] ? t[r].push(n) : t[r] = [n] : t[r] = t[r] ? t[r] + ", " + n : n); + }), t; +}, Lr = Symbol("internals"); +function Ce(e) { + return e && String(e).trim().toLowerCase(); +} +function nt(e) { + return e === !1 || e == null ? e : c.isArray(e) ? e.map(nt) : String(e); +} +function Ra(e) { + const t = /* @__PURE__ */ Object.create(null), r = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let n; + for (; n = r.exec(e); ) + t[n[1]] = n[2]; + return t; +} +const xa = (e) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()); +function Lt(e, t, r, n, s) { + if (c.isFunction(n)) + return n.call(this, t, r); + if (s && (t = r), !!c.isString(t)) { + if (c.isString(n)) + return t.indexOf(n) !== -1; + if (c.isRegExp(n)) + return n.test(t); + } +} +function Pa(e) { + return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (t, r, n) => r.toUpperCase() + n); +} +function Na(e, t) { + const r = c.toCamelCase(" " + t); + ["get", "set", "has"].forEach((n) => { + Object.defineProperty(e, n + r, { + value: function(s, a, i) { + return this[n].call(this, t, s, a, i); + }, + configurable: !0 + }); + }); +} +let kt = class { + constructor(e) { + e && this.set(e); + } + set(e, t, r) { + const n = this; + function s(i, u, o) { + const d = Ce(u); + if (!d) + throw new Error("header name must be a non-empty string"); + const f = c.findKey(n, d); + (!f || n[f] === void 0 || o === !0 || o === void 0 && n[f] !== !1) && (n[f || u] = nt(i)); + } + const a = (i, u) => c.forEach(i, (o, d) => s(o, d, u)); + return c.isPlainObject(e) || e instanceof this.constructor ? a(e, t) : c.isString(e) && (e = e.trim()) && !xa(e) ? a(Ea(e), t) : e != null && s(t, e, r), this; + } + get(e, t) { + if (e = Ce(e), e) { + const r = c.findKey(this, e); + if (r) { + const n = this[r]; + if (!t) + return n; + if (t === !0) + return Ra(n); + if (c.isFunction(t)) + return t.call(this, n, r); + if (c.isRegExp(t)) + return t.exec(n); + throw new TypeError("parser must be boolean|regexp|function"); + } + } + } + has(e, t) { + if (e = Ce(e), e) { + const r = c.findKey(this, e); + return !!(r && this[r] !== void 0 && (!t || Lt(this, this[r], r, t))); + } + return !1; + } + delete(e, t) { + const r = this; + let n = !1; + function s(a) { + if (a = Ce(a), a) { + const i = c.findKey(r, a); + i && (!t || Lt(r, r[i], i, t)) && (delete r[i], n = !0); + } + } + return c.isArray(e) ? e.forEach(s) : s(e), n; + } + clear(e) { + const t = Object.keys(this); + let r = t.length, n = !1; + for (; r--; ) { + const s = t[r]; + (!e || Lt(this, this[s], s, e, !0)) && (delete this[s], n = !0); + } + return n; + } + normalize(e) { + const t = this, r = {}; + return c.forEach(this, (n, s) => { + const a = c.findKey(r, s); + if (a) { + t[a] = nt(n), delete t[s]; + return; + } + const i = e ? Pa(s) : String(s).trim(); + i !== s && delete t[s], t[i] = nt(n), r[i] = !0; + }), this; + } + concat(...e) { + return this.constructor.concat(this, ...e); + } + toJSON(e) { + const t = /* @__PURE__ */ Object.create(null); + return c.forEach(this, (r, n) => { + r != null && r !== !1 && (t[n] = e && c.isArray(r) ? r.join(", ") : r); + }), t; + } + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + toString() { + return Object.entries(this.toJSON()).map(([e, t]) => e + ": " + t).join(` +`); + } + get [Symbol.toStringTag]() { + return "AxiosHeaders"; + } + static from(e) { + return e instanceof this ? e : new this(e); + } + static concat(e, ...t) { + const r = new this(e); + return t.forEach((n) => r.set(n)), r; + } + static accessor(e) { + const t = (this[Lr] = this[Lr] = { + accessors: {} + }).accessors, r = this.prototype; + function n(s) { + const a = Ce(s); + t[a] || (Na(r, s), t[a] = !0); + } + return c.isArray(e) ? e.forEach(n) : n(e), this; + } +}; +kt.accessor(["Content-Type", "Content-Length", "Accept", "Accept-Encoding", "User-Agent", "Authorization"]); +c.freezeMethods(kt.prototype); +c.freezeMethods(kt); +const le = kt; +function It(e, t) { + const r = this || ur, n = t || r, s = le.from(n.headers); + let a = n.data; + return c.forEach(e, function(i) { + a = i.call(r, a, s.normalize(), t ? t.status : void 0); + }), s.normalize(), a; +} +function gn(e) { + return !!(e && e.__CANCEL__); +} +function $e(e, t, r) { + O.call(this, e ?? "canceled", O.ERR_CANCELED, t, r), this.name = "CanceledError"; +} +c.inherits($e, O, { + __CANCEL__: !0 +}); +function Aa(e, t, r) { + const n = r.config.validateStatus; + !r.status || !n || n(r.status) ? e(r) : t(new O( + "Request failed with status code " + r.status, + [O.ERR_BAD_REQUEST, O.ERR_BAD_RESPONSE][Math.floor(r.status / 100) - 4], + r.config, + r.request, + r + )); +} +const Ya = Z.isStandardBrowserEnv ? ( + // Standard browser envs support document.cookie + function() { + return { + write: function(e, t, r, n, s, a) { + const i = []; + i.push(e + "=" + encodeURIComponent(t)), c.isNumber(r) && i.push("expires=" + new Date(r).toGMTString()), c.isString(n) && i.push("path=" + n), c.isString(s) && i.push("domain=" + s), a === !0 && i.push("secure"), document.cookie = i.join("; "); + }, + read: function(e) { + const t = document.cookie.match(new RegExp("(^|;\\s*)(" + e + ")=([^;]*)")); + return t ? decodeURIComponent(t[3]) : null; + }, + remove: function(e) { + this.write(e, "", Date.now() - 864e5); + } + }; + }() +) : ( + // Non standard browser env (web workers, react-native) lack needed support. + function() { + return { + write: function() { + }, + read: function() { + return null; + }, + remove: function() { + } + }; + }() +); +function Ca(e) { + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(e); +} +function Fa(e, t) { + return t ? e.replace(/\/+$/, "") + "/" + t.replace(/^\/+/, "") : e; +} +function _n(e, t) { + return e && !Ca(t) ? Fa(e, t) : t; +} +const La = Z.isStandardBrowserEnv ? ( + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + function() { + const e = /(msie|trident)/i.test(navigator.userAgent), t = document.createElement("a"); + let r; + function n(s) { + let a = s; + return e && (t.setAttribute("href", a), a = t.href), t.setAttribute("href", a), { + href: t.href, + protocol: t.protocol ? t.protocol.replace(/:$/, "") : "", + host: t.host, + search: t.search ? t.search.replace(/^\?/, "") : "", + hash: t.hash ? t.hash.replace(/^#/, "") : "", + hostname: t.hostname, + port: t.port, + pathname: t.pathname.charAt(0) === "/" ? t.pathname : "/" + t.pathname + }; + } + return r = n(window.location.href), function(s) { + const a = c.isString(s) ? n(s) : s; + return a.protocol === r.protocol && a.host === r.host; + }; + }() +) : ( + // Non standard browser envs (web workers, react-native) lack needed support. + function() { + return function() { + return !0; + }; + }() +); +function Ia(e) { + const t = /^([-+\w]{1,25})(:?\/\/|:)/.exec(e); + return t && t[1] || ""; +} +function Ua(e, t) { + e = e || 10; + const r = new Array(e), n = new Array(e); + let s = 0, a = 0, i; + return t = t !== void 0 ? t : 1e3, function(u) { + const o = Date.now(), d = n[a]; + i || (i = o), r[s] = u, n[s] = o; + let f = a, w = 0; + for (; f !== s; ) + w += r[f++], f = f % e; + if (s = (s + 1) % e, s === a && (a = (a + 1) % e), o - i < t) + return; + const k = d && o - d; + return k ? Math.round(w * 1e3 / k) : void 0; + }; +} +function Ir(e, t) { + let r = 0; + const n = Ua(50, 250); + return (s) => { + const a = s.loaded, i = s.lengthComputable ? s.total : void 0, u = a - r, o = n(u), d = a <= i; + r = a; + const f = { + loaded: a, + total: i, + progress: i ? a / i : void 0, + bytes: u, + rate: o || void 0, + estimated: o && i && d ? (i - a) / o : void 0, + event: s + }; + f[t ? "download" : "upload"] = !0, e(f); + }; +} +const Wa = typeof XMLHttpRequest < "u", Ba = Wa && function(e) { + return new Promise(function(t, r) { + let n = e.data; + const s = le.from(e.headers).normalize(), a = e.responseType; + let i; + function u() { + e.cancelToken && e.cancelToken.unsubscribe(i), e.signal && e.signal.removeEventListener("abort", i); + } + c.isFormData(n) && (Z.isStandardBrowserEnv || Z.isStandardBrowserWebWorkerEnv ? s.setContentType(!1) : s.setContentType("multipart/form-data;", !1)); + let o = new XMLHttpRequest(); + if (e.auth) { + const k = e.auth.username || "", y = e.auth.password ? unescape(encodeURIComponent(e.auth.password)) : ""; + s.set("Authorization", "Basic " + btoa(k + ":" + y)); + } + const d = _n(e.baseURL, e.url); + o.open(e.method.toUpperCase(), pn(d, e.params, e.paramsSerializer), !0), o.timeout = e.timeout; + function f() { + if (!o) + return; + const k = le.from( + "getAllResponseHeaders" in o && o.getAllResponseHeaders() + ), y = { + data: !a || a === "text" || a === "json" ? o.responseText : o.response, + status: o.status, + statusText: o.statusText, + headers: k, + config: e, + request: o + }; + Aa(function(x) { + t(x), u(); + }, function(x) { + r(x), u(); + }, y), o = null; + } + if ("onloadend" in o ? o.onloadend = f : o.onreadystatechange = function() { + !o || o.readyState !== 4 || o.status === 0 && !(o.responseURL && o.responseURL.indexOf("file:") === 0) || setTimeout(f); + }, o.onabort = function() { + o && (r(new O("Request aborted", O.ECONNABORTED, e, o)), o = null); + }, o.onerror = function() { + r(new O("Network Error", O.ERR_NETWORK, e, o)), o = null; + }, o.ontimeout = function() { + let k = e.timeout ? "timeout of " + e.timeout + "ms exceeded" : "timeout exceeded"; + const y = e.transitional || mn; + e.timeoutErrorMessage && (k = e.timeoutErrorMessage), r(new O( + k, + y.clarifyTimeoutError ? O.ETIMEDOUT : O.ECONNABORTED, + e, + o + )), o = null; + }, Z.isStandardBrowserEnv) { + const k = (e.withCredentials || La(d)) && e.xsrfCookieName && Ya.read(e.xsrfCookieName); + k && s.set(e.xsrfHeaderName, k); + } + n === void 0 && s.setContentType(null), "setRequestHeader" in o && c.forEach(s.toJSON(), function(k, y) { + o.setRequestHeader(y, k); + }), c.isUndefined(e.withCredentials) || (o.withCredentials = !!e.withCredentials), a && a !== "json" && (o.responseType = e.responseType), typeof e.onDownloadProgress == "function" && o.addEventListener("progress", Ir(e.onDownloadProgress, !0)), typeof e.onUploadProgress == "function" && o.upload && o.upload.addEventListener("progress", Ir(e.onUploadProgress)), (e.cancelToken || e.signal) && (i = (k) => { + o && (r(!k || k.type ? new $e(null, e, o) : k), o.abort(), o = null); + }, e.cancelToken && e.cancelToken.subscribe(i), e.signal && (e.signal.aborted ? i() : e.signal.addEventListener("abort", i))); + const w = Ia(d); + if (w && Z.protocols.indexOf(w) === -1) { + r(new O("Unsupported protocol " + w + ":", O.ERR_BAD_REQUEST, e)); + return; + } + o.send(n || null); + }); +}, st = { + http: da, + xhr: Ba +}; +c.forEach(st, (e, t) => { + if (e) { + try { + Object.defineProperty(e, "name", { value: t }); + } catch { + } + Object.defineProperty(e, "adapterName", { value: t }); + } +}); +const ja = { + getAdapter: (e) => { + e = c.isArray(e) ? e : [e]; + const { length: t } = e; + let r, n; + for (let s = 0; s < t && (r = e[s], !(n = c.isString(r) ? st[r.toLowerCase()] : r)); s++) + ; + if (!n) + throw n === !1 ? new O( + `Adapter ${r} is not supported by the environment`, + "ERR_NOT_SUPPORT" + ) : new Error( + c.hasOwnProp(st, r) ? `Adapter '${r}' is not available in the build` : `Unknown adapter '${r}'` + ); + if (!c.isFunction(n)) + throw new TypeError("adapter is not a function"); + return n; + }, + adapters: st +}; +function Ut(e) { + if (e.cancelToken && e.cancelToken.throwIfRequested(), e.signal && e.signal.aborted) + throw new $e(null, e); +} +function Ur(e) { + return Ut(e), e.headers = le.from(e.headers), e.data = It.call( + e, + e.transformRequest + ), ["post", "put", "patch"].indexOf(e.method) !== -1 && e.headers.setContentType("application/x-www-form-urlencoded", !1), ja.getAdapter(e.adapter || ur.adapter)(e).then(function(t) { + return Ut(e), t.data = It.call( + e, + e.transformResponse, + t + ), t.headers = le.from(t.headers), t; + }, function(t) { + return gn(t) || (Ut(e), t && t.response && (t.response.data = It.call( + e, + e.transformResponse, + t.response + ), t.response.headers = le.from(t.response.headers))), Promise.reject(t); + }); +} +const Wr = (e) => e instanceof le ? e.toJSON() : e; +function Pe(e, t) { + t = t || {}; + const r = {}; + function n(d, f, w) { + return c.isPlainObject(d) && c.isPlainObject(f) ? c.merge.call({ caseless: w }, d, f) : c.isPlainObject(f) ? c.merge({}, f) : c.isArray(f) ? f.slice() : f; + } + function s(d, f, w) { + if (c.isUndefined(f)) { + if (!c.isUndefined(d)) + return n(void 0, d, w); + } else + return n(d, f, w); + } + function a(d, f) { + if (!c.isUndefined(f)) + return n(void 0, f); + } + function i(d, f) { + if (c.isUndefined(f)) { + if (!c.isUndefined(d)) + return n(void 0, d); + } else + return n(void 0, f); + } + function u(d, f, w) { + if (w in t) + return n(d, f); + if (w in e) + return n(void 0, d); + } + const o = { + url: a, + method: a, + data: a, + baseURL: i, + transformRequest: i, + transformResponse: i, + paramsSerializer: i, + timeout: i, + timeoutMessage: i, + withCredentials: i, + adapter: i, + responseType: i, + xsrfCookieName: i, + xsrfHeaderName: i, + onUploadProgress: i, + onDownloadProgress: i, + decompress: i, + maxContentLength: i, + maxBodyLength: i, + beforeRedirect: i, + transport: i, + httpAgent: i, + httpsAgent: i, + cancelToken: i, + socketPath: i, + responseEncoding: i, + validateStatus: u, + headers: (d, f) => s(Wr(d), Wr(f), !0) + }; + return c.forEach(Object.keys(Object.assign({}, e, t)), function(d) { + const f = o[d] || s, w = f(e[d], t[d], d); + c.isUndefined(w) && f !== u || (r[d] = w); + }), r; +} +const wn = "1.4.0", cr = {}; +["object", "boolean", "number", "function", "string", "symbol"].forEach((e, t) => { + cr[e] = function(r) { + return typeof r === e || "a" + (t < 1 ? "n " : " ") + e; + }; +}); +const Br = {}; +cr.transitional = function(e, t, r) { + function n(s, a) { + return "[Axios v" + wn + "] Transitional option '" + s + "'" + a + (r ? ". " + r : ""); + } + return (s, a, i) => { + if (e === !1) + throw new O( + n(a, " has been removed" + (t ? " in " + t : "")), + O.ERR_DEPRECATED + ); + return t && !Br[a] && (Br[a] = !0, console.warn( + n( + a, + " has been deprecated since v" + t + " and will be removed in the near future" + ) + )), e ? e(s, a, i) : !0; + }; +}; +function Ha(e, t, r) { + if (typeof e != "object") + throw new O("options must be an object", O.ERR_BAD_OPTION_VALUE); + const n = Object.keys(e); + let s = n.length; + for (; s-- > 0; ) { + const a = n[s], i = t[a]; + if (i) { + const u = e[a], o = u === void 0 || i(u, a, e); + if (o !== !0) + throw new O("option " + a + " must be " + o, O.ERR_BAD_OPTION_VALUE); + continue; + } + if (r !== !0) + throw new O("Unknown option " + a, O.ERR_BAD_OPTION); + } +} +const zt = { + assertOptions: Ha, + validators: cr +}, pe = zt.validators; +let ut = class { + constructor(e) { + this.defaults = e, this.interceptors = { + request: new Fr(), + response: new Fr() + }; + } + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + request(e, t) { + typeof e == "string" ? (t = t || {}, t.url = e) : t = e || {}, t = Pe(this.defaults, t); + const { transitional: r, paramsSerializer: n, headers: s } = t; + r !== void 0 && zt.assertOptions(r, { + silentJSONParsing: pe.transitional(pe.boolean), + forcedJSONParsing: pe.transitional(pe.boolean), + clarifyTimeoutError: pe.transitional(pe.boolean) + }, !1), n != null && (c.isFunction(n) ? t.paramsSerializer = { + serialize: n + } : zt.assertOptions(n, { + encode: pe.function, + serialize: pe.function + }, !0)), t.method = (t.method || this.defaults.method || "get").toLowerCase(); + let a; + a = s && c.merge( + s.common, + s[t.method] + ), a && c.forEach( + ["delete", "get", "head", "post", "put", "patch", "common"], + (y) => { + delete s[y]; + } + ), t.headers = le.concat(a, s); + const i = []; + let u = !0; + this.interceptors.request.forEach(function(y) { + typeof y.runWhen == "function" && y.runWhen(t) === !1 || (u = u && y.synchronous, i.unshift(y.fulfilled, y.rejected)); + }); + const o = []; + this.interceptors.response.forEach(function(y) { + o.push(y.fulfilled, y.rejected); + }); + let d, f = 0, w; + if (!u) { + const y = [Ur.bind(this), void 0]; + for (y.unshift.apply(y, i), y.push.apply(y, o), w = y.length, d = Promise.resolve(t); f < w; ) + d = d.then(y[f++], y[f++]); + return d; + } + w = i.length; + let k = t; + for (f = 0; f < w; ) { + const y = i[f++], x = i[f++]; + try { + k = y(k); + } catch (ne) { + x.call(this, ne); + break; + } + } + try { + d = Ur.call(this, k); + } catch (y) { + return Promise.reject(y); + } + for (f = 0, w = o.length; f < w; ) + d = d.then(o[f++], o[f++]); + return d; + } + getUri(e) { + e = Pe(this.defaults, e); + const t = _n(e.baseURL, e.url); + return pn(t, e.params, e.paramsSerializer); + } +}; +c.forEach(["delete", "get", "head", "options"], function(e) { + ut.prototype[e] = function(t, r) { + return this.request(Pe(r || {}, { + method: e, + url: t, + data: (r || {}).data + })); + }; +}); +c.forEach(["post", "put", "patch"], function(e) { + function t(r) { + return function(n, s, a) { + return this.request(Pe(a || {}, { + method: e, + headers: r ? { + "Content-Type": "multipart/form-data" + } : {}, + url: n, + data: s + })); + }; + } + ut.prototype[e] = t(), ut.prototype[e + "Form"] = t(!0); +}); +const at = ut; +let qa = class bn { + constructor(t) { + if (typeof t != "function") + throw new TypeError("executor must be a function."); + let r; + this.promise = new Promise(function(s) { + r = s; + }); + const n = this; + this.promise.then((s) => { + if (!n._listeners) + return; + let a = n._listeners.length; + for (; a-- > 0; ) + n._listeners[a](s); + n._listeners = null; + }), this.promise.then = (s) => { + let a; + const i = new Promise((u) => { + n.subscribe(u), a = u; + }).then(s); + return i.cancel = function() { + n.unsubscribe(a); + }, i; + }, t(function(s, a, i) { + n.reason || (n.reason = new $e(s, a, i), r(n.reason)); + }); + } + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + throwIfRequested() { + if (this.reason) + throw this.reason; + } + /** + * Subscribe to the cancel signal + */ + subscribe(t) { + if (this.reason) { + t(this.reason); + return; + } + this._listeners ? this._listeners.push(t) : this._listeners = [t]; + } + /** + * Unsubscribe from the cancel signal + */ + unsubscribe(t) { + if (!this._listeners) + return; + const r = this._listeners.indexOf(t); + r !== -1 && this._listeners.splice(r, 1); + } + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + static source() { + let t; + return { + token: new bn(function(r) { + t = r; + }), + cancel: t + }; + } +}; +const Va = qa; +function Ga(e) { + return function(t) { + return e.apply(null, t); + }; +} +function $a(e) { + return c.isObject(e) && e.isAxiosError === !0; +} +const Kt = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511 +}; +Object.entries(Kt).forEach(([e, t]) => { + Kt[t] = e; +}); +const za = Kt; +function kn(e) { + const t = new at(e), r = tn(at.prototype.request, t); + return c.extend(r, at.prototype, t, { allOwnKeys: !0 }), c.extend(r, t, null, { allOwnKeys: !0 }), r.create = function(n) { + return kn(Pe(e, n)); + }, r; +} +const Y = kn(ur); +Y.Axios = at; +Y.CanceledError = $e; +Y.CancelToken = Va; +Y.isCancel = gn; +Y.VERSION = wn; +Y.toFormData = wt; +Y.AxiosError = O; +Y.Cancel = Y.CanceledError; +Y.all = function(e) { + return Promise.all(e); +}; +Y.spread = Ga; +Y.isAxiosError = $a; +Y.mergeConfig = Pe; +Y.AxiosHeaders = le; +Y.formToJSON = (e) => yn(c.isHTMLForm(e) ? new FormData(e) : e); +Y.HttpStatusCode = za; +Y.default = Y; +const Sn = Y, { + Axios: bh, + AxiosError: kh, + CanceledError: Sh, + isCancel: Oh, + CancelToken: vh, + VERSION: Dh, + all: Th, + Cancel: Mh, + isAxiosError: Eh, + spread: Rh, + toFormData: xh, + AxiosHeaders: Ph, + HttpStatusCode: Ka, + formToJSON: Nh, + mergeConfig: Ah +} = Sn, Ja = /"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/, Za = /"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/, Qa = /^\s*["[{]|^\s*-?\d[\d.]{0,14}\s*$/; +function Xa(e, t) { + if (e === "__proto__" || e === "constructor" && t && typeof t == "object" && "prototype" in t) { + ei(e); + return; + } + return t; +} +function ei(e) { + console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`); +} +function ti(e, t = {}) { + if (typeof e != "string") + return e; + const r = e.trim(); + if (e[0] === '"' && e[e.length - 1] === '"') + return r.slice(1, -1); + const n = r.toLowerCase(); + if (n === "true") + return !0; + if (n === "false") + return !1; + if (n !== "undefined") { + if (n === "null") + return null; + if (n === "nan") + return Number.NaN; + if (n === "infinity") + return Number.POSITIVE_INFINITY; + if (n === "-infinity") + return Number.NEGATIVE_INFINITY; + if (!Qa.test(e)) { + if (t.strict) + throw new SyntaxError("[destr] Invalid JSON"); + return e; + } + try { + if (Ja.test(e) || Za.test(e)) { + if (t.strict) + throw new Error("[destr] Possible prototype pollution"); + return JSON.parse(e, Xa); + } + return JSON.parse(e); + } catch (s) { + if (t.strict) + throw s; + return e; + } + } +} +const ri = /#/g, ni = /&/g, si = /=/g, hr = /\+/g, ai = /%5e/gi, ii = /%60/gi, oi = /%7c/gi, li = /%20/gi; +function ui(e) { + return encodeURI("" + e).replace(oi, "|"); +} +function Jt(e) { + return ui(typeof e == "string" ? e : JSON.stringify(e)).replace(hr, "%2B").replace(li, "+").replace(ri, "%23").replace(ni, "%26").replace(ii, "`").replace(ai, "^"); +} +function Wt(e) { + return Jt(e).replace(si, "%3D"); +} +function On(e = "") { + try { + return decodeURIComponent("" + e); + } catch { + return "" + e; + } +} +function ci(e) { + return On(e.replace(hr, " ")); +} +function hi(e) { + return On(e.replace(hr, " ")); +} +function di(e = "") { + const t = {}; + e[0] === "?" && (e = e.slice(1)); + for (const r of e.split("&")) { + const n = r.match(/([^=]+)=?(.*)/) || []; + if (n.length < 2) + continue; + const s = ci(n[1]); + if (s === "__proto__" || s === "constructor") + continue; + const a = hi(n[2] || ""); + t[s] === void 0 ? t[s] = a : Array.isArray(t[s]) ? t[s].push(a) : t[s] = [t[s], a]; + } + return t; +} +function fi(e, t) { + return (typeof t == "number" || typeof t == "boolean") && (t = String(t)), t ? Array.isArray(t) ? t.map((r) => `${Wt(e)}=${Jt(r)}`).join("&") : `${Wt(e)}=${Jt(t)}` : Wt(e); +} +function pi(e) { + return Object.keys(e).filter((t) => e[t] !== void 0).map((t) => fi(t, e[t])).filter(Boolean).join("&"); +} +const mi = /^\w{2,}:([/\\]{1,2})/, yi = /^\w{2,}:([/\\]{2})?/, gi = /^([/\\]\s*){2,}[^/\\]/; +function vn(e, t = {}) { + return typeof t == "boolean" && (t = { acceptRelative: t }), t.strict ? mi.test(e) : yi.test(e) || (t.acceptRelative ? gi.test(e) : !1); +} +const _i = /\/$|\/\?/; +function Zt(e = "", t = !1) { + return t ? _i.test(e) : e.endsWith("/"); +} +function wi(e = "", t = !1) { + if (!t) + return (Zt(e) ? e.slice(0, -1) : e) || "/"; + if (!Zt(e, !0)) + return e || "/"; + const [r, ...n] = e.split("?"); + return (r.slice(0, -1) || "/") + (n.length > 0 ? `?${n.join("?")}` : ""); +} +function bi(e = "", t = !1) { + if (!t) + return e.endsWith("/") ? e : e + "/"; + if (Zt(e, !0)) + return e || "/"; + const [r, ...n] = e.split("?"); + return r + "/" + (n.length > 0 ? `?${n.join("?")}` : ""); +} +function ki(e, t) { + if (Oi(t) || vn(e)) + return e; + const r = wi(t); + return e.startsWith(r) ? e : Ti(r, e); +} +function Si(e, t) { + const r = Dn(e), n = { ...di(r.search), ...t }; + return r.search = pi(n), Mi(r); +} +function Oi(e) { + return !e || e === "/"; +} +function vi(e) { + return e && e !== "/"; +} +const Di = /^\.?\//; +function Ti(e, ...t) { + let r = e || ""; + for (const n of t.filter((s) => vi(s))) + if (r) { + const s = n.replace(Di, ""); + r = bi(r) + s; + } else + r = n; + return r; +} +function Dn(e = "", t) { + if (!vn(e, { acceptRelative: !0 })) + return t ? Dn(t + e) : jr(e); + const [r = "", n, s = ""] = (e.replace(/\\/g, "/").match(/([^/:]+:)?\/\/([^/@]+@)?(.*)/) || []).splice(1), [a = "", i = ""] = (s.match(/([^#/?]*)(.*)?/) || []).splice(1), { pathname: u, search: o, hash: d } = jr( + i.replace(/\/(?=[A-Za-z]:)/, "") + ); + return { + protocol: r, + auth: n ? n.slice(0, Math.max(0, n.length - 1)) : "", + host: a, + pathname: u, + search: o, + hash: d + }; +} +function jr(e = "") { + const [t = "", r = "", n = ""] = (e.match(/([^#?]*)(\?[^#]*)?(#.*)?/) || []).splice(1); + return { + pathname: t, + search: r, + hash: n + }; +} +function Mi(e) { + const t = e.pathname + (e.search ? (e.search.startsWith("?") ? "" : "?") + e.search : "") + e.hash; + return e.protocol ? e.protocol + "//" + (e.auth ? e.auth + "@" : "") + e.host + t : t; +} +class Ei extends Error { + constructor() { + super(...arguments), this.name = "FetchError"; + } +} +function Ri(e, t, r) { + let n = ""; + t && (n = t.message), e && r ? n = `${n} (${r.status} ${r.statusText} (${e.toString()}))` : e && (n = `${n} (${e.toString()})`); + const s = new Ei(n); + return Object.defineProperty(s, "request", { + get() { + return e; + } + }), Object.defineProperty(s, "response", { + get() { + return r; + } + }), Object.defineProperty(s, "data", { + get() { + return r && r._data; + } + }), Object.defineProperty(s, "status", { + get() { + return r && r.status; + } + }), Object.defineProperty(s, "statusText", { + get() { + return r && r.statusText; + } + }), Object.defineProperty(s, "statusCode", { + get() { + return r && r.status; + } + }), Object.defineProperty(s, "statusMessage", { + get() { + return r && r.statusText; + } + }), s; +} +const xi = new Set( + Object.freeze(["PATCH", "POST", "PUT", "DELETE"]) +); +function Hr(e = "GET") { + return xi.has(e.toUpperCase()); +} +function Pi(e) { + if (e === void 0) + return !1; + const t = typeof e; + return t === "string" || t === "number" || t === "boolean" || t === null ? !0 : t !== "object" ? !1 : Array.isArray(e) ? !0 : e.constructor && e.constructor.name === "Object" || typeof e.toJSON == "function"; +} +const Ni = /* @__PURE__ */ new Set([ + "image/svg", + "application/xml", + "application/xhtml", + "application/html" +]), Ai = /^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i; +function Yi(e = "") { + if (!e) + return "json"; + const t = e.split(";").shift() || ""; + return Ai.test(t) ? "json" : Ni.has(t) || t.startsWith("text/") ? "text" : "blob"; +} +function Ci(e, t, r = globalThis.Headers) { + const n = { + ...t, + ...e + }; + if (t != null && t.params && e != null && e.params && (n.params = { + ...t == null ? void 0 : t.params, + ...e == null ? void 0 : e.params + }), t != null && t.query && e != null && e.query && (n.query = { + ...t == null ? void 0 : t.query, + ...e == null ? void 0 : e.query + }), t != null && t.headers && e != null && e.headers) { + n.headers = new r((t == null ? void 0 : t.headers) || {}); + for (const [s, a] of new r((e == null ? void 0 : e.headers) || {})) + n.headers.set(s, a); + } + return n; +} +const Fi = /* @__PURE__ */ new Set([ + 408, + // Request Timeout + 409, + // Conflict + 425, + // Too Early + 429, + // Too Many Requests + 500, + // Internal Server Error + 502, + // Bad Gateway + 503, + // Service Unavailable + 504 + // Gateway Timeout +]); +function Tn(e) { + const { fetch: t, Headers: r } = e; + function n(i) { + const u = i.error && i.error.name === "AbortError" || !1; + if (i.options.retry !== !1 && !u) { + let d; + typeof i.options.retry == "number" ? d = i.options.retry : d = Hr(i.options.method) ? 0 : 1; + const f = i.response && i.response.status || 500; + if (d > 0 && Fi.has(f)) + return s(i.request, { + ...i.options, + retry: d - 1 + }); + } + const o = Ri( + i.request, + i.error, + i.response + ); + throw Error.captureStackTrace && Error.captureStackTrace(o, s), o; + } + const s = async function(i, u = {}) { + const o = { + request: i, + options: Ci(u, e.defaults, r), + response: void 0, + error: void 0 + }; + o.options.onRequest && await o.options.onRequest(o), typeof o.request == "string" && (o.options.baseURL && (o.request = ki(o.request, o.options.baseURL)), (o.options.query || o.options.params) && (o.request = Si(o.request, { + ...o.options.params, + ...o.options.query + })), o.options.body && Hr(o.options.method) && Pi(o.options.body) && (o.options.body = typeof o.options.body == "string" ? o.options.body : JSON.stringify(o.options.body), o.options.headers = new r(o.options.headers || {}), o.options.headers.has("content-type") || o.options.headers.set("content-type", "application/json"), o.options.headers.has("accept") || o.options.headers.set("accept", "application/json"))); + try { + o.response = await t( + o.request, + o.options + ); + } catch (f) { + return o.error = f, o.options.onRequestError && await o.options.onRequestError(o), await n(o); + } + const d = (o.options.parseResponse ? "json" : o.options.responseType) || Yi(o.response.headers.get("content-type") || ""); + if (d === "json") { + const f = await o.response.text(), w = o.options.parseResponse || ti; + o.response._data = w(f); + } else + d === "stream" ? o.response._data = o.response.body : o.response._data = await o.response[d](); + return o.options.onResponse && await o.options.onResponse(o), !o.options.ignoreResponseError && o.response.status >= 400 && o.response.status < 600 ? (o.options.onResponseError && await o.options.onResponseError(o), await n(o)) : o.response; + }, a = async function(i, u) { + return (await s(i, u))._data; + }; + return a.raw = s, a.native = t, a.create = (i = {}) => Tn({ + ...e, + defaults: { + ...e.defaults, + ...i + } + }), a; +} +const Mn = function() { + if (typeof globalThis < "u") + return globalThis; + if (typeof self < "u") + return self; + if (typeof window < "u") + return window; + if (typeof global < "u") + return global; + throw new Error("unable to locate global object"); +}(), Li = Mn.fetch || (() => Promise.reject(new Error("[ofetch] global.fetch is not supported!"))), Ii = Mn.Headers, Ui = Tn({ fetch: Li, Headers: Ii }), Bt = { + SCHEMA_DIR_RELATIVE_PATH: "./../schemas/", + // JSON Schema 相对于 node 的目录的路径 + SCHEMA_FILENAME_PAYLOAD: "payload.schema.json", + // JSON Schema 的 payload 文件名 + SCHEMA_FILENAME_RESPONSE: "response.schema.json", + // JSON Schema 的 response 文件名 + SIYUAN_DEFAULT_BASE_URL: "http://localhost:6806/", + // 思源内核服务的默认 baseURL + SIYUAN_DEFAULT_TOKEN: "", + // 思源内核服务的默认 token + REQUEST_TIMEOUT: 6e4 + // 请求超时时间 (单位: ms) +}; +class Wi extends Error { + constructor(t) { + super(t.statusText), me(this, "status"), this.response = t, this.status = t.status; + } +} +class Qt extends Error { + constructor(t, r) { + super(t.msg), me(this, "code"), this.body = t, this.response = r, this.code = t.code; + } +} +var qr, Vr, Gr, $r, zr; +const En = class l { + constructor(t = {}, r = "xhr") { + me(this, "_type", "xhr"), me(this, "_baseURL", ((Vr = (qr = globalThis.top) == null ? void 0 : qr.document) == null ? void 0 : Vr.baseURI) ?? (($r = (Gr = globalThis.parent) == null ? void 0 : Gr.document) == null ? void 0 : $r.baseURI) ?? ((zr = globalThis.location) == null ? void 0 : zr.origin) ?? Bt.SIYUAN_DEFAULT_BASE_URL), me(this, "_token", Bt.SIYUAN_DEFAULT_TOKEN), me(this, "_axios", Sn.create({ + baseURL: this._baseURL, + timeout: Bt.REQUEST_TIMEOUT, + headers: { + Authorization: `Token ${this._token}` + } + })), me(this, "_fetch", Ui.create({ + baseURL: this._baseURL, + headers: { + Authorization: `Token ${this._token}` + } + })), this._setClientType(r), this._updateOptions(t, r); + } + /* 设置默认使用的客户端类型 */ + _setClientType(t) { + this._type = t; + } + _updateOptions(t, r = this._type) { + switch (this._token = t.token ?? this._token, r) { + case "fetch": + const n = t; + if (n.token) { + const s = "Authorization", a = `Token ${t.token}`; + Array.isArray(n.headers) ? n.headers.push([ + s, + a + ]) : n.headers instanceof Headers ? n.headers.set( + s, + a + ) : typeof n.headers == "object" ? n.headers[s] = a : n.headers = { + [s]: a + }, delete t.token; + } + this._fetch = this._fetch.create(n); + break; + case "xhr": + default: + for (const [s, a] of Object.entries(t)) + switch (s) { + case "token": + this._axios.defaults.headers.Authorization = `Token ${t.token}`; + break; + default: + this._axios.defaults[s] = a; + break; + } + break; + } + this._baseURL = t.baseURL ?? this._baseURL; + } + /* 全局搜索 */ + async fullTextSearchBlock(t, r) { + return await this._request( + l.api.search.fullTextSearchBlock.pathname, + l.api.search.fullTextSearchBlock.method, + t, + r + ); + } + /* 获得配置 */ + async getConf(t) { + return await this._request( + l.api.system.getConf.pathname, + l.api.system.getConf.method, + void 0, + t + ); + } + /* 👇 由 JSON Schema 生成的类型定义👇 */ + /* 上传资源文件 */ + async upload(t, r) { + const n = new FormData(); + return n.append("assetsDirPath", t.assetsDirPath ?? "/assets/"), t.files.forEach((s) => n.append("file[]", s)), await this._request( + l.api.asset.upload.pathname, + l.api.asset.upload.method, + n, + r + ); + } + /* 获取块属性 */ + async getBlockAttrs(t, r) { + return await this._request( + l.api.attr.getBlockAttrs.pathname, + l.api.attr.getBlockAttrs.method, + t, + r + ); + } + /* 获取所有书签 */ + async getBookmarkLabels(t) { + return await this._request( + l.api.attr.getBookmarkLabels.pathname, + l.api.attr.getBookmarkLabels.method, + void 0, + t + ); + } + /* 设置块属性 */ + async setBlockAttrs(t, r) { + return await this._request( + l.api.attr.setBlockAttrs.pathname, + l.api.attr.setBlockAttrs.method, + t, + r + ); + } + /* 在下级块尾部插入块 */ + async appendBlock(t, r) { + return await this._request( + l.api.block.appendBlock.pathname, + l.api.block.appendBlock.method, + t, + r + ); + } + /* 删除块 */ + async deleteBlock(t, r) { + return await this._request( + l.api.block.deleteBlock.pathname, + l.api.block.deleteBlock.method, + t, + r + ); + } + /* 获得块面包屑 */ + async getBlockBreadcrumb(t, r) { + return await this._request( + l.api.block.getBlockBreadcrumb.pathname, + l.api.block.getBlockBreadcrumb.method, + t, + r + ); + } + /* 获得块的 DOM */ + async getBlockDOM(t, r) { + return await this._request( + l.api.block.getBlockDOM.pathname, + l.api.block.getBlockDOM.method, + t, + r + ); + } + /* 获得块所在文档的信息 */ + async getBlockInfo(t, r) { + return await this._request( + l.api.block.getBlockInfo.pathname, + l.api.block.getBlockInfo.method, + t, + r + ); + } + /* 获得块的 kramdown 源码 */ + async getBlockKramdown(t, r) { + return await this._request( + l.api.block.getBlockKramdown.pathname, + l.api.block.getBlockKramdown.method, + t, + r + ); + } + /* 获得指定块的所有下级块 */ + async getChildBlocks(t, r) { + return await this._request( + l.api.block.getChildBlocks.pathname, + l.api.block.getChildBlocks.method, + t, + r + ); + } + /* 获得指定块所在文档信息 */ + async getDocInfo(t, r) { + return await this._request( + l.api.block.getDocInfo.pathname, + l.api.block.getDocInfo.method, + t, + r + ); + } + /* 插入块 */ + async insertBlock(t, r) { + return await this._request( + l.api.block.insertBlock.pathname, + l.api.block.insertBlock.method, + t, + r + ); + } + /* 移动块 */ + async moveBlock(t, r) { + return await this._request( + l.api.block.moveBlock.pathname, + l.api.block.moveBlock.method, + t, + r + ); + } + /* 在下级块首部插入块 */ + async prependBlock(t, r) { + return await this._request( + l.api.block.prependBlock.pathname, + l.api.block.prependBlock.method, + t, + r + ); + } + /* 转移块引用 */ + async transferBlockRef(t, r) { + return await this._request( + l.api.block.transferBlockRef.pathname, + l.api.block.transferBlockRef.method, + t, + r + ); + } + /* 更新块 */ + async updateBlock(t, r) { + return await this._request( + l.api.block.updateBlock.pathname, + l.api.block.updateBlock.method, + t, + r + ); + } + /* 调用 pandoc 转换转换文件 */ + async pandoc(t, r) { + return await this._request( + l.api.convert.pandoc.pathname, + l.api.convert.pandoc.method, + t, + r + ); + } + /* 打包文件与文件夹以导出 */ + async exportResources(t, r) { + return await this._request( + l.api.export.exportResources.pathname, + l.api.export.exportResources.method, + t, + r + ); + } + /* 导出指定文档块为 Markdown */ + async exportMdContent(t, r) { + return await this._request( + l.api.export.exportMdContent.pathname, + l.api.export.exportMdContent.method, + t, + r + ); + } + async getFile(t, r = "text", n) { + return await this._request( + l.api.file.getFile.pathname, + l.api.file.getFile.method, + t, + n, + !1, + r + ); + } + /* 设置文件 */ + async putFile(t, r) { + t.file !== void 0 && !(t.file instanceof File) && (t.file = new File( + [t.file], + t.path.split("/").pop() + )); + const n = new FormData(); + for (const [s, a] of Object.entries(t)) + t.hasOwnProperty(s) && (a instanceof Blob ? n.append(s, a) : n.append(s, String(a))); + return await this._request( + l.api.file.putFile.pathname, + l.api.file.putFile.method, + n, + r + ); + } + /* 获取文件目录下级内容 */ + async readDir(t, r) { + return await this._request( + l.api.file.readDir.pathname, + l.api.file.readDir.method, + t, + r + ); + } + /* 删除文件/目录 */ + async removeFile(t, r) { + return await this._request( + l.api.file.removeFile.pathname, + l.api.file.removeFile.method, + t, + r + ); + } + /* 重命名/移动文件/目录 */ + async renameFile(t, r) { + return await this._request( + l.api.file.renameFile.pathname, + l.api.file.renameFile.method, + t, + r + ); + } + /* 通过 Markdown 创建文档 */ + async createDocWithMd(t, r) { + return await this._request( + l.api.filetree.createDocWithMd.pathname, + l.api.filetree.createDocWithMd.method, + t, + r + ); + } + /* 获取文档内容 */ + async getDoc(t, r) { + return await this._request( + l.api.filetree.getDoc.pathname, + l.api.filetree.getDoc.method, + t, + r + ); + } + /* 根据 ID 获取人类可读路径 */ + async getHPathByID(t, r) { + return await this._request( + l.api.filetree.getHPathByID.pathname, + l.api.filetree.getHPathByID.method, + t, + r + ); + } + /* 根据路径获取人类可读路径 */ + async getHPathByPath(t, r) { + return await this._request( + l.api.filetree.getHPathByPath.pathname, + l.api.filetree.getHPathByPath.method, + t, + r + ); + } + /* 查询子文档 */ + async listDocsByPath(t, r) { + return await this._request( + l.api.filetree.listDocsByPath.pathname, + l.api.filetree.listDocsByPath.method, + t, + r + ); + } + /* 批量移动文档 */ + async moveDocs(t, r) { + return await this._request( + l.api.filetree.moveDocs.pathname, + l.api.filetree.moveDocs.method, + t, + r + ); + } + /* 删除文档 */ + async removeDoc(t, r) { + return await this._request( + l.api.filetree.removeDoc.pathname, + l.api.filetree.removeDoc.method, + t, + r + ); + } + /* 文档重命名 */ + async renameDoc(t, r) { + return await this._request( + l.api.filetree.renameDoc.pathname, + l.api.filetree.renameDoc.method, + t, + r + ); + } + /* 搜索文档 */ + async searchDocs(t, r) { + return await this._request( + l.api.filetree.searchDocs.pathname, + l.api.filetree.searchDocs.method, + t, + r + ); + } + /* 获取历史文档内容 */ + async getDocHistoryContent(t, r) { + return await this._request( + l.api.history.getDocHistoryContent.pathname, + l.api.history.getDocHistoryContent.method, + t, + r + ); + } + /* 查询历史项 */ + async getHistoryItems(t, r) { + return await this._request( + l.api.history.getHistoryItems.pathname, + l.api.history.getHistoryItems.method, + t, + r + ); + } + /* 收集箱速记内容 */ + async getShorthand(t, r) { + return await this._request( + l.api.inbox.getShorthand.pathname, + l.api.inbox.getShorthand.method, + t, + r + ); + } + /* 正向代理 */ + async forwardProxy(t, r) { + return await this._request( + l.api.network.forwardProxy.pathname, + l.api.network.forwardProxy.method, + t, + r + ); + } + /* 关闭笔记本 */ + async closeNotebook(t, r) { + return await this._request( + l.api.notebook.closeNotebook.pathname, + l.api.notebook.closeNotebook.method, + t, + r + ); + } + /* 创建笔记本 */ + async createNotebook(t, r) { + return await this._request( + l.api.notebook.createNotebook.pathname, + l.api.notebook.createNotebook.method, + t, + r + ); + } + /* 获取笔记本配置信息 */ + async getNotebookConf(t, r) { + return await this._request( + l.api.notebook.getNotebookConf.pathname, + l.api.notebook.getNotebookConf.method, + t, + r + ); + } + /* 列出笔记本信息 */ + async lsNotebooks(t) { + return await this._request( + l.api.notebook.lsNotebooks.pathname, + l.api.notebook.lsNotebooks.method, + void 0, + t + ); + } + /* 打开笔记本 */ + async openNotebook(t, r) { + return await this._request( + l.api.notebook.openNotebook.pathname, + l.api.notebook.openNotebook.method, + t, + r + ); + } + /* 删除笔记本 */ + async removeNotebook(t, r) { + return await this._request( + l.api.notebook.removeNotebook.pathname, + l.api.notebook.removeNotebook.method, + t, + r + ); + } + /* 重命名笔记本 */ + async renameNotebook(t, r) { + return await this._request( + l.api.notebook.renameNotebook.pathname, + l.api.notebook.renameNotebook.method, + t, + r + ); + } + /* 设置笔记本配置 */ + async setNotebookConf(t, r) { + return await this._request( + l.api.notebook.setNotebookConf.pathname, + l.api.notebook.setNotebookConf.method, + t, + r + ); + } + /* 推送错误消息 */ + async pushErrMsg(t, r) { + return await this._request( + l.api.notification.pushErrMsg.pathname, + l.api.notification.pushErrMsg.method, + t, + r + ); + } + /* 推送提示消息 */ + async pushMsg(t, r) { + return await this._request( + l.api.notification.pushMsg.pathname, + l.api.notification.pushMsg.method, + t, + r + ); + } + /* SQL 查询 */ + async sql(t, r) { + return await this._request( + l.api.query.sql.pathname, + l.api.query.sql.method, + t, + r + ); + } + /* 读取快照文件内容 */ + async openRepoSnapshotDoc(t, r) { + return await this._request( + l.api.repo.openRepoSnapshotDoc.pathname, + l.api.repo.openRepoSnapshotDoc.method, + t, + r + ); + } + /* 获取代码片段 */ + async getSnippet(t, r) { + return await this._request( + l.api.snippet.getSnippet.pathname, + l.api.snippet.getSnippet.method, + t, + r + ); + } + /* 设置代码片段 */ + async setSnippet(t, r) { + return await this._request( + l.api.snippet.setSnippet.pathname, + l.api.snippet.setSnippet.method, + t, + r + ); + } + /* 查询最近打开的文档 */ + async getRecentDocs(t) { + return await this._request( + l.api.storage.getRecentDocs.pathname, + l.api.storage.getRecentDocs.method, + void 0, + t + ); + } + /* 获取内核启动进度 */ + async bootProgress(t) { + return await this._request( + l.api.system.bootProgress.pathname, + l.api.system.bootProgress.method, + void 0, + t + ); + } + /* 获得内核 Unix 时间戳 (单位: ms) */ + async currentTime(t) { + return await this._request( + l.api.system.currentTime.pathname, + l.api.system.currentTime.method, + void 0, + t + ); + } + /* 获得内核版本 */ + async version(t) { + return await this._request( + l.api.system.version.pathname, + l.api.system.version.method, + void 0, + t + ); + } + /* 渲染 kramdown 模板文件 */ + async render(t, r) { + return await this._request( + l.api.template.render.pathname, + l.api.template.render.method, + t, + r + ); + } + /* 渲染 Sprig 模板 */ + async renderSprig(t, r) { + return await this._request( + l.api.template.renderSprig.pathname, + l.api.template.renderSprig.method, + t, + r + ); + } + async _request(t, r, n, s, a = !0, i = "json") { + try { + switch ((s == null ? void 0 : s.type) ?? this._type) { + case "fetch": { + const u = s == null ? void 0 : s.options; + i = (() => { + switch (i) { + case "arraybuffer": + return "arrayBuffer"; + case "document": + return "text"; + default: + return i; + } + })(); + const o = await this._fetch( + t, + { + method: r, + body: n, + responseType: i, + ...u + } + ); + return a && i === "json" && typeof o == "object" ? this._parseFetchResponse(o) : o; + } + case "xhr": + default: { + const u = s == null ? void 0 : s.options; + i = (() => { + switch (i) { + case "arrayBuffer": + return "arraybuffer"; + default: + return i; + } + })(); + const o = await this._axios.request({ + url: t, + method: r, + data: n, + responseType: i, + ...u + }); + if (o.status === Ka.Ok) + return a && i === "json" && typeof o.data == "object" ? this._parseAxiosResponse(o) : o.data; + throw new Wi(o); + } + } + } catch (u) { + throw u; + } + } + /** + * 解析内核响应 + */ + _parseFetchResponse(t) { + if (t.code === 0) + return t; + throw new Qt(t); + } + /** + * 解析内核响应 + */ + _parseAxiosResponse(t) { + if (t.data.code === 0) + return t.data; + throw new Qt(t.data, t); + } +}; +me(En, "api", { + // TODO: refactor + search: { + fullTextSearchBlock: { pathname: "/api/search/fullTextSearchBlock", method: "POST" } + }, + asset: { + upload: { pathname: "/api/asset/upload", method: "POST" } + }, + attr: { + getBlockAttrs: { pathname: "/api/attr/getBlockAttrs", method: "POST" }, + setBlockAttrs: { pathname: "/api/attr/setBlockAttrs", method: "POST" }, + getBookmarkLabels: { pathname: "/api/attr/getBookmarkLabels", method: "POST" } + }, + block: { + appendBlock: { pathname: "/api/block/appendBlock", method: "POST" }, + deleteBlock: { pathname: "/api/block/deleteBlock", method: "POST" }, + getBlockBreadcrumb: { pathname: "/api/block/getBlockBreadcrumb", method: "POST" }, + getBlockDOM: { pathname: "/api/block/getBlockDOM", method: "POST" }, + getBlockInfo: { pathname: "/api/block/getBlockInfo", method: "POST" }, + getBlockKramdown: { pathname: "/api/block/getBlockKramdown", method: "POST" }, + getChildBlocks: { pathname: "/api/block/getChildBlocks", method: "POST" }, + getDocInfo: { pathname: "/api/block/getDocInfo", method: "POST" }, + insertBlock: { pathname: "/api/block/insertBlock", method: "POST" }, + moveBlock: { pathname: "/api/block/moveBlock", method: "POST" }, + prependBlock: { pathname: "/api/block/prependBlock", method: "POST" }, + transferBlockRef: { pathname: "/api/block/transferBlockRef", method: "POST" }, + updateBlock: { pathname: "/api/block/updateBlock", method: "POST" } + }, + convert: { + pandoc: { pathname: "/api/convert/pandoc", method: "POST" } + }, + export: { + exportMdContent: { pathname: "/api/export/exportMdContent", method: "POST" }, + exportResources: { pathname: "/api/export/exportResources", method: "POST" } + }, + file: { + getFile: { pathname: "/api/file/getFile", method: "POST" }, + putFile: { pathname: "/api/file/putFile", method: "POST" }, + readDir: { pathname: "/api/file/readDir", method: "POST" }, + removeFile: { pathname: "/api/file/removeFile", method: "POST" }, + renameFile: { pathname: "/api/file/renameFile", method: "POST" } + }, + filetree: { + createDocWithMd: { pathname: "/api/filetree/createDocWithMd", method: "POST" }, + getDoc: { pathname: "/api/filetree/getDoc", method: "POST" }, + getHPathByID: { pathname: "/api/filetree/getHPathByID", method: "POST" }, + getHPathByPath: { pathname: "/api/filetree/getHPathByPath", method: "POST" }, + listDocsByPath: { pathname: "/api/filetree/listDocsByPath", method: "POST" }, + moveDocs: { pathname: "/api/filetree/moveDocs", method: "POST" }, + removeDoc: { pathname: "/api/filetree/removeDoc", method: "POST" }, + renameDoc: { pathname: "/api/filetree/renameDoc", method: "POST" }, + searchDocs: { pathname: "/api/filetree/searchDocs", method: "POST" } + }, + history: { + getDocHistoryContent: { pathname: "/api/history/getDocHistoryContent", method: "POST" }, + getHistoryItems: { pathname: "/api/history/getHistoryItems", method: "POST" } + }, + inbox: { + getShorthand: { pathname: "/api/inbox/getShorthand", method: "POST" } + }, + network: { + forwardProxy: { pathname: "/api/network/forwardProxy", method: "POST" } + }, + notebook: { + closeNotebook: { pathname: "/api/notebook/closeNotebook", method: "POST" }, + createNotebook: { pathname: "/api/notebook/createNotebook", method: "POST" }, + lsNotebooks: { pathname: "/api/notebook/lsNotebooks", method: "POST" }, + getNotebookConf: { pathname: "/api/notebook/getNotebookConf", method: "POST" }, + openNotebook: { pathname: "/api/notebook/openNotebook", method: "POST" }, + removeNotebook: { pathname: "/api/notebook/removeNotebook", method: "POST" }, + renameNotebook: { pathname: "/api/notebook/renameNotebook", method: "POST" }, + setNotebookConf: { pathname: "/api/notebook/setNotebookConf", method: "POST" } + }, + notification: { + pushErrMsg: { pathname: "/api/notification/pushErrMsg", method: "POST" }, + pushMsg: { pathname: "/api/notification/pushMsg", method: "POST" } + }, + query: { + sql: { pathname: "/api/query/sql", method: "POST" } + }, + repo: { + openRepoSnapshotDoc: { pathname: "/api/repo/openRepoSnapshotDoc", method: "POST" } + }, + snippet: { + getSnippet: { pathname: "/api/snippet/getSnippet", method: "POST" }, + setSnippet: { pathname: "/api/snippet/setSnippet", method: "POST" } + }, + storage: { + getRecentDocs: { pathname: "/api/storage/getRecentDocs", method: "POST" } + }, + system: { + bootProgress: { pathname: "/api/system/bootProgress", method: "POST" }, + currentTime: { pathname: "/api/system/currentTime", method: "POST" }, + version: { pathname: "/api/system/version", method: "POST" }, + // TODO: refactor + getConf: { pathname: "/api/system/getConf", method: "POST" } + }, + template: { + render: { pathname: "/api/template/render", method: "POST" }, + renderSprig: { pathname: "/api/template/renderSprig", method: "POST" } + } +}); +let Bi = En; +class ji { + constructor(t, r, n) { + this.port = t, this.handlers = r, this.logger = n, this.map = /* @__PURE__ */ new Map(), this.counter = Math.random(), this.errerEventListener = async (s) => { + this.logger.warn(s); + }, this.messageEventListener = async (s) => { + const a = s.data; + switch (a.type) { + case "call": { + try { + if (a.handler.name in this.handlers) { + const i = this.handlers[a.handler.name], u = await i.func.call(i.this, ...a.handler.args), o = { + type: "return", + id: a.id, + handler: { + name: a.handler.name, + result: u + } + }; + this.port.postMessage(o); + } + } catch (i) { + const u = { + type: "error", + id: a.id, + error: i + }; + this.port.postMessage(u); + } + break; + } + case "error": { + const i = this.map.get(a.id); + i && (i.reject(a.error), this.map.delete(a.id)); + break; + } + case "return": { + const i = this.map.get(a.id); + i && (i.resolve(a.handler.result), this.map.delete(a.id)); + break; + } + } + }, this.port.addEventListener("error", this.errerEventListener), this.port.addEventListener("messageerror", this.errerEventListener), this.port.addEventListener("message", this.messageEventListener); + } + async call(t, ...r) { + return new Promise((n, s) => { + const a = this.counter++; + this.map.set(a, { resolve: n, reject: s }); + const i = { + type: "call", + id: a, + handler: { + name: t, + args: r + } + }; + this.port.postMessage(i); + }); + } +} +class Hi extends ji { + constructor(t, r, n = {}) { + super( + // @ts-ignore + t, + n, + r + ), this.self = t, this.logger = r, this.handlers = n, this.pingEventListener = async (s) => { + s.data === "ping" && this.port.postMessage("pong"); + }, this.port.addEventListener("message", this.pingEventListener); + } + close() { + switch (!0) { + case "close" in this.port: + this.port.close(); + break; + case "terminate" in this.port: + this.port.terminate(); + break; + } + } +} +class qi { + constructor(t, r = !0) { + this.label = t, this.collapsed = r; + } + /** + * 输出 + * @param func: 所使用的输出函数 + * @param multiple: 是否进行多次输出 + * @param args: 输出函数的参数 + */ + stdout(t, r, ...n) { + const s = `[\x1B[4m${this.label}\x1B[0m] - <\x1B[1m${t.name.toUpperCase()}\x1B[0m>`; + if (this.collapsed ? globalThis.console.groupCollapsed(s) : globalThis.console.group(s), r) + for (const a of n) + Array.isArray(a) ? t(...a) : t(a); + else + t(...n); + globalThis.console.trace(), globalThis.console.groupEnd(); + } + dir(...t) { + this.stdout(globalThis.console.dir, !1, ...t); + } + dirs(...t) { + this.stdout(globalThis.console.dir, !0, ...t); + } + table(...t) { + this.stdout(globalThis.console.table, !1, ...t); + } + tables(...t) { + this.stdout(globalThis.console.table, !0, ...t); + } + debug(...t) { + this.stdout(globalThis.console.debug, !1, ...t); + } + debugs(...t) { + this.stdout(globalThis.console.debug, !0, ...t); + } + info(...t) { + this.stdout(globalThis.console.info, !1, ...t); + } + infos(...t) { + this.stdout(globalThis.console.info, !0, ...t); + } + log(...t) { + this.stdout(globalThis.console.log, !1, ...t); + } + logs(...t) { + this.stdout(globalThis.console.log, !0, ...t); + } + warn(...t) { + this.stdout(globalThis.console.warn, !1, ...t); + } + warns(...t) { + this.stdout(globalThis.console.warn, !0, ...t); + } + error(...t) { + this.stdout(globalThis.console.error, !1, ...t); + } + errors(...t) { + this.stdout(globalThis.console.error, !0, ...t); + } +} +function Vi(e, t) { + return e.endsWith(t) ? e.slice(0, -t.length) : e; +} +var Xt = /* @__PURE__ */ ((e) => (e.Coding = "coding", e.Building = "building", e.Indexing = "indexing", e.Debugging = "debugging", e.Browsing = "browsing", e.RunningTests = "running tests", e.WritingTests = "writing tests", e.ManualTesting = "manual testing", e.WritingDocs = "writing docs", e.CodeReviewing = "code reviewing", e.Researching = "researching", e.Learning = "learning", e.Designing = "designing", e))(Xt || {}), Rn = /* @__PURE__ */ ((e) => (e.App = "app", e.File = "file", e.Domain = "domain", e))(Rn || {}); +const Gi = { + wakatime: { + api_url: "", + api_key: "", + timeout: 30, + hide_branch_names: !0, + hide_file_names: !0, + offline: !1, + includeID: [], + excludeID: [], + include: [], + exclude: [], + heartbeats: !1, + project: "", + language: "", + hostname: "", + interval: 60, + view: { + category: Xt.Browsing + }, + edit: { + category: Xt.Learning + }, + system_name: "", + system_version: "unknown", + system_arch: "unknown", + useragent: "" + } +}, Q = { + OFFLINE_CACHE_PATH: "temp/.wakatime/cache", + // 缓存文件目录路径 + WAKATIME_DEFAULT_API_URL: "https://wakatime.com/api/v1", + // 默认 API 地址 + WAKATIME_STATUS_BAR_PATHNAME: "users/current/statusbar/today", + // 状态栏数据 API 地址 + WAKATIME_HEARTBEATS_PATHNAME: "users/current/heartbeats", + // 心跳数据 API 路径地址 + WAKATIME_HEARTBEATS_BULK: 25, + // 每次提交数量限制 + WAKATIME_CLIENT_NAME: "wakatime", + // 客户端名称 + WAKATIME_CLIENT_VERSION: "1.76.0", + // 客户端名称 + WAKATIME_EDITOR_NAME: "siyuan", + // 编辑器名称 + WAKATIME_PLUGIN_NAME: "siyuan-wakatime", + // 插件名称 + WAKATIME_DEFAULT_LANGUAGE: "Siyuan", + // 默认语言名称 + WAKATIME_WORKER_FILE_NAME: "wakatime", + // web worker 文件名 + WAKATIME_WORKER_BROADCAST_CHANNEL_NAME: "wakatime-worker", + // web worker 广播通道名称 + CACHE_CHECK_INTERVAL: 5 * 60 * 1e3, + // 缓存检查时间间隔 + CACHE_COMMIT_INTERVAL: 1 * 1e3 + // 缓存每次提交时间间隔 +}; +//! moment.js +//! version : 2.29.4 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +var xn; +function p() { + return xn.apply(null, arguments); +} +function $i(e) { + xn = e; +} +function $(e) { + return e instanceof Array || Object.prototype.toString.call(e) === "[object Array]"; +} +function Se(e) { + return e != null && Object.prototype.toString.call(e) === "[object Object]"; +} +function v(e, t) { + return Object.prototype.hasOwnProperty.call(e, t); +} +function dr(e) { + if (Object.getOwnPropertyNames) + return Object.getOwnPropertyNames(e).length === 0; + var t; + for (t in e) + if (v(e, t)) + return !1; + return !0; +} +function U(e) { + return e === void 0; +} +function ce(e) { + return typeof e == "number" || Object.prototype.toString.call(e) === "[object Number]"; +} +function ze(e) { + return e instanceof Date || Object.prototype.toString.call(e) === "[object Date]"; +} +function Pn(e, t) { + var r = [], n, s = e.length; + for (n = 0; n < s; ++n) + r.push(t(e[n], n)); + return r; +} +function ye(e, t) { + for (var r in t) + v(t, r) && (e[r] = t[r]); + return v(t, "toString") && (e.toString = t.toString), v(t, "valueOf") && (e.valueOf = t.valueOf), e; +} +function te(e, t, r, n) { + return ts(e, t, r, n, !0).utc(); +} +function zi() { + return { + empty: !1, + unusedTokens: [], + unusedInput: [], + overflow: -2, + charsLeftOver: 0, + nullInput: !1, + invalidEra: null, + invalidMonth: null, + invalidFormat: !1, + userInvalidated: !1, + iso: !1, + parsedDateParts: [], + era: null, + meridiem: null, + rfc2822: !1, + weekdayMismatch: !1 + }; +} +function _(e) { + return e._pf == null && (e._pf = zi()), e._pf; +} +var er; +Array.prototype.some ? er = Array.prototype.some : er = function(e) { + var t = Object(this), r = t.length >>> 0, n; + for (n = 0; n < r; n++) + if (n in t && e.call(this, t[n], n, t)) + return !0; + return !1; +}; +function fr(e) { + if (e._isValid == null) { + var t = _(e), r = er.call(t.parsedDateParts, function(s) { + return s != null; + }), n = !isNaN(e._d.getTime()) && t.overflow < 0 && !t.empty && !t.invalidEra && !t.invalidMonth && !t.invalidWeekday && !t.weekdayMismatch && !t.nullInput && !t.invalidFormat && !t.userInvalidated && (!t.meridiem || t.meridiem && r); + if (e._strict && (n = n && t.charsLeftOver === 0 && t.unusedTokens.length === 0 && t.bigHour === void 0), Object.isFrozen == null || !Object.isFrozen(e)) + e._isValid = n; + else + return n; + } + return e._isValid; +} +function St(e) { + var t = te(NaN); + return e != null ? ye(_(t), e) : _(t).userInvalidated = !0, t; +} +var Kr = p.momentProperties = [], jt = !1; +function pr(e, t) { + var r, n, s, a = Kr.length; + if (U(t._isAMomentObject) || (e._isAMomentObject = t._isAMomentObject), U(t._i) || (e._i = t._i), U(t._f) || (e._f = t._f), U(t._l) || (e._l = t._l), U(t._strict) || (e._strict = t._strict), U(t._tzm) || (e._tzm = t._tzm), U(t._isUTC) || (e._isUTC = t._isUTC), U(t._offset) || (e._offset = t._offset), U(t._pf) || (e._pf = _(t)), U(t._locale) || (e._locale = t._locale), a > 0) + for (r = 0; r < a; r++) + n = Kr[r], s = t[n], U(s) || (e[n] = s); + return e; +} +function Ke(e) { + pr(this, e), this._d = new Date(e._d != null ? e._d.getTime() : NaN), this.isValid() || (this._d = /* @__PURE__ */ new Date(NaN)), jt === !1 && (jt = !0, p.updateOffset(this), jt = !1); +} +function z(e) { + return e instanceof Ke || e != null && e._isAMomentObject != null; +} +function Nn(e) { + p.suppressDeprecationWarnings === !1 && typeof console < "u" && console.warn && console.warn("Deprecation warning: " + e); +} +function q(e, t) { + var r = !0; + return ye(function() { + if (p.deprecationHandler != null && p.deprecationHandler(null, e), r) { + var n = [], s, a, i, u = arguments.length; + for (a = 0; a < u; a++) { + if (s = "", typeof arguments[a] == "object") { + s += ` +[` + a + "] "; + for (i in arguments[0]) + v(arguments[0], i) && (s += i + ": " + arguments[0][i] + ", "); + s = s.slice(0, -2); + } else + s = arguments[a]; + n.push(s); + } + Nn( + e + ` +Arguments: ` + Array.prototype.slice.call(n).join("") + ` +` + new Error().stack + ), r = !1; + } + return t.apply(this, arguments); + }, t); +} +var Jr = {}; +function An(e, t) { + p.deprecationHandler != null && p.deprecationHandler(e, t), Jr[e] || (Nn(t), Jr[e] = !0); +} +p.suppressDeprecationWarnings = !1; +p.deprecationHandler = null; +function re(e) { + return typeof Function < "u" && e instanceof Function || Object.prototype.toString.call(e) === "[object Function]"; +} +function Ki(e) { + var t, r; + for (r in e) + v(e, r) && (t = e[r], re(t) ? this[r] = t : this["_" + r] = t); + this._config = e, this._dayOfMonthOrdinalParseLenient = new RegExp( + (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source + ); +} +function tr(e, t) { + var r = ye({}, e), n; + for (n in t) + v(t, n) && (Se(e[n]) && Se(t[n]) ? (r[n] = {}, ye(r[n], e[n]), ye(r[n], t[n])) : t[n] != null ? r[n] = t[n] : delete r[n]); + for (n in e) + v(e, n) && !v(t, n) && Se(e[n]) && (r[n] = ye({}, r[n])); + return r; +} +function mr(e) { + e != null && this.set(e); +} +var rr; +Object.keys ? rr = Object.keys : rr = function(e) { + var t, r = []; + for (t in e) + v(e, t) && r.push(t); + return r; +}; +var Ji = { + sameDay: "[Today at] LT", + nextDay: "[Tomorrow at] LT", + nextWeek: "dddd [at] LT", + lastDay: "[Yesterday at] LT", + lastWeek: "[Last] dddd [at] LT", + sameElse: "L" +}; +function Zi(e, t, r) { + var n = this._calendar[e] || this._calendar.sameElse; + return re(n) ? n.call(t, r) : n; +} +function X(e, t, r) { + var n = "" + Math.abs(e), s = t - n.length, a = e >= 0; + return (a ? r ? "+" : "" : "-") + Math.pow(10, Math.max(0, s)).toString().substr(1) + n; +} +var yr = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, Xe = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, Ht = {}, Ee = {}; +function g(e, t, r, n) { + var s = n; + typeof n == "string" && (s = function() { + return this[n](); + }), e && (Ee[e] = s), t && (Ee[t[0]] = function() { + return X(s.apply(this, arguments), t[1], t[2]); + }), r && (Ee[r] = function() { + return this.localeData().ordinal( + s.apply(this, arguments), + e + ); + }); +} +function Qi(e) { + return e.match(/\[[\s\S]/) ? e.replace(/^\[|\]$/g, "") : e.replace(/\\/g, ""); +} +function Xi(e) { + var t = e.match(yr), r, n; + for (r = 0, n = t.length; r < n; r++) + Ee[t[r]] ? t[r] = Ee[t[r]] : t[r] = Qi(t[r]); + return function(s) { + var a = "", i; + for (i = 0; i < n; i++) + a += re(t[i]) ? t[i].call(s, e) : t[i]; + return a; + }; +} +function it(e, t) { + return e.isValid() ? (t = Yn(t, e.localeData()), Ht[t] = Ht[t] || Xi(t), Ht[t](e)) : e.localeData().invalidDate(); +} +function Yn(e, t) { + var r = 5; + function n(s) { + return t.longDateFormat(s) || s; + } + for (Xe.lastIndex = 0; r >= 0 && Xe.test(e); ) + e = e.replace( + Xe, + n + ), Xe.lastIndex = 0, r -= 1; + return e; +} +var eo = { + LTS: "h:mm:ss A", + LT: "h:mm A", + L: "MM/DD/YYYY", + LL: "MMMM D, YYYY", + LLL: "MMMM D, YYYY h:mm A", + LLLL: "dddd, MMMM D, YYYY h:mm A" +}; +function to(e) { + var t = this._longDateFormat[e], r = this._longDateFormat[e.toUpperCase()]; + return t || !r ? t : (this._longDateFormat[e] = r.match(yr).map(function(n) { + return n === "MMMM" || n === "MM" || n === "DD" || n === "dddd" ? n.slice(1) : n; + }).join(""), this._longDateFormat[e]); +} +var ro = "Invalid date"; +function no() { + return this._invalidDate; +} +var so = "%d", ao = /\d{1,2}/; +function io(e) { + return this._ordinal.replace("%d", e); +} +var oo = { + future: "in %s", + past: "%s ago", + s: "a few seconds", + ss: "%d seconds", + m: "a minute", + mm: "%d minutes", + h: "an hour", + hh: "%d hours", + d: "a day", + dd: "%d days", + w: "a week", + ww: "%d weeks", + M: "a month", + MM: "%d months", + y: "a year", + yy: "%d years" +}; +function lo(e, t, r, n) { + var s = this._relativeTime[r]; + return re(s) ? s(e, t, r, n) : s.replace(/%d/i, e); +} +function uo(e, t) { + var r = this._relativeTime[e > 0 ? "future" : "past"]; + return re(r) ? r(t) : r.replace(/%s/i, t); +} +var Ie = {}; +function F(e, t) { + var r = e.toLowerCase(); + Ie[r] = Ie[r + "s"] = Ie[t] = e; +} +function V(e) { + return typeof e == "string" ? Ie[e] || Ie[e.toLowerCase()] : void 0; +} +function gr(e) { + var t = {}, r, n; + for (n in e) + v(e, n) && (r = V(n), r && (t[r] = e[n])); + return t; +} +var Cn = {}; +function L(e, t) { + Cn[e] = t; +} +function co(e) { + var t = [], r; + for (r in e) + v(e, r) && t.push({ unit: r, priority: Cn[r] }); + return t.sort(function(n, s) { + return n.priority - s.priority; + }), t; +} +function Ot(e) { + return e % 4 === 0 && e % 100 !== 0 || e % 400 === 0; +} +function j(e) { + return e < 0 ? Math.ceil(e) || 0 : Math.floor(e); +} +function b(e) { + var t = +e, r = 0; + return t !== 0 && isFinite(t) && (r = j(t)), r; +} +function Ae(e, t) { + return function(r) { + return r != null ? (Fn(this, e, r), p.updateOffset(this, t), this) : ct(this, e); + }; +} +function ct(e, t) { + return e.isValid() ? e._d["get" + (e._isUTC ? "UTC" : "") + t]() : NaN; +} +function Fn(e, t, r) { + e.isValid() && !isNaN(r) && (t === "FullYear" && Ot(e.year()) && e.month() === 1 && e.date() === 29 ? (r = b(r), e._d["set" + (e._isUTC ? "UTC" : "") + t]( + r, + e.month(), + Rt(r, e.month()) + )) : e._d["set" + (e._isUTC ? "UTC" : "") + t](r)); +} +function ho(e) { + return e = V(e), re(this[e]) ? this[e]() : this; +} +function fo(e, t) { + if (typeof e == "object") { + e = gr(e); + var r = co(e), n, s = r.length; + for (n = 0; n < s; n++) + this[r[n].unit](e[r[n].unit]); + } else if (e = V(e), re(this[e])) + return this[e](t); + return this; +} +var Ln = /\d/, B = /\d\d/, In = /\d{3}/, _r = /\d{4}/, vt = /[+-]?\d{6}/, R = /\d\d?/, Un = /\d\d\d\d?/, Wn = /\d\d\d\d\d\d?/, Dt = /\d{1,3}/, wr = /\d{1,4}/, Tt = /[+-]?\d{1,6}/, Ye = /\d+/, Mt = /[+-]?\d+/, po = /Z|[+-]\d\d:?\d\d/gi, Et = /Z|[+-]\d\d(?::?\d\d)?/gi, mo = /[+-]?\d+(\.\d{1,3})?/, Je = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, ht; +ht = {}; +function m(e, t, r) { + ht[e] = re(t) ? t : function(n, s) { + return n && r ? r : t; + }; +} +function yo(e, t) { + return v(ht, e) ? ht[e](t._strict, t._locale) : new RegExp(go(e)); +} +function go(e) { + return W( + e.replace("\\", "").replace( + /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, + function(t, r, n, s, a) { + return r || n || s || a; + } + ) + ); +} +function W(e) { + return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); +} +var nr = {}; +function M(e, t) { + var r, n = t, s; + for (typeof e == "string" && (e = [e]), ce(t) && (n = function(a, i) { + i[t] = b(a); + }), s = e.length, r = 0; r < s; r++) + nr[e[r]] = n; +} +function Ze(e, t) { + M(e, function(r, n, s, a) { + s._w = s._w || {}, t(r, s._w, s, a); + }); +} +function _o(e, t, r) { + t != null && v(nr, e) && nr[e](t, r._a, r, e); +} +var C = 0, ie = 1, J = 2, A = 3, G = 4, oe = 5, ke = 6, wo = 7, bo = 8; +function ko(e, t) { + return (e % t + t) % t; +} +var N; +Array.prototype.indexOf ? N = Array.prototype.indexOf : N = function(e) { + var t; + for (t = 0; t < this.length; ++t) + if (this[t] === e) + return t; + return -1; +}; +function Rt(e, t) { + if (isNaN(e) || isNaN(t)) + return NaN; + var r = ko(t, 12); + return e += (t - r) / 12, r === 1 ? Ot(e) ? 29 : 28 : 31 - r % 7 % 2; +} +g("M", ["MM", 2], "Mo", function() { + return this.month() + 1; +}); +g("MMM", 0, 0, function(e) { + return this.localeData().monthsShort(this, e); +}); +g("MMMM", 0, 0, function(e) { + return this.localeData().months(this, e); +}); +F("month", "M"); +L("month", 8); +m("M", R); +m("MM", R, B); +m("MMM", function(e, t) { + return t.monthsShortRegex(e); +}); +m("MMMM", function(e, t) { + return t.monthsRegex(e); +}); +M(["M", "MM"], function(e, t) { + t[ie] = b(e) - 1; +}); +M(["MMM", "MMMM"], function(e, t, r, n) { + var s = r._locale.monthsParse(e, n, r._strict); + s != null ? t[ie] = s : _(r).invalidMonth = e; +}); +var So = "January_February_March_April_May_June_July_August_September_October_November_December".split( + "_" +), Bn = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), jn = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, Oo = Je, vo = Je; +function Do(e, t) { + return e ? $(this._months) ? this._months[e.month()] : this._months[(this._months.isFormat || jn).test(t) ? "format" : "standalone"][e.month()] : $(this._months) ? this._months : this._months.standalone; +} +function To(e, t) { + return e ? $(this._monthsShort) ? this._monthsShort[e.month()] : this._monthsShort[jn.test(t) ? "format" : "standalone"][e.month()] : $(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone; +} +function Mo(e, t, r) { + var n, s, a, i = e.toLocaleLowerCase(); + if (!this._monthsParse) + for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], n = 0; n < 12; ++n) + a = te([2e3, n]), this._shortMonthsParse[n] = this.monthsShort( + a, + "" + ).toLocaleLowerCase(), this._longMonthsParse[n] = this.months(a, "").toLocaleLowerCase(); + return r ? t === "MMM" ? (s = N.call(this._shortMonthsParse, i), s !== -1 ? s : null) : (s = N.call(this._longMonthsParse, i), s !== -1 ? s : null) : t === "MMM" ? (s = N.call(this._shortMonthsParse, i), s !== -1 ? s : (s = N.call(this._longMonthsParse, i), s !== -1 ? s : null)) : (s = N.call(this._longMonthsParse, i), s !== -1 ? s : (s = N.call(this._shortMonthsParse, i), s !== -1 ? s : null)); +} +function Eo(e, t, r) { + var n, s, a; + if (this._monthsParseExact) + return Mo.call(this, e, t, r); + for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), n = 0; n < 12; n++) { + if (s = te([2e3, n]), r && !this._longMonthsParse[n] && (this._longMonthsParse[n] = new RegExp( + "^" + this.months(s, "").replace(".", "") + "$", + "i" + ), this._shortMonthsParse[n] = new RegExp( + "^" + this.monthsShort(s, "").replace(".", "") + "$", + "i" + )), !r && !this._monthsParse[n] && (a = "^" + this.months(s, "") + "|^" + this.monthsShort(s, ""), this._monthsParse[n] = new RegExp(a.replace(".", ""), "i")), r && t === "MMMM" && this._longMonthsParse[n].test(e)) + return n; + if (r && t === "MMM" && this._shortMonthsParse[n].test(e)) + return n; + if (!r && this._monthsParse[n].test(e)) + return n; + } +} +function Hn(e, t) { + var r; + if (!e.isValid()) + return e; + if (typeof t == "string") { + if (/^\d+$/.test(t)) + t = b(t); + else if (t = e.localeData().monthsParse(t), !ce(t)) + return e; + } + return r = Math.min(e.date(), Rt(e.year(), t)), e._d["set" + (e._isUTC ? "UTC" : "") + "Month"](t, r), e; +} +function qn(e) { + return e != null ? (Hn(this, e), p.updateOffset(this, !0), this) : ct(this, "Month"); +} +function Ro() { + return Rt(this.year(), this.month()); +} +function xo(e) { + return this._monthsParseExact ? (v(this, "_monthsRegex") || Vn.call(this), e ? this._monthsShortStrictRegex : this._monthsShortRegex) : (v(this, "_monthsShortRegex") || (this._monthsShortRegex = Oo), this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex); +} +function Po(e) { + return this._monthsParseExact ? (v(this, "_monthsRegex") || Vn.call(this), e ? this._monthsStrictRegex : this._monthsRegex) : (v(this, "_monthsRegex") || (this._monthsRegex = vo), this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex); +} +function Vn() { + function e(i, u) { + return u.length - i.length; + } + var t = [], r = [], n = [], s, a; + for (s = 0; s < 12; s++) + a = te([2e3, s]), t.push(this.monthsShort(a, "")), r.push(this.months(a, "")), n.push(this.months(a, "")), n.push(this.monthsShort(a, "")); + for (t.sort(e), r.sort(e), n.sort(e), s = 0; s < 12; s++) + t[s] = W(t[s]), r[s] = W(r[s]); + for (s = 0; s < 24; s++) + n[s] = W(n[s]); + this._monthsRegex = new RegExp("^(" + n.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp( + "^(" + r.join("|") + ")", + "i" + ), this._monthsShortStrictRegex = new RegExp( + "^(" + t.join("|") + ")", + "i" + ); +} +g("Y", 0, 0, function() { + var e = this.year(); + return e <= 9999 ? X(e, 4) : "+" + e; +}); +g(0, ["YY", 2], 0, function() { + return this.year() % 100; +}); +g(0, ["YYYY", 4], 0, "year"); +g(0, ["YYYYY", 5], 0, "year"); +g(0, ["YYYYYY", 6, !0], 0, "year"); +F("year", "y"); +L("year", 1); +m("Y", Mt); +m("YY", R, B); +m("YYYY", wr, _r); +m("YYYYY", Tt, vt); +m("YYYYYY", Tt, vt); +M(["YYYYY", "YYYYYY"], C); +M("YYYY", function(e, t) { + t[C] = e.length === 2 ? p.parseTwoDigitYear(e) : b(e); +}); +M("YY", function(e, t) { + t[C] = p.parseTwoDigitYear(e); +}); +M("Y", function(e, t) { + t[C] = parseInt(e, 10); +}); +function Ue(e) { + return Ot(e) ? 366 : 365; +} +p.parseTwoDigitYear = function(e) { + return b(e) + (b(e) > 68 ? 1900 : 2e3); +}; +var Gn = Ae("FullYear", !0); +function No() { + return Ot(this.year()); +} +function Ao(e, t, r, n, s, a, i) { + var u; + return e < 100 && e >= 0 ? (u = new Date(e + 400, t, r, n, s, a, i), isFinite(u.getFullYear()) && u.setFullYear(e)) : u = new Date(e, t, r, n, s, a, i), u; +} +function je(e) { + var t, r; + return e < 100 && e >= 0 ? (r = Array.prototype.slice.call(arguments), r[0] = e + 400, t = new Date(Date.UTC.apply(null, r)), isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e)) : t = new Date(Date.UTC.apply(null, arguments)), t; +} +function dt(e, t, r) { + var n = 7 + t - r, s = (7 + je(e, 0, n).getUTCDay() - t) % 7; + return -s + n - 1; +} +function $n(e, t, r, n, s) { + var a = (7 + r - n) % 7, i = dt(e, n, s), u = 1 + 7 * (t - 1) + a + i, o, d; + return u <= 0 ? (o = e - 1, d = Ue(o) + u) : u > Ue(e) ? (o = e + 1, d = u - Ue(e)) : (o = e, d = u), { + year: o, + dayOfYear: d + }; +} +function He(e, t, r) { + var n = dt(e.year(), t, r), s = Math.floor((e.dayOfYear() - n - 1) / 7) + 1, a, i; + return s < 1 ? (i = e.year() - 1, a = s + ue(i, t, r)) : s > ue(e.year(), t, r) ? (a = s - ue(e.year(), t, r), i = e.year() + 1) : (i = e.year(), a = s), { + week: a, + year: i + }; +} +function ue(e, t, r) { + var n = dt(e, t, r), s = dt(e + 1, t, r); + return (Ue(e) - n + s) / 7; +} +g("w", ["ww", 2], "wo", "week"); +g("W", ["WW", 2], "Wo", "isoWeek"); +F("week", "w"); +F("isoWeek", "W"); +L("week", 5); +L("isoWeek", 5); +m("w", R); +m("ww", R, B); +m("W", R); +m("WW", R, B); +Ze( + ["w", "ww", "W", "WW"], + function(e, t, r, n) { + t[n.substr(0, 1)] = b(e); + } +); +function Yo(e) { + return He(e, this._week.dow, this._week.doy).week; +} +var Co = { + dow: 0, + // Sunday is the first day of the week. + doy: 6 + // The week that contains Jan 6th is the first week of the year. +}; +function Fo() { + return this._week.dow; +} +function Lo() { + return this._week.doy; +} +function Io(e) { + var t = this.localeData().week(this); + return e == null ? t : this.add((e - t) * 7, "d"); +} +function Uo(e) { + var t = He(this, 1, 4).week; + return e == null ? t : this.add((e - t) * 7, "d"); +} +g("d", 0, "do", "day"); +g("dd", 0, 0, function(e) { + return this.localeData().weekdaysMin(this, e); +}); +g("ddd", 0, 0, function(e) { + return this.localeData().weekdaysShort(this, e); +}); +g("dddd", 0, 0, function(e) { + return this.localeData().weekdays(this, e); +}); +g("e", 0, 0, "weekday"); +g("E", 0, 0, "isoWeekday"); +F("day", "d"); +F("weekday", "e"); +F("isoWeekday", "E"); +L("day", 11); +L("weekday", 11); +L("isoWeekday", 11); +m("d", R); +m("e", R); +m("E", R); +m("dd", function(e, t) { + return t.weekdaysMinRegex(e); +}); +m("ddd", function(e, t) { + return t.weekdaysShortRegex(e); +}); +m("dddd", function(e, t) { + return t.weekdaysRegex(e); +}); +Ze(["dd", "ddd", "dddd"], function(e, t, r, n) { + var s = r._locale.weekdaysParse(e, n, r._strict); + s != null ? t.d = s : _(r).invalidWeekday = e; +}); +Ze(["d", "e", "E"], function(e, t, r, n) { + t[n] = b(e); +}); +function Wo(e, t) { + return typeof e != "string" ? e : isNaN(e) ? (e = t.weekdaysParse(e), typeof e == "number" ? e : null) : parseInt(e, 10); +} +function Bo(e, t) { + return typeof e == "string" ? t.weekdaysParse(e) % 7 || 7 : isNaN(e) ? null : e; +} +function br(e, t) { + return e.slice(t, 7).concat(e.slice(0, t)); +} +var jo = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), zn = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), Ho = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), qo = Je, Vo = Je, Go = Je; +function $o(e, t) { + var r = $(this._weekdays) ? this._weekdays : this._weekdays[e && e !== !0 && this._weekdays.isFormat.test(t) ? "format" : "standalone"]; + return e === !0 ? br(r, this._week.dow) : e ? r[e.day()] : r; +} +function zo(e) { + return e === !0 ? br(this._weekdaysShort, this._week.dow) : e ? this._weekdaysShort[e.day()] : this._weekdaysShort; +} +function Ko(e) { + return e === !0 ? br(this._weekdaysMin, this._week.dow) : e ? this._weekdaysMin[e.day()] : this._weekdaysMin; +} +function Jo(e, t, r) { + var n, s, a, i = e.toLocaleLowerCase(); + if (!this._weekdaysParse) + for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], n = 0; n < 7; ++n) + a = te([2e3, 1]).day(n), this._minWeekdaysParse[n] = this.weekdaysMin( + a, + "" + ).toLocaleLowerCase(), this._shortWeekdaysParse[n] = this.weekdaysShort( + a, + "" + ).toLocaleLowerCase(), this._weekdaysParse[n] = this.weekdays(a, "").toLocaleLowerCase(); + return r ? t === "dddd" ? (s = N.call(this._weekdaysParse, i), s !== -1 ? s : null) : t === "ddd" ? (s = N.call(this._shortWeekdaysParse, i), s !== -1 ? s : null) : (s = N.call(this._minWeekdaysParse, i), s !== -1 ? s : null) : t === "dddd" ? (s = N.call(this._weekdaysParse, i), s !== -1 || (s = N.call(this._shortWeekdaysParse, i), s !== -1) ? s : (s = N.call(this._minWeekdaysParse, i), s !== -1 ? s : null)) : t === "ddd" ? (s = N.call(this._shortWeekdaysParse, i), s !== -1 || (s = N.call(this._weekdaysParse, i), s !== -1) ? s : (s = N.call(this._minWeekdaysParse, i), s !== -1 ? s : null)) : (s = N.call(this._minWeekdaysParse, i), s !== -1 || (s = N.call(this._weekdaysParse, i), s !== -1) ? s : (s = N.call(this._shortWeekdaysParse, i), s !== -1 ? s : null)); +} +function Zo(e, t, r) { + var n, s, a; + if (this._weekdaysParseExact) + return Jo.call(this, e, t, r); + for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), n = 0; n < 7; n++) { + if (s = te([2e3, 1]).day(n), r && !this._fullWeekdaysParse[n] && (this._fullWeekdaysParse[n] = new RegExp( + "^" + this.weekdays(s, "").replace(".", "\\.?") + "$", + "i" + ), this._shortWeekdaysParse[n] = new RegExp( + "^" + this.weekdaysShort(s, "").replace(".", "\\.?") + "$", + "i" + ), this._minWeekdaysParse[n] = new RegExp( + "^" + this.weekdaysMin(s, "").replace(".", "\\.?") + "$", + "i" + )), this._weekdaysParse[n] || (a = "^" + this.weekdays(s, "") + "|^" + this.weekdaysShort(s, "") + "|^" + this.weekdaysMin(s, ""), this._weekdaysParse[n] = new RegExp(a.replace(".", ""), "i")), r && t === "dddd" && this._fullWeekdaysParse[n].test(e)) + return n; + if (r && t === "ddd" && this._shortWeekdaysParse[n].test(e)) + return n; + if (r && t === "dd" && this._minWeekdaysParse[n].test(e)) + return n; + if (!r && this._weekdaysParse[n].test(e)) + return n; + } +} +function Qo(e) { + if (!this.isValid()) + return e != null ? this : NaN; + var t = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + return e != null ? (e = Wo(e, this.localeData()), this.add(e - t, "d")) : t; +} +function Xo(e) { + if (!this.isValid()) + return e != null ? this : NaN; + var t = (this.day() + 7 - this.localeData()._week.dow) % 7; + return e == null ? t : this.add(e - t, "d"); +} +function el(e) { + if (!this.isValid()) + return e != null ? this : NaN; + if (e != null) { + var t = Bo(e, this.localeData()); + return this.day(this.day() % 7 ? t : t - 7); + } else + return this.day() || 7; +} +function tl(e) { + return this._weekdaysParseExact ? (v(this, "_weekdaysRegex") || kr.call(this), e ? this._weekdaysStrictRegex : this._weekdaysRegex) : (v(this, "_weekdaysRegex") || (this._weekdaysRegex = qo), this._weekdaysStrictRegex && e ? this._weekdaysStrictRegex : this._weekdaysRegex); +} +function rl(e) { + return this._weekdaysParseExact ? (v(this, "_weekdaysRegex") || kr.call(this), e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (v(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = Vo), this._weekdaysShortStrictRegex && e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex); +} +function nl(e) { + return this._weekdaysParseExact ? (v(this, "_weekdaysRegex") || kr.call(this), e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (v(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = Go), this._weekdaysMinStrictRegex && e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex); +} +function kr() { + function e(f, w) { + return w.length - f.length; + } + var t = [], r = [], n = [], s = [], a, i, u, o, d; + for (a = 0; a < 7; a++) + i = te([2e3, 1]).day(a), u = W(this.weekdaysMin(i, "")), o = W(this.weekdaysShort(i, "")), d = W(this.weekdays(i, "")), t.push(u), r.push(o), n.push(d), s.push(u), s.push(o), s.push(d); + t.sort(e), r.sort(e), n.sort(e), s.sort(e), this._weekdaysRegex = new RegExp("^(" + s.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp( + "^(" + n.join("|") + ")", + "i" + ), this._weekdaysShortStrictRegex = new RegExp( + "^(" + r.join("|") + ")", + "i" + ), this._weekdaysMinStrictRegex = new RegExp( + "^(" + t.join("|") + ")", + "i" + ); +} +function Sr() { + return this.hours() % 12 || 12; +} +function sl() { + return this.hours() || 24; +} +g("H", ["HH", 2], 0, "hour"); +g("h", ["hh", 2], 0, Sr); +g("k", ["kk", 2], 0, sl); +g("hmm", 0, 0, function() { + return "" + Sr.apply(this) + X(this.minutes(), 2); +}); +g("hmmss", 0, 0, function() { + return "" + Sr.apply(this) + X(this.minutes(), 2) + X(this.seconds(), 2); +}); +g("Hmm", 0, 0, function() { + return "" + this.hours() + X(this.minutes(), 2); +}); +g("Hmmss", 0, 0, function() { + return "" + this.hours() + X(this.minutes(), 2) + X(this.seconds(), 2); +}); +function Kn(e, t) { + g(e, 0, 0, function() { + return this.localeData().meridiem( + this.hours(), + this.minutes(), + t + ); + }); +} +Kn("a", !0); +Kn("A", !1); +F("hour", "h"); +L("hour", 13); +function Jn(e, t) { + return t._meridiemParse; +} +m("a", Jn); +m("A", Jn); +m("H", R); +m("h", R); +m("k", R); +m("HH", R, B); +m("hh", R, B); +m("kk", R, B); +m("hmm", Un); +m("hmmss", Wn); +m("Hmm", Un); +m("Hmmss", Wn); +M(["H", "HH"], A); +M(["k", "kk"], function(e, t, r) { + var n = b(e); + t[A] = n === 24 ? 0 : n; +}); +M(["a", "A"], function(e, t, r) { + r._isPm = r._locale.isPM(e), r._meridiem = e; +}); +M(["h", "hh"], function(e, t, r) { + t[A] = b(e), _(r).bigHour = !0; +}); +M("hmm", function(e, t, r) { + var n = e.length - 2; + t[A] = b(e.substr(0, n)), t[G] = b(e.substr(n)), _(r).bigHour = !0; +}); +M("hmmss", function(e, t, r) { + var n = e.length - 4, s = e.length - 2; + t[A] = b(e.substr(0, n)), t[G] = b(e.substr(n, 2)), t[oe] = b(e.substr(s)), _(r).bigHour = !0; +}); +M("Hmm", function(e, t, r) { + var n = e.length - 2; + t[A] = b(e.substr(0, n)), t[G] = b(e.substr(n)); +}); +M("Hmmss", function(e, t, r) { + var n = e.length - 4, s = e.length - 2; + t[A] = b(e.substr(0, n)), t[G] = b(e.substr(n, 2)), t[oe] = b(e.substr(s)); +}); +function al(e) { + return (e + "").toLowerCase().charAt(0) === "p"; +} +var il = /[ap]\.?m?\.?/i, ol = Ae("Hours", !0); +function ll(e, t, r) { + return e > 11 ? r ? "pm" : "PM" : r ? "am" : "AM"; +} +var Zn = { + calendar: Ji, + longDateFormat: eo, + invalidDate: ro, + ordinal: so, + dayOfMonthOrdinalParse: ao, + relativeTime: oo, + months: So, + monthsShort: Bn, + week: Co, + weekdays: jo, + weekdaysMin: Ho, + weekdaysShort: zn, + meridiemParse: il +}, P = {}, Fe = {}, qe; +function ul(e, t) { + var r, n = Math.min(e.length, t.length); + for (r = 0; r < n; r += 1) + if (e[r] !== t[r]) + return r; + return n; +} +function Zr(e) { + return e && e.toLowerCase().replace("_", "-"); +} +function cl(e) { + for (var t = 0, r, n, s, a; t < e.length; ) { + for (a = Zr(e[t]).split("-"), r = a.length, n = Zr(e[t + 1]), n = n ? n.split("-") : null; r > 0; ) { + if (s = xt(a.slice(0, r).join("-")), s) + return s; + if (n && n.length >= r && ul(a, n) >= r - 1) + break; + r--; + } + t++; + } + return qe; +} +function hl(e) { + return e.match("^[^/\\\\]*$") != null; +} +function xt(e) { + var t = null, r; + if (P[e] === void 0 && typeof module < "u" && module && module.exports && hl(e)) + try { + t = qe._abbr, r = require, r("./locale/" + e), _e(t); + } catch { + P[e] = null; + } + return P[e]; +} +function _e(e, t) { + var r; + return e && (U(t) ? r = he(e) : r = Or(e, t), r ? qe = r : typeof console < "u" && console.warn && console.warn( + "Locale " + e + " not found. Did you forget to load it?" + )), qe._abbr; +} +function Or(e, t) { + if (t !== null) { + var r, n = Zn; + if (t.abbr = e, P[e] != null) + An( + "defineLocaleOverride", + "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info." + ), n = P[e]._config; + else if (t.parentLocale != null) + if (P[t.parentLocale] != null) + n = P[t.parentLocale]._config; + else if (r = xt(t.parentLocale), r != null) + n = r._config; + else + return Fe[t.parentLocale] || (Fe[t.parentLocale] = []), Fe[t.parentLocale].push({ + name: e, + config: t + }), null; + return P[e] = new mr(tr(n, t)), Fe[e] && Fe[e].forEach(function(s) { + Or(s.name, s.config); + }), _e(e), P[e]; + } else + return delete P[e], null; +} +function dl(e, t) { + if (t != null) { + var r, n, s = Zn; + P[e] != null && P[e].parentLocale != null ? P[e].set(tr(P[e]._config, t)) : (n = xt(e), n != null && (s = n._config), t = tr(s, t), n == null && (t.abbr = e), r = new mr(t), r.parentLocale = P[e], P[e] = r), _e(e); + } else + P[e] != null && (P[e].parentLocale != null ? (P[e] = P[e].parentLocale, e === _e() && _e(e)) : P[e] != null && delete P[e]); + return P[e]; +} +function he(e) { + var t; + if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), !e) + return qe; + if (!$(e)) { + if (t = xt(e), t) + return t; + e = [e]; + } + return cl(e); +} +function fl() { + return rr(P); +} +function vr(e) { + var t, r = e._a; + return r && _(e).overflow === -2 && (t = r[ie] < 0 || r[ie] > 11 ? ie : r[J] < 1 || r[J] > Rt(r[C], r[ie]) ? J : r[A] < 0 || r[A] > 24 || r[A] === 24 && (r[G] !== 0 || r[oe] !== 0 || r[ke] !== 0) ? A : r[G] < 0 || r[G] > 59 ? G : r[oe] < 0 || r[oe] > 59 ? oe : r[ke] < 0 || r[ke] > 999 ? ke : -1, _(e)._overflowDayOfYear && (t < C || t > J) && (t = J), _(e)._overflowWeeks && t === -1 && (t = wo), _(e)._overflowWeekday && t === -1 && (t = bo), _(e).overflow = t), e; +} +var pl = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, ml = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, yl = /Z|[+-]\d\d(?::?\d\d)?/, et = [ + ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/], + ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/], + ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/], + ["GGGG-[W]WW", /\d{4}-W\d\d/, !1], + ["YYYY-DDD", /\d{4}-\d{3}/], + ["YYYY-MM", /\d{4}-\d\d/, !1], + ["YYYYYYMMDD", /[+-]\d{10}/], + ["YYYYMMDD", /\d{8}/], + ["GGGG[W]WWE", /\d{4}W\d{3}/], + ["GGGG[W]WW", /\d{4}W\d{2}/, !1], + ["YYYYDDD", /\d{7}/], + ["YYYYMM", /\d{6}/, !1], + ["YYYY", /\d{4}/, !1] +], qt = [ + ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/], + ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/], + ["HH:mm:ss", /\d\d:\d\d:\d\d/], + ["HH:mm", /\d\d:\d\d/], + ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/], + ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/], + ["HHmmss", /\d\d\d\d\d\d/], + ["HHmm", /\d\d\d\d/], + ["HH", /\d\d/] +], gl = /^\/?Date\((-?\d+)/i, _l = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, wl = { + UT: 0, + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60 +}; +function Qn(e) { + var t, r, n = e._i, s = pl.exec(n) || ml.exec(n), a, i, u, o, d = et.length, f = qt.length; + if (s) { + for (_(e).iso = !0, t = 0, r = d; t < r; t++) + if (et[t][1].exec(s[1])) { + i = et[t][0], a = et[t][2] !== !1; + break; + } + if (i == null) { + e._isValid = !1; + return; + } + if (s[3]) { + for (t = 0, r = f; t < r; t++) + if (qt[t][1].exec(s[3])) { + u = (s[2] || " ") + qt[t][0]; + break; + } + if (u == null) { + e._isValid = !1; + return; + } + } + if (!a && u != null) { + e._isValid = !1; + return; + } + if (s[4]) + if (yl.exec(s[4])) + o = "Z"; + else { + e._isValid = !1; + return; + } + e._f = i + (u || "") + (o || ""), Tr(e); + } else + e._isValid = !1; +} +function bl(e, t, r, n, s, a) { + var i = [ + kl(e), + Bn.indexOf(t), + parseInt(r, 10), + parseInt(n, 10), + parseInt(s, 10) + ]; + return a && i.push(parseInt(a, 10)), i; +} +function kl(e) { + var t = parseInt(e, 10); + return t <= 49 ? 2e3 + t : t <= 999 ? 1900 + t : t; +} +function Sl(e) { + return e.replace(/\([^()]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, ""); +} +function Ol(e, t, r) { + if (e) { + var n = zn.indexOf(e), s = new Date( + t[0], + t[1], + t[2] + ).getDay(); + if (n !== s) + return _(r).weekdayMismatch = !0, r._isValid = !1, !1; + } + return !0; +} +function vl(e, t, r) { + if (e) + return wl[e]; + if (t) + return 0; + var n = parseInt(r, 10), s = n % 100, a = (n - s) / 100; + return a * 60 + s; +} +function Xn(e) { + var t = _l.exec(Sl(e._i)), r; + if (t) { + if (r = bl( + t[4], + t[3], + t[2], + t[5], + t[6], + t[7] + ), !Ol(t[1], r, e)) + return; + e._a = r, e._tzm = vl(t[8], t[9], t[10]), e._d = je.apply(null, e._a), e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), _(e).rfc2822 = !0; + } else + e._isValid = !1; +} +function Dl(e) { + var t = gl.exec(e._i); + if (t !== null) { + e._d = /* @__PURE__ */ new Date(+t[1]); + return; + } + if (Qn(e), e._isValid === !1) + delete e._isValid; + else + return; + if (Xn(e), e._isValid === !1) + delete e._isValid; + else + return; + e._strict ? e._isValid = !1 : p.createFromInputFallback(e); +} +p.createFromInputFallback = q( + "value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", + function(e) { + e._d = /* @__PURE__ */ new Date(e._i + (e._useUTC ? " UTC" : "")); + } +); +function De(e, t, r) { + return e ?? t ?? r; +} +function Tl(e) { + var t = new Date(p.now()); + return e._useUTC ? [ + t.getUTCFullYear(), + t.getUTCMonth(), + t.getUTCDate() + ] : [t.getFullYear(), t.getMonth(), t.getDate()]; +} +function Dr(e) { + var t, r, n = [], s, a, i; + if (!e._d) { + for (s = Tl(e), e._w && e._a[J] == null && e._a[ie] == null && Ml(e), e._dayOfYear != null && (i = De(e._a[C], s[C]), (e._dayOfYear > Ue(i) || e._dayOfYear === 0) && (_(e)._overflowDayOfYear = !0), r = je(i, 0, e._dayOfYear), e._a[ie] = r.getUTCMonth(), e._a[J] = r.getUTCDate()), t = 0; t < 3 && e._a[t] == null; ++t) + e._a[t] = n[t] = s[t]; + for (; t < 7; t++) + e._a[t] = n[t] = e._a[t] == null ? t === 2 ? 1 : 0 : e._a[t]; + e._a[A] === 24 && e._a[G] === 0 && e._a[oe] === 0 && e._a[ke] === 0 && (e._nextDay = !0, e._a[A] = 0), e._d = (e._useUTC ? je : Ao).apply( + null, + n + ), a = e._useUTC ? e._d.getUTCDay() : e._d.getDay(), e._tzm != null && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), e._nextDay && (e._a[A] = 24), e._w && typeof e._w.d < "u" && e._w.d !== a && (_(e).weekdayMismatch = !0); + } +} +function Ml(e) { + var t, r, n, s, a, i, u, o, d; + t = e._w, t.GG != null || t.W != null || t.E != null ? (a = 1, i = 4, r = De( + t.GG, + e._a[C], + He(E(), 1, 4).year + ), n = De(t.W, 1), s = De(t.E, 1), (s < 1 || s > 7) && (o = !0)) : (a = e._locale._week.dow, i = e._locale._week.doy, d = He(E(), a, i), r = De(t.gg, e._a[C], d.year), n = De(t.w, d.week), t.d != null ? (s = t.d, (s < 0 || s > 6) && (o = !0)) : t.e != null ? (s = t.e + a, (t.e < 0 || t.e > 6) && (o = !0)) : s = a), n < 1 || n > ue(r, a, i) ? _(e)._overflowWeeks = !0 : o != null ? _(e)._overflowWeekday = !0 : (u = $n(r, n, s, a, i), e._a[C] = u.year, e._dayOfYear = u.dayOfYear); +} +p.ISO_8601 = function() { +}; +p.RFC_2822 = function() { +}; +function Tr(e) { + if (e._f === p.ISO_8601) { + Qn(e); + return; + } + if (e._f === p.RFC_2822) { + Xn(e); + return; + } + e._a = [], _(e).empty = !0; + var t = "" + e._i, r, n, s, a, i, u = t.length, o = 0, d, f; + for (s = Yn(e._f, e._locale).match(yr) || [], f = s.length, r = 0; r < f; r++) + a = s[r], n = (t.match(yo(a, e)) || [])[0], n && (i = t.substr(0, t.indexOf(n)), i.length > 0 && _(e).unusedInput.push(i), t = t.slice( + t.indexOf(n) + n.length + ), o += n.length), Ee[a] ? (n ? _(e).empty = !1 : _(e).unusedTokens.push(a), _o(a, n, e)) : e._strict && !n && _(e).unusedTokens.push(a); + _(e).charsLeftOver = u - o, t.length > 0 && _(e).unusedInput.push(t), e._a[A] <= 12 && _(e).bigHour === !0 && e._a[A] > 0 && (_(e).bigHour = void 0), _(e).parsedDateParts = e._a.slice(0), _(e).meridiem = e._meridiem, e._a[A] = El( + e._locale, + e._a[A], + e._meridiem + ), d = _(e).era, d !== null && (e._a[C] = e._locale.erasConvertYear(d, e._a[C])), Dr(e), vr(e); +} +function El(e, t, r) { + var n; + return r == null ? t : e.meridiemHour != null ? e.meridiemHour(t, r) : (e.isPM != null && (n = e.isPM(r), n && t < 12 && (t += 12), !n && t === 12 && (t = 0)), t); +} +function Rl(e) { + var t, r, n, s, a, i, u = !1, o = e._f.length; + if (o === 0) { + _(e).invalidFormat = !0, e._d = /* @__PURE__ */ new Date(NaN); + return; + } + for (s = 0; s < o; s++) + a = 0, i = !1, t = pr({}, e), e._useUTC != null && (t._useUTC = e._useUTC), t._f = e._f[s], Tr(t), fr(t) && (i = !0), a += _(t).charsLeftOver, a += _(t).unusedTokens.length * 10, _(t).score = a, u ? a < n && (n = a, r = t) : (n == null || a < n || i) && (n = a, r = t, i && (u = !0)); + ye(e, r || t); +} +function xl(e) { + if (!e._d) { + var t = gr(e._i), r = t.day === void 0 ? t.date : t.day; + e._a = Pn( + [t.year, t.month, r, t.hour, t.minute, t.second, t.millisecond], + function(n) { + return n && parseInt(n, 10); + } + ), Dr(e); + } +} +function Pl(e) { + var t = new Ke(vr(es(e))); + return t._nextDay && (t.add(1, "d"), t._nextDay = void 0), t; +} +function es(e) { + var t = e._i, r = e._f; + return e._locale = e._locale || he(e._l), t === null || r === void 0 && t === "" ? St({ nullInput: !0 }) : (typeof t == "string" && (e._i = t = e._locale.preparse(t)), z(t) ? new Ke(vr(t)) : (ze(t) ? e._d = t : $(r) ? Rl(e) : r ? Tr(e) : Nl(e), fr(e) || (e._d = null), e)); +} +function Nl(e) { + var t = e._i; + U(t) ? e._d = new Date(p.now()) : ze(t) ? e._d = new Date(t.valueOf()) : typeof t == "string" ? Dl(e) : $(t) ? (e._a = Pn(t.slice(0), function(r) { + return parseInt(r, 10); + }), Dr(e)) : Se(t) ? xl(e) : ce(t) ? e._d = new Date(t) : p.createFromInputFallback(e); +} +function ts(e, t, r, n, s) { + var a = {}; + return (t === !0 || t === !1) && (n = t, t = void 0), (r === !0 || r === !1) && (n = r, r = void 0), (Se(e) && dr(e) || $(e) && e.length === 0) && (e = void 0), a._isAMomentObject = !0, a._useUTC = a._isUTC = s, a._l = r, a._i = e, a._f = t, a._strict = n, Pl(a); +} +function E(e, t, r, n) { + return ts(e, t, r, n, !1); +} +var Al = q( + "moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", + function() { + var e = E.apply(null, arguments); + return this.isValid() && e.isValid() ? e < this ? this : e : St(); + } +), Yl = q( + "moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", + function() { + var e = E.apply(null, arguments); + return this.isValid() && e.isValid() ? e > this ? this : e : St(); + } +); +function rs(e, t) { + var r, n; + if (t.length === 1 && $(t[0]) && (t = t[0]), !t.length) + return E(); + for (r = t[0], n = 1; n < t.length; ++n) + (!t[n].isValid() || t[n][e](r)) && (r = t[n]); + return r; +} +function Cl() { + var e = [].slice.call(arguments, 0); + return rs("isBefore", e); +} +function Fl() { + var e = [].slice.call(arguments, 0); + return rs("isAfter", e); +} +var Ll = function() { + return Date.now ? Date.now() : +/* @__PURE__ */ new Date(); +}, Le = [ + "year", + "quarter", + "month", + "week", + "day", + "hour", + "minute", + "second", + "millisecond" +]; +function Il(e) { + var t, r = !1, n, s = Le.length; + for (t in e) + if (v(e, t) && !(N.call(Le, t) !== -1 && (e[t] == null || !isNaN(e[t])))) + return !1; + for (n = 0; n < s; ++n) + if (e[Le[n]]) { + if (r) + return !1; + parseFloat(e[Le[n]]) !== b(e[Le[n]]) && (r = !0); + } + return !0; +} +function Ul() { + return this._isValid; +} +function Wl() { + return K(NaN); +} +function Pt(e) { + var t = gr(e), r = t.year || 0, n = t.quarter || 0, s = t.month || 0, a = t.week || t.isoWeek || 0, i = t.day || 0, u = t.hour || 0, o = t.minute || 0, d = t.second || 0, f = t.millisecond || 0; + this._isValid = Il(t), this._milliseconds = +f + d * 1e3 + // 1000 + o * 6e4 + // 1000 * 60 + u * 1e3 * 60 * 60, this._days = +i + a * 7, this._months = +s + n * 3 + r * 12, this._data = {}, this._locale = he(), this._bubble(); +} +function ot(e) { + return e instanceof Pt; +} +function sr(e) { + return e < 0 ? Math.round(-1 * e) * -1 : Math.round(e); +} +function Bl(e, t, r) { + var n = Math.min(e.length, t.length), s = Math.abs(e.length - t.length), a = 0, i; + for (i = 0; i < n; i++) + (r && e[i] !== t[i] || !r && b(e[i]) !== b(t[i])) && a++; + return a + s; +} +function ns(e, t) { + g(e, 0, 0, function() { + var r = this.utcOffset(), n = "+"; + return r < 0 && (r = -r, n = "-"), n + X(~~(r / 60), 2) + t + X(~~r % 60, 2); + }); +} +ns("Z", ":"); +ns("ZZ", ""); +m("Z", Et); +m("ZZ", Et); +M(["Z", "ZZ"], function(e, t, r) { + r._useUTC = !0, r._tzm = Mr(Et, e); +}); +var jl = /([\+\-]|\d\d)/gi; +function Mr(e, t) { + var r = (t || "").match(e), n, s, a; + return r === null ? null : (n = r[r.length - 1] || [], s = (n + "").match(jl) || ["-", 0, 0], a = +(s[1] * 60) + b(s[2]), a === 0 ? 0 : s[0] === "+" ? a : -a); +} +function Er(e, t) { + var r, n; + return t._isUTC ? (r = t.clone(), n = (z(e) || ze(e) ? e.valueOf() : E(e).valueOf()) - r.valueOf(), r._d.setTime(r._d.valueOf() + n), p.updateOffset(r, !1), r) : E(e).local(); +} +function ar(e) { + return -Math.round(e._d.getTimezoneOffset()); +} +p.updateOffset = function() { +}; +function Hl(e, t, r) { + var n = this._offset || 0, s; + if (!this.isValid()) + return e != null ? this : NaN; + if (e != null) { + if (typeof e == "string") { + if (e = Mr(Et, e), e === null) + return this; + } else + Math.abs(e) < 16 && !r && (e = e * 60); + return !this._isUTC && t && (s = ar(this)), this._offset = e, this._isUTC = !0, s != null && this.add(s, "m"), n !== e && (!t || this._changeInProgress ? is( + this, + K(e - n, "m"), + 1, + !1 + ) : this._changeInProgress || (this._changeInProgress = !0, p.updateOffset(this, !0), this._changeInProgress = null)), this; + } else + return this._isUTC ? n : ar(this); +} +function ql(e, t) { + return e != null ? (typeof e != "string" && (e = -e), this.utcOffset(e, t), this) : -this.utcOffset(); +} +function Vl(e) { + return this.utcOffset(0, e); +} +function Gl(e) { + return this._isUTC && (this.utcOffset(0, e), this._isUTC = !1, e && this.subtract(ar(this), "m")), this; +} +function $l() { + if (this._tzm != null) + this.utcOffset(this._tzm, !1, !0); + else if (typeof this._i == "string") { + var e = Mr(po, this._i); + e != null ? this.utcOffset(e) : this.utcOffset(0, !0); + } + return this; +} +function zl(e) { + return this.isValid() ? (e = e ? E(e).utcOffset() : 0, (this.utcOffset() - e) % 60 === 0) : !1; +} +function Kl() { + return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset(); +} +function Jl() { + if (!U(this._isDSTShifted)) + return this._isDSTShifted; + var e = {}, t; + return pr(e, this), e = es(e), e._a ? (t = e._isUTC ? te(e._a) : E(e._a), this._isDSTShifted = this.isValid() && Bl(e._a, t.toArray()) > 0) : this._isDSTShifted = !1, this._isDSTShifted; +} +function Zl() { + return this.isValid() ? !this._isUTC : !1; +} +function Ql() { + return this.isValid() ? this._isUTC : !1; +} +function ss() { + return this.isValid() ? this._isUTC && this._offset === 0 : !1; +} +var Xl = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, eu = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; +function K(e, t) { + var r = e, n = null, s, a, i; + return ot(e) ? r = { + ms: e._milliseconds, + d: e._days, + M: e._months + } : ce(e) || !isNaN(+e) ? (r = {}, t ? r[t] = +e : r.milliseconds = +e) : (n = Xl.exec(e)) ? (s = n[1] === "-" ? -1 : 1, r = { + y: 0, + d: b(n[J]) * s, + h: b(n[A]) * s, + m: b(n[G]) * s, + s: b(n[oe]) * s, + ms: b(sr(n[ke] * 1e3)) * s + // the millisecond decimal point is included in the match + }) : (n = eu.exec(e)) ? (s = n[1] === "-" ? -1 : 1, r = { + y: be(n[2], s), + M: be(n[3], s), + w: be(n[4], s), + d: be(n[5], s), + h: be(n[6], s), + m: be(n[7], s), + s: be(n[8], s) + }) : r == null ? r = {} : typeof r == "object" && ("from" in r || "to" in r) && (i = tu( + E(r.from), + E(r.to) + ), r = {}, r.ms = i.milliseconds, r.M = i.months), a = new Pt(r), ot(e) && v(e, "_locale") && (a._locale = e._locale), ot(e) && v(e, "_isValid") && (a._isValid = e._isValid), a; +} +K.fn = Pt.prototype; +K.invalid = Wl; +function be(e, t) { + var r = e && parseFloat(e.replace(",", ".")); + return (isNaN(r) ? 0 : r) * t; +} +function Qr(e, t) { + var r = {}; + return r.months = t.month() - e.month() + (t.year() - e.year()) * 12, e.clone().add(r.months, "M").isAfter(t) && --r.months, r.milliseconds = +t - +e.clone().add(r.months, "M"), r; +} +function tu(e, t) { + var r; + return e.isValid() && t.isValid() ? (t = Er(t, e), e.isBefore(t) ? r = Qr(e, t) : (r = Qr(t, e), r.milliseconds = -r.milliseconds, r.months = -r.months), r) : { milliseconds: 0, months: 0 }; +} +function as(e, t) { + return function(r, n) { + var s, a; + return n !== null && !isNaN(+n) && (An( + t, + "moment()." + t + "(period, number) is deprecated. Please use moment()." + t + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info." + ), a = r, r = n, n = a), s = K(r, n), is(this, s, e), this; + }; +} +function is(e, t, r, n) { + var s = t._milliseconds, a = sr(t._days), i = sr(t._months); + e.isValid() && (n = n ?? !0, i && Hn(e, ct(e, "Month") + i * r), a && Fn(e, "Date", ct(e, "Date") + a * r), s && e._d.setTime(e._d.valueOf() + s * r), n && p.updateOffset(e, a || i)); +} +var ru = as(1, "add"), nu = as(-1, "subtract"); +function os(e) { + return typeof e == "string" || e instanceof String; +} +function su(e) { + return z(e) || ze(e) || os(e) || ce(e) || iu(e) || au(e) || e === null || e === void 0; +} +function au(e) { + var t = Se(e) && !dr(e), r = !1, n = [ + "years", + "year", + "y", + "months", + "month", + "M", + "days", + "day", + "d", + "dates", + "date", + "D", + "hours", + "hour", + "h", + "minutes", + "minute", + "m", + "seconds", + "second", + "s", + "milliseconds", + "millisecond", + "ms" + ], s, a, i = n.length; + for (s = 0; s < i; s += 1) + a = n[s], r = r || v(e, a); + return t && r; +} +function iu(e) { + var t = $(e), r = !1; + return t && (r = e.filter(function(n) { + return !ce(n) && os(e); + }).length === 0), t && r; +} +function ou(e) { + var t = Se(e) && !dr(e), r = !1, n = [ + "sameDay", + "nextDay", + "lastDay", + "nextWeek", + "lastWeek", + "sameElse" + ], s, a; + for (s = 0; s < n.length; s += 1) + a = n[s], r = r || v(e, a); + return t && r; +} +function lu(e, t) { + var r = e.diff(t, "days", !0); + return r < -6 ? "sameElse" : r < -1 ? "lastWeek" : r < 0 ? "lastDay" : r < 1 ? "sameDay" : r < 2 ? "nextDay" : r < 7 ? "nextWeek" : "sameElse"; +} +function uu(e, t) { + arguments.length === 1 && (arguments[0] ? su(arguments[0]) ? (e = arguments[0], t = void 0) : ou(arguments[0]) && (t = arguments[0], e = void 0) : (e = void 0, t = void 0)); + var r = e || E(), n = Er(r, this).startOf("day"), s = p.calendarFormat(this, n) || "sameElse", a = t && (re(t[s]) ? t[s].call(this, r) : t[s]); + return this.format( + a || this.localeData().calendar(s, this, E(r)) + ); +} +function cu() { + return new Ke(this); +} +function hu(e, t) { + var r = z(e) ? e : E(e); + return this.isValid() && r.isValid() ? (t = V(t) || "millisecond", t === "millisecond" ? this.valueOf() > r.valueOf() : r.valueOf() < this.clone().startOf(t).valueOf()) : !1; +} +function du(e, t) { + var r = z(e) ? e : E(e); + return this.isValid() && r.isValid() ? (t = V(t) || "millisecond", t === "millisecond" ? this.valueOf() < r.valueOf() : this.clone().endOf(t).valueOf() < r.valueOf()) : !1; +} +function fu(e, t, r, n) { + var s = z(e) ? e : E(e), a = z(t) ? t : E(t); + return this.isValid() && s.isValid() && a.isValid() ? (n = n || "()", (n[0] === "(" ? this.isAfter(s, r) : !this.isBefore(s, r)) && (n[1] === ")" ? this.isBefore(a, r) : !this.isAfter(a, r))) : !1; +} +function pu(e, t) { + var r = z(e) ? e : E(e), n; + return this.isValid() && r.isValid() ? (t = V(t) || "millisecond", t === "millisecond" ? this.valueOf() === r.valueOf() : (n = r.valueOf(), this.clone().startOf(t).valueOf() <= n && n <= this.clone().endOf(t).valueOf())) : !1; +} +function mu(e, t) { + return this.isSame(e, t) || this.isAfter(e, t); +} +function yu(e, t) { + return this.isSame(e, t) || this.isBefore(e, t); +} +function gu(e, t, r) { + var n, s, a; + if (!this.isValid()) + return NaN; + if (n = Er(e, this), !n.isValid()) + return NaN; + switch (s = (n.utcOffset() - this.utcOffset()) * 6e4, t = V(t), t) { + case "year": + a = lt(this, n) / 12; + break; + case "month": + a = lt(this, n); + break; + case "quarter": + a = lt(this, n) / 3; + break; + case "second": + a = (this - n) / 1e3; + break; + case "minute": + a = (this - n) / 6e4; + break; + case "hour": + a = (this - n) / 36e5; + break; + case "day": + a = (this - n - s) / 864e5; + break; + case "week": + a = (this - n - s) / 6048e5; + break; + default: + a = this - n; + } + return r ? a : j(a); +} +function lt(e, t) { + if (e.date() < t.date()) + return -lt(t, e); + var r = (t.year() - e.year()) * 12 + (t.month() - e.month()), n = e.clone().add(r, "months"), s, a; + return t - n < 0 ? (s = e.clone().add(r - 1, "months"), a = (t - n) / (n - s)) : (s = e.clone().add(r + 1, "months"), a = (t - n) / (s - n)), -(r + a) || 0; +} +p.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ"; +p.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]"; +function _u() { + return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); +} +function wu(e) { + if (!this.isValid()) + return null; + var t = e !== !0, r = t ? this.clone().utc() : this; + return r.year() < 0 || r.year() > 9999 ? it( + r, + t ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ" + ) : re(Date.prototype.toISOString) ? t ? this.toDate().toISOString() : new Date(this.valueOf() + this.utcOffset() * 60 * 1e3).toISOString().replace("Z", it(r, "Z")) : it( + r, + t ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ" + ); +} +function bu() { + if (!this.isValid()) + return "moment.invalid(/* " + this._i + " */)"; + var e = "moment", t = "", r, n, s, a; + return this.isLocal() || (e = this.utcOffset() === 0 ? "moment.utc" : "moment.parseZone", t = "Z"), r = "[" + e + '("]', n = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY", s = "-MM-DD[T]HH:mm:ss.SSS", a = t + '[")]', this.format(r + n + s + a); +} +function ku(e) { + e || (e = this.isUtc() ? p.defaultFormatUtc : p.defaultFormat); + var t = it(this, e); + return this.localeData().postformat(t); +} +function Su(e, t) { + return this.isValid() && (z(e) && e.isValid() || E(e).isValid()) ? K({ to: this, from: e }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate(); +} +function Ou(e) { + return this.from(E(), e); +} +function vu(e, t) { + return this.isValid() && (z(e) && e.isValid() || E(e).isValid()) ? K({ from: this, to: e }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate(); +} +function Du(e) { + return this.to(E(), e); +} +function ls(e) { + var t; + return e === void 0 ? this._locale._abbr : (t = he(e), t != null && (this._locale = t), this); +} +var us = q( + "moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", + function(e) { + return e === void 0 ? this.localeData() : this.locale(e); + } +); +function cs() { + return this._locale; +} +var ft = 1e3, Re = 60 * ft, pt = 60 * Re, hs = (365 * 400 + 97) * 24 * pt; +function xe(e, t) { + return (e % t + t) % t; +} +function ds(e, t, r) { + return e < 100 && e >= 0 ? new Date(e + 400, t, r) - hs : new Date(e, t, r).valueOf(); +} +function fs(e, t, r) { + return e < 100 && e >= 0 ? Date.UTC(e + 400, t, r) - hs : Date.UTC(e, t, r); +} +function Tu(e) { + var t, r; + if (e = V(e), e === void 0 || e === "millisecond" || !this.isValid()) + return this; + switch (r = this._isUTC ? fs : ds, e) { + case "year": + t = r(this.year(), 0, 1); + break; + case "quarter": + t = r( + this.year(), + this.month() - this.month() % 3, + 1 + ); + break; + case "month": + t = r(this.year(), this.month(), 1); + break; + case "week": + t = r( + this.year(), + this.month(), + this.date() - this.weekday() + ); + break; + case "isoWeek": + t = r( + this.year(), + this.month(), + this.date() - (this.isoWeekday() - 1) + ); + break; + case "day": + case "date": + t = r(this.year(), this.month(), this.date()); + break; + case "hour": + t = this._d.valueOf(), t -= xe( + t + (this._isUTC ? 0 : this.utcOffset() * Re), + pt + ); + break; + case "minute": + t = this._d.valueOf(), t -= xe(t, Re); + break; + case "second": + t = this._d.valueOf(), t -= xe(t, ft); + break; + } + return this._d.setTime(t), p.updateOffset(this, !0), this; +} +function Mu(e) { + var t, r; + if (e = V(e), e === void 0 || e === "millisecond" || !this.isValid()) + return this; + switch (r = this._isUTC ? fs : ds, e) { + case "year": + t = r(this.year() + 1, 0, 1) - 1; + break; + case "quarter": + t = r( + this.year(), + this.month() - this.month() % 3 + 3, + 1 + ) - 1; + break; + case "month": + t = r(this.year(), this.month() + 1, 1) - 1; + break; + case "week": + t = r( + this.year(), + this.month(), + this.date() - this.weekday() + 7 + ) - 1; + break; + case "isoWeek": + t = r( + this.year(), + this.month(), + this.date() - (this.isoWeekday() - 1) + 7 + ) - 1; + break; + case "day": + case "date": + t = r(this.year(), this.month(), this.date() + 1) - 1; + break; + case "hour": + t = this._d.valueOf(), t += pt - xe( + t + (this._isUTC ? 0 : this.utcOffset() * Re), + pt + ) - 1; + break; + case "minute": + t = this._d.valueOf(), t += Re - xe(t, Re) - 1; + break; + case "second": + t = this._d.valueOf(), t += ft - xe(t, ft) - 1; + break; + } + return this._d.setTime(t), p.updateOffset(this, !0), this; +} +function Eu() { + return this._d.valueOf() - (this._offset || 0) * 6e4; +} +function Ru() { + return Math.floor(this.valueOf() / 1e3); +} +function xu() { + return new Date(this.valueOf()); +} +function Pu() { + var e = this; + return [ + e.year(), + e.month(), + e.date(), + e.hour(), + e.minute(), + e.second(), + e.millisecond() + ]; +} +function Nu() { + var e = this; + return { + years: e.year(), + months: e.month(), + date: e.date(), + hours: e.hours(), + minutes: e.minutes(), + seconds: e.seconds(), + milliseconds: e.milliseconds() + }; +} +function Au() { + return this.isValid() ? this.toISOString() : null; +} +function Yu() { + return fr(this); +} +function Cu() { + return ye({}, _(this)); +} +function Fu() { + return _(this).overflow; +} +function Lu() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; +} +g("N", 0, 0, "eraAbbr"); +g("NN", 0, 0, "eraAbbr"); +g("NNN", 0, 0, "eraAbbr"); +g("NNNN", 0, 0, "eraName"); +g("NNNNN", 0, 0, "eraNarrow"); +g("y", ["y", 1], "yo", "eraYear"); +g("y", ["yy", 2], 0, "eraYear"); +g("y", ["yyy", 3], 0, "eraYear"); +g("y", ["yyyy", 4], 0, "eraYear"); +m("N", Rr); +m("NN", Rr); +m("NNN", Rr); +m("NNNN", zu); +m("NNNNN", Ku); +M( + ["N", "NN", "NNN", "NNNN", "NNNNN"], + function(e, t, r, n) { + var s = r._locale.erasParse(e, n, r._strict); + s ? _(r).era = s : _(r).invalidEra = e; + } +); +m("y", Ye); +m("yy", Ye); +m("yyy", Ye); +m("yyyy", Ye); +m("yo", Ju); +M(["y", "yy", "yyy", "yyyy"], C); +M(["yo"], function(e, t, r, n) { + var s; + r._locale._eraYearOrdinalRegex && (s = e.match(r._locale._eraYearOrdinalRegex)), r._locale.eraYearOrdinalParse ? t[C] = r._locale.eraYearOrdinalParse(e, s) : t[C] = parseInt(e, 10); +}); +function Iu(e, t) { + var r, n, s, a = this._eras || he("en")._eras; + for (r = 0, n = a.length; r < n; ++r) { + switch (typeof a[r].since) { + case "string": + s = p(a[r].since).startOf("day"), a[r].since = s.valueOf(); + break; + } + switch (typeof a[r].until) { + case "undefined": + a[r].until = 1 / 0; + break; + case "string": + s = p(a[r].until).startOf("day").valueOf(), a[r].until = s.valueOf(); + break; + } + } + return a; +} +function Uu(e, t, r) { + var n, s, a = this.eras(), i, u, o; + for (e = e.toUpperCase(), n = 0, s = a.length; n < s; ++n) + if (i = a[n].name.toUpperCase(), u = a[n].abbr.toUpperCase(), o = a[n].narrow.toUpperCase(), r) + switch (t) { + case "N": + case "NN": + case "NNN": + if (u === e) + return a[n]; + break; + case "NNNN": + if (i === e) + return a[n]; + break; + case "NNNNN": + if (o === e) + return a[n]; + break; + } + else if ([i, u, o].indexOf(e) >= 0) + return a[n]; +} +function Wu(e, t) { + var r = e.since <= e.until ? 1 : -1; + return t === void 0 ? p(e.since).year() : p(e.since).year() + (t - e.offset) * r; +} +function Bu() { + var e, t, r, n = this.localeData().eras(); + for (e = 0, t = n.length; e < t; ++e) + if (r = this.clone().startOf("day").valueOf(), n[e].since <= r && r <= n[e].until || n[e].until <= r && r <= n[e].since) + return n[e].name; + return ""; +} +function ju() { + var e, t, r, n = this.localeData().eras(); + for (e = 0, t = n.length; e < t; ++e) + if (r = this.clone().startOf("day").valueOf(), n[e].since <= r && r <= n[e].until || n[e].until <= r && r <= n[e].since) + return n[e].narrow; + return ""; +} +function Hu() { + var e, t, r, n = this.localeData().eras(); + for (e = 0, t = n.length; e < t; ++e) + if (r = this.clone().startOf("day").valueOf(), n[e].since <= r && r <= n[e].until || n[e].until <= r && r <= n[e].since) + return n[e].abbr; + return ""; +} +function qu() { + var e, t, r, n, s = this.localeData().eras(); + for (e = 0, t = s.length; e < t; ++e) + if (r = s[e].since <= s[e].until ? 1 : -1, n = this.clone().startOf("day").valueOf(), s[e].since <= n && n <= s[e].until || s[e].until <= n && n <= s[e].since) + return (this.year() - p(s[e].since).year()) * r + s[e].offset; + return this.year(); +} +function Vu(e) { + return v(this, "_erasNameRegex") || xr.call(this), e ? this._erasNameRegex : this._erasRegex; +} +function Gu(e) { + return v(this, "_erasAbbrRegex") || xr.call(this), e ? this._erasAbbrRegex : this._erasRegex; +} +function $u(e) { + return v(this, "_erasNarrowRegex") || xr.call(this), e ? this._erasNarrowRegex : this._erasRegex; +} +function Rr(e, t) { + return t.erasAbbrRegex(e); +} +function zu(e, t) { + return t.erasNameRegex(e); +} +function Ku(e, t) { + return t.erasNarrowRegex(e); +} +function Ju(e, t) { + return t._eraYearOrdinalRegex || Ye; +} +function xr() { + var e = [], t = [], r = [], n = [], s, a, i = this.eras(); + for (s = 0, a = i.length; s < a; ++s) + t.push(W(i[s].name)), e.push(W(i[s].abbr)), r.push(W(i[s].narrow)), n.push(W(i[s].name)), n.push(W(i[s].abbr)), n.push(W(i[s].narrow)); + this._erasRegex = new RegExp("^(" + n.join("|") + ")", "i"), this._erasNameRegex = new RegExp("^(" + t.join("|") + ")", "i"), this._erasAbbrRegex = new RegExp("^(" + e.join("|") + ")", "i"), this._erasNarrowRegex = new RegExp( + "^(" + r.join("|") + ")", + "i" + ); +} +g(0, ["gg", 2], 0, function() { + return this.weekYear() % 100; +}); +g(0, ["GG", 2], 0, function() { + return this.isoWeekYear() % 100; +}); +function Nt(e, t) { + g(0, [e, e.length], 0, t); +} +Nt("gggg", "weekYear"); +Nt("ggggg", "weekYear"); +Nt("GGGG", "isoWeekYear"); +Nt("GGGGG", "isoWeekYear"); +F("weekYear", "gg"); +F("isoWeekYear", "GG"); +L("weekYear", 1); +L("isoWeekYear", 1); +m("G", Mt); +m("g", Mt); +m("GG", R, B); +m("gg", R, B); +m("GGGG", wr, _r); +m("gggg", wr, _r); +m("GGGGG", Tt, vt); +m("ggggg", Tt, vt); +Ze( + ["gggg", "ggggg", "GGGG", "GGGGG"], + function(e, t, r, n) { + t[n.substr(0, 2)] = b(e); + } +); +Ze(["gg", "GG"], function(e, t, r, n) { + t[n] = p.parseTwoDigitYear(e); +}); +function Zu(e) { + return ps.call( + this, + e, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy + ); +} +function Qu(e) { + return ps.call( + this, + e, + this.isoWeek(), + this.isoWeekday(), + 1, + 4 + ); +} +function Xu() { + return ue(this.year(), 1, 4); +} +function ec() { + return ue(this.isoWeekYear(), 1, 4); +} +function tc() { + var e = this.localeData()._week; + return ue(this.year(), e.dow, e.doy); +} +function rc() { + var e = this.localeData()._week; + return ue(this.weekYear(), e.dow, e.doy); +} +function ps(e, t, r, n, s) { + var a; + return e == null ? He(this, n, s).year : (a = ue(e, n, s), t > a && (t = a), nc.call(this, e, t, r, n, s)); +} +function nc(e, t, r, n, s) { + var a = $n(e, t, r, n, s), i = je(a.year, 0, a.dayOfYear); + return this.year(i.getUTCFullYear()), this.month(i.getUTCMonth()), this.date(i.getUTCDate()), this; +} +g("Q", 0, "Qo", "quarter"); +F("quarter", "Q"); +L("quarter", 7); +m("Q", Ln); +M("Q", function(e, t) { + t[ie] = (b(e) - 1) * 3; +}); +function sc(e) { + return e == null ? Math.ceil((this.month() + 1) / 3) : this.month((e - 1) * 3 + this.month() % 3); +} +g("D", ["DD", 2], "Do", "date"); +F("date", "D"); +L("date", 9); +m("D", R); +m("DD", R, B); +m("Do", function(e, t) { + return e ? t._dayOfMonthOrdinalParse || t._ordinalParse : t._dayOfMonthOrdinalParseLenient; +}); +M(["D", "DD"], J); +M("Do", function(e, t) { + t[J] = b(e.match(R)[0]); +}); +var ms = Ae("Date", !0); +g("DDD", ["DDDD", 3], "DDDo", "dayOfYear"); +F("dayOfYear", "DDD"); +L("dayOfYear", 4); +m("DDD", Dt); +m("DDDD", In); +M(["DDD", "DDDD"], function(e, t, r) { + r._dayOfYear = b(e); +}); +function ac(e) { + var t = Math.round( + (this.clone().startOf("day") - this.clone().startOf("year")) / 864e5 + ) + 1; + return e == null ? t : this.add(e - t, "d"); +} +g("m", ["mm", 2], 0, "minute"); +F("minute", "m"); +L("minute", 14); +m("m", R); +m("mm", R, B); +M(["m", "mm"], G); +var ic = Ae("Minutes", !1); +g("s", ["ss", 2], 0, "second"); +F("second", "s"); +L("second", 15); +m("s", R); +m("ss", R, B); +M(["s", "ss"], oe); +var oc = Ae("Seconds", !1); +g("S", 0, 0, function() { + return ~~(this.millisecond() / 100); +}); +g(0, ["SS", 2], 0, function() { + return ~~(this.millisecond() / 10); +}); +g(0, ["SSS", 3], 0, "millisecond"); +g(0, ["SSSS", 4], 0, function() { + return this.millisecond() * 10; +}); +g(0, ["SSSSS", 5], 0, function() { + return this.millisecond() * 100; +}); +g(0, ["SSSSSS", 6], 0, function() { + return this.millisecond() * 1e3; +}); +g(0, ["SSSSSSS", 7], 0, function() { + return this.millisecond() * 1e4; +}); +g(0, ["SSSSSSSS", 8], 0, function() { + return this.millisecond() * 1e5; +}); +g(0, ["SSSSSSSSS", 9], 0, function() { + return this.millisecond() * 1e6; +}); +F("millisecond", "ms"); +L("millisecond", 16); +m("S", Dt, Ln); +m("SS", Dt, B); +m("SSS", Dt, In); +var ge, ys; +for (ge = "SSSS"; ge.length <= 9; ge += "S") + m(ge, Ye); +function lc(e, t) { + t[ke] = b(("0." + e) * 1e3); +} +for (ge = "S"; ge.length <= 9; ge += "S") + M(ge, lc); +ys = Ae("Milliseconds", !1); +g("z", 0, 0, "zoneAbbr"); +g("zz", 0, 0, "zoneName"); +function uc() { + return this._isUTC ? "UTC" : ""; +} +function cc() { + return this._isUTC ? "Coordinated Universal Time" : ""; +} +var h = Ke.prototype; +h.add = ru; +h.calendar = uu; +h.clone = cu; +h.diff = gu; +h.endOf = Mu; +h.format = ku; +h.from = Su; +h.fromNow = Ou; +h.to = vu; +h.toNow = Du; +h.get = ho; +h.invalidAt = Fu; +h.isAfter = hu; +h.isBefore = du; +h.isBetween = fu; +h.isSame = pu; +h.isSameOrAfter = mu; +h.isSameOrBefore = yu; +h.isValid = Yu; +h.lang = us; +h.locale = ls; +h.localeData = cs; +h.max = Yl; +h.min = Al; +h.parsingFlags = Cu; +h.set = fo; +h.startOf = Tu; +h.subtract = nu; +h.toArray = Pu; +h.toObject = Nu; +h.toDate = xu; +h.toISOString = wu; +h.inspect = bu; +typeof Symbol < "u" && Symbol.for != null && (h[Symbol.for("nodejs.util.inspect.custom")] = function() { + return "Moment<" + this.format() + ">"; +}); +h.toJSON = Au; +h.toString = _u; +h.unix = Ru; +h.valueOf = Eu; +h.creationData = Lu; +h.eraName = Bu; +h.eraNarrow = ju; +h.eraAbbr = Hu; +h.eraYear = qu; +h.year = Gn; +h.isLeapYear = No; +h.weekYear = Zu; +h.isoWeekYear = Qu; +h.quarter = h.quarters = sc; +h.month = qn; +h.daysInMonth = Ro; +h.week = h.weeks = Io; +h.isoWeek = h.isoWeeks = Uo; +h.weeksInYear = tc; +h.weeksInWeekYear = rc; +h.isoWeeksInYear = Xu; +h.isoWeeksInISOWeekYear = ec; +h.date = ms; +h.day = h.days = Qo; +h.weekday = Xo; +h.isoWeekday = el; +h.dayOfYear = ac; +h.hour = h.hours = ol; +h.minute = h.minutes = ic; +h.second = h.seconds = oc; +h.millisecond = h.milliseconds = ys; +h.utcOffset = Hl; +h.utc = Vl; +h.local = Gl; +h.parseZone = $l; +h.hasAlignedHourOffset = zl; +h.isDST = Kl; +h.isLocal = Zl; +h.isUtcOffset = Ql; +h.isUtc = ss; +h.isUTC = ss; +h.zoneAbbr = uc; +h.zoneName = cc; +h.dates = q( + "dates accessor is deprecated. Use date instead.", + ms +); +h.months = q( + "months accessor is deprecated. Use month instead", + qn +); +h.years = q( + "years accessor is deprecated. Use year instead", + Gn +); +h.zone = q( + "moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", + ql +); +h.isDSTShifted = q( + "isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", + Jl +); +function hc(e) { + return E(e * 1e3); +} +function dc() { + return E.apply(null, arguments).parseZone(); +} +function gs(e) { + return e; +} +var D = mr.prototype; +D.calendar = Zi; +D.longDateFormat = to; +D.invalidDate = no; +D.ordinal = io; +D.preparse = gs; +D.postformat = gs; +D.relativeTime = lo; +D.pastFuture = uo; +D.set = Ki; +D.eras = Iu; +D.erasParse = Uu; +D.erasConvertYear = Wu; +D.erasAbbrRegex = Gu; +D.erasNameRegex = Vu; +D.erasNarrowRegex = $u; +D.months = Do; +D.monthsShort = To; +D.monthsParse = Eo; +D.monthsRegex = Po; +D.monthsShortRegex = xo; +D.week = Yo; +D.firstDayOfYear = Lo; +D.firstDayOfWeek = Fo; +D.weekdays = $o; +D.weekdaysMin = Ko; +D.weekdaysShort = zo; +D.weekdaysParse = Zo; +D.weekdaysRegex = tl; +D.weekdaysShortRegex = rl; +D.weekdaysMinRegex = nl; +D.isPM = al; +D.meridiem = ll; +function mt(e, t, r, n) { + var s = he(), a = te().set(n, t); + return s[r](a, e); +} +function _s(e, t, r) { + if (ce(e) && (t = e, e = void 0), e = e || "", t != null) + return mt(e, t, r, "month"); + var n, s = []; + for (n = 0; n < 12; n++) + s[n] = mt(e, n, r, "month"); + return s; +} +function Pr(e, t, r, n) { + typeof e == "boolean" ? (ce(t) && (r = t, t = void 0), t = t || "") : (t = e, r = t, e = !1, ce(t) && (r = t, t = void 0), t = t || ""); + var s = he(), a = e ? s._week.dow : 0, i, u = []; + if (r != null) + return mt(t, (r + a) % 7, n, "day"); + for (i = 0; i < 7; i++) + u[i] = mt(t, (i + a) % 7, n, "day"); + return u; +} +function fc(e, t) { + return _s(e, t, "months"); +} +function pc(e, t) { + return _s(e, t, "monthsShort"); +} +function mc(e, t, r) { + return Pr(e, t, r, "weekdays"); +} +function yc(e, t, r) { + return Pr(e, t, r, "weekdaysShort"); +} +function gc(e, t, r) { + return Pr(e, t, r, "weekdaysMin"); +} +_e("en", { + eras: [ + { + since: "0001-01-01", + until: 1 / 0, + offset: 1, + name: "Anno Domini", + narrow: "AD", + abbr: "AD" + }, + { + since: "0000-12-31", + until: -1 / 0, + offset: 1, + name: "Before Christ", + narrow: "BC", + abbr: "BC" + } + ], + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal: function(e) { + var t = e % 10, r = b(e % 100 / 10) === 1 ? "th" : t === 1 ? "st" : t === 2 ? "nd" : t === 3 ? "rd" : "th"; + return e + r; + } +}); +p.lang = q( + "moment.lang is deprecated. Use moment.locale instead.", + _e +); +p.langData = q( + "moment.langData is deprecated. Use moment.localeData instead.", + he +); +var se = Math.abs; +function _c() { + var e = this._data; + return this._milliseconds = se(this._milliseconds), this._days = se(this._days), this._months = se(this._months), e.milliseconds = se(e.milliseconds), e.seconds = se(e.seconds), e.minutes = se(e.minutes), e.hours = se(e.hours), e.months = se(e.months), e.years = se(e.years), this; +} +function ws(e, t, r, n) { + var s = K(t, r); + return e._milliseconds += n * s._milliseconds, e._days += n * s._days, e._months += n * s._months, e._bubble(); +} +function wc(e, t) { + return ws(this, e, t, 1); +} +function bc(e, t) { + return ws(this, e, t, -1); +} +function Xr(e) { + return e < 0 ? Math.floor(e) : Math.ceil(e); +} +function kc() { + var e = this._milliseconds, t = this._days, r = this._months, n = this._data, s, a, i, u, o; + return e >= 0 && t >= 0 && r >= 0 || e <= 0 && t <= 0 && r <= 0 || (e += Xr(ir(r) + t) * 864e5, t = 0, r = 0), n.milliseconds = e % 1e3, s = j(e / 1e3), n.seconds = s % 60, a = j(s / 60), n.minutes = a % 60, i = j(a / 60), n.hours = i % 24, t += j(i / 24), o = j(bs(t)), r += o, t -= Xr(ir(o)), u = j(r / 12), r %= 12, n.days = t, n.months = r, n.years = u, this; +} +function bs(e) { + return e * 4800 / 146097; +} +function ir(e) { + return e * 146097 / 4800; +} +function Sc(e) { + if (!this.isValid()) + return NaN; + var t, r, n = this._milliseconds; + if (e = V(e), e === "month" || e === "quarter" || e === "year") + switch (t = this._days + n / 864e5, r = this._months + bs(t), e) { + case "month": + return r; + case "quarter": + return r / 3; + case "year": + return r / 12; + } + else + switch (t = this._days + Math.round(ir(this._months)), e) { + case "week": + return t / 7 + n / 6048e5; + case "day": + return t + n / 864e5; + case "hour": + return t * 24 + n / 36e5; + case "minute": + return t * 1440 + n / 6e4; + case "second": + return t * 86400 + n / 1e3; + case "millisecond": + return Math.floor(t * 864e5) + n; + default: + throw new Error("Unknown unit " + e); + } +} +function Oc() { + return this.isValid() ? this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + b(this._months / 12) * 31536e6 : NaN; +} +function de(e) { + return function() { + return this.as(e); + }; +} +var vc = de("ms"), Dc = de("s"), Tc = de("m"), Mc = de("h"), Ec = de("d"), Rc = de("w"), xc = de("M"), Pc = de("Q"), Nc = de("y"); +function Ac() { + return K(this); +} +function Yc(e) { + return e = V(e), this.isValid() ? this[e + "s"]() : NaN; +} +function Oe(e) { + return function() { + return this.isValid() ? this._data[e] : NaN; + }; +} +var Cc = Oe("milliseconds"), Fc = Oe("seconds"), Lc = Oe("minutes"), Ic = Oe("hours"), Uc = Oe("days"), Wc = Oe("months"), Bc = Oe("years"); +function jc() { + return j(this.days() / 7); +} +var ae = Math.round, Te = { + ss: 44, + // a few seconds to seconds + s: 45, + // seconds to minute + m: 45, + // minutes to hour + h: 22, + // hours to day + d: 26, + // days to month/week + w: null, + // weeks to month + M: 11 + // months to year +}; +function Hc(e, t, r, n, s) { + return s.relativeTime(t || 1, !!r, e, n); +} +function qc(e, t, r, n) { + var s = K(e).abs(), a = ae(s.as("s")), i = ae(s.as("m")), u = ae(s.as("h")), o = ae(s.as("d")), d = ae(s.as("M")), f = ae(s.as("w")), w = ae(s.as("y")), k = a <= r.ss && ["s", a] || a < r.s && ["ss", a] || i <= 1 && ["m"] || i < r.m && ["mm", i] || u <= 1 && ["h"] || u < r.h && ["hh", u] || o <= 1 && ["d"] || o < r.d && ["dd", o]; + return r.w != null && (k = k || f <= 1 && ["w"] || f < r.w && ["ww", f]), k = k || d <= 1 && ["M"] || d < r.M && ["MM", d] || w <= 1 && ["y"] || ["yy", w], k[2] = t, k[3] = +e > 0, k[4] = n, Hc.apply(null, k); +} +function Vc(e) { + return e === void 0 ? ae : typeof e == "function" ? (ae = e, !0) : !1; +} +function Gc(e, t) { + return Te[e] === void 0 ? !1 : t === void 0 ? Te[e] : (Te[e] = t, e === "s" && (Te.ss = t - 1), !0); +} +function $c(e, t) { + if (!this.isValid()) + return this.localeData().invalidDate(); + var r = !1, n = Te, s, a; + return typeof e == "object" && (t = e, e = !1), typeof e == "boolean" && (r = e), typeof t == "object" && (n = Object.assign({}, Te, t), t.s != null && t.ss == null && (n.ss = t.s - 1)), s = this.localeData(), a = qc(this, !r, n, s), r && (a = s.pastFuture(+this, a)), s.postformat(a); +} +var Vt = Math.abs; +function ve(e) { + return (e > 0) - (e < 0) || +e; +} +function At() { + if (!this.isValid()) + return this.localeData().invalidDate(); + var e = Vt(this._milliseconds) / 1e3, t = Vt(this._days), r = Vt(this._months), n, s, a, i, u = this.asSeconds(), o, d, f, w; + return u ? (n = j(e / 60), s = j(n / 60), e %= 60, n %= 60, a = j(r / 12), r %= 12, i = e ? e.toFixed(3).replace(/\.?0+$/, "") : "", o = u < 0 ? "-" : "", d = ve(this._months) !== ve(u) ? "-" : "", f = ve(this._days) !== ve(u) ? "-" : "", w = ve(this._milliseconds) !== ve(u) ? "-" : "", o + "P" + (a ? d + a + "Y" : "") + (r ? d + r + "M" : "") + (t ? f + t + "D" : "") + (s || n || e ? "T" : "") + (s ? w + s + "H" : "") + (n ? w + n + "M" : "") + (e ? w + i + "S" : "")) : "P0D"; +} +var S = Pt.prototype; +S.isValid = Ul; +S.abs = _c; +S.add = wc; +S.subtract = bc; +S.as = Sc; +S.asMilliseconds = vc; +S.asSeconds = Dc; +S.asMinutes = Tc; +S.asHours = Mc; +S.asDays = Ec; +S.asWeeks = Rc; +S.asMonths = xc; +S.asQuarters = Pc; +S.asYears = Nc; +S.valueOf = Oc; +S._bubble = kc; +S.clone = Ac; +S.get = Yc; +S.milliseconds = Cc; +S.seconds = Fc; +S.minutes = Lc; +S.hours = Ic; +S.days = Uc; +S.weeks = jc; +S.months = Wc; +S.years = Bc; +S.humanize = $c; +S.toISOString = At; +S.toString = At; +S.toJSON = At; +S.locale = ls; +S.localeData = cs; +S.toIsoString = q( + "toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", + At +); +S.lang = us; +g("X", 0, 0, "unix"); +g("x", 0, 0, "valueOf"); +m("x", Mt); +m("X", mo); +M("X", function(e, t, r) { + r._d = new Date(parseFloat(e) * 1e3); +}); +M("x", function(e, t, r) { + r._d = new Date(b(e)); +}); +//! moment.js +p.version = "2.29.4"; +$i(E); +p.fn = h; +p.min = Cl; +p.max = Fl; +p.now = Ll; +p.utc = te; +p.unix = hc; +p.months = fc; +p.isDate = ze; +p.locale = _e; +p.invalid = St; +p.duration = K; +p.isMoment = z; +p.weekdays = mc; +p.parseZone = dc; +p.localeData = he; +p.isDuration = ot; +p.monthsShort = pc; +p.weekdaysMin = gc; +p.defineLocale = Or; +p.updateLocale = dl; +p.locales = fl; +p.weekdaysShort = yc; +p.normalizeUnits = V; +p.relativeTimeRounding = Vc; +p.relativeTimeThreshold = Gc; +p.calendarFormat = lu; +p.prototype = h; +p.HTML5_FMT = { + DATETIME_LOCAL: "YYYY-MM-DDTHH:mm", + // + DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss", + // + DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS", + // + DATE: "YYYY-MM-DD", + // + TIME: "HH:mm", + // + TIME_SECONDS: "HH:mm:ss", + // + TIME_MS: "HH:mm:ss.SSS", + // + WEEK: "GGGG-[W]WW", + // + MONTH: "YYYY-MM" + // +}; +function zc(e) { + return e.split(` +`).filter((t) => t.trim().length > 0).map((t) => JSON.parse(t)); +} +function Kc(e) { + return e.map((t) => JSON.stringify(t)).join(` +`); +} +const Jc = { + parse: zc, + stringify: Kc +}; +class Ve { + // 缓存文件文本 + constructor(t, r, n = void 0) { + Qe(this, "filepath"); + // 缓存文件路径 + Qe(this, "data", []); + // 缓存的数据 + Qe(this, "lines", []); + this.client = t, this.directory = r, this.filename = n, this.init(this.filename); + } + /** + * 构造缓存文件名 + * @param date 时间日期 + * @param format 时间日期格式化字符串 + * REF: https://momentjs.com/docs/#/parsing/string-format/ + * @param extension 文件扩展名 + * @returns 文件名 + */ + static buildCacheFileName(t = /* @__PURE__ */ new Date(), r = "YYYY-MM-DD", n = "jsonl") { + return `${p(t).format(r)}.${n}`; + } + /* 初始化 */ + init(t = Ve.buildCacheFileName()) { + this.filename = t, this.filepath = this.buildCacheFilePath(), this.clear(); + } + /** + * 构造缓存文件路径 + * @param directory 目录路径 + * @param filename 文件名 + * @returns 文件路径 + */ + buildCacheFilePath(t = this.directory, r = this.filename) { + return `${t}/${r}`; + } + /** + * 获取所有缓存文件的路径 + * @param directory 缓存文件目录路径 + * @returns 文件路径列表 + */ + async getAllCacheFilePath(t = this.directory) { + return (await this.client.readDir({ path: t })).data.filter((n) => n.isDir === !1).map((n) => this.buildCacheFilePath(t, n.name)); + } + /** + * 获取所有缓存文件的名称 + * @param directory 缓存文件目录路径 + * @returns 文件路径列表 + */ + async getAllCacheFileName(t = this.directory) { + return (await this.client.readDir({ path: t })).data.filter((n) => n.isDir === !1).map((n) => n.name); + } + /** + * 清空数据 + */ + clear() { + this.length = 0; + } + get length() { + return this.data.length; + } + set length(t) { + this.data.length = t, this.lines.length = t; + } + at(t) { + return this.data.at(t); + } + toString() { + return this.lines.join(` +`); + } + toLocaleString() { + return this.toString(); + } + push(...t) { + return this.data.push(...t), this.lines.push(...t.map((r) => JSON.stringify(r))), this.length; + } + pop() { + return this.lines.pop(), this.data.pop(); + } + shift() { + return this.lines.shift(), this.data.shift(); + } + unshift(...t) { + return this.data.unshift(...t), this.lines.unshift(...t.map((r) => JSON.stringify(r))), this.length; + } + slice(t, r) { + return this.data.slice(t, r); + } + splice(t, r, ...n) { + return this.data.splice(t, r, ...n); + } + forEach(t, r) { + this.data.forEach(t, r); + } + map(t, r) { + return this.data.map(t, r); + } + /** + * 迭代器, 可用于 for...of 循环 + * REF: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator + */ + [Symbol.iterator]() { + return this.data[Symbol.iterator](); + } + /** + * 类型标签 + */ + get [Symbol.toStringTag]() { + return "Cache"; + } + /** + * 强制类型转换 + */ + [Symbol.toPrimitive](t) { + switch (t) { + case "number": + return this.length; + case "string": + return this.toString(); + default: + return this.data; + } + } + /** + * 加载数据 + * @param filepath 文件路径 + * @returns 是否加载成功 + */ + async load(t = this.filepath) { + if ((await this.client.readDir({ path: this.directory })).data.some((n) => n.name === this.filename && n.isDir === !1)) { + const n = await this.client.getFile({ path: t }, "text"); + return this.clear(), this.push(...Jc.parse(n)), !0; + } + return !1; + } + /** + * 移除数据 + * @param filepath 文件路径 + * @returns 是否移除成功 + */ + async remove(t = this.filepath) { + return (await this.client.readDir({ path: this.directory })).data.some((n) => n.name === this.filename && n.isDir === !1) ? (await this.client.removeFile({ path: t }), !0) : !1; + } + /** + * 缓存持久化 (自动更新缓存文件名) + * @param update (在需要时) 更新文件名 + * @param filepath 文件路径 + * @returns 缓存是否持久化成功 + */ + async save(t = !0, r = this.filepath) { + try { + const n = await this._save(r); + return t && Ve.buildCacheFileName() !== this.filename && this.init(), n; + } catch { + return !1; + } + } + /** + * 保存缓存数据为 jsonlines 文件 + * @param filepath 文件路径 + * @param terminator 行终止符 + * @returns 是否持久化成功 + */ + async _save(t, r = ` +`) { + return this.data.length > 0 ? (await this.client.putFile({ + path: t, + file: this.lines.join(r) + }), !0) : !1; + } +} +async function Zc(e) { + return new Promise((t) => { + setTimeout(t, e); + }); +} +const I = Gi, Qc = new qi(`${self.name}-worker:${Q.WAKATIME_WORKER_FILE_NAME}`), we = new Bi( + { + baseURL: Vi(self.location.pathname, `plugins/${self.name}/workers/${Q.WAKATIME_WORKER_FILE_NAME}.js`) + }, + "fetch" +), ks = /* @__PURE__ */ new Map(), We = new Ve(we, Q.OFFLINE_CACHE_PATH), tt = [], Me = { + heartbeat: 0, + // 心跳定时器 + cacheCheck: 0 + // 缓存检查定时器 +}, T = { + url: "", + method: "POST", + headers: { + Authorization: "", + "User-Agent": "", + "X-Machine-Name": "" + }, + project: "", + language: "", + includeID: [], + excludeID: [], + include: [], + exclude: [], + blocks: /* @__PURE__ */ new Map(), + roots: /* @__PURE__ */ new Map(), + actions: new Array() +}; +async function Xc(e = Q.OFFLINE_CACHE_PATH) { + return we.putFile({ + isDir: !0, + path: e + }); +} +function eh(e = I.wakatime.interval) { + clearInterval(Me.heartbeat), Me.heartbeat = setInterval(Ss, e * 1e3), clearInterval(Me.cacheCheck), Me.cacheCheck = setInterval(nh, Q.CACHE_CHECK_INTERVAL); +} +function th() { + T.includeID = oh(), T.excludeID = uh(), T.include = lh(), T.exclude = ch(); +} +async function rh() { + const t = (await we.lsNotebooks()).data.notebooks; + return t.forEach((r) => ks.set(r.id, r)), t; +} +async function Ss() { + const e = Array.from(T.roots.values()); + T.blocks.clear(), T.roots.clear(); + const t = e.filter((s) => { + const a = `${s.box}${s.path}`; + return en( + a, + T.includeID, + T.excludeID + ); + }), n = (await ah(t)).filter((s) => { + const a = s.entity; + return en( + a, + T.include, + T.exclude + ); + }); + if (T.actions.push(...n), T.actions.length > 0) { + const s = T.actions.slice(); + T.actions.length = 0; + const a = []; + for (let i = 0; i < s.length; i += Q.WAKATIME_HEARTBEATS_BULK) + a.push(Os(s.slice(i, i + Q.WAKATIME_HEARTBEATS_BULK))); + if (I.wakatime.heartbeats) + for (const i of a) + await vs( + i, + (u) => { + I.wakatime.offline && We.push(u.payload); + } + ); + else + I.wakatime.offline && We.push(...a.map((i) => i.payload)); + await We.save(); + } +} +async function nh() { + const e = await We.getAllCacheFileName(); + if (tt.length = 0, tt.push(...e.map((t) => new Ve( + we, + Q.OFFLINE_CACHE_PATH, + t + ))), tt.length > 0) + for (const t of tt) + if (I.wakatime.heartbeats) { + await t.load(); + const r = []; + for (let n = 0; n < t.length; ++n) { + const s = t.at(n); + if (await vs( + Os(s), + (a) => r.push(a.payload) + ), n === 0 && r.length > 0) + return; + await Zc(Q.CACHE_COMMIT_INTERVAL); + } + if (r.length > 0) { + t.clear(), t.push(...r), await t.save(); + return; + } else + await t.remove(); + } else + return; +} +async function sh(e, t, r) { + var a; + const n = I.wakatime.hide_branch_names ? e.box : (a = ks.get(e.box)) == null ? void 0 : a.name, s = I.wakatime.hide_file_names ? `${n}${e.path}` : `${n}${(await we.getHPathByPath({ + path: e.path, + notebook: e.box + })).data}.sy`; + return { + type: Rn.File, + category: r ? I.wakatime.edit.category : I.wakatime.view.category, + project: T.project, + branch: n, + entity: s, + language: T.language, + time: t, + is_write: r + }; +} +async function ah(e) { + return Promise.all(e.flatMap((t) => t.events.map((r) => sh( + t, + r.time, + r.is_write + )))); +} +function Os(e) { + return { + url: Array.isArray(e) ? `${T.url}.bulk` : T.url, + method: T.method, + headers: [ + T.headers + ], + timeout: I.wakatime.timeout * 1e3, + payload: e + }; +} +async function vs(e, t) { + try { + const r = await we.forwardProxy(e); + return 200 <= r.data.status && r.data.status < 300 || t(e), r; + } catch { + t(e); + } +} +function en(e, t, r) { + if (t.length > 0) { + let n = !1; + for (const s of t) + if (typeof s == "string") { + if (e.includes(s)) { + n = !0; + break; + } + } else if (s instanceof RegExp && s.test(e)) { + n = !0; + break; + } + if (!n) + return !1; + } + if (r.length > 0) { + let n = !0; + for (const s of r) + if (typeof s == "string") { + if (e.includes(s)) { + n = !1; + break; + } + } else if (s instanceof RegExp && s.test(e)) { + n = !1; + break; + } + return n; + } + return !0; +} +function ih(e = /* @__PURE__ */ new Date()) { + return e.getTime() / 1e3; +} +function Ds() { + return ih(); +} +function oh() { + return Yt(I.wakatime.includeID); +} +function lh() { + return Yt(I.wakatime.include); +} +function uh() { + return Yt(I.wakatime.excludeID); +} +function ch() { + return Yt(I.wakatime.exclude); +} +function Yt(e) { + return e.filter((t) => { + if (t = t.trim(), t !== "" && t !== "//") { + if (t.startsWith("/") && t.endsWith("/")) + try { + return new RegExp(t.slice(1, -1)), !0; + } catch (r) { + return we.pushErrMsg({ msg: r }), !1; + } + return !0; + } else + return !1; + }).map((t) => t.startsWith("/") && t.endsWith("/") ? new RegExp(t.slice(1, -1)) : t); +} +function Ts(e) { + var r; + let t = T.roots.get(e.id); + if (t) { + const n = { + time: e.time, + is_write: e.is_write + }; + ((r = t.events.at(-1)) == null ? void 0 : r.is_write) === n.is_write && t.events.pop(), t.events.push(n); + } else + t = { + id: e.id, + box: e.box, + path: e.path, + events: [{ + time: e.time, + is_write: e.is_write + }] + }, T.roots.set(e.id, t); + return t; +} +async function hh() { + await Xc(), await We.load(), await rh(); +} +async function dh() { + clearInterval(Me.heartbeat), clearInterval(Me.cacheCheck), await Ss(); +} +function fh() { + eh(), th(); +} +function ph(e, t) { + Object.assign(I, e), Object.assign(T, t); +} +function mh(e) { + const t = Ds(); + T.blocks.set(e.id, e.id), Ts({ + ...e, + time: t, + is_write: !1 + }); +} +async function yh(e) { + try { + const t = Ds(); + let r = T.blocks.get(e), n = r && T.roots.get(r); + if (!n) { + const s = await we.getBlockInfo({ id: e }); + r = s.data.rootID, n = { + id: r, + box: s.data.box, + path: s.data.path, + events: [] + }, T.blocks.set(e, r), T.roots.set(r, n); + } + Ts({ + id: n.id, + box: n.box, + path: n.path, + time: t, + is_write: !0 + }); + } catch (t) { + if (t instanceof Qt) + return; + throw t; + } +} +const gh = { + onload: { + this: self, + func: hh + }, + unload: { + this: self, + func: dh + }, + restart: { + this: self, + func: fh + }, + updateConfig: { + this: self, + func: ph + }, + addViewEvent: { + this: self, + func: mh + }, + addEditEvent: { + this: self, + func: yh + } +}, _h = new BroadcastChannel(Q.WAKATIME_WORKER_BROADCAST_CHANNEL_NAME); +new Hi( + _h, + Qc, + gh +); +export { + yh as addEditEvent, + mh as addViewEvent, + hh as onload, + fh as restart, + dh as unload, + ph as updateConfig +};