diff --git a/.gitignore b/.gitignore index 643a302..b24fc19 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ packages/**/*/node_modules /dist # misc .DS_Store +cache diff --git a/packages/admin/.env.development b/packages/admin/.env.development index cfa4ec9..420db61 100644 --- a/packages/admin/.env.development +++ b/packages/admin/.env.development @@ -1,5 +1,5 @@ # 接口地址 -VITE_BASE_API=http://localhost:5000/api -#VITE_BASE_API=http://mars-api.marsview.cc/api +# VITE_BASE_API=http://localhost:5000/api +VITE_BASE_API=http://mars-api.marsview.cc/api # 后台访问地址 VITE_ADMIN_URL=http://admin.marsview.cc \ No newline at end of file diff --git a/packages/admin/src/pages/login/Login.tsx b/packages/admin/src/pages/login/Login.tsx index e338c79..f4934fe 100644 --- a/packages/admin/src/pages/login/Login.tsx +++ b/packages/admin/src/pages/login/Login.tsx @@ -18,11 +18,15 @@ export default function Login() { if (res.token) { storage.set('token', res.token); saveUserInfo(res); - const params = new URLSearchParams(location.search); - setTimeout(() => { - const url = new URL(params.get('callback') as string); - navigate(url.pathname || '/welcome'); - }); + if (location.search) { + const params = new URLSearchParams(location.search); + setTimeout(() => { + const url = new URL(params.get('callback') as string); + navigate(url.pathname || '/welcome'); + }); + } else { + navigate('/'); + } } }; return ( diff --git a/packages/admin/src/utils/request.ts b/packages/admin/src/utils/request.ts index 5153a54..7b82949 100644 --- a/packages/admin/src/utils/request.ts +++ b/packages/admin/src/utils/request.ts @@ -55,7 +55,7 @@ instance.interceptors.response.use( if (res.code === 10018) { message.error('登录已过期,请重新登录'); setTimeout(() => { - window.location.replace(`/#/login?callback=${window.location.href}`); + window.location.replace(`/login?callback=${window.location.href}`); return null; }, 2000); return Promise.reject(res.message); diff --git a/packages/docs/.vitepress/config.mts b/packages/docs/.vitepress/config.mts new file mode 100644 index 0000000..e42a353 --- /dev/null +++ b/packages/docs/.vitepress/config.mts @@ -0,0 +1,66 @@ +import { defineConfig } from 'vitepress'; + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: 'Marsview', + description: '一款面向中后台低代码平台,支持逻辑编排、事件交互和接口配置。', + lastUpdated: true, + themeConfig: { + // https://vitepress.dev/reference/default-theme-config + logo: './../assets/mars-logo.png', + nav: [ + { text: '首页', link: '/' }, + { text: '项目', link: '/project' }, + { text: '页面', link: '/page' }, + { text: '组件', link: '/lib' }, + { text: '团队', link: '/team' }, + ], + + sidebar: [ + { + text: '登录', + items: [{ text: '账号登录', link: '/login' }], + }, + { + text: '项目', + items: [ + { text: '项目介绍', link: '/project' }, + { text: '菜单介绍', link: '/project/menu' }, + { text: '角色介绍', link: '/project/role' }, + { text: '用户介绍', link: '/project/user' }, + { text: '项目访问', link: '/project/visit' }, + ], + }, + { + text: '页面', + items: [ + { text: '页面介绍', link: '/page' }, + { text: '左侧菜单', link: '/page/sideNav' }, + { text: '组件拖拽', link: '/page/drag' }, + { text: '组件大纲', link: '/page/outline' }, + { text: 'JSON源码', link: '/page/json' }, + { text: '接口管理', link: '/page/api' }, + { text: '变量管理', link: '/page/variable' }, + { text: '页面成员', link: '/page/member' }, + ], + }, + { + text: '组件', + items: [{ text: '组件介绍', link: '/lib' }], + }, + { + text: '团队介绍', + link: '/team', + }, + ], + + socialLinks: [{ icon: 'github', link: 'https://github.com/JackySoft/marsview' }], + footer: { + message: 'Released under the MIT License.', + copyright: 'Copyright © 2014-present 河畔一角', + }, + search: { + provider: 'local', + }, + }, +}); diff --git a/packages/docs/api-examples.md b/packages/docs/api-examples.md new file mode 100644 index 0000000..6bd8bb5 --- /dev/null +++ b/packages/docs/api-examples.md @@ -0,0 +1,49 @@ +--- +outline: deep +--- + +# Runtime API Examples + +This page demonstrates usage of some of the runtime APIs provided by VitePress. + +The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files: + +```md + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+``` + + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+ +## More + +Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/packages/docs/assets/lib/createLib.png b/packages/docs/assets/lib/createLib.png new file mode 100644 index 0000000..9dc67bf Binary files /dev/null and b/packages/docs/assets/lib/createLib.png differ diff --git a/packages/docs/assets/lib/dev.png b/packages/docs/assets/lib/dev.png new file mode 100644 index 0000000..3c7ae06 Binary files /dev/null and b/packages/docs/assets/lib/dev.png differ diff --git a/packages/docs/assets/login/login.png b/packages/docs/assets/login/login.png new file mode 100644 index 0000000..f6ae584 Binary files /dev/null and b/packages/docs/assets/login/login.png differ diff --git a/packages/docs/assets/login/welcome.png b/packages/docs/assets/login/welcome.png new file mode 100644 index 0000000..72dc21f Binary files /dev/null and b/packages/docs/assets/login/welcome.png differ diff --git a/packages/docs/assets/m1.png b/packages/docs/assets/m1.png new file mode 100644 index 0000000..6bce9a6 Binary files /dev/null and b/packages/docs/assets/m1.png differ diff --git a/packages/docs/assets/m2.png b/packages/docs/assets/m2.png new file mode 100644 index 0000000..742f614 Binary files /dev/null and b/packages/docs/assets/m2.png differ diff --git a/packages/docs/assets/mars-logo.png b/packages/docs/assets/mars-logo.png new file mode 100644 index 0000000..7703f45 Binary files /dev/null and b/packages/docs/assets/mars-logo.png differ diff --git a/packages/docs/assets/p1.png b/packages/docs/assets/p1.png new file mode 100644 index 0000000..a5ef394 Binary files /dev/null and b/packages/docs/assets/p1.png differ diff --git a/packages/docs/assets/p4.png b/packages/docs/assets/p4.png new file mode 100644 index 0000000..9c07203 Binary files /dev/null and b/packages/docs/assets/p4.png differ diff --git a/packages/docs/assets/page/api.png b/packages/docs/assets/page/api.png new file mode 100644 index 0000000..d6e8c4e Binary files /dev/null and b/packages/docs/assets/page/api.png differ diff --git a/packages/docs/assets/page/canvas.png b/packages/docs/assets/page/canvas.png new file mode 100644 index 0000000..51ee047 Binary files /dev/null and b/packages/docs/assets/page/canvas.png differ diff --git a/packages/docs/assets/page/click_api.png b/packages/docs/assets/page/click_api.png new file mode 100644 index 0000000..2efd704 Binary files /dev/null and b/packages/docs/assets/page/click_api.png differ diff --git a/packages/docs/assets/page/click_api_config.png b/packages/docs/assets/page/click_api_config.png new file mode 100644 index 0000000..45af3ed Binary files /dev/null and b/packages/docs/assets/page/click_api_config.png differ diff --git a/packages/docs/assets/page/click_api_structure.png b/packages/docs/assets/page/click_api_structure.png new file mode 100644 index 0000000..732b1e7 Binary files /dev/null and b/packages/docs/assets/page/click_api_structure.png differ diff --git a/packages/docs/assets/page/click_json.png b/packages/docs/assets/page/click_json.png new file mode 100644 index 0000000..44dfa39 Binary files /dev/null and b/packages/docs/assets/page/click_json.png differ diff --git a/packages/docs/assets/page/click_member.png b/packages/docs/assets/page/click_member.png new file mode 100644 index 0000000..309bb61 Binary files /dev/null and b/packages/docs/assets/page/click_member.png differ diff --git a/packages/docs/assets/page/click_outline.png b/packages/docs/assets/page/click_outline.png new file mode 100644 index 0000000..2c0f528 Binary files /dev/null and b/packages/docs/assets/page/click_outline.png differ diff --git a/packages/docs/assets/page/click_variable.png b/packages/docs/assets/page/click_variable.png new file mode 100644 index 0000000..6371ca0 Binary files /dev/null and b/packages/docs/assets/page/click_variable.png differ diff --git a/packages/docs/assets/page/createPage.png b/packages/docs/assets/page/createPage.png new file mode 100644 index 0000000..a811342 Binary files /dev/null and b/packages/docs/assets/page/createPage.png differ diff --git a/packages/docs/assets/page/drag.png b/packages/docs/assets/page/drag.png new file mode 100644 index 0000000..5440161 Binary files /dev/null and b/packages/docs/assets/page/drag.png differ diff --git a/packages/docs/assets/page/editor.png b/packages/docs/assets/page/editor.png new file mode 100644 index 0000000..66c5b76 Binary files /dev/null and b/packages/docs/assets/page/editor.png differ diff --git a/packages/docs/assets/page/json.png b/packages/docs/assets/page/json.png new file mode 100644 index 0000000..96d809b Binary files /dev/null and b/packages/docs/assets/page/json.png differ diff --git a/packages/docs/assets/page/member.png b/packages/docs/assets/page/member.png new file mode 100644 index 0000000..4082c74 Binary files /dev/null and b/packages/docs/assets/page/member.png differ diff --git a/packages/docs/assets/page/outline.png b/packages/docs/assets/page/outline.png new file mode 100644 index 0000000..5347a82 Binary files /dev/null and b/packages/docs/assets/page/outline.png differ diff --git a/packages/docs/assets/page/sort.png b/packages/docs/assets/page/sort.png new file mode 100644 index 0000000..00b5fc1 Binary files /dev/null and b/packages/docs/assets/page/sort.png differ diff --git a/packages/docs/assets/page/variable.png b/packages/docs/assets/page/variable.png new file mode 100644 index 0000000..d1d2112 Binary files /dev/null and b/packages/docs/assets/page/variable.png differ diff --git a/packages/docs/assets/project/admin1.png b/packages/docs/assets/project/admin1.png new file mode 100644 index 0000000..dbf4c22 Binary files /dev/null and b/packages/docs/assets/project/admin1.png differ diff --git a/packages/docs/assets/project/admin2.png b/packages/docs/assets/project/admin2.png new file mode 100644 index 0000000..555ef3f Binary files /dev/null and b/packages/docs/assets/project/admin2.png differ diff --git a/packages/docs/assets/project/config.png b/packages/docs/assets/project/config.png new file mode 100644 index 0000000..f0edb21 Binary files /dev/null and b/packages/docs/assets/project/config.png differ diff --git a/packages/docs/assets/project/console.png b/packages/docs/assets/project/console.png new file mode 100644 index 0000000..48f1ef2 Binary files /dev/null and b/packages/docs/assets/project/console.png differ diff --git a/packages/docs/assets/project/createMenu.png b/packages/docs/assets/project/createMenu.png new file mode 100644 index 0000000..68deaac Binary files /dev/null and b/packages/docs/assets/project/createMenu.png differ diff --git a/packages/docs/assets/project/createRole.png b/packages/docs/assets/project/createRole.png new file mode 100644 index 0000000..4ce4ad1 Binary files /dev/null and b/packages/docs/assets/project/createRole.png differ diff --git a/packages/docs/assets/project/createUser.png b/packages/docs/assets/project/createUser.png new file mode 100644 index 0000000..9491092 Binary files /dev/null and b/packages/docs/assets/project/createUser.png differ diff --git a/packages/docs/assets/project/menu.png b/packages/docs/assets/project/menu.png new file mode 100644 index 0000000..2abdfd6 Binary files /dev/null and b/packages/docs/assets/project/menu.png differ diff --git a/packages/docs/assets/project/project-list.png b/packages/docs/assets/project/project-list.png new file mode 100644 index 0000000..1cd0a1f Binary files /dev/null and b/packages/docs/assets/project/project-list.png differ diff --git a/packages/docs/assets/project/project_limit.png b/packages/docs/assets/project/project_limit.png new file mode 100644 index 0000000..0b6b603 Binary files /dev/null and b/packages/docs/assets/project/project_limit.png differ diff --git a/packages/docs/assets/project/role.png b/packages/docs/assets/project/role.png new file mode 100644 index 0000000..7079d5b Binary files /dev/null and b/packages/docs/assets/project/role.png differ diff --git a/packages/docs/assets/project/roleLimit.png b/packages/docs/assets/project/roleLimit.png new file mode 100644 index 0000000..083c3a9 Binary files /dev/null and b/packages/docs/assets/project/roleLimit.png differ diff --git a/packages/docs/assets/project/user.png b/packages/docs/assets/project/user.png new file mode 100644 index 0000000..9c42c86 Binary files /dev/null and b/packages/docs/assets/project/user.png differ diff --git a/packages/docs/assets/welcome-bg.png b/packages/docs/assets/welcome-bg.png new file mode 100644 index 0000000..c7531fb Binary files /dev/null and b/packages/docs/assets/welcome-bg.png differ diff --git a/packages/docs/index.md b/packages/docs/index.md new file mode 100644 index 0000000..7f9a61c --- /dev/null +++ b/packages/docs/index.md @@ -0,0 +1,42 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: 'Marsview 低代码平台' + text: '快速搭建后台管理系统' + tagline: 让搭建更简单,让开发更高效 + image: + src: /assets/welcome-bg.png + alt: Marsview + actions: + - theme: brand + text: 使用文档 + link: /login + - theme: alt + text: 在线体验 + link: http://www.marsview.cc + target: _blank + - theme: alt + text: GitHub + link: https://github.com/JackySoft/marsview + target: _blank + +features: + - icon: + src: /assets/m1.png + title: 项目配置 + details: 可创建完整项目,支持菜单角色配置、RBAC权限、项目主题等。 + - icon: + src: /assets/m2.png + title: 权限管理 + details: 支持项目权限、页面权限设置,页面支持开发和预览两种模式。 + - icon: + src: /assets/p1.png + title: 逻辑编排 + details: 可配置事件流完成高复杂度需求,比如:接口请求、条件判断、组件联动等。 + - icon: + src: /assets/p4.png + title: 数据源配置 + details: 任何一个组件,都可以配置静态数据、接口请求和变量绑定。 +--- diff --git a/packages/docs/lib/index.md b/packages/docs/lib/index.md new file mode 100644 index 0000000..ed8372a --- /dev/null +++ b/packages/docs/lib/index.md @@ -0,0 +1,32 @@ +# 组件 + +在开发页面的过程中,假如平台提供的组件不能满足需求,那么就需要自定义组件。当前平台不支持本地开发和上传组件,只能通过平台在线开发自定义组件。 组件开发完成发布以后,可在编辑器界面的自定义组件中显示。 + +## 创建组件 + +进入组件列表,点击右侧新建组件,输入按钮名称,按钮标识,点击确定。 + +组件标识为英文,类似于`Antd`组件库中的`Button`,组件名称为中文。 + +![创建组件](./../assets/lib/createLib.png) + +## 组件开发 + +组件创建完成后,在列表点击开发按钮,即可进入开发界面。 + +![组件开发](./../assets/lib/dev.png) + +## 开发流程 + +组件基于`React`开发,不支持`import`引入,只能通过`window.antd`的方式引入,当前支持的插件有`react`、`antd`、`dayjs`等。 + +- `index.jsx`为组件源码,在发布之前尽可能保证渲染成功。 +- `index.less`为组件样式。 +- `config.js`为组件属性配置,`attrs`为编辑器中需要展示的配置项。`config`为组件默认值,`events`为组件在编辑器中展示的事件,`methods`为组件在编辑器中展示的方法。 +- `index.md`为组件文档。 + +## 组件发布 + +当组件开发完成后,先进行保存,确保组件渲染成功,在点击发布按钮,即可将组件发布到平台。 + +发布完成后,在编辑器的自定义组件中会显示该组件。 diff --git a/packages/docs/login.md b/packages/docs/login.md new file mode 100644 index 0000000..84da364 --- /dev/null +++ b/packages/docs/login.md @@ -0,0 +1,19 @@ +# 平台账号登录 + +### 打开 Marsview + +输入平台地址:`http://marsview.com` + +![进入首页](./assets/login/welcome.png) + +### 进入登录页面 + +点击快速开始按钮,如果没有登录,会跳转到登录页面。 + +![点击快速开始](./assets/login/login.png) + +### 登录账号 + +系统默认账号:`demo@marsview.cc/marsview`,目前平台还不支持个人注册,如果需要私人账号,请发邮件到`sunnyboysoft@163.com`进行申请。 + +登录成后会跳转到项目列表页面。 diff --git a/packages/docs/markdown-examples.md b/packages/docs/markdown-examples.md new file mode 100644 index 0000000..f9258a5 --- /dev/null +++ b/packages/docs/markdown-examples.md @@ -0,0 +1,85 @@ +# Markdown Extension Examples + +This page demonstrates some of the built-in markdown extensions provided by VitePress. + +## Syntax Highlighting + +VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: + +**Input** + +````md +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` +```` + +**Output** + +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` + +## Custom Containers + +**Input** + +```md +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: +``` + +**Output** + +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: + +## More + +Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). diff --git a/packages/docs/package.json b/packages/docs/package.json new file mode 100644 index 0000000..17fd5cd --- /dev/null +++ b/packages/docs/package.json @@ -0,0 +1,15 @@ +{ + "name": "docs", + "version": "1.0.0", + "description": "Marsview低代码平台开发使用文档", + "scripts": { + "docs:dev": "vitepress dev", + "docs:build": "vitepress build && mv ./.vitepress/dist ../../dist/docs", + "docs:preview": "vitepress preview" + }, + "author": "河畔一角", + "license": "MIT", + "dependencies": { + "vitepress": "^1.3.2" + } +} diff --git a/packages/docs/page/api.md b/packages/docs/page/api.md new file mode 100644 index 0000000..08b9464 --- /dev/null +++ b/packages/docs/page/api.md @@ -0,0 +1,19 @@ +# 接口管理 + +Marsview 支持接口位置,通过左侧菜单,可以提前创建页面需要的接口,最终把接口配置在组件中。 + +## 创建接口 + +点击左侧接口图标,会显示当前页面所有的接口,点击创建按钮,可以创建新的接口。 + +![访问端工作台](./../assets/page/click_api.png) + +支持返回结构定义,比如:code, msg, data。 + +![访问端工作台](./../assets/page/click_api_structure.png) + +## 组件配置接口 + +选中表格组件,点击右侧数据配置,数据来源选择接口请求,请求地址选择刚刚创建的接口。 + +![访问端工作台](./../assets/page/click_api_config.png) diff --git a/packages/docs/page/drag.md b/packages/docs/page/drag.md new file mode 100644 index 0000000..2017093 --- /dev/null +++ b/packages/docs/page/drag.md @@ -0,0 +1,11 @@ +# 组件拖拽 + +打开左侧组件物料,可以直接点击或者拖拽组件到画布中。 + +![访问端工作台](./../assets/page/drag.png) + +## 组件排序 + +组件支持排序,选中画布中的组件,会有一个工具条,点击上移或者下移,即可调整组件的位置。 + +![访问端工作台](./../assets/page/sort.png) diff --git a/packages/docs/page/index.md b/packages/docs/page/index.md new file mode 100644 index 0000000..f38ece9 --- /dev/null +++ b/packages/docs/page/index.md @@ -0,0 +1,26 @@ +# 页面 + +页面是整个低代码平台中最重要的部分,也是整个低代码平台的核心。它可以关联到项目中,也可以独立存在。假设我们公司有一个老项目,我们想要通过 Marsview 单独实现其中一个页面,就可以只创建该页面,等页面搭建完成后,通过微服务集成到老项目中。 + +![访问端工作台](./../assets/page/editor.png) + +## 页面创建 + +页面创建有两种方式:直接在页面列表,右侧点击新页面或者在编辑器界面,左侧项目列表中进行创建。 + +页面支持权限设置,可以公开或者私有,同时支持编辑和查看两种模式,公开编辑就是所有人都可以编辑,公开查看就是别人只能看,无法编辑。如果是私有页面,只有页面成员才能操作。 + +![访问端工作台](./../assets/page/createPage.png) + +## 页面功能 + +- 页面左侧菜单:组件物料、页面列表、组件大纲、页面 json、接口管理、变量管理、页面成员。 +- 页面工具条:源码导出、保存、预览、多环境发布、发布历史、页面回滚。 +- 页面编辑器:组件点击/拖拽、组件排序、组件复制、组件删除。 +- 页面配置:属性配置、样式配置、事件配置和接口配置。 + +## 页面编辑器 + +编辑器分为四部分:顶部工具栏、左侧工具栏、中间画布区、右侧配置区。 + +![访问端工作台](./../assets/page/canvas.png) diff --git a/packages/docs/page/json.md b/packages/docs/page/json.md new file mode 100644 index 0000000..c653e3b --- /dev/null +++ b/packages/docs/page/json.md @@ -0,0 +1,110 @@ +# json 源码 + +画布中的组件都是以 json 的形式渲染出来的,每个组件都对应一个 json 对象,json 对象中包含组件的属性、事件、样式和接口配置等信息,如果你非常熟悉 json,你甚至可以直接修改 json 来实现画布中组件的渲染。 + +![访问端工作台](./../assets/page/click_json.png) + +## 组件 json 结构 + +以下为一个页面的基本结构,`userInfo`为当前登录用户信息对象,`page`为当前页面信息对象。 + +```json +{ + "userInfo": { + "userId": 0, + "userName": "" + }, + "page": { + "pageId": 341, + "pageName": "dsfc", + "remark": "432432", + "stg_state": 1, + "pre_state": 1, + "prd_state": 1, + "user_id": 49, + "config": { + "props": { + "theme": "#1677ff" + }, + "style": { + "color": "#000", + "backgroundColor": "#fff", + "padding": "20px" + }, + "scopeCss": "", + "scopeStyle": { + "color": "#000", + "backgroundColor": "#fff", + "padding": "20px" + }, + "events": [], + "api": { + "sourceType": "json", + "id": "", + "source": {}, + "sourceField": "" + } + }, + "events": [ + { + "value": "onLoad", + "name": "初始化事件" + } + ], + "apis": {}, + "elements": [], + "elementsMap": {}, + "variables": [], + "variableData": {}, + "formData": {}, + "interceptor": { + "headers": [ + { + "key": "", + "value": "" + } + ], + "timeout": 8, + "timeoutErrorMessage": "请求超时,请稍后再试" + }, + "is_public": 1, + "is_edit": 1, + "preview_img": null, + "stg_publish_id": 0, + "pre_publish_id": 0, + "prd_publish_id": 0 + } +} +``` + +## 基本结构 + +props 属性为页面或组件的属性,style 为页面或组件的样式,scopeCss 为页面或组件的自定义样式,scopeStyle 为组件的最终组合样式,events 为页面或组件的事件,api 为页面或组件的接口配置。 + +```json +{ + "config": { + "props": { + "theme": "#1677ff" + }, + "style": { + "color": "#000", + "backgroundColor": "#fff", + "padding": "20px" + }, + "scopeCss": "", + "scopeStyle": { + "color": "#000", + "backgroundColor": "#fff", + "padding": "20px" + }, + "events": [], + "api": { + "sourceType": "json", + "id": "", + "source": {}, + "sourceField": "" + } + } +} +``` diff --git a/packages/docs/page/member.md b/packages/docs/page/member.md new file mode 100644 index 0000000..6e68193 --- /dev/null +++ b/packages/docs/page/member.md @@ -0,0 +1,7 @@ +# 页面成员 + +页面成员主要用来控制权限的,假如你的页面不希望别人看到,需要设置为私有,但是希望自己的人看到,就需要通过页面成员来控制。把团队成员邮箱添加到页面成员中,团队伙伴就可以操作你的页面了。 + +## 创建成员 + +![页面成员](./../assets/page/click_member.png) diff --git a/packages/docs/page/outline.md b/packages/docs/page/outline.md new file mode 100644 index 0000000..83fcf47 --- /dev/null +++ b/packages/docs/page/outline.md @@ -0,0 +1,5 @@ +# 组件大纲 + +组件大纲主要用来呈现画布中组件的排列结构,同时当你无法选中画布中的组件时,可点击组件大纲中的组件进行选中。 + +![访问端工作台](./../assets/page/click_outline.png) diff --git a/packages/docs/page/sideNav.md b/packages/docs/page/sideNav.md new file mode 100644 index 0000000..45d3b8f --- /dev/null +++ b/packages/docs/page/sideNav.md @@ -0,0 +1,25 @@ +# 左侧菜单 + +顶部工具栏主要实现全局功能,比如保存、预览、发布等,暂时不支持源码导出,后续会支持。 + +左侧工具栏主要实现组件的拖拽,组件大纲(点击树形大纲可选中画布中的组件)、页面列表、组件 JSON 源码、接口管理、变量管理、页面成员。 + +**组件大纲** + +![组件大纲](./../assets/page/outline.png) + +**组件源码** + +![组件源码](./../assets/page/json.png) + +**接口管理** + +![接口管理](./../assets/page/api.png) + +**变量管理** + +![变量管理](./../assets/page/variable.png) + +**页面成员** + +![页面成员](./../assets/page/member.png) diff --git a/packages/docs/page/variable.md b/packages/docs/page/variable.md new file mode 100644 index 0000000..a5a1b1d --- /dev/null +++ b/packages/docs/page/variable.md @@ -0,0 +1,9 @@ +# 变量管理 + +变量可以用来完成页面中复杂的页面交互,比如点击一个按钮,需要动态控制变量值,包括页面组件需要绑定一个变量值等,跟我们平常开发`React`中的`useState`一样。 + +## 创建变量 + +变量支持基础类型:`string`, `number`, `boolean`, `object`, `array`. + +![访问端工作台](./../assets/page/click_variable.png) diff --git a/packages/docs/project/index.md b/packages/docs/project/index.md new file mode 100644 index 0000000..a0421ff --- /dev/null +++ b/packages/docs/project/index.md @@ -0,0 +1,23 @@ +# 项目 + +Marsview 支持从零开始创建项目,同时支持一整套完整项目的配置,比如:项目菜单、项目角色、项目权限、项目开发成员等,创建完成后,可以直接通过`http://admin.marsview.cc`访问创建的项目。 + +### 项目列表 + +项目列表包含名称搜索,新建项目,列表刷新,我创建的和市场公开的项目。 + +![项目列表](./../assets/project/project-list.png) + +### 创建项目 + +点击右侧新建项目,会跳转到项目初始化页面。填写项目名称、项目描述、项目 Logo、主题色等,即可完成项目创建。 + +![项目列表](./../assets/project/config.png) + +### 项目权限 + +项目创建的时候,可以设置公开和私有,公开项目所有人可访问,私有项目只有授权以后才能访问。授权是通过创建角色权限来实现。 + +开发权限需要在项目创建成功以后,再次打开,才能设置开发权限,也就是指定谁能修改项目。 + +![项目列表](./../assets/project/project_limit.png) diff --git a/packages/docs/project/menu.md b/packages/docs/project/menu.md new file mode 100644 index 0000000..bfa0a4e --- /dev/null +++ b/packages/docs/project/menu.md @@ -0,0 +1,13 @@ +# 菜单 + +对于后台管理系统而言,菜单是必不可少的,创建完项目以后,还需要给项目添加菜单。菜单支持创建、复制、编辑、删除等操作。 + +![项目列表](./../assets/project/menu.png) + +### 填写菜单信息 + +点击新增,弹出创建菜单的弹窗,支持菜单、页面和按钮类型,输入菜单名称,选择一个图标,最后关联一个页面即可,如果没有页面,可以临时创建一个页面进行关联。 + +每个菜单都必须关联一个页面,用于在后台访问时,进行页面跳转。 + +![项目列表](./../assets/project/createMenu.png) diff --git a/packages/docs/project/role.md b/packages/docs/project/role.md new file mode 100644 index 0000000..7a1d60a --- /dev/null +++ b/packages/docs/project/role.md @@ -0,0 +1,17 @@ +# 角色 + +在项目中,角色不是必须的,如果你的项目是公开的,那所有人都可以访问,就无需创建角色。如果你的项目是私有的,那么就需要创建角色,通过角色来完成权限控制。 + +![项目列表](./../assets/project/role.png) + +## 创建角色 + +点击右侧新增,输入名称和描述即可。 + +![创建角色](./../assets/project/createRole.png) + +### 角色权限 + +一个用户可以拥有一个或者多个角色,一个角色对应一套菜单权限,通过给角色赋予菜单权限,来控制用户访问。 + +![创建角色](./../assets/project/roleLimit.png) diff --git a/packages/docs/project/user.md b/packages/docs/project/user.md new file mode 100644 index 0000000..b72f74f --- /dev/null +++ b/packages/docs/project/user.md @@ -0,0 +1,11 @@ +# 用户 + +前面介绍了项目配置、菜单权限、角色管理,如果是私有项目,用户就是最重要的功能,用户列表可以指定哪些人可以访问项目,当前只能通过邮箱来添加用户。比如:你给客户开发一个系统,那么你可以给客户添加用户,这样客户就可以访问你的项目了。 + +![项目列表](./../assets/project/user.png) + +## 创建用户 + +点击右侧新增,选择用户角色,搜索系统用户即可,不支持模糊搜索,必须精确匹配。 如果选择了管理员,那改用户就可以访问项目所有功能,如果选择了普通用户,需要给用户指定一个角色。 + +![创建用户](./../assets/project/createUser.png) diff --git a/packages/docs/project/visit.md b/packages/docs/project/visit.md new file mode 100644 index 0000000..d6d936a --- /dev/null +++ b/packages/docs/project/visit.md @@ -0,0 +1,13 @@ +# 项目访问 + +项目创建完成后,就可以访问项目,只不过项目是空的,我们还需要给项目添加菜单以及用户。 + +## 进入访问端 + +输入后台地址:`http://admin.marsview.cc`,进入访问端。左侧菜单就是我们在创建项目时添加的菜单,点击菜单会跳转到我们关联的页面。 + +![访问端工作台](./../assets/project/console.png) + +![访问端工作台](./../assets/project/admin1.png) + +![访问端工作台](./../assets/project/admin2.png) diff --git a/packages/docs/team.md b/packages/docs/team.md new file mode 100644 index 0000000..10042a7 --- /dev/null +++ b/packages/docs/team.md @@ -0,0 +1,37 @@ + + +# 我们的团队 + +我们是一群热爱开源和前端开发的小伙伴,在这里我们聚集了来自对低代码感兴趣的开发者。 + + diff --git a/packages/editor/src/pages/login/Login.tsx b/packages/editor/src/pages/login/Login.tsx index ee892f6..4148d71 100644 --- a/packages/editor/src/pages/login/Login.tsx +++ b/packages/editor/src/pages/login/Login.tsx @@ -18,11 +18,15 @@ export default function Login() { if (res.token) { storage.set('token', res.token); saveUserInfo(res); - const params = new URLSearchParams(location.search); - setTimeout(() => { - const url = new URL(params.get('callback') as string); - navigate(url.pathname || '/projects'); - }); + if (location.search) { + const params = new URLSearchParams(location.search); + setTimeout(() => { + const url = new URL(params.get('callback') as string); + navigate(url.pathname || '/projects'); + }); + } else { + navigate('/projects'); + } } }; return ( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b07b2ab..840c66e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -122,6 +122,12 @@ importers: specifier: ^2.2.0 version: 2.8.8 + packages/docs: + dependencies: + vitepress: + specifier: ^1.3.2 + version: 1.3.2(@algolia/client-search@5.0.0)(@types/react@18.2.66)(axios@0.27.2)(less@4.2.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.16.3)(typescript@5.4.2) + packages/editor: dependencies: '@bytemd/plugin-gemoji': @@ -278,6 +284,184 @@ packages: engines: {node: '>=0.10.0'} dev: true + /@algolia/autocomplete-core@1.9.3(@algolia/client-search@5.0.0)(algoliasearch@4.24.0)(search-insights@2.16.3): + resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@5.0.0)(algoliasearch@4.24.0)(search-insights@2.16.3) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@5.0.0)(algoliasearch@4.24.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + dev: false + + /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@5.0.0)(algoliasearch@4.24.0)(search-insights@2.16.3): + resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} + peerDependencies: + search-insights: '>= 1 < 3' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@5.0.0)(algoliasearch@4.24.0) + search-insights: 2.16.3 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + dev: false + + /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@5.0.0)(algoliasearch@4.24.0): + resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@5.0.0)(algoliasearch@4.24.0) + '@algolia/client-search': 5.0.0 + algoliasearch: 4.24.0 + dev: false + + /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@5.0.0)(algoliasearch@4.24.0): + resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/client-search': 5.0.0 + algoliasearch: 4.24.0 + dev: false + + /@algolia/cache-browser-local-storage@4.24.0: + resolution: {integrity: sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==} + dependencies: + '@algolia/cache-common': 4.24.0 + dev: false + + /@algolia/cache-common@4.24.0: + resolution: {integrity: sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==} + dev: false + + /@algolia/cache-in-memory@4.24.0: + resolution: {integrity: sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==} + dependencies: + '@algolia/cache-common': 4.24.0 + dev: false + + /@algolia/client-account@4.24.0: + resolution: {integrity: sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==} + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/transporter': 4.24.0 + dev: false + + /@algolia/client-analytics@4.24.0: + resolution: {integrity: sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==} + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + dev: false + + /@algolia/client-common@4.24.0: + resolution: {integrity: sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==} + dependencies: + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + dev: false + + /@algolia/client-common@5.0.0: + resolution: {integrity: sha512-6N5Qygv/Z/B+rPufnPDLNWgsMf1uubMU7iS52xLcQSLiGlTS4f9eLUrmNXSzHccP33uoFi6xN9craN1sZi5MPQ==} + engines: {node: '>= 14.0.0'} + dev: false + + /@algolia/client-personalization@4.24.0: + resolution: {integrity: sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==} + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + dev: false + + /@algolia/client-search@4.24.0: + resolution: {integrity: sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==} + dependencies: + '@algolia/client-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/transporter': 4.24.0 + dev: false + + /@algolia/client-search@5.0.0: + resolution: {integrity: sha512-QdDYMzoxYZ3axzBy6CHe+M+NlOGvHEFTa2actchGnp25Uu0N6lyVNivT7nph+P1XoxgAD08cWbeJD3wWQXnpng==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.0.0 + '@algolia/requester-browser-xhr': 5.0.0 + '@algolia/requester-node-http': 5.0.0 + dev: false + + /@algolia/logger-common@4.24.0: + resolution: {integrity: sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==} + dev: false + + /@algolia/logger-console@4.24.0: + resolution: {integrity: sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==} + dependencies: + '@algolia/logger-common': 4.24.0 + dev: false + + /@algolia/recommend@4.24.0: + resolution: {integrity: sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==} + dependencies: + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 + dev: false + + /@algolia/requester-browser-xhr@4.24.0: + resolution: {integrity: sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==} + dependencies: + '@algolia/requester-common': 4.24.0 + dev: false + + /@algolia/requester-browser-xhr@5.0.0: + resolution: {integrity: sha512-oOoQhSpg/RGiGHjn/cqtYpHBkkd+5M/DCi1jmfW+ZOvLVx21QVt6PbWIJoKJF85moNFo4UG9pMBU35R1MaxUKQ==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.0.0 + dev: false + + /@algolia/requester-common@4.24.0: + resolution: {integrity: sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==} + dev: false + + /@algolia/requester-node-http@4.24.0: + resolution: {integrity: sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==} + dependencies: + '@algolia/requester-common': 4.24.0 + dev: false + + /@algolia/requester-node-http@5.0.0: + resolution: {integrity: sha512-FwCdugzpnW0wxbgWPauAz5vhmWGQnjZa5DCl9PBbIoDNEy/NIV8DmiL9CEA+LljQdDidG0l0ijojcTNaRRtPvQ==} + engines: {node: '>= 14.0.0'} + dependencies: + '@algolia/client-common': 5.0.0 + dev: false + + /@algolia/transporter@4.24.0: + resolution: {integrity: sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==} + dependencies: + '@algolia/cache-common': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/requester-common': 4.24.0 + dev: false + /@ampproject/remapping@2.3.0: resolution: {integrity: sha1-7UQbb6YAByUgzhi0PSyMyMrsx/Q=} engines: {node: '>=6.0.0'} @@ -707,10 +891,20 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + dev: false + /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha1-xK4ALGHSh55yRYHZZmVYPbwdwOA=} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + dev: false + /@babel/helper-validator-option@7.23.5: resolution: {integrity: sha1-kHo/vUUjQmKFNl0SBsQjxMVSAwc=} engines: {node: '>=6.9.0'} @@ -743,6 +937,14 @@ packages: '@babel/types': 7.24.0 dev: true + /@babel/parser@7.25.3: + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.25.2 + dev: false + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.24.0): resolution: {integrity: sha1-7T59rd4EbM52Go488AOhPRp5ctk=} engines: {node: '>=6.9.0'} @@ -827,6 +1029,15 @@ packages: to-fast-properties: 2.0.0 dev: true + /@babel/types@7.25.2: + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + dev: false + /@bytemd/plugin-gemoji@1.21.0(bytemd@1.21.0): resolution: {integrity: sha1-INXv8oE9f2B2Chao/zg3Ou1MRJk=} peerDependencies: @@ -876,6 +1087,52 @@ packages: resolution: {integrity: sha1-6nCmCGQTDaR2QG/dHUZeMGiuoP8=} dev: false + /@docsearch/css@3.6.1: + resolution: {integrity: sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg==} + dev: false + + /@docsearch/js@3.6.1(@algolia/client-search@5.0.0)(@types/react@18.2.66)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.16.3): + resolution: {integrity: sha512-erI3RRZurDr1xES5hvYJ3Imp7jtrXj6f1xYIzDzxiS7nNBufYWPbJwrmMqWC5g9y165PmxEmN9pklGCdLi0Iqg==} + dependencies: + '@docsearch/react': 3.6.1(@algolia/client-search@5.0.0)(@types/react@18.2.66)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.16.3) + preact: 10.23.2 + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/react' + - react + - react-dom + - search-insights + dev: false + + /@docsearch/react@3.6.1(@algolia/client-search@5.0.0)(@types/react@18.2.66)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.16.3): + resolution: {integrity: sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + search-insights: '>= 1 < 3' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + search-insights: + optional: true + dependencies: + '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@5.0.0)(algoliasearch@4.24.0)(search-insights@2.16.3) + '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@5.0.0)(algoliasearch@4.24.0) + '@docsearch/css': 3.6.1 + '@types/react': 18.2.66 + algoliasearch: 4.24.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + search-insights: 2.16.3 + transitivePeerDependencies: + - '@algolia/client-search' + dev: false + /@egjs/agent@2.4.3: resolution: {integrity: sha1-bUTi+x/3urJCwH+Ccy/mAwWsbwY=} dev: false @@ -1364,6 +1621,10 @@ packages: resolution: {integrity: sha1-18bmdVx4VnqVHgSrUu8P0m3lnzI=} dev: true + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + dev: false + /@jridgewell/trace-mapping@0.3.25: resolution: {integrity: sha1-FfGQ6YiV8/wjJ27hS8drZ1wuUPA=} dependencies: @@ -1651,6 +1912,18 @@ packages: '@daybrush/utils': 1.13.0 dev: false + /@shikijs/core@1.13.0: + resolution: {integrity: sha512-Mj5NVfbAXcD1GnwOTSPl8hBn/T8UDpfFQTptp+p41n/CbUcJtOq98WaRD7Lz3hCglYotUTHUWtzu3JhK6XlkAA==} + dependencies: + '@types/hast': 3.0.4 + dev: false + + /@shikijs/transformers@1.13.0: + resolution: {integrity: sha512-51aLIT6a93rVGoTxl2+p6hb7ILbTA4p/unoibEAjnPMzHto4cqxhuHyDVgtQur5ANpGsL3ihSGKaZDrpcWH8vQ==} + dependencies: + shiki: 1.13.0 + dev: false + /@types/babel__core@7.20.5: resolution: {integrity: sha1-PfFfJ7qFMZyqB7oI0HIYibs5wBc=} dependencies: @@ -1705,6 +1978,12 @@ packages: '@types/unist': 2.0.10 dev: false + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + dependencies: + '@types/unist': 2.0.10 + dev: false + /@types/json-schema@7.0.15: resolution: {integrity: sha1-WWoXRyM2lNUPatinhp/Lb1bPWEE=} dev: true @@ -1713,6 +1992,10 @@ packages: resolution: {integrity: sha1-J5tRJFunh8gQoNKGImxZAM1eZ2U=} dev: true + /@types/linkify-it@5.0.0: + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + dev: false + /@types/lodash-es@4.17.12: resolution: {integrity: sha1-ZfbR5fgFOap8+/yWLeXe8M9PNBs=} dependencies: @@ -1721,6 +2004,13 @@ packages: /@types/lodash@4.17.0: resolution: {integrity: sha1-13Q1XkHzctU1Ck0HFKu0gZSkicM=} + /@types/markdown-it@14.1.2: + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + dev: false + /@types/md5@2.3.5: resolution: {integrity: sha1-SBzvColuOl3L/FqKiwLAWVivSKU=} dev: true @@ -1731,6 +2021,10 @@ packages: '@types/unist': 2.0.10 dev: false + /@types/mdurl@2.0.0: + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + dev: false + /@types/minimist@1.2.5: resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} dev: false @@ -1799,6 +2093,10 @@ packages: resolution: {integrity: sha1-BP+n9AarYo9/fpfKI+KQzYqxXvw=} dev: false + /@types/web-bluetooth@0.0.20: + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + dev: false + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.5.4): resolution: {integrity: sha1-MIMMHKgf1fPCcU5STEMD4BlPnNM=} engines: {node: ^16.0.0 || >=18.0.0} @@ -1951,6 +2249,191 @@ packages: - supports-color dev: true + /@vitejs/plugin-vue@5.1.2(vite@5.3.5)(vue@3.4.38): + resolution: {integrity: sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + dependencies: + vite: 5.3.5(@types/node@20.11.27)(less@4.2.0) + vue: 3.4.38(typescript@5.4.2) + dev: false + + /@vue/compiler-core@3.4.38: + resolution: {integrity: sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==} + dependencies: + '@babel/parser': 7.25.3 + '@vue/shared': 3.4.38 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + dev: false + + /@vue/compiler-dom@3.4.38: + resolution: {integrity: sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==} + dependencies: + '@vue/compiler-core': 3.4.38 + '@vue/shared': 3.4.38 + dev: false + + /@vue/compiler-sfc@3.4.38: + resolution: {integrity: sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==} + dependencies: + '@babel/parser': 7.25.3 + '@vue/compiler-core': 3.4.38 + '@vue/compiler-dom': 3.4.38 + '@vue/compiler-ssr': 3.4.38 + '@vue/shared': 3.4.38 + estree-walker: 2.0.2 + magic-string: 0.30.11 + postcss: 8.4.40 + source-map-js: 1.2.0 + dev: false + + /@vue/compiler-ssr@3.4.38: + resolution: {integrity: sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==} + dependencies: + '@vue/compiler-dom': 3.4.38 + '@vue/shared': 3.4.38 + dev: false + + /@vue/devtools-api@7.3.8: + resolution: {integrity: sha512-NURFwmxz4WukFU54IHgyGI2KSejdgHG5JC4xTcWmTWEBIc8aelj9fBy4qsboObGHFp3JIdRxxANO9s2wZA/pVQ==} + dependencies: + '@vue/devtools-kit': 7.3.8 + dev: false + + /@vue/devtools-kit@7.3.8: + resolution: {integrity: sha512-HYy3MQP1nZ6GbE4vrgJ/UB+MvZnhYmEwCa/UafrEpdpwa+jNCkz1ZdUrC5I7LpkH1ShREEV2/pZlAQdBj+ncLQ==} + dependencies: + '@vue/devtools-shared': 7.3.8 + birpc: 0.2.17 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.1 + dev: false + + /@vue/devtools-shared@7.3.8: + resolution: {integrity: sha512-1NiJbn7Yp47nPDWhFZyEKpB2+5/+7JYv8IQnU0ccMrgslPR2dL7u1DIyI7mLqy4HN1ll36gQy0k8GqBYSFgZJw==} + dependencies: + rfdc: 1.4.1 + dev: false + + /@vue/reactivity@3.4.38: + resolution: {integrity: sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==} + dependencies: + '@vue/shared': 3.4.38 + dev: false + + /@vue/runtime-core@3.4.38: + resolution: {integrity: sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==} + dependencies: + '@vue/reactivity': 3.4.38 + '@vue/shared': 3.4.38 + dev: false + + /@vue/runtime-dom@3.4.38: + resolution: {integrity: sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==} + dependencies: + '@vue/reactivity': 3.4.38 + '@vue/runtime-core': 3.4.38 + '@vue/shared': 3.4.38 + csstype: 3.1.3 + dev: false + + /@vue/server-renderer@3.4.38(vue@3.4.38): + resolution: {integrity: sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==} + peerDependencies: + vue: 3.4.38 + dependencies: + '@vue/compiler-ssr': 3.4.38 + '@vue/shared': 3.4.38 + vue: 3.4.38(typescript@5.4.2) + dev: false + + /@vue/shared@3.4.38: + resolution: {integrity: sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==} + dev: false + + /@vueuse/core@10.11.1(vue@3.4.38): + resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.11.1 + '@vueuse/shared': 10.11.1(vue@3.4.38) + vue-demi: 0.14.10(vue@3.4.38) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/integrations@10.11.1(axios@0.27.2)(focus-trap@7.5.4)(vue@3.4.38): + resolution: {integrity: sha512-Y5hCGBguN+vuVYTZmdd/IMXLOdfS60zAmDmFYc4BKBcMUPZH1n4tdyDECCPjXm0bNT3ZRUy1xzTLGaUje8Xyaw==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^4 + drauu: ^0.3 + focus-trap: ^7 + fuse.js: ^6 + idb-keyval: ^6 + jwt-decode: ^3 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^6 + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + dependencies: + '@vueuse/core': 10.11.1(vue@3.4.38) + '@vueuse/shared': 10.11.1(vue@3.4.38) + axios: 0.27.2 + focus-trap: 7.5.4 + vue-demi: 0.14.10(vue@3.4.38) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/metadata@10.11.1: + resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==} + dev: false + + /@vueuse/shared@10.11.1(vue@3.4.38): + resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} + dependencies: + vue-demi: 0.14.10(vue@3.4.38) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -2027,6 +2510,26 @@ packages: uri-js: 4.4.1 dev: true + /algoliasearch@4.24.0: + resolution: {integrity: sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==} + dependencies: + '@algolia/cache-browser-local-storage': 4.24.0 + '@algolia/cache-common': 4.24.0 + '@algolia/cache-in-memory': 4.24.0 + '@algolia/client-account': 4.24.0 + '@algolia/client-analytics': 4.24.0 + '@algolia/client-common': 4.24.0 + '@algolia/client-personalization': 4.24.0 + '@algolia/client-search': 4.24.0 + '@algolia/logger-common': 4.24.0 + '@algolia/logger-console': 4.24.0 + '@algolia/recommend': 4.24.0 + '@algolia/requester-browser-xhr': 4.24.0 + '@algolia/requester-common': 4.24.0 + '@algolia/requester-node-http': 4.24.0 + '@algolia/transporter': 4.24.0 + dev: false + /align-text@0.1.4: resolution: {integrity: sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=} engines: {node: '>=0.10.0'} @@ -2263,6 +2766,10 @@ packages: resolution: {integrity: sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=} dev: false + /birpc@0.2.17: + resolution: {integrity: sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==} + dev: false + /boolbase@1.0.0: resolution: {integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24=} dev: false @@ -2741,6 +3248,13 @@ packages: dependencies: is-what: 3.14.1 + /copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + dependencies: + is-what: 4.1.16 + dev: false + /copy-to-clipboard@3.3.3: resolution: {integrity: sha1-VaxDoduK5jmkvZlRHBSM3RuDobA=} dependencies: @@ -3345,6 +3859,10 @@ packages: engines: {node: '>=4.0'} dev: true + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: false + /esutils@2.0.3: resolution: {integrity: sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=} engines: {node: '>=0.10.0'} @@ -3537,6 +4055,12 @@ packages: uglify-js: 2.8.29 dev: false + /focus-trap@7.5.4: + resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} + dependencies: + tabbable: 6.2.0 + dev: false + /follow-redirects@1.15.6: resolution: {integrity: sha1-f4FcDNpCScdP8J6V75fCO1/QOZs=} engines: {node: '>=4.0'} @@ -3949,6 +4473,10 @@ packages: react-is: 16.13.1 dev: false + /hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + dev: false + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: false @@ -4265,6 +4793,11 @@ packages: /is-what@3.14.1: resolution: {integrity: sha1-4SIvRt3ahd6tD9HJ3xMXYOd3VcE=} + /is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + dev: false + /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: false @@ -4585,6 +5118,12 @@ packages: sourcemap-codec: 1.4.8 dev: false + /magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + dev: false + /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -4604,6 +5143,10 @@ packages: engines: {node: '>=8'} dev: false + /mark.js@8.11.1: + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} + dev: false + /markdown-table@3.0.3: resolution: {integrity: sha1-5jMdMOSTEn4DHdOFSItb0ybkpr0=} dev: false @@ -5082,6 +5625,14 @@ packages: resolution: {integrity: sha1-waRk52kzAuCCoHXO4MBXdBrEdyw=} dev: false + /minisearch@7.1.0: + resolution: {integrity: sha512-tv7c/uefWdEhcu6hvrfTihflgeEi2tN6VV7HJnCjK6VxM75QQJh4t9FwJCsA2EsRS8LCnu3W87CuGPWMocOLCA==} + dev: false + + /mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + dev: false + /mock-property@1.0.3: resolution: {integrity: sha1-PjfFClZgnVSMq9VlWf3j3YdnsQw=} engines: {node: '>= 0.4'} @@ -5427,6 +5978,10 @@ packages: resolution: {integrity: sha1-jLxVbhvyUiF3eHwN4uDUNzuohck=} dev: false + /perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + dev: false + /picocolors@1.0.0: resolution: {integrity: sha1-y1vcdP8/UYkiNur3nWi8RFZKuBw=} dev: true @@ -5483,6 +6038,10 @@ packages: picocolors: 1.0.1 source-map-js: 1.2.0 + /preact@10.23.2: + resolution: {integrity: sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA==} + dev: false + /prelude-ls@1.2.1: resolution: {integrity: sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=} engines: {node: '>= 0.8.0'} @@ -6533,6 +7092,10 @@ packages: resolution: {integrity: sha1-K21N9S3/6Ls0aZKhDqlFHyQ3Oo8=} dev: true + /rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + dev: false + /right-align@0.1.3: resolution: {integrity: sha1-YTObci/mo1FWiSENJOFMlhSGE+8=} engines: {node: '>=0.10.0'} @@ -6668,6 +7231,10 @@ packages: compute-scroll-into-view: 3.1.0 dev: false + /search-insights@2.16.3: + resolution: {integrity: sha512-hSHy/s4Zk2xibhj9XTCACB+1PqS+CaJxepGNBhKc/OsHRpqvHAUAm5+uZ6kJJbGXn0pb3XqekHjg6JAqPExzqg==} + dev: false + /select-files@1.0.1: resolution: {integrity: sha1-l0mRppxduibPpX3LxtJ/CRd0Gss=} dev: false @@ -6742,6 +7309,13 @@ packages: engines: {node: '>=8'} dev: true + /shiki@1.13.0: + resolution: {integrity: sha512-e0dWfnONbEv6xl7FJy3XIhsVHQ/65XHDZl92+6H9+4xWjfdo7pmkqG7Kg47KWtDiEtzM5Z+oEfb4vtRvoZ/X9w==} + dependencies: + '@shikijs/core': 1.13.0 + '@types/hast': 3.0.4 + dev: false + /side-channel@1.0.6: resolution: {integrity: sha1-q9Jft80kuvRUZkBrEJa3gxySFfI=} engines: {node: '>= 0.4'} @@ -6853,6 +7427,11 @@ packages: resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} dev: false + /speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + dev: false + /split2@3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} dependencies: @@ -7020,6 +7599,13 @@ packages: resolution: {integrity: sha1-7Yqev592/h4S1GL1zDxMmAsjp+s=} dev: false + /superjson@2.2.1: + resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} + engines: {node: '>=16'} + dependencies: + copy-anything: 3.0.5 + dev: false + /supports-color@2.0.0: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} engines: {node: '>=0.8.0'} @@ -7043,6 +7629,10 @@ packages: engines: {node: '>= 0.4'} dev: false + /tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + dev: false + /tape@4.17.0: resolution: {integrity: sha1-3onzZx3cXa0XjQTCjcawGD9CJo4=} hasBin: true @@ -7104,7 +7694,6 @@ packages: /to-fast-properties@2.0.0: resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} engines: {node: '>=4'} - dev: true /to-regex-range@5.0.1: resolution: {integrity: sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=} @@ -7234,7 +7823,6 @@ packages: resolution: {integrity: sha1-CunOvPrpcHGEdP4NosCQytZXc3I=} engines: {node: '>=14.17'} hasBin: true - dev: true /typescript@5.5.4: resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} @@ -7573,6 +8161,93 @@ packages: optionalDependencies: fsevents: 2.3.3 + /vitepress@1.3.2(@algolia/client-search@5.0.0)(@types/react@18.2.66)(axios@0.27.2)(less@4.2.0)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.16.3)(typescript@5.4.2): + resolution: {integrity: sha512-6gvecsCuR6b1Cid4w19KQiQ02qkpgzFRqiG0v1ZBekGkrZCzsxdDD5y4WH82HRXAOhU4iZIpzA1CsWqs719rqA==} + hasBin: true + peerDependencies: + markdown-it-mathjax3: ^4 + postcss: ^8 + peerDependenciesMeta: + markdown-it-mathjax3: + optional: true + postcss: + optional: true + dependencies: + '@docsearch/css': 3.6.1 + '@docsearch/js': 3.6.1(@algolia/client-search@5.0.0)(@types/react@18.2.66)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.16.3) + '@shikijs/core': 1.13.0 + '@shikijs/transformers': 1.13.0 + '@types/markdown-it': 14.1.2 + '@vitejs/plugin-vue': 5.1.2(vite@5.3.5)(vue@3.4.38) + '@vue/devtools-api': 7.3.8 + '@vue/shared': 3.4.38 + '@vueuse/core': 10.11.1(vue@3.4.38) + '@vueuse/integrations': 10.11.1(axios@0.27.2)(focus-trap@7.5.4)(vue@3.4.38) + focus-trap: 7.5.4 + mark.js: 8.11.1 + minisearch: 7.1.0 + shiki: 1.13.0 + vite: 5.3.5(@types/node@20.11.27)(less@4.2.0) + vue: 3.4.38(typescript@5.4.2) + transitivePeerDependencies: + - '@algolia/client-search' + - '@types/node' + - '@types/react' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - less + - lightningcss + - nprogress + - qrcode + - react + - react-dom + - sass + - search-insights + - sortablejs + - stylus + - sugarss + - terser + - typescript + - universal-cookie + dev: false + + /vue-demi@0.14.10(vue@3.4.38): + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.4.38(typescript@5.4.2) + dev: false + + /vue@3.4.38(typescript@5.4.2): + resolution: {integrity: sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.4.38 + '@vue/compiler-sfc': 3.4.38 + '@vue/runtime-dom': 3.4.38 + '@vue/server-renderer': 3.4.38(vue@3.4.38) + '@vue/shared': 3.4.38 + typescript: 5.4.2 + dev: false + /web-namespaces@2.0.1: resolution: {integrity: sha1-EBD/fGUOzLJZLOvur5obJT/UBpI=} dev: false